fota.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #ifndef __FOTA__H
  2. #define __FOTA__H
  3. #define FOTA_DEBUG 0
  4. #define FOTA_SOCKET '2'
  5. #define APP_FILE_DATA_ADDR 0 //保存在外部FLASH哪个位置开始
  6. #define PACKET_HEAD 0xAB
  7. #define CMD_GET_FILE_INFO 0x6A
  8. #define CMD_GET_FILE_INFO_ACK 0x6B
  9. #define CMD_GET_FILE_DATA 0x7A
  10. #define CMD_GET_FILE_DATA_ACK 0x7B
  11. #define TIMEOUT_10MS_FILE 500 //间隔5秒进行一次文件请求
  12. #define TIMEOUT_10MS_DATA 300 //间隔3秒进行一次数据请求
  13. #define MAX_TIME_GET_FILE 3 //最多请求文件3次[连续]
  14. #define MAX_TIME_GET_DATA 5 //最多请求数据5次[连续]
  15. #define DATA_DRAT_SIZE_PER_TIME 1024 //每一次数据请求包大小
  16. typedef struct SUT_FILE_INFO2
  17. {
  18. unsigned char encrypted; //文件数据是否已加密? 0--未加密 1--加密算法1:各字节和key直接异或运算; 2--加密算法2:将key转为key1后再与各字节异或运算; 3...其他
  19. unsigned char key; //加密用的key
  20. char FileName[20]; //文件名。一般情况下,文件名=ProductName_Vxxx 其中xxx为版本号
  21. unsigned int FileLength; //文件总长度
  22. unsigned char MD5[16]; //文件MD5码. 如果文件已加密,此MD5为加密后的文件的MD5
  23. }__attribute__((packed)) SUT_FILE_INFO;
  24. typedef enum
  25. {
  26. FOTA_OFF,
  27. FOTA_ON
  28. }FOTA_TYPE;
  29. typedef enum
  30. {
  31. LOAD_GET_FILEINFO,//获取文件信息
  32. LOAD_GET_FILEDATA,//拉取文件内容
  33. LOAD_FILE_CHECK, //较验文件MD5
  34. LOAD_DONE //完成操作
  35. }LOADFILE_TYPE;
  36. typedef struct
  37. {
  38. unsigned char init_tcpStatus:1;
  39. unsigned char tcpCnt;//不能间隔太快发连接TCP指令,这是间隔计数
  40. unsigned int time_10ms_cnt;
  41. unsigned char retryTime;
  42. unsigned short targetVersion;
  43. ////////////////////////////////////////////
  44. unsigned int fileLength;
  45. unsigned char encrypted;
  46. unsigned char key;
  47. unsigned char MD5[16];
  48. unsigned int lastOffset;//用于数据包重传请求
  49. FOTA_TYPE fotaFlag;
  50. LOADFILE_TYPE fotaStatus;
  51. }__attribute__((packed)) SUT_FOTA_PARA;
  52. extern SUT_FOTA_PARA sutFotaPara;
  53. void FotaDataInit(void);
  54. void FotaHandle(void);
  55. void TriggerFotaOption(FOTA_TYPE fotaStatus);
  56. void HGS_FotaHandle(unsigned char *data, unsigned short len);
  57. void FotaTest(void);
  58. #endif