version.h 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #ifndef __VERSION_H_
  2. #define __VERSION_H_
  3. /**
  4. * @file version.h
  5. * @brief 版本号管理头文件
  6. * @author Auto-generated
  7. * @date 2026-03-28
  8. */
  9. // 软件版本号
  10. #define SOFTWARE_VERSION_MAJOR 0
  11. #define SOFTWARE_VERSION_MINOR 1
  12. #define SOFTWARE_VERSION_PATCH 0
  13. #define SOFTWARE_VERSION_STRING "0.1.0"
  14. // 硬件版本号
  15. #define HARDWARE_VERSION_MAJOR 0
  16. #define HARDWARE_VERSION_MINOR 1
  17. #define HARDWARE_VERSION_PATCH 0
  18. #define HARDWARE_VERSION_STRING "0.1.0"
  19. // 编译时间相关字段
  20. #define BUILD_DATE __DATE__
  21. #define BUILD_TIME __TIME__
  22. #define BUILD_YEAR (__DATE__[7] == ' ' ? 0 : ((__DATE__[7] - '0') * 1000 + (__DATE__[8] - '0') * 100 + (__DATE__[9] - '0') * 10 + (__DATE__[10] - '0')))
  23. #define BUILD_MONTH ((__DATE__[0] == 'J' && __DATE__[1] == 'a' && __DATE__[2] == 'n') ? 1 : \
  24. (__DATE__[0] == 'F') ? 2 : \
  25. (__DATE__[0] == 'M' && __DATE__[2] == 'r') ? 3 : \
  26. (__DATE__[0] == 'A' && __DATE__[1] == 'p') ? 4 : \
  27. (__DATE__[0] == 'M' && __DATE__[2] == 'y') ? 5 : \
  28. (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'n') ? 6 : \
  29. (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'l') ? 7 : \
  30. (__DATE__[0] == 'A' && __DATE__[1] == 'u') ? 8 : \
  31. (__DATE__[0] == 'S') ? 9 : \
  32. (__DATE__[0] == 'O') ? 10 : \
  33. (__DATE__[0] == 'N') ? 11 : 12)
  34. #define BUILD_DAY ((__DATE__[4] == ' ' ? 0 : (__DATE__[4] - '0') * 10) + (__DATE__[5] - '0'))
  35. #define BUILD_HOUR (((__TIME__[0] - '0') * 10) + (__TIME__[1] - '0'))
  36. #define BUILD_MINUTE (((__TIME__[3] - '0') * 10) + (__TIME__[4] - '0'))
  37. #define BUILD_SECOND (((__TIME__[6] - '0') * 10) + (__TIME__[7] - '0'))
  38. // 版本信息结构体
  39. typedef struct {
  40. uint8_t software_major;
  41. uint8_t software_minor;
  42. uint8_t software_patch;
  43. uint8_t hardware_major;
  44. uint8_t hardware_minor;
  45. uint8_t hardware_patch;
  46. char software_version[10];
  47. char hardware_version[10];
  48. char build_date[12];
  49. char build_time[9];
  50. } VersionInfo;
  51. // 获取版本信息
  52. #define GET_VERSION_INFO(info) do {
  53. (info)->software_major = SOFTWARE_VERSION_MAJOR;
  54. (info)->software_minor = SOFTWARE_VERSION_MINOR;
  55. (info)->software_patch = SOFTWARE_VERSION_PATCH;
  56. (info)->hardware_major = HARDWARE_VERSION_MAJOR;
  57. (info)->hardware_minor = HARDWARE_VERSION_MINOR;
  58. (info)->hardware_patch = HARDWARE_VERSION_PATCH;
  59. strcpy((info)->software_version, SOFTWARE_VERSION_STRING);
  60. strcpy((info)->hardware_version, HARDWARE_VERSION_STRING);
  61. strcpy((info)->build_date, BUILD_DATE);
  62. strcpy((info)->build_time, BUILD_TIME);
  63. } while(0)
  64. #endif /* __VERSION_H_ */