AppIap.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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_PORT 9137
  23. #define TASK_GET_FILEINFO 0x12
  24. #define TASK_GET_FILEDATA 0x25
  25. #define TASK_MODEM_UPDATE 0x36
  26. #define TASK_FILE_CHECK 0x47
  27. #define TASK_GOTO_APP 0X58
  28. #define TASK_EXIT 0xc2
  29. #define TICK_COUNT 500 //20ms
  30. #if 0
  31. #define APP_FILE_DATA_ADDR FILE_DATA_ADDR_END+1 //下载的APP存放首地址 0x20000 ~ 0x3FFFFF 下两M数据区
  32. #else
  33. #define APP_FILE_DATA_ADDR 0x200000
  34. #endif
  35. extern unsigned char Fota_Rcv_Pri_Flag;
  36. ///////////////////////////////////
  37. #define PACKET_HEAD 0xAB
  38. #define CMD_GET_FILE_INFO 0x6A
  39. #define CMD_GET_FILE_INFO_ACK 0x6B
  40. #define CMD_GET_FILE_DATA 0x7A
  41. #define CMD_GET_FILE_DATA_ACK 0x7B
  42. #define GET_FILE_TIMES 3 //最多重获取3次文件信息
  43. #define GET_DATA_TIMES 20 //最多重获取5次数据信息
  44. typedef struct SUT_FILE_INFO2
  45. {
  46. unsigned char encrypted; //文件数据是否已加密? 0--未加密 1--加密算法1:各字节和key直接异或运算; 2--加密算法2:将key转为key1后再与各字节异或运算; 3...其他
  47. unsigned char key; //加密用的key
  48. char FileName[20]; //文件名。一般情况下,文件名=ProductName_Vxxx 其中xxx为版本号
  49. unsigned int FileLength; //文件总长度
  50. unsigned char MD5[16]; //文件MD5码. 如果文件已加密,此MD5为加密后的文件的MD5
  51. }__attribute__((packed)) SUT_FILE_INFO2;
  52. ///////////////////////////////////////
  53. typedef struct IAP_UI_PRA
  54. {
  55. uint8_t update;
  56. uint32_t total_size;
  57. uint32_t down_size;
  58. }IAP_UI_PRA;//用来显示进度使用
  59. typedef struct SUT_NET_STATUS
  60. {
  61. unsigned char FotaTCP;
  62. unsigned short Tick10ms;
  63. unsigned char TaskStart;
  64. unsigned char TaskStatus;
  65. unsigned char FileReqOk;
  66. uint8_t timeTry;
  67. uint8_t resetModemTime;
  68. uint8_t getFileInfoTime;//请求文件次数计数
  69. uint8_t getDataInfoTime;//请求数据次数计数
  70. uint8_t errType;//失败退出时的错误信息
  71. unsigned char encrypted; //文件数据是否已加密? 0--未加密 1--加密算法1:各字节和key直接异或运算; 2--加密算法2:将key转为key1后再与各字节异或运算; 3...其他
  72. unsigned char key; //加密用的key
  73. unsigned int FileLength; //文件总长度
  74. unsigned int FileOffset;//文件偏移
  75. unsigned char MD5[16]; //文件MD5码. 如果文件已加密,此MD5为加密后的文件的MD5
  76. char FullFileName[20];
  77. IAP_UI_PRA iapUI;
  78. }SUT_NET_STATUS;
  79. typedef enum{
  80. MODE_HTTP_MCU,
  81. MODE_HTTP_MODEM
  82. }MODE_HTTP_TYPE;
  83. void FotaIap_Handle(unsigned char *msg);
  84. void SetUpAppricationVerPending(void);
  85. void SetUpAppricationVerShow(int);
  86. void SetUpAppricationVerResponse(void);
  87. void Fota_Update_Show(int Update);
  88. void TriggerHttpOn(MODE_HTTP_TYPE type);
  89. #endif