| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
-
- #ifndef __MYIAP_H
- #define __MYIAP_H
- /*****************************************************************/
- #include <stm32f10x.h>
- #include "includes.h"
- #define DATA_DRAT_SIZE_PER_TIME 1024 //每一次数据请求包大小
- #define FOGA_RECV_BUFFER_SIZE DATA_DRAT_SIZE_PER_TIME+2 //两ASCII相当于一个数据,加两字节CRC
- #define FOTA_IAP_SOCKET 2
- #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_SERVER_IP "120.77.66.129"//POC_SERVER_IP
- #define FOTA_IAP_SERVER_PORT 1413//FOTA_SERVER_PORT
- #define UPDATE_PROTOCOL 0x80
- #define UPDATE_CODE_VERSION_REQ 0x00
- #define UPDATE_CODE_DATA_REQ 0x01
- #define UPDATE_CODE_DATA_WITH_CRC_REQ 0x02
- #define UPDATE_DEV_ID_SIZE 16
- #define TASK_WAIT 0x12
- #define TASK_PC_UPDATE 0x25
- #define TASK_MODEM_UPDATE 0x36
- #define TASK_FILE_CHECK 0x47
- #define TASK_GOTO_APP 0X58
- #define TASK_VERSION_ERROR 0x97
- #define TASK_EXIT 0xc2
- #define TICK_COUNT 9 //20ms
- #define TIME_OUT_IAP 45
- #define RETRY_TIME 3//重试次数
- #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;
- extern uint16_t ui_version;
- extern struct IAP_PRA IapPra;
- typedef struct APP_CONF
- {
- uint32_t start_addr;
- uint32_t app_size;
- uint32_t app_store_offset;
- }APP_CONF;
-
- typedef struct IAP_UI_PRA
- {
- uint8_t update;
- uint32_t total_size;
- uint32_t down_size;
- }IAP_UI_PRA;
-
- typedef struct IAP_PRA
- {
- unsigned short Tick10ms;
- unsigned char TaskStart;
- unsigned char TaskStatus;
- uint32_t timeOut;
- uint8_t timeTry;//重试次数
- uint8_t resetModemTime;//复位模块次数
- unsigned char V_flag;//第一次版本请求 0未成功请求 1成功请求过 -- 这个主要是考虑是否确认MD16码的使用
- unsigned char GotData_IPRECV; //0空中升级过程中版本或数据请求没有数据返回 1有版本请求返回 2有数据请求返回 3下载完数据正在校验文件
-
- char MD5[16];
- uint32_t u_req_offset;//当前包所预想请求的offset
- uint32_t u_offset;//保存当前包请求到的offset
- uint32_t u_length;//收到的包长度
- uint32_t u_filesize;//文件长度
- uint32_t u_DownFilesize;//已下载的文件长度
- unsigned char FOGA_buf[FOGA_RECV_BUFFER_SIZE];
-
- uint8_t FOTA_IS_ON; //0 not start, 1 start
-
- IAP_UI_PRA iapUI;
- }IAP_PRA;
- typedef struct
- {
- uint32_t magic; // UPDATE_MAGIC
- uint8_t protocol;
- uint8_t code;
- char dev_id[UPDATE_DEV_ID_SIZE];
- uint16_t tid;
- uint16_t count; // 除本结构外后续数据长度
- } __attribute__((packed)) update_hdr_t; //sizeof()=4+2+16+2+2=26
- typedef struct
- {
- update_hdr_t hdr;
- char product[16];
- uint16_t version;
- } __attribute__((packed)) update_version_req_t;
- typedef struct
- {
- update_hdr_t hdr;
- uint8_t version_md5[16]; // 升级包 MD5
- uint32_t offset;
- uint32_t length;
- } __attribute__((packed)) update_data_req_t;
- typedef struct
- {
- update_hdr_t hdr; //26
- uint8_t version_md5[16]; // 升级包 MD5
- uint32_t offset;
- uint32_t length;
- uint8_t data[1];
- } __attribute__((packed)) update_data_rsp_t;
- void FotaIap_Handle(char *);
- void SetUpAppricationVerPending(void);
- void SetUpAppricationVerShow(int);
- void SetUpAppricationVerResponse(void);
- #endif
-
|