blob: b4604dc0ec682aa6ec6b0e3f8202eaca0c5c85d0 [file] [log] [blame]
yuezonghe824eb0c2024-06-27 02:32:26 -07001/**
2* @file upi_delta.h
3* @brief ²î·ÖÎļþÏà¹ØÍ·Îļþ
4*
5* Copyright (C) 2017 Sanechips Technology Co., Ltd.
6* @author
7*
8*/
9
10#ifndef _UPI_UPGRADE_PACKAGE_H
11#define _UPI_UPGRADE_PACKAGE_H
12
13/*******************************************************************************
14 * Include header files *
15 ******************************************************************************/
16
17#include "upi_public.h"
18
19/*******************************************************************************
20 * Macro definitions *
21 ******************************************************************************/
22
23#define UPGRADE_PACKAGE_HEAD_MAGIC ("FOTA")
24#define UPGRADE_PACKAGE_HEAD_MAGIC_LEN (4)
25
26#define VERSION_LEN (64)
27
28
29/*******************************************************************************
30 * Type definitions *
31 ******************************************************************************/
32
33/**
34* @brief ²î·ÖÎļþÎļþÍ·ÐÅÏ¢£¬¿ÉÒÔÓÃÓÚУÑé²î·ÖÎļþµÈ£»¼°»ñÈ¡µ±Ç°ÎļþÖзÖÇø¼°extraÊýµÈ£»
35* @param magic_word: ÎļþͷħÊõ×Ö
36* @param plat: ƽ̨
37* @param upgrade_package_type: Éý¼¶°üÎļþÀàÐÍ AL£ºÈ«°æ±¾£¬ DE£º²î·Ö
38* @param upgrade_type Éý¼¶ÀàÐÍ
39* @param upgrade_package_version: Éý¼¶°üÎļþ°æ±¾
40* @param partition_num: ·ÖÇøÊý
41* @param extra_num: hashËã·¨ÀàÐÍ£¬0£ºÄ¬ÈÏ SHA512
42* @param block_size: ¿é´óС£¬128ÕûÊý±¶
43* @param extra_num: extraÎļþÊý
44* @param version_src: ²î·ÖÎļþÉý¼¶Ô´°æ±¾£¬¶ÔÓ¦ÄÚ²¿°æ±¾ºÅ
45* @param version_dst: ²î·ÖÎļþÉý¼¶Ä¿±ê°æ±¾ºÅ£¬¶ÔÓ¦ÄÚ²¿°æ±¾ºÅ
46* @param hash: hashËã·¨Öµ
47**/
48
49
50
51typedef struct {
52 char magic_word[UPGRADE_PACKAGE_HEAD_MAGIC_LEN];
53 int upgrade_package_version;
54 int plat;
55 int upgrade_package_type;
56 int upgrade_type;
57 int partition_num;
58 int extra_num;
59 int hash_type;
60 int block_size;
61 char version_src[VERSION_LEN];
62 char version_dst[VERSION_LEN];
63 unsigned char hash[HASH_MAX_LEN];
64 char reserve[28];
65} upgrade_package_head_info_t;
66
67/**
68* @brief ·ÖÇøÎļþÍ·ÐÅÏ¢£¬°üº¬´ýÉý¼¶µÄ²î·Ö·ÖÇøÎļþÐÅÏ¢
69* @param name: ²î·Ö·ÖÇøÃû
70* @param len: ²î·Ö·ÖÇøÎļþ³¤¶È
71* @param offset: ²î·Ö·ÖÇøÎļþÏà¶ÔÓÚdeltaÎļþ0µØÖ·µÄÆ«ÒÆ
72* @param partition_type: ·ÖÇøÀàÐÍ
73* @param zipped: ÊÇ·ñ¾­¹ýѹËõ
74* @param reserve: ±£Áô
75* @param hash: ÖÆ×÷²î·Ö·ÖÇøµÄÔ´·ÖÇøÎļþmd5
76*/
77typedef struct {
78 char name[PARTITION_NAME_LEN];
79 int len;
80 int offset;
81 int partition_type;
82 int zipped;
83 char reserve[16];
84 unsigned char hash[HASH_MAX_LEN];
85} partition_head_info_t;
86
87
88/**
89* @brief extraÐÅÏ¢
90* @param name: extraÎļþÃû
91* @param len: Îļþ³¤¶È
92* @param offset: »ùÓÚÕû¸ö²î·ÖÎļþµÄÆ«ÒÆ
93* @param hash: ÎļþhashÖµ
94* @param reserve: Ô¤ÁôÐÅÏ¢
95*/
96typedef struct {
97 char name[EXTRA_NAME_LEN];
98 int len;
99 int offset;
100 char reserve_1[8];
101 unsigned char hash[HASH_MAX_LEN];
102 char reserve_2[8];
103} extra_head_info_t;
104
105
106/**
107* @brief ²î·ÖÎļþÐÅÏ¢
108* @param head: ÎļþÍ·ÐÅÏ¢
109* @param partition_num: ÎļþÖзÖÇøÊý
110* @param partition_info: ·ÖÇøÐÅÏ¢Ö¸ÕëÍ·
111* @param extra_num: extraÎļþÊý
112* @param extra_info: extraÎļþÐÅÏ¢Ö¸Õë
113* @param upgrade_package_file_desc: Îļþ¾ä±ú
114* @param upgrade_package_file_size: Îļþ³¤¶È
115*/
116typedef struct {
117 upgrade_package_head_info_t *head;
118// int partition_num;
119 partition_head_info_t *partition_info;
120// int extra_num;
121 extra_head_info_t *extra_info;
122 int upgrade_package_file_desc;
123 unsigned int upgrade_package_file_size;
124}upgrade_package_info_t;
125
126
127
128
129
130
131/*******************************************************************************
132 * Global variable declarations *
133 ******************************************************************************/
134
135
136/*******************************************************************************
137 * Global function declarations *
138 ******************************************************************************/
139
140
141int init_upgrade_package_info(const char * upagrade_package_file_path);
142void deinit_upgrade_package_info();
143
144upgrade_package_info_t *get_upgrade_package_info();
145
146partition_head_info_t *get_partition_head_info();
147int get_partition_num();
148
149extra_head_info_t *get_extra_head_info();
150int get_extra_num();
151
152int get_upgrade_package_file_fd();
153
154partition_head_info_t *get_partition_head_info_by_name(const char *partition_name);
155int get_total_partition_length();
156
157int get_upgrade_type();
158
159/*******************************************************************************
160 * Inline function implementations *
161 ******************************************************************************/
162
163
164
165
166#endif // _UPI_UPGRADE_PACKAGE_H
167