#ifndef __MYIAP_H #define __MYIAP_H /*****************************************************************/ #include #include "includes.h" #define USING_LOCAL_TIME 0 #define USING_SERVER_TIME 1 #define DATA_DRAT_SIZE_PER_TIME 1024 //每一次数据请求包大小 #define FOGA_RECV_BUFFER_SIZE DATA_DRAT_SIZE_PER_TIME+2 //两ASCII相当于一个数据,加两字节CRC #define FOTA_IAP_SOCKET 3 #define ENABL_FOGA_BACK_DATA_PRINT 1 //是否允许空中升级过程打印接到数据的具体数据 数据量比较大 //defautl: 1 不想看到具体数据 //调试: 0 可以看到-调试用 //注意,如果为0--要把 UART1_TX_BUFFER_SIZE 设置为1024+256才能看,否则内部可能会溢出 #define FOTA_MAGIC 0x41544F46 // "FOTA" #define PCTA_MAGIC 0x41544350 // "PCTA" #define GOOD_UPDATE_STORAGE 0x9fedcba9 #define FOTA_IAP_IP0 120 #define FOTA_IAP_IP1 77 #define FOTA_IAP_IP2 66 #define FOTA_IAP_IP3 129 #define FOTA_IAP_IP "120.77.66.129" #define FOTA_IAP_PORT 9137 #define TASK_GET_FILEINFO 0x12 #define TASK_GET_FILEDATA 0x25 #define TASK_MODEM_UPDATE 0x36 #define TASK_FILE_CHECK 0x47 #define TASK_GOTO_APP 0X58 #define TASK_EXIT 0xc2 #define TICK_COUNT 500 //20ms #if 0 #define APP_FILE_DATA_ADDR FILE_DATA_ADDR_END+1 //下载的APP存放首地址 0x20000 ~ 0x3FFFFF 下两M数据区 #else #define APP_FILE_DATA_ADDR 0x200000 #endif extern unsigned char Fota_Rcv_Pri_Flag; /////////////////////////////////// #define PACKET_HEAD 0xAB #define CMD_GET_FILE_INFO 0x6A #define CMD_GET_FILE_INFO_ACK 0x6B #define CMD_GET_FILE_DATA 0x7A #define CMD_GET_FILE_DATA_ACK 0x7B #define GET_FILE_TIMES 3 //最多重获取3次文件信息 #define GET_DATA_TIMES 20 //最多重获取5次数据信息 typedef struct SUT_FILE_INFO2 { unsigned char encrypted; //文件数据是否已加密? 0--未加密 1--加密算法1:各字节和key直接异或运算; 2--加密算法2:将key转为key1后再与各字节异或运算; 3...其他 unsigned char key; //加密用的key char FileName[20]; //文件名。一般情况下,文件名=ProductName_Vxxx 其中xxx为版本号 unsigned int FileLength; //文件总长度 unsigned char MD5[16]; //文件MD5码. 如果文件已加密,此MD5为加密后的文件的MD5 }__attribute__((packed)) SUT_FILE_INFO2; /////////////////////////////////////// typedef struct IAP_UI_PRA { uint8_t update; uint32_t total_size; uint32_t down_size; }IAP_UI_PRA;//用来显示进度使用 typedef struct SUT_NET_STATUS { unsigned char FotaTCP; unsigned short Tick10ms; unsigned char TaskStart; unsigned char TaskStatus; unsigned char FileReqOk; uint8_t timeTry; uint8_t resetModemTime; uint8_t getFileInfoTime;//请求文件次数计数 uint8_t getDataInfoTime;//请求数据次数计数 uint8_t errType;//失败退出时的错误信息 unsigned char encrypted; //文件数据是否已加密? 0--未加密 1--加密算法1:各字节和key直接异或运算; 2--加密算法2:将key转为key1后再与各字节异或运算; 3...其他 unsigned char key; //加密用的key unsigned int FileLength; //文件总长度 unsigned int FileOffset;//文件偏移 unsigned char MD5[16]; //文件MD5码. 如果文件已加密,此MD5为加密后的文件的MD5 char FullFileName[20]; IAP_UI_PRA iapUI; }SUT_NET_STATUS; typedef enum{ MODE_HTTP_MCU, MODE_HTTP_MODEM }MODE_HTTP_TYPE; void FotaIap_Handle(unsigned char *msg); void SetUpAppricationVerPending(void); void SetUpAppricationVerShow(int); void SetUpAppricationVerResponse(void); void Fota_Update_Show(int Update); //void TriggerHttpOn(MODE_HTTP_TYPE type); #endif