blob: 7c34eb1b30fdbab5fdca4d5572e06ae1e0f6889c [file] [log] [blame]
yu.dongc33b3072024-08-21 23:14:49 -07001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2018
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/*******************************************************************************
37 * Filename:
38 * ---------
39 * mcf_struct.h
40 *
41 * Project:
42 * --------
43 * UMOLYA
44 *
45 * Description:
46 * ------------
47 * MD Configuration Framework structure definition.
48 *
49 * Author:
50 * -------
51 * -------
52 *
53 *==============================================================================
54 * HISTORY
55 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
56 *------------------------------------------------------------------------------
57 * removed!
58 *
59 * removed!
60 * removed!
61 * removed!
62 *
63 * removed!
64 * removed!
65 * removed!
66 * removed!
67 *
68 * removed!
69 * removed!
70 *
71 * removed!
72 * removed!
73 *
74 * removed!
75 * removed!
76 * removed!
77 * removed!
78 *
79 * removed!
80 * removed!
81 * removed!
82 * removed!
83 *
84 * removed!
85 * removed!
86 * removed!
87 *
88 * removed!
89 * removed!
90 * removed!
91 *
92 * removed!
93 * removed!
94 * removed!
95 * removed!
96 *
97 * removed!
98 * removed!
99 * removed!
100 *
101 * removed!
102 * removed!
103 * removed!
104 * removed!
105 * removed!
106 * removed!
107 * removed!
108 *
109 *
110 * removed!
111 * removed!
112 * removed!
113 * removed!
114 *
115 * removed!
116 * removed!
117 * removed!
118 *
119 * removed!
120 * removed!
121 * removed!
122 *
123 * removed!
124 * removed!
125 * removed!
126 *
127 * removed!
128 * removed!
129 * removed!
130 *
131 * removed!
132 * removed!
133 * removed!
134 *
135 * removed!
136 * removed!
137 * removed!
138 *
139 * removed!
140 * removed!
141 * removed!
142 *
143 * removed!
144 * removed!
145 * removed!
146 *
147 * removed!
148 * removed!
149 * removed!
150 *
151 * removed!
152 * removed!
153 * removed!
154 *
155 * removed!
156 * removed!
157 * removed!
158 *
159 * removed!
160 * removed!
161 * removed!
162 *
163 * removed!
164 * removed!
165 * removed!
166 * removed!
167 *
168 * removed!
169 * removed!
170 * removed!
171 *
172 * removed!
173 * removed!
174 *
175 * removed!
176 * removed!
177 * removed!
178 *
179 * removed!
180 * removed!
181 * removed!
182 *
183 * removed!
184 * removed!
185 * removed!
186 *
187 * removed!
188 * removed!
189 * removed!
190 *
191 * removed!
192 * removed!
193 * removed!
194 *
195 * removed!
196 * removed!
197 * removed!
198 * removed!
199 *
200 * removed!
201 * removed!
202 * removed!
203 *
204 * removed!
205 * removed!
206 * removed!
207 *
208 * removed!
209 * removed!
210 * removed!
211 *
212 * removed!
213 * removed!
214 * removed!
215 * removed!
216 *
217 * removed!
218 * removed!
219 * removed!
220 * removed!
221 *
222 * removed!
223 * removed!
224 * removed!
225 *
226 *------------------------------------------------------------------------------
227 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
228 *==============================================================================
229 *******************************************************************************/
230#ifndef __MCF_STRUCT_H
231#define __MCF_STRUCT_H
232
233#include "kal_public_defs.h"
234#include "ps_public_enum.h"
235
236#include "mcf_enum.h"
237#include "ps_public_struct.h"
238
239/*------------------------------------------------------------------------------
240 * Constant definition.
241 *----------------------------------------------------------------------------*/
242#define MCF_MAX_OTA_FILE_SIZE (128 * 1024)
243#define MCF_MAX_TLVOTA_FILE_SIZE (192 * 1024)
244#define MCF_MAX_INI_FILE_SIZE (16 * 1024)
245#define MCF_MAX_FILE_SIZE ((MCF_MAX_TLVOTA_FILE_SIZE > MCF_MAX_OTA_FILE_SIZE) ? MCF_MAX_TLVOTA_FILE_SIZE : MCF_MAX_OTA_FILE_SIZE)
246
247#define MCF_MAX_DHL_LOGGING_NUM 1000
248#define MCF_MAX_DHL_LOGGING_LEN 120
249
250#define MCF_FILE_MAX_MD_PATH_LEN 64
251#define MCF_FILE_MAX_AP_PATH_LEN 128
252#define MCF_FILE_MAX_NAME_LEN 128
253#define MCF_FILE_MAX_SW_VERSION_LEN 128
254#define MCF_FILE_MAX_GEN_TIME_LEN 64
255#define MCF_FILE_MAX_TAG_NAME_NUM 128
256#define MCF_FILE_MAX_TOOL_VERSION_LEN 32
257
258#define MCF_SW_VERNO_LEN 128
259#define MCF_SW_BUILD_TIME_LEN 64
260
261#define MCF_MAX_TAG_NUM 50
262#define MCF_MAX_INI_ITEM_LEN 32
263#define MCF_MAX_INI_ITEM_VALUE_LEN 64
264
265#ifdef __MCF_COMBINE_FILE_SUPPORT__
266 #define MCF_MAX_MEM_MALLOC_SIZE (2 * MCF_MAX_FILE_SIZE)
267#else
268 #define MCF_MAX_MEM_MALLOC_SIZE 1024
269#endif
270
271#define MCF_BOOT_TRACE_BUFFER_SIZE (1024 * 36) / 4
272
273/* MCF File operation bit mask */
274#define MCF_FILE_OP_NONE 0
275#define MCF_FILE_OP_CHECKSUM 1<<0
276#define MCF_FILE_OP_AES_128 1<<1
277#define MCF_FILE_OP_NOT_RESET_LID 1<<2
278#define MCF_FILE_OP_AES_256 1<<3
279#define MCF_FILE_OP_SHA256_RSA2048 1<<4
280#define MCF_FILE_OP_SHA384_RSA3072 1<<5
281
282/*------------------------------------------------------------------------------
283 * Data structure defintion.
284 *----------------------------------------------------------------------------*/
285#define MCF_DECLARE_OBJECT \
286 kal_int32 ref_count; \
287 kal_int32 reader_cnt; \
288 kal_int32 writer_cnt;
289
290typedef struct _mcf_file_info_t {
291 kal_uint8 path_type;
292 kal_char name[MCF_FILE_MAX_NAME_LEN];
293 kal_char sw_version[MCF_FILE_MAX_SW_VERSION_LEN];
294 kal_uint8 sw_version_len;
295 kal_char gen_time[MCF_FILE_MAX_GEN_TIME_LEN];
296 kal_uint8 gen_time_len;
297 kal_uint64 last_mod_time;
298 kal_uint32 checksum;
299} mcf_file_info_t;
300
301typedef struct _mcf_tlvota_file_t {
302 MCF_DECLARE_OBJECT
303
304 kal_uint8 path_type;
305 kal_uint8 reserved[3];
306 kal_char relative_path_name[MCF_FILE_MAX_NAME_LEN];
307 kal_uint8 buff[MCF_MAX_TLVOTA_FILE_SIZE];
308 kal_uint32 sbp_id;
309 protocol_id_enum ps_id;
310 kal_uint8 mcc[MAX_MCC_STR_LEN];
311 kal_uint8 mnc[MAX_MNC_STR_LEN];
312 kal_uint8 iccid[21];
313 kal_uint64 last_mod_time;
314 mcf_file_info_t last_file;
315 mcf_file_info_t temp_file;
316} mcf_tlvota_file_t;
317
318typedef struct _mcf_ota_file_t {
319 MCF_DECLARE_OBJECT
320
321 kal_uint8 path_type;
322 kal_uint8 reserved[3];
323 kal_char relative_path_name[MCF_FILE_MAX_NAME_LEN];
324 kal_uint8 buff[MCF_MAX_OTA_FILE_SIZE];
325 kal_uint64 last_mod_time;
326} mcf_ota_file_t;
327
328typedef struct _mcf_ini_file_t {
329
330 kal_uint8 path_type;
331 kal_uint8 reserved[3];
332 kal_char relative_path_name[MCF_FILE_MAX_NAME_LEN];
333 kal_uint8 buff[MCF_MAX_INI_FILE_SIZE];
334 kal_uint8 tmp_buff[MCF_MAX_INI_FILE_SIZE];
335 kal_uint64 last_mod_time;
336} mcf_ini_file_t;
337
338typedef struct _mcf_t {
339 kal_uint8 reserved[2];
340 kal_bool is_ignore_dsbp[MAX_SIM_NUM];
341 mcf_tlvota_file_t tlvota_file[MAX_SIM_NUM];
342 mcf_ota_file_t ota_file;
343 mcf_tlvota_file_t general_tlvota_file;
344 mcf_ini_file_t ini_file;
345 kal_int32 dsbp_cnf_cnt;
346 kal_int32 dsbp_ind_cnt;
347 kal_bool dsbp_cnf_ret;
348 kal_bool dsbp_ind_ret;
349 kal_bool is_critical;
350 kal_bool is_dsbp_ongoing[MAX_SIM_NUM];
351 kal_bool general_is_ignore_dsbp;
352} mcf_t;
353
354typedef struct _mcf_common_t {
355 kal_uint32 boot_trace_flag;
356 kal_uint8 reserved[2];
357 kal_uint32 boot_trace_buff[MCF_BOOT_TRACE_BUFFER_SIZE];
358 kal_uint32 *boot_trace_buff_ptr;
359 kal_bool boot_trace_full;
360 kal_bool is_em_on;
361 kal_bool update_tlvota[MAX_SIM_NUM];
362 kal_bool update_general_tlvota[MAX_SIM_NUM];
363 kal_bool is_iccid;
364 kal_uint32 ota_api_duration;
365 mcf_ota_result_e tlvota_result[MAX_SIM_NUM];
366} mcf_common_t;
367
368/*
369 * OTA file of tool related structure
370 */
371typedef struct _mcf_tool_file_info_t {
372 kal_uint16 file_version;
373 kal_uint16 total_len;
374 kal_char file_type[8];
375 kal_uint32 operation_mask;
376 kal_uint16 item_num;
377 kal_uint8 sw_version_len;
378 kal_uint8 gen_time_len;
379 kal_uint32 file_size;
380 kal_uint8 tool_version_len;
381 kal_uint8 reserved[11];
382 kal_uint32 checksum;
383 kal_char buff_start;
384 kal_uint8 reserved_2[3];
385} mcf_tool_file_info_t;
386
387typedef struct _mcf_tool_ota_file_item_t {
388 kal_uint16 total_len;
389 kal_uint16 lid;
390 kal_char lid_version[4];
391 kal_uint16 record_idx;
392 kal_uint16 item_tag_len;
393 kal_uint8 is_bit_op;
394 kal_uint8 reserved[3];
395 union {
396 struct {
397 kal_uint8 len;
398 kal_uint8 value_len;
399 kal_uint8 reserved[2];
400 } bit;
401 struct {
402 kal_uint16 value_len;
403 kal_uint8 reserved[2];
404 } byte;
405 } op;
406 kal_char buff_start;
407 kal_uint8 reserved_2[3];
408} mcf_tool_ota_file_item_t;
409
410typedef struct _mcf_tool_tlvota_file_item_t {
411 kal_uint16 total_len;
412 kal_uint16 lid;
413 kal_char lid_version[4];
414 kal_uint8 tag_type;
415 kal_uint8 tag_len;
416 kal_uint16 item_tag_len;
417 kal_uint8 is_bit_op;
418 kal_uint8 reserved[3];
419 union {
420 struct {
421 kal_uint8 len;
422 kal_uint8 value_len;
423 kal_uint8 reserved[2];
424 } bit;
425 struct {
426 kal_uint16 value_len;
427 kal_uint8 reserved[2];
428 } byte;
429 } op;
430 kal_char buff_start;
431 kal_uint8 reserved_2[3];
432} mcf_tool_tlvota_file_item_t;
433
434/* MCF2.0 file Item*/
435
436typedef struct {
437 kal_uint16 total_len;
438 kal_uint8 reserved[2];
439 kal_uint32 global_id;
440 kal_uint16 record_idx;
441 kal_uint8 reserved_2[2];
442 kal_uint16 array_index_len;
443 kal_uint16 value_len;
444 kal_char buff_start;
445} mcf_tool_gid_ota_file_item_t;
446
447typedef struct {
448 kal_uint16 total_len;
449 kal_uint8 reserved[2];
450 kal_uint32 global_id;
451 kal_uint8 tag_type;
452 kal_uint8 tag_len;
453 kal_uint8 reserved_2[2];
454 kal_uint16 array_index_len;
455 kal_uint16 value_len;
456 kal_char buff_start;
457} mcf_tool_gid_tlvota_file_item_t;
458
459/*
460 * SBP related structure
461 */
462typedef struct _mcf_tlvota_tag_t {
463 kal_uint16 tag_type;
464 kal_uint16 tag_len;
465 kal_char *tag;
466 kal_uint8 reserved[3];
467} mcf_tlvota_tag_t;
468
469typedef struct _mcf_tlvota_sbp_tag_t {
470 kal_uint32 sbp_id;
471 kal_uint8 mcc[MAX_MCC_STR_LEN];
472 kal_uint8 mnc[MAX_MNC_STR_LEN];
473} mcf_tlvota_sbp_tag_t;
474
475/*
476 * Local parameter structure for ILM
477 */
478typedef struct _mcf_l4c_report_state_ind_struct {
479 LOCAL_PARA_HDR
480
481 mcf_l4c_report_type_e type;
482 kal_uint32 result;
483} mcf_l4c_report_state_ind_struct;
484
485typedef struct {
486 LOCAL_PARA_HDR
487
488 kal_uint8 src_id;
489 module_type src_mod_id;
490 kal_uint8 reserved[3];
491 kal_uint32 config_op;
492 kal_bool is_dsbp_retry;
493} mcf_l4bsbp_trigger_dsbp_ind_struct;
494
495typedef struct {
496 LOCAL_PARA_HDR
497
498 kal_uint8 src_id;
499 module_type src_mod_id;
500 kal_uint8 ps_id;
501 kal_uint8 reserved[2];
502 mcf_trigger_dsbp_result_e result;
503 kal_uint32 config_op;
504 kal_bool is_dsbp_retry;
505} mcf_l4bsbp_trigger_dsbp_cnf_struct;
506
507typedef struct {
508 LOCAL_PARA_HDR
509
510 module_type src_mod_id;
511 kal_uint8 ps_id;
512 kal_uint8 reserved[3];
513 mcf_trigger_dsbp_result_e result;
514 kal_uint32 config_op;
515 kal_bool is_dsbp_retry;
516} mcf_l4bsbp_trigger_dsbp_result_ind_struct;
517
518/*
519 * MCF dump related structure
520 */
521typedef struct _mcf_dump_lid_header_struct {
522 kal_char sync_token[8];
523 kal_uint8 header_version;
524 kal_uint8 content_type;
525 kal_uint8 operation_mask;
526 kal_uint8 reserved;
527 kal_uint32 content_len;
528 kal_uint16 lid;
529 kal_uint16 record_idx;
530 kal_char lid_version[4];
531 kal_uint32 checksum;
532 kal_uint8 buff_start[0];
533} mcf_dump_lid_header_struct;
534
535typedef struct _mcf_custom_dump_param_struct {
536 kal_uint16 lid;
537 mcf_ota_type_enum type;
538 protocol_id_enum ps_id;
539 kal_uint32 sbp_id;
540 kal_uint8 mcc[MAX_MCC_STR_LEN];
541 kal_uint8 mnc[MAX_MNC_STR_LEN];
542 kal_uint8 iccid[21];
543 kal_uint16 record_idx;
544 kal_uint8 *buffer;
545 kal_uint32 *size;
546} mcf_custom_dump_param_struct;
547
548typedef kal_bool (*MCF_DUMP_FUNC)(mcf_custom_dump_param_struct *param_ptr);
549
550typedef struct _mcf_dump_param_struct {
551 kal_uint16 lid;
552 kal_uint32 ntfy_type;
553 MCF_DUMP_FUNC dump_func_ptr;
554} mcf_dump_param_struct;
555
556typedef struct _mcf_boot_trace_value_struct {
557 kal_uint32 size;
558 MCF_TYPE_ENUM type;
559 union {
560 kal_uint32 integer;
561 kal_uint32 string;
562 kal_uint32 value;
563 } type_u;
564} mcf_boot_trace_value_struct;
565
566typedef struct _mcf_boot_trace_struct {
567 kal_uint32 guard_pattern;
568 kal_uint32 trace_enum;
569 kal_uint32 total_num;
570 mcf_boot_trace_value_struct value_ptr;
571} mcf_boot_trace_struct;
572
573typedef struct _mcf_tag_info_struct {
574 kal_bool is_bit;
575 kal_int32 array_size[5];
576 kal_uint8 arr_cnt;
577 kal_uint16 upper_vsize;
578} mcf_tag_info_struct;
579
580typedef struct _mcf_merge_link_list_struct {
581 struct _mcf_merge_link_list_struct *pre_node;
582 void *data;
583 struct _mcf_merge_link_list_struct *next_node;
584} mcf_merge_link_list_struct;
585
586typedef struct _mcf_digest {
587 kal_uint32 sequence;
588 kal_uint32 digest_len;
589 kal_uint8 digest_value[384]; // max sha 384
590} mcf_digest;
591
592#endif /* __MCF_STRUCT_H */
593