upgrade.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #ifndef __UPGRADE_H__
  2. #define __UPGRADE_H__
  3. #include <stdint.h>
  4. #define UPG_KEY_PATH "/tmp"
  5. #define UPG_KEY_SN 123
  6. #define RUN_FOLDER "/root/run"
  7. #define BAK_FOLDER "/root/bak"
  8. #define UPG_FOLDER "/root/upg" //用于存放升级过程文件
  9. #define DOWN_FOLDER "/root/dl" //网页下载到该目录,然后移到UPG_FOLDER目录
  10. #define UPG_PKG_NAME "pdupkg" //所有文件需要打包成一个文件,包括文件头,校验码
  11. #define UPG_HDR_NAME "pduhdr" //升级头文件
  12. #define UPG_TAR_NAME "pdutar" //升级数据包
  13. #define UPG_LOG_PATH UPG_FOLDER"/log.txt"
  14. #define UPG_PKT_MAGIC 0xdeadbeer
  15. #define UPG_FILE_MAGIC 0xfacebeef
  16. enum { //升级状态state
  17. UPGRADE_EVT_APP_RUNNING=0x12,
  18. UPGRADE_EVT_UPG_RUNNING,
  19. UPGRADE_EVT_UPLOAD_FINISH,
  20. UPGRADE_EVT_MAX,
  21. };
  22. enum { //升级状态state
  23. UPGRADE_STAT_NONE=0,
  24. UPGRADE_STAT_GOING,
  25. UPGRADE_STAT_FAILED,
  26. UPGRADE_STAT_MAX,
  27. };
  28. enum { //升级数据来源source
  29. UPGRADE_SRC_NONE=0,
  30. UPGRADE_SRC_TCP,
  31. UPGRADE_SRC_HTTP,
  32. UPGRADE_SRC_MQTT,
  33. UPGRADE_SRC_UDISK,
  34. UPGRADE_SRC_TCARD,
  35. UPGRADE_SRC_RS485,
  36. UPGRADE_SRC_MAX,
  37. };
  38. enum { //升级对象object, 可以同时升级多个
  39. UPGRADE_OBJ_PWR=(1<<0),
  40. UPGRADE_OBJ_WEB=(1<<1),
  41. UPGRADE_OBJ_APP=(1<<2),
  42. };
  43. enum { //升级策略strategy
  44. UPGRADE_STRA_OLD=0, //升级版本或编译/修改时间较老的设备
  45. UPGRADE_STRA_FORCE, //强制升级
  46. UPGRADE_STRA_MAX,
  47. };
  48. enum { //升级对象的数量number
  49. UPGRADE_NUM_SINGLE=0, //单个设备升级
  50. UPGRADE_NUM_BAT, //批量升级
  51. UPGRADE_NUM_ALL, //全部升级
  52. UPGRADE_NUM_MAX,
  53. };
  54. enum { //升级进度step
  55. UPGRADE_STEP_NONE=0,
  56. UPGRADE_STEP_DOWN,
  57. UPGRADE_STEP_SPLIT,
  58. UPGRADE_STEP_COVER,
  59. UPGRADE_STEP_FINISH,
  60. UPGRADE_STEP_SUCCESS,
  61. UPGRADE_STEP_MAX,
  62. };
  63. #pragma pack(1)
  64. typedef struct { //升级目标数据结构
  65. uint32_t evt; //upgrade_evt
  66. uint32_t flag; //reserved
  67. }upgrade_msg_t;
  68. typedef struct { //升级目标数据结构
  69. uint8_t num; //obj number
  70. uint8_t stra; //obj strategy
  71. char obj1[64]; //obj1 addr or name
  72. char obj2[64]; //obj2 addr or name
  73. }upgrade_obj_t;
  74. typedef struct {
  75. uint32_t magic; //UPG_PKT_MAGIC
  76. uint8_t addr; //device modbus addr
  77. uint16_t dataLen;
  78. uint8_t data[0];
  79. }upgrade_pkt_t;
  80. typedef struct {
  81. char data[32];
  82. }md5_t;
  83. typedef struct {
  84. uint32_t magic; //UPG_FILE_MAGIC
  85. upgrade_obj_t obj;
  86. uint32_t dlen;
  87. uint8_t data[0];
  88. /*
  89. uint8_t data[x];
  90. md5_t md5;
  91. */
  92. }upgrade_file_t;
  93. #pragma pack()
  94. typedef struct {
  95. long type;
  96. uint32_t evt;
  97. }msgbuf_t;
  98. #endif