AppIap.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #ifndef __MYIAP_H
  2. #define __MYIAP_H
  3. /*****************************************************************/
  4. #include <stm32f10x.h>
  5. #include "includes.h"
  6. #define USING_LOCAL_TIME 0
  7. #define USING_SERVER_TIME 1
  8. #define DATA_DRAT_SIZE_PER_TIME 1024 //每一次数据请求包大小
  9. #define FOGA_RECV_BUFFER_SIZE DATA_DRAT_SIZE_PER_TIME+2 //两ASCII相当于一个数据,加两字节CRC
  10. #define FOTA_IAP_SOCKET 3
  11. #define ENABL_FOGA_BACK_DATA_PRINT 1 //是否允许空中升级过程打印接到数据的具体数据 数据量比较大
  12. //defautl: 1 不想看到具体数据
  13. //调试: 0 可以看到-调试用
  14. //注意,如果为0--要把 UART1_TX_BUFFER_SIZE 设置为1024+256才能看,否则内部可能会溢出
  15. #define FOTA_MAGIC 0x41544F46 // "FOTA"
  16. #define PCTA_MAGIC 0x41544350 // "PCTA"
  17. #define GOOD_UPDATE_STORAGE 0x9fedcba9
  18. #define FOTA_IAP_IP0 120
  19. #define FOTA_IAP_IP1 77
  20. #define FOTA_IAP_IP2 66
  21. #define FOTA_IAP_IP3 129
  22. #define FOTA_IAP_IP "120.77.66.129"
  23. #define FOTA_IAP_PORT 9137
  24. #define TASK_GET_FILEINFO 0x12
  25. #define TASK_GET_FILEDATA 0x25
  26. #define TASK_MODEM_UPDATE 0x36
  27. #define TASK_FILE_CHECK 0x47
  28. #define TASK_GOTO_APP 0X58
  29. #define TASK_EXIT 0xc2
  30. #define TICK_COUNT 500 //20ms
  31. #if 0
  32. #define APP_FILE_DATA_ADDR FILE_DATA_ADDR_END+1 //下载的APP存放首地址 0x20000 ~ 0x3FFFFF 下两M数据区
  33. #else
  34. #define APP_FILE_DATA_ADDR 0x200000
  35. #endif
  36. extern unsigned char Fota_Rcv_Pri_Flag;
  37. ///////////////////////////////////
  38. #define PACKET_HEAD 0xAB
  39. #define CMD_GET_FILE_INFO 0x6A
  40. #define CMD_GET_FILE_INFO_ACK 0x6B
  41. #define CMD_GET_FILE_DATA 0x7A
  42. #define CMD_GET_FILE_DATA_ACK 0x7B
  43. #define GET_FILE_TIMES 3 //最多重获取3次文件信息
  44. #define GET_DATA_TIMES 20 //最多重获取5次数据信息
  45. typedef struct SUT_FILE_INFO2
  46. {
  47. unsigned char encrypted; //文件数据是否已加密? 0--未加密 1--加密算法1:各字节和key直接异或运算; 2--加密算法2:将key转为key1后再与各字节异或运算; 3...其他
  48. unsigned char key; //加密用的key
  49. char FileName[20]; //文件名。一般情况下,文件名=ProductName_Vxxx 其中xxx为版本号
  50. unsigned int FileLength; //文件总长度
  51. unsigned char MD5[16]; //文件MD5码. 如果文件已加密,此MD5为加密后的文件的MD5
  52. }__attribute__((packed)) SUT_FILE_INFO2;
  53. ///////////////////////////////////////
  54. typedef struct IAP_UI_PRA
  55. {
  56. uint8_t update;
  57. uint32_t total_size;
  58. uint32_t down_size;
  59. }IAP_UI_PRA;//用来显示进度使用
  60. typedef struct SUT_NET_STATUS
  61. {
  62. unsigned char FotaTCP;
  63. unsigned short Tick10ms;
  64. unsigned char TaskStart;
  65. unsigned char TaskStatus;
  66. unsigned char FileReqOk;
  67. uint8_t timeTry;
  68. uint8_t resetModemTime;
  69. uint8_t getFileInfoTime;//请求文件次数计数
  70. uint8_t getDataInfoTime;//请求数据次数计数
  71. uint8_t errType;//失败退出时的错误信息
  72. unsigned char encrypted; //文件数据是否已加密? 0--未加密 1--加密算法1:各字节和key直接异或运算; 2--加密算法2:将key转为key1后再与各字节异或运算; 3...其他
  73. unsigned char key; //加密用的key
  74. unsigned int FileLength; //文件总长度
  75. unsigned int FileOffset;//文件偏移
  76. unsigned char MD5[16]; //文件MD5码. 如果文件已加密,此MD5为加密后的文件的MD5
  77. char FullFileName[20];
  78. IAP_UI_PRA iapUI;
  79. }SUT_NET_STATUS;
  80. typedef enum{
  81. MODE_HTTP_MCU,
  82. MODE_HTTP_MODEM
  83. }MODE_HTTP_TYPE;
  84. void FotaIap_Handle(unsigned char *msg);
  85. void SetUpAppricationVerPending(void);
  86. void SetUpAppricationVerShow(int);
  87. void SetUpAppricationVerResponse(void);
  88. void Fota_Update_Show(int Update);
  89. //void TriggerHttpOn(MODE_HTTP_TYPE type);
  90. #endif