mcuIap.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #ifndef __MCUIAP_H_
  2. #define __MCUIAP_H_
  3. #include "main.h"
  4. #define PCTA_MAGIC 0x41544350 // "PCTA"
  5. #define UPDATE_PROTOCOL_APP 0x80 //APP下载协议
  6. #define UPDATE_PROTOCOL_RFILE 0x95 //RFile资源文件下载协议
  7. //以下命令用于传输APP文件
  8. #define UPDATE_CODE_VERSION_REQ 0x00
  9. #define UPDATE_CODE_DATA_REQ 0x01
  10. #define UPDATE_CODE_DATA_WITH_CRC_REQ 0x02
  11. #define UPDATE_DEV_ID_SIZE 16
  12. #define UPDATE_DATA_SIZE_MAX 2048 //每次读取文件数据大小最大值
  13. #pragma pack(push)
  14. #pragma pack(1)
  15. typedef struct{
  16. uint32_t magic; // UPDATE_MAGIC
  17. uint8_t protocol;
  18. uint8_t code;
  19. char dev_id[UPDATE_DEV_ID_SIZE];
  20. uint16_t tid;
  21. uint16_t count; // 除本结构外后续数据长度
  22. } update_hdr_t; //sizeof()=4+2+16+2+2=26
  23. typedef struct{
  24. update_hdr_t hdr;
  25. char product[16];
  26. uint16_t version;
  27. } update_version_req_t;//26+16+2=44
  28. typedef struct{
  29. update_hdr_t hdr;
  30. uint8_t version_md5[16]; // 升级包 MD5
  31. uint32_t size; // 升级包大小
  32. } update_version_rsp_t;//26+16+4=46
  33. typedef struct{
  34. update_hdr_t hdr;
  35. uint8_t version_md5[16]; // 升级包 MD5
  36. uint32_t offset;
  37. uint32_t length;
  38. } update_data_req_t;//26+16+4+4=50
  39. typedef struct{
  40. update_hdr_t hdr;
  41. uint8_t version_md5[16]; // 升级包 MD5
  42. uint32_t offset;
  43. uint32_t length;
  44. uint8_t data[UPDATE_DATA_SIZE_MAX+2];//后面两个是CRC值,实际长度可能没有那么多
  45. } update_data_rsp_t;//26+16+4+4+1024+2=1076
  46. #pragma pack(pop)
  47. T_INT32 getMaipCnt(void);
  48. void miapCntUpdate(T_INT32 value);
  49. T_BOOL isMcuIapOff(void);
  50. void McuIapStart(void);
  51. void McuIapKeepOn(void);
  52. #endif