#ifndef __UPGRADE_H__ #define __UPGRADE_H__ #include #define UPG_KEY_PATH "/tmp" #define UPG_KEY_SN 123 #if (CHIP_TYPE == CHIP_T113i) #define RUN_FOLDER "/mnt/UDISK/run" #define BAK_FOLDER "/mnt/UDISK/bak" #define UPG_FOLDER "/mnt/UDISK/upg" //用于存放升级过程文件 #define DOWN_FOLDER "/mnt/UDISK/dl" //网页下载到该目录,然后移到UPG_FOLDER目录 #else #define DOWN_FOLDER "/mnt/UDISK/dl" #define BAK_FOLDER "/mnt/UDISK/bak" #define UPG_FOLDER "/mnt/UDISK/upg" //用于存放升级过程文件 #define RUN_FOLDER "/mnt/UDISK/dl" //网页下载到该目录,然后移到UPG_FOLDER目录 #endif #define UPG_PKG_NAME "pdupkg" //所有文件需要打包成一个文件,包括文件头,校验码 #define UPG_HDR_NAME "pduhdr" //升级头文件 #define UPG_TAR_NAME "pdutar" //升级数据包 #define UPG_LOG_PATH UPG_FOLDER"/log.txt" #define UPG_PKT_MAGIC 0xdeadbeer #define UPG_FILE_MAGIC 0xfacebeef enum { //升级状态state UPGRADE_EVT_APP_RUNNING=0x12, UPGRADE_EVT_UPG_RUNNING, UPGRADE_EVT_UPLOAD_FINISH, UPGRADE_EVT_MAX, }; enum { //升级状态state UPGRADE_STAT_NONE=0, UPGRADE_STAT_GOING, UPGRADE_STAT_FAILED, UPGRADE_STAT_MAX, }; enum { //升级数据来源source UPGRADE_SRC_NONE=0, UPGRADE_SRC_TCP, UPGRADE_SRC_HTTP, UPGRADE_SRC_MQTT, UPGRADE_SRC_UDISK, UPGRADE_SRC_TCARD, UPGRADE_SRC_RS485, UPGRADE_SRC_MAX, }; enum { //升级对象object, 可以同时升级多个 UPGRADE_OBJ_PWR=(1<<0), UPGRADE_OBJ_WEB=(1<<1), UPGRADE_OBJ_APP=(1<<2), }; enum { //升级策略strategy UPGRADE_STRA_OLD=0, //升级版本或编译/修改时间较老的设备 UPGRADE_STRA_FORCE, //强制升级 UPGRADE_STRA_MAX, }; enum { //升级对象的数量number UPGRADE_NUM_SINGLE=0, //单个设备升级 UPGRADE_NUM_BAT, //批量升级 UPGRADE_NUM_ALL, //全部升级 UPGRADE_NUM_MAX, }; enum { //升级进度step UPGRADE_STEP_NONE=0, UPGRADE_STEP_DOWN, UPGRADE_STEP_SPLIT, UPGRADE_STEP_COVER, UPGRADE_STEP_FINISH, UPGRADE_STEP_SUCCESS, UPGRADE_STEP_MAX, }; #pragma pack(1) typedef struct { //升级目标数据结构 uint32_t evt; //upgrade_evt uint32_t flag; //reserved }upgrade_msg_t; typedef struct { //升级目标数据结构 uint8_t num; //obj number uint8_t stra; //obj strategy char obj1[64]; //obj1 addr or name char obj2[64]; //obj2 addr or name }upgrade_obj_t; typedef struct { uint32_t magic; //UPG_PKT_MAGIC uint8_t addr; //device modbus addr uint16_t dataLen; uint8_t data[0]; }upgrade_pkt_t; typedef struct { char data[32]; }md5_t; typedef struct { uint32_t magic; //UPG_FILE_MAGIC upgrade_obj_t obj; uint32_t dlen; uint8_t data[0]; /* uint8_t data[x]; md5_t md5; */ }upgrade_file_t; #pragma pack() typedef struct { long type; uint32_t evt; }msgbuf_t; #endif