IAP.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. /********************************************************************************
  2. * File Name: IAP.h
  3. * Function Describe: Header file for IAP.c
  4. * Explain:
  5. * Writer: ShiLiangWen
  6. * Date: 2015-1-30
  7. 兼容FOTA升级
  8. 支持串口升级
  9. *******************************************************************************/
  10. #ifndef __IAP_H
  11. #define __IAP_H
  12. /***********************************************************************************/
  13. #include "stdint.h"
  14. #define IAP_VERSION_NAME "Higos IAP V1.1\r\n"
  15. #define PRODUCT_NAME "NULL"
  16. #define MCU_FLAG 144 //MCU标志128KB+16KB=144
  17. enum {
  18. MODEM_TYPE_NONE=0,
  19. MODEM_TYPE_MG2639,
  20. MODEM_TYPE_MC8332,
  21. };
  22. #define MODEM_TYPE MODEM_TYPE_MC8332
  23. #define FOTA_ENABLE //使能空中升级
  24. #define IAP_RX_BUF (1024+52)
  25. //保留0X08000000~0X08003FFF 的空间(16KB)为IAP使用
  26. #define FLASH_APP1_ADDR 0x08004000 //APP应用程序起始地址(存放在FLASH)
  27. #define APP_CONFIG_ADDR 0X08003C00 //0x08003C00~0x0804000 为系统参数区
  28. //#define APP_CONFIG_ADDR 0X0801FC00 //0x0801FC00~0x0802000 为系统参数区
  29. #define FOTA_MAGIC 0x41544f46 // "FOTA"
  30. #define PCTA_MAGIC 0x41544350 // "PCTA"
  31. #define UPDATE_PROTOCOL 0x80
  32. #define UPDATE_CODE_VERSION_REQ 0x00
  33. #define UPDATE_CODE_DATA_REQ 0x01
  34. #define UPDATE_CODE_DATA_WITH_CRC_REQ 0x02
  35. #define UPDATE_DEV_ID_SIZE 16
  36. typedef struct SUT_PRODUCT_PARA
  37. {
  38. unsigned char McuFlag; //MCU标识 101 --STM32F101CB
  39. unsigned char IapFlag; //IAP标志 0x00或0xff--无应用程序; 0x55--需要空中升级; 0x88--正常运行应用程序
  40. unsigned char ModemType; //Modem类型:0-无Modem 1-GSM 2-CDMA
  41. unsigned char GpsType; //GPS类型:0-无GPS 1-GP 2-BD 4-GL 3-GP+BD 5-GP+GL 6-BD+GL 7-GP+BD+GL (GP=Gps,BD=Beidou,GL=Glonass)
  42. unsigned char Rand; //伪随机数,用于存储加密,对后面的数字加密
  43. unsigned char FoTaServerSel; //远程升级服务器IP选择,0--放在对讲服务器,1--放在GPS服务器
  44. char ProductName[14]; //项目名
  45. unsigned short ProductVersion; //版本号
  46. unsigned short PocPort; //POC Port
  47. unsigned short GpsPort; //GPS Port
  48. unsigned short FoTaProt; //FOTA Server Port
  49. unsigned long PSN; //产品序列号
  50. char PIP[40]; //POC IP
  51. char GIP[40]; //GPS IP
  52. char MEID[16]; //MEID
  53. char VPN[16]; //VPN
  54. char VPNPass[16]; //VPN Password
  55. }SUT_PRODUCT_PARA;
  56. typedef struct
  57. {
  58. uint32_t magic; // UPDATE_MAGIC
  59. uint8_t protocol;
  60. uint8_t code;
  61. char dev_id[UPDATE_DEV_ID_SIZE];
  62. uint16_t tid;
  63. uint16_t count; // 除本结构外后续数据长度
  64. } __attribute__((packed)) update_hdr_t; //sizeof()=4+2+16+2+2=26
  65. typedef struct
  66. {
  67. update_hdr_t hdr;
  68. char product[16];
  69. uint16_t version;
  70. } __attribute__((packed)) update_version_req_t;
  71. typedef struct
  72. {
  73. update_hdr_t hdr;
  74. uint8_t version_md5[16]; // 升级包 MD5
  75. uint32_t size; // 升级包大小
  76. } __attribute__((packed)) update_version_rsp_t;
  77. typedef struct
  78. {
  79. update_hdr_t hdr;
  80. uint8_t version_md5[16]; // 升级包 MD5
  81. uint32_t offset;
  82. uint32_t length;
  83. } __attribute__((packed)) update_data_req_t;
  84. typedef struct
  85. {
  86. update_hdr_t hdr; //26
  87. uint8_t version_md5[16]; // 升级包 MD5
  88. uint32_t offset;
  89. uint32_t length;
  90. uint8_t data[1];
  91. } __attribute__((packed)) update_data_rsp_t;
  92. extern int g_iFotaCt;
  93. extern int g_ulOffset;
  94. extern uint8_t IapRxBuf[IAP_RX_BUF];
  95. extern uint16_t IapRxLen;
  96. extern SUT_PRODUCT_PARA sutProductPara;
  97. void IapGetUpdateVersion(uint32_t magic);
  98. void IapGetUpdateData(uint32_t magic,uint32_t offset);
  99. int IapRecvMsgHandle(unsigned char *pData, unsigned short DataLen);
  100. typedef void (*iapfun)(void);//定义一个函数类型的参数.
  101. void iap_jump_app_s();
  102. /***********************************************************************************/
  103. #endif
  104. /***********************************************************************************/