blob: aa7236d4707f23237c0b13109705202bb82998b5 [file] [log] [blame]
xjb04a4022021-11-25 15:01:52 +08001#ifndef _IOT_ROCK_H_
2#define _IOT_ROCK_H_
3
tao.liu99087c22022-03-21 23:37:25 -04004#include <sys/types.h>
5#include <sys/stat.h>
6#include <fcntl.h>
7#include <unistd.h>
8
xjb04a4022021-11-25 15:01:52 +08009/* public */
10
11#define E_ROCK_SUCCESS (0)
12#define E_ROCK_INVALID_DELTA (-1)
13#define E_ROCK_DELTA_MISMATCH (-2)
14#define E_ROCK_DELTA_CHUNK_MISMATCH (-3)
15#define E_ROCK_READ_DELTA_ERROR (-4)
16#define E_ROCK_READ_BLOCK_ERROR (-11)
17#define E_ROCK_WRITE_BLOCK_ERROR (-12)
18#define E_ROCK_RAM_NOT_ENOUGH (-20)
19#define E_ROCK_INVALID_CTX (-30)
tao.liu6090a982022-05-07 10:43:42 +080020#define E_ROCK_FOTA_ADDR (-50)
xjb04a4022021-11-25 15:01:52 +080021
22
23#define PATCH_SYSTEM (1)
24#define PATCH_BOOT (2)
25#define PATCH_TEE (3)
26#define PATCH_MD1IMG (4)
27#define PATCH_MD1DSP (5)
28#define PATCH_VBMETA (6)
tao.liub247eac2022-08-18 10:59:57 +080029#define PATCH_OEMAPP (7)
30#define PATCH_OEMAPP2 (8)
31#define PATCH_BL33 (9)
32#define FULL_SYSTEM (10)
33#define FULL_BOOT (11)
34#define FULL_TEE (12)
35#define FULL_MD1IMG (13)
36#define FULL_MD1DSP (14)
37#define FULL_VBMETA (15)
38#define FULL_OEMAPP (16)
39#define FULL_OEMAPP2 (17)
40#define FULL_BL33 (18)
xjb04a4022021-11-25 15:01:52 +080041
tao.liub247eac2022-08-18 10:59:57 +080042#define MAX_OTA_ROLE (18)
xjb04a4022021-11-25 15:01:52 +080043
44
45
46#define MODE_NORMAL 0
47#define MODE_A2B 1
48#define MODE_B2A 2
49
50#define WAIT 0xff
51#define PASS 0
52#define ERROR -1
53
54typedef struct {
55 void* user_context;
56 unsigned int rom_base; // old rom start
57 unsigned char* ram_base; // ram working buffer start
58 unsigned int ram_len; // ram working buffer len
59
60 unsigned int backup_base; // ram backup storage start
61 unsigned int backup_len; // ram backup storage len
62
63 unsigned int update_nvram; // nvram update flag
64
65 int read_rom_directly;
66 int first_run;
67} IOT_UPDATA_CONTEXT;
68
69
70typedef struct {
71 unsigned int sys; //system 差分包大小
72 unsigned int boot; //boot 差分包大小
73 unsigned int tee; //tee 差分包大小
74 unsigned int md1img; //md1img 差分包大小
75 unsigned int md1dsp; //md1dsp 差分包大小
76 unsigned int vbmeta; //vbmeta 差分包大小
tao.liub247eac2022-08-18 10:59:57 +080077 unsigned int oemapp;
78 unsigned int oemapp2;
xjb04a4022021-11-25 15:01:52 +080079 unsigned int bl33; //bl33 差分包大小
80 unsigned int full_sys; //system 整包大小
81 unsigned int full_boot; //boot
82 unsigned int full_tee; //tee 整包大小
83 unsigned int full_md1img; // 整包大小
84 unsigned int full_md1dsp; //md1dsp 整包大小
85 unsigned int full_vbmeta; //vbmeta 整包大小
tao.liub247eac2022-08-18 10:59:57 +080086 unsigned int full_oemapp;
87 unsigned int full_oemapp2;
88 unsigned int full_bl33; //bl33 整包大小
xjb04a4022021-11-25 15:01:52 +080089} DELTA_HEAD;
90
91typedef struct {
92
93 char fota_flag[32]; //fota 标志保留
94 int update_result; //升级结果
95 int ota_run; //
96 char cid[32];
97 char did[32];
98} UPDATE_INFO;
99
100
101typedef struct {
102 int need_update;
103 int check_delta;
104 int check_rom;
105 int update_result;
106
107} UPDATE_STATUS;
108
109
110typedef struct {
111 int ota_run;
112 UPDATE_STATUS update_status[MAX_OTA_ROLE];
113 int update_result;
114 int switch_slot;
115
116} OTA_STATUS;
117
118
119
120
121
122//#define DELTA_HEARD_SIZE (4*5)
123
tao.liub247eac2022-08-18 10:59:57 +0800124#define DELTA_HEARD_SIZE (4*9 + 4*9)
xjb04a4022021-11-25 15:01:52 +0800125#define DELTA_FULL_HEARD_SIZE 8
126
127
128
129int iot_patch(IOT_UPDATA_CONTEXT* update_ctx);
130
131unsigned int iot_hash(unsigned char *buf,unsigned int len, unsigned int* value);
132int lynq_md5_file_verfy(char* filePath, char* file_md5);
133//int md5_file_verfy_new(char* filePath, char* file_md5,int packe_len);
134int lynq_rock_main(int first_run);
135int lynq_fota_func(void);
tao.liu99087c22022-03-21 23:37:25 -0400136int lynq_nand_open(const char *pathname, int flags);
137ssize_t lynq_nand_read(int fd, void *buf, size_t count);
138ssize_t lynq_nand_write(int fd, void *buf, size_t count);
139int lynq_nand_close(int fd);
tao.liued131922022-04-06 02:31:31 -0400140int lynq_get_upgrade_status(void);
tao.liu6090a982022-05-07 10:43:42 +0800141void lynq_reboot_device(void);
142int lynq_fota_nrestart(void);
143int lynq_fota_set_addr_value(char *value,int size);
144int lynq_fota_get_addr_value(char *tmp);
xjb04a4022021-11-25 15:01:52 +0800145#endif
146
147
148