blob: 8b06861b397134c5216b629122cb5892cf6f5c99 [file] [log] [blame]
zw.wang96c5d4e2025-07-01 11:35:13 +08001#ifndef _WEFOTA_MAIN_H_
2#define _WEFOTA_MAIN_H_
3
4#define WEFOTA_HEADER_MAGIC 0x41544F46
5#define WEFOTA_HEADER_PROTOCOL 0x80
6#define WEFOTA_HEADER_TID 0x0A
7
8#define WEFOTA_HEADER_SIZE 107
9#define WEFOTA_REQ_MAX_LEN (WEFOTA_HEADER_SIZE + 68)
10
11#define WEFOTA_DIFF_PACK_DATA_MAX_LEN 1024
12#define WEFOTA_RESP_DIFF_PACK_DATA_MAX_LEN (WEFOTA_DIFF_PACK_DATA_MAX_LEN + 39)
13#define WEFOTA_RESP_MAX_LEN (WEFOTA_HEADER_SIZE + WEFOTA_RESP_DIFF_PACK_DATA_MAX_LEN)
14
15#define WEFOTA_MAX_RETRIES 3
16#define WEFOTA_TIMEOUT_SEC 1
17#define WEFOTA_MAX_RETRY_COUNT 60
18
19typedef enum _FOTA_Status{
20 FOTA_STATUS_IDLE = 0,
21 FOTA_STATUS_GET_IP_1,
22 FOTA_STATUS_CHECK_TASK,
23 FOTA_STATUS_GET_IP_2,
24 FOTA_STATUS_GET_VER_ID,
25 FOTA_STATUS_GET_DIFF_PACK_ID,
26 FOTA_STATUS_GET_DIFF_PACK_DATA,
27 FOTA_STATUS_GET_DIFF_PACK_END,
28 FOTA_STATUS_INSTALL_DIFF_PACK,
29 FOTA_STATUS_MAX
30} FOTA_Status;
31
32typedef struct _WeFOTA_MSG{
33 FOTA_Status status;
34 unsigned char req_code;
35 unsigned short req_count;
36 unsigned char resp_code;
37 unsigned short resp_count;
38} WeFOTA_MSG;
39
40#pragma pack(1)
41typedef struct _WeFOTAHeader{
42 unsigned int magic; // 4 bytes
43 unsigned char protocol; // 1 byte
44 unsigned char code; // 1 byte
45 unsigned char cgi[9]; // 9 bytes
46 unsigned char imsi[15]; // 15 bytes
47 unsigned char iccid[20]; // 20 bytes
48 unsigned char devid[32]; // 32 bytes,16 meid and 16 imei
49 unsigned char gps[20]; // 20 bytes
50 unsigned char sig; // 1 byte
51 unsigned short tid; // 2 bytes
52 unsigned short count; // 2 bytes
53} WeFOTAHeader;
54
55typedef struct _ServerAddr{
56 char ip[16];
57 unsigned short port;
58} ServerAddr;
59
60typedef struct _FotaTask{
61 unsigned char flag;
62 unsigned int interval;
63 unsigned int delay;
64 char destVersion[32];
65} FotaTask;
66
67typedef struct _Version{
68 char product[8];
69 char orig_version[30];
70 char dest_version[30];
71} Version;
72
73typedef struct _VerID{
74 char product[8];
75 unsigned short orig_verid;
76 unsigned short dest_verid;
77} VerID;
78
79typedef struct _DiffPackInfo{
80 unsigned char diffPackID[15];
81 unsigned char MD5[16];
82 unsigned int size;
83} DiffPackInfo;
84
85typedef struct _DiffPackDataReq{
86 unsigned char diffPackID[15];
87 unsigned int offset;
88 unsigned int length;
89} DiffPackDataReq;
90
91typedef struct _DiffPackDataResp{
92 unsigned char diffPackID[15];
93 unsigned char MD5[16];
94 unsigned int offset;
95 unsigned int length;
96 unsigned char data[1024];
97} DiffPackDataResp;
98
99typedef struct _DiffPackEnd{
100 unsigned char diffPackID[15];
101 unsigned int costTime;
102} DiffPackEnd;
103
104#pragma pack()
105
106int wefaota_header_init(WeFOTAHeader *hdr);
107void set_fota_status(FOTA_Status status);
108FOTA_Status get_fota_status(void);
109
110#endif