upgrade.h 3.2 KB

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