#ifndef __MCUIAP_H_ #define __MCUIAP_H_ #include "main.h" #define PCTA_MAGIC 0x41544350 // "PCTA" #define UPDATE_PROTOCOL_APP 0x80 //APP下载协议 #define UPDATE_PROTOCOL_RFILE 0x95 //RFile资源文件下载协议 //以下命令用于传输APP文件 #define UPDATE_CODE_VERSION_REQ 0x00 #define UPDATE_CODE_DATA_REQ 0x01 #define UPDATE_CODE_DATA_WITH_CRC_REQ 0x02 #define UPDATE_DEV_ID_SIZE 16 #define UPDATE_DATA_SIZE_MAX 2048 //每次读取文件数据大小最大值 #pragma pack(push) #pragma pack(1) typedef struct{ uint32_t magic; // UPDATE_MAGIC uint8_t protocol; uint8_t code; char dev_id[UPDATE_DEV_ID_SIZE]; uint16_t tid; uint16_t count; // 除本结构外后续数据长度 } update_hdr_t; //sizeof()=4+2+16+2+2=26 typedef struct{ update_hdr_t hdr; char product[16]; uint16_t version; } update_version_req_t;//26+16+2=44 typedef struct{ update_hdr_t hdr; uint8_t version_md5[16]; // 升级包 MD5 uint32_t size; // 升级包大小 } update_version_rsp_t;//26+16+4=46 typedef struct{ update_hdr_t hdr; uint8_t version_md5[16]; // 升级包 MD5 uint32_t offset; uint32_t length; } update_data_req_t;//26+16+4+4=50 typedef struct{ update_hdr_t hdr; uint8_t version_md5[16]; // 升级包 MD5 uint32_t offset; uint32_t length; uint8_t data[UPDATE_DATA_SIZE_MAX+2];//后面两个是CRC值,实际长度可能没有那么多 } update_data_rsp_t;//26+16+4+4+1024+2=1076 #pragma pack(pop) T_INT32 getMaipCnt(void); void miapCntUpdate(T_INT32 value); T_BOOL isMcuIapOff(void); void McuIapStart(void); void McuIapKeepOn(void); #endif