#ifndef VERSION_H #define VERSION_H // FIRMWARE_VERSION // введена 11/09/18 // Требуется соблюдать соответствие версии FIRMWARE_VERSION и FIRMWARE_DRIVER_VERSION // #define FIRMWARE_VERSION 0x01 // Используется схожая нумерация версий с ACMx4: версия 0x20 - с SCPI // Версия 0x1X - первая версия, без SCPI интерфеса // Версия 0x2X - вторая версия, поддержка SCPI интерфейса // Версия 0x10 - 25.11.2020: альфа-версия. // Версия 0x11 - 10.12.2020: введена поддержка состояний O2ALR и O2BLR в протокол // Версия 0x12 - 10.12.2020: введена поддержка состояний O1ALR и O1BLR в протокол // Версия 0x13 - 11.12.2020: порты A и B поменяны местами. Коды управления по USB сохранены. // Версия 0x14 - 03.02.2021: исправление ошибок флеш-драйвера и FSEQ // Версия 0x20 - 12.02.2021: Поддержка SCPI // Версия 0x21 - 17.03.2021: Исправления: исправлена команда MEM:TABLE:FREQ:SEGM:DATA // Версия 0x22 - 23.04.2021: Добавлена поддержка 2543.2 // Версия 0x23 - 27.04.2021: Обновление карты состояний ключей для 2543.1 и 2543.2: // - удалены O1ALR и O1BLR для 2543.1 // - исправление проверки аругмента команды SWIT:STAT // - Добавлена поддержка состояний O1ALR, O1BLR, L2BOR, L2AOR, в 2543.2 // Версия 0x24 - 27.04.2021: // - Удален разворот портов A-B для 2543.2; // - исправление включения короткой весрии состояния "CHEC" (CHECk) // - удалены неиспользуемые кодировки состояний для 2543.1 #define FIRMWARE_DRIVER_VERSION 0x01 // FIRMWARE_DRIVER_VERSION // Была задумана как версия драйвера управления, т.к. не было версии ПО. // Использовалась во внутренних интерфейсах и при тестировании внутренними программами // на производстве. // Используется схожая нумерация версий с ACMx4 // версия 0xXX00 - первая версия прошивки с поддержкой сервисного запроса // версия 0xXX01 - исправлена ошибка зависания при записи во Flash по USB, впервые реализован 07.04.16 - // версия 0xXX02 - добавлен сервисный запрос на получение информации о прошивке (0x003) // также, теперь для версии драйвера остался только 1 байт - младший, старший используется // для версии ПО, впервые реализован 11.09.18 // ---------------------------------------------------------------------------------- // 11.09.18 - реализован интерфейс SCPI (USBTMC) // теперь старшая тетрада версии драйвера зарезервирована: 0xAABB // 0xAA - это теперь версия прошивки, отвечает в т.ч. за SCPI (есть или нет), см FIRMWARE_VERSION // 0xBB - это версия драйвера сервисного запроса. тут же можно смотреть, исправлена ли ошибка зависания при записи // С версии драйвера 0x02 также реализован програмнной версии FIRMWARE_VERSION отдельным сервисным запросом // ---------------------------------------------------------------------------------- // Старшая тетрада VERSION это версия ПО (FIRMWARE_VERSION), младшая - версия драйвера сервисного запроса #define VERSION (((0xFF & FIRMWARE_VERSION) << 8) | ((0xFF & FIRMWARE_DRIVER_VERSION))) #define HARDWARE_VERSION 0x0000 // undefined yet (12/09/18) #define COMMENTS_FORMAT_TEXT 0 #define PROGVER_TAG_v0 0xA1DB10C0 // Progversion Identifier v0: "A ID Block v0" -> "AIDBLOCK0" -> "AIDBlOC0" -> "A1DB10C0" #define PROGVER_FILLER_v0(TXTCOMMENTS)\ {\ .tagId = PROGVER_TAG_v0, \ .reserved0 = { 0 }, \ .comments_id = COMMENTS_FORMAT_TEXT, \ .reserved1 = { 0 }, \ .comments = TXTCOMMENTS, \ .reserved2 = { 0 }, \ .firmware_version = VERSION, \ .hardware_version = HARDWARE_VERSION, \ } #include #pragma pack( push, 1 ) typedef const struct { uint32_t tagId; // ProgVer structure ID uint8_t reserved0[12]; // Reserved for future uint8_t comments_id; // comments format uint8_t reserved1[3]; // Reserved for future uint8_t comments[64]; // optional comments uint8_t reserved2[160]; // Reserved for future uint16_t firmware_version; // firmware version uint16_t hardware_version; // hardware version uint32_t progver_crc32; // ProgVer structure CRC32 (unused) } sProgVer_t; typedef const struct { uint32_t firmware_crc32; // Firmware CRC32 } sProgVerCRC_t; #pragma pack( pop ) extern volatile const sProgVer_t * pProgramVersion; #endif