version.h 4.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #ifndef VERSION_H
  2. #define VERSION_H
  3. // FIRMWARE_VERSION
  4. // введена 11/09/18
  5. // Требуется соблюдать соответствие версии FIRMWARE_VERSION и FIRMWARE_DRIVER_VERSION
  6. //
  7. #define FIRMWARE_VERSION 0x01
  8. // Используется схожая нумерация версий с ACMx4: версия 0x20 - с SCPI
  9. // Версия 0x1X - первая версия, без SCPI интерфеса
  10. // Версия 0x2X - вторая версия, поддержка SCPI интерфейса
  11. // Версия 0x10 - 25.11.2020: альфа-версия.
  12. // Версия 0x11 - 10.12.2020: введена поддержка состояний O2ALR и O2BLR в протокол
  13. // Версия 0x12 - 10.12.2020: введена поддержка состояний O1ALR и O1BLR в протокол
  14. // Версия 0x13 - 11.12.2020: порты A и B поменяны местами. Коды управления по USB сохранены.
  15. // Версия 0x14 - 03.02.2021: исправление ошибок флеш-драйвера и FSEQ
  16. // Версия 0x20 - 12.02.2021: Поддержка SCPI
  17. // Версия 0x21 - 17.03.2021: Исправления: исправлена команда MEM:TABLE:FREQ:SEGM:DATA
  18. // Версия 0x22 - 23.04.2021: Добавлена поддержка 2543.2
  19. // Версия 0x23 - 27.04.2021: Обновление карты состояний ключей для 2543.1 и 2543.2:
  20. // - удалены O1ALR и O1BLR для 2543.1
  21. // - исправление проверки аругмента команды SWIT:STAT
  22. // - Добавлена поддержка состояний O1ALR, O1BLR, L2BOR, L2AOR, в 2543.2
  23. // Версия 0x24 - 27.04.2021:
  24. // - Удален разворот портов A-B для 2543.2;
  25. // - исправление включения короткой весрии состояния "CHEC" (CHECk)
  26. // - удалены неиспользуемые кодировки состояний для 2543.1
  27. #define FIRMWARE_DRIVER_VERSION 0x01
  28. // FIRMWARE_DRIVER_VERSION
  29. // Была задумана как версия драйвера управления, т.к. не было версии ПО.
  30. // Использовалась во внутренних интерфейсах и при тестировании внутренними программами
  31. // на производстве.
  32. // Используется схожая нумерация версий с ACMx4
  33. // версия 0xXX00 - первая версия прошивки с поддержкой сервисного запроса
  34. // версия 0xXX01 - исправлена ошибка зависания при записи во Flash по USB, впервые реализован 07.04.16 -
  35. // версия 0xXX02 - добавлен сервисный запрос на получение информации о прошивке (0x003)
  36. // также, теперь для версии драйвера остался только 1 байт - младший, старший используется
  37. // для версии ПО, впервые реализован 11.09.18
  38. // ----------------------------------------------------------------------------------
  39. // 11.09.18 - реализован интерфейс SCPI (USBTMC)
  40. // теперь старшая тетрада версии драйвера зарезервирована: 0xAABB
  41. // 0xAA - это теперь версия прошивки, отвечает в т.ч. за SCPI (есть или нет), см FIRMWARE_VERSION
  42. // 0xBB - это версия драйвера сервисного запроса. тут же можно смотреть, исправлена ли ошибка зависания при записи
  43. // С версии драйвера 0x02 также реализован програмнной версии FIRMWARE_VERSION отдельным сервисным запросом
  44. // ----------------------------------------------------------------------------------
  45. // Старшая тетрада VERSION это версия ПО (FIRMWARE_VERSION), младшая - версия драйвера сервисного запроса
  46. #define VERSION (((0xFF & FIRMWARE_VERSION) << 8) | ((0xFF & FIRMWARE_DRIVER_VERSION)))
  47. #define HARDWARE_VERSION 0x0000 // undefined yet (12/09/18)
  48. #define COMMENTS_FORMAT_TEXT 0
  49. #define PROGVER_TAG_v0 0xA1DB10C0 // Progversion Identifier v0: "A ID Block v0" -> "AIDBLOCK0" -> "AIDBlOC0" -> "A1DB10C0"
  50. #define PROGVER_FILLER_v0(TXTCOMMENTS)\
  51. {\
  52. .tagId = PROGVER_TAG_v0, \
  53. .reserved0 = { 0 }, \
  54. .comments_id = COMMENTS_FORMAT_TEXT, \
  55. .reserved1 = { 0 }, \
  56. .comments = TXTCOMMENTS, \
  57. .reserved2 = { 0 }, \
  58. .firmware_version = VERSION, \
  59. .hardware_version = HARDWARE_VERSION, \
  60. }
  61. #include <stdint.h>
  62. #pragma pack( push, 1 )
  63. typedef const struct
  64. {
  65. uint32_t tagId; // ProgVer structure ID
  66. uint8_t reserved0[12]; // Reserved for future
  67. uint8_t comments_id; // comments format
  68. uint8_t reserved1[3]; // Reserved for future
  69. uint8_t comments[64]; // optional comments
  70. uint8_t reserved2[160]; // Reserved for future
  71. uint16_t firmware_version; // firmware version
  72. uint16_t hardware_version; // hardware version
  73. uint32_t progver_crc32; // ProgVer structure CRC32 (unused)
  74. }
  75. sProgVer_t;
  76. typedef const struct
  77. {
  78. uint32_t firmware_crc32; // Firmware CRC32
  79. }
  80. sProgVerCRC_t;
  81. #pragma pack( pop )
  82. extern volatile const sProgVer_t * pProgramVersion;
  83. #endif