flashtool_handle.h
28.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
/*******************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2003
*
******************************************************************************/
/*******************************************************************************
* Filename:
* ---------
* flashtool_handle.h
*
* Project:
* --------
* Flash Download/Readback/Format Library.
*
* Description:
* ------------
* The exported C interface APIs to deal with FlashTool handles.
*
* Author:
* -------
* Amos Hsu (mtk00539)
*
*******************************************************************************/
#ifndef _FLASHTOOL_HANDLE_H_
#define _FLASHTOOL_HANDLE_H_
#include "mtk_mcu.h"
#include "mtk_status.h"
#include "mtk_resource.h"
#include "DOWNLOAD.H"
#if defined(__GNUC__) && !defined(__stdcall)
#define __stdcall
#endif
#ifdef __cplusplus
extern "C" {
#endif
//------------------------------------------------------------------------------
// Boolean
//------------------------------------------------------------------------------
typedef enum
{
_FALSE = 0,
_TRUE = 1,
_NONE = 2 // no change
} _BOOL;
extern void __stdcall UpdateMMAAEnable(bool bIsMMAAEnable);
//------------------------------------------------------------------------------
// prototype of remote file operation method callback
//------------------------------------------------------------------------------
typedef int (__stdcall *CALLBACK_REMOTE_GET_FILE_LEN)(const char *filepath, unsigned int * const p_file_length, void *user_arg);
typedef int (__stdcall *CALLBACK_REMOTE_READ_FILE)(const char *filepath, unsigned char * const p_file_content, unsigned int file_length, void *user_arg);
//------------------------------------------------------------------------------
// prototype of remote file's signature operation method callback
//------------------------------------------------------------------------------
typedef int (__stdcall *CALLBACK_REMOTE_GET_SIG_LEN)(const char *filepath, unsigned int * const p_sig_length, void *user_arg);
typedef int (__stdcall *CALLBACK_REMOTE_READ_SIG)(const char *filepath, unsigned char * const p_sig_content, unsigned int sig_length, void *user_arg);
//------------------------------------------------------------------------------
// prototype of customized file integrity check callback
//------------------------------------------------------------------------------
typedef int (__stdcall *CALLBACK_FILE_INTEGRITY_CHECK)(unsigned char * const p_file_content, unsigned int * const p_file_length, void *user_arg);
//----------------------------------------------------------------------------
// Config file parsing
//----------------------------------------------------------------------------
struct ExternalMemorySetting;
struct ROMSetting;
struct DL_HANDLE;
typedef struct DL_HANDLE * DL_HANDLE_T;
extern int __stdcall GetROMSetting(const char *configFilePath,
struct ROMSetting *romSetting, DL_HANDLE_T dl_handle = 0);
extern int __stdcall GetExternalMemorySetting(
const char *configFilePath,
struct ExternalMemorySetting *externalMemorySetting, DL_HANDLE_T dl_handle = 0);
extern int __stdcall GetROMSettingFromBuffer(const char *base, unsigned int length,
struct ROMSetting *romSetting, DL_HANDLE_T dl_handle = 0);
extern int __stdcall GetExternalMemorySettingFromBuffer(
const char *base, unsigned int length,
struct ExternalMemorySetting *externalMemorySetting, DL_HANDLE_T dl_handle = 0);
//------------------------------------------------------------------------------
// BL_HANDLE: Exported Functions
//------------------------------------------------------------------------------
typedef struct
{
_BOOL m_valid; // _TRUE -> dram setting is valid
unsigned int m_emi_gen_a;
unsigned int m_emi_gen_b;
unsigned int m_emi_gen_c;
unsigned int m_emi_gen_d;
unsigned int m_emi_con_i;
unsigned int m_emi_con_i_ext;
unsigned int m_emi_con_j;
unsigned int m_emi_con_k;
unsigned int m_emi_con_l;
unsigned int m_emi_con_m;
unsigned int m_emi_con_n;
unsigned int m_emi_del_a;
unsigned int m_emi_del_b;
unsigned int m_emi_del_c;
unsigned int m_emi_del_d;
unsigned int m_emi_del_e;
unsigned int m_emi_del_f;
unsigned int m_emi_del_g;
unsigned int m_emi_del_h;
unsigned int m_emi_del_i;
unsigned int m_emi_del_j;
unsigned int m_emi_arb_a;
unsigned int m_emi_arb_b;
unsigned int m_emi_arb_c;
unsigned int m_emi_arb_d;
unsigned int m_emi_arb_e;
unsigned int m_emi_arb_f;
unsigned int m_emi_arb_g;
unsigned int m_emi_arb_h;
unsigned int m_emi_arb_i;
//expand for EMIInfo_v05
unsigned int m_emi_drv_a;
unsigned int m_emi_drv_b;
unsigned int m_emi_odl_a;
unsigned int m_emi_odl_b;
unsigned int m_emi_odl_c;
unsigned int m_emi_odl_d;
unsigned int m_emi_odl_e;
unsigned int m_emi_odl_f;
unsigned int m_emi_odl_g;
unsigned int m_emi_dut_a;
unsigned int m_emi_dut_b;
unsigned int m_emi_dut_c;
unsigned int m_emi_duc_a;
unsigned int m_emi_duc_b;
unsigned int m_emi_duc_e;
unsigned int m_emi_ioc_l;
} DRAM_SETTING;
typedef struct
{
char m_version[5];
char m_filepath[512];
unsigned int m_filesize;
unsigned int m_start_addr;
unsigned int m_chksum_seed;
unsigned int m_chksum;
DRAM_SETTING m_dram_cfg;
_BOOL m_ext_bootloader_exist;
char m_ext_filepath[512];
unsigned int m_ext_filesize;
unsigned int m_ext_chksum;
_BOOL m_enable; // _FALSE -> ARM_BL disbale
// _TRUE -> ARM_BL enable
// load status
char m_status[64];
char m_ext_status[64];
_BOOL m_ext_enable; // _FALSE -> EXT_BL disbale
// _TRUE -> EXT_BL enable
} BL_INFO;
//------------------------------------------------------------------------------
// DL_HANDLE: Exported Functions
//------------------------------------------------------------------------------
typedef enum
{
ABSOLUTE_ADDR = 0,
OFFSET_VALUE
} REGION_ADDR_TYPE;
typedef enum
{
NORMAL_ROM = 0x01,
RESOURCE_BIN = 0x02,
JUMPTABLE_BIN = 0x03,
ENFB_BIN = 0x04,
UA_BIN = 0x05,
BL_BIN = 0x06,
BOOT_CERT_BIN = 0x07,
EXT_BL_BIN = 0x08, // Ext Boot Loader for USB DL
FACTORY_ROM = 0x09,
FACTORY_SECONDARY_ROM = 0x0A,
UNLOAD_BIN = 0x70,
UNKNOWN_BIN = 0xFF
} ROM_TYPE;
typedef struct
{
char name[64];
unsigned int region_addr;
REGION_ADDR_TYPE addr_type; // ABSOLUTE_ADDR -> region_addr is absolute address
// OFFSET_VALUE -> region_addr is offset value
unsigned int begin_addr;
unsigned int end_addr;
char filepath[256];
unsigned int filesize;
unsigned short index;
ROM_TYPE rom_type;
_BOOL enable; // _FALSE -> disbale
// _TRUE -> enable
// load status
char status[64];
}ROM_INFO;
// [Tier01-LoadFS]
typedef struct
{
char name[64];
char filepath[256];
unsigned short index;
unsigned int filesize;
unsigned int start_addr_on_flash;
unsigned int length_on_flash;
_BOOL enable;
char status[64];
} FS_INFO;
typedef enum
{
// An element with V_ prefix is a virtual element used to define
// a range for a group of similar ROMs.
V_BL_ROM = 0x00000000,
ARM_BL_ROM = V_BL_ROM,
DSP_BL_ROM = 0x00000001,
EXT_BL_ROM = 0x00000002,
ROOT_CERT_ROM = 0x00000080,
PATCH_ROM = 0x00000081,
V_BL_ROM_END = 0x000000FF,
V_MAUI_ROM = 0x00000100,
MAUI_ROM = V_MAUI_ROM,
RESOURCE_ROM = 0x00000101,
JUMP_TABLE_ROM = 0x00000102,
V_MAUI_ROM_END = 0x000001FF,
V_CUST_ROM = 0x00000200,
CUST_ROM = V_CUST_ROM,
V_CUST_ROM_END = 0x000002FF,
V_MISC_ROM = 0x00000300,
FOTA_ROM = V_MISC_ROM,
SEC_RO_ROM = 0x00000301,
V_MISC_ROM_END = 0x000003FF,
V_FILE_SYSTEM_ROM = 0x00000100480,
FILE_SYSTEM_ROM = V_FILE_SYSTEM_ROM,
V_FILE_SYSTEM_ROM_END,
// ROM with some problem
V_ERROR_ROM = 0x10000000,
UNLOAD_ROM = V_ERROR_ROM, // load failed
V_ERROR_ROM_END= 0x100000FF,
UNKNOWN_ROM = 0xFFFFFFFF
} ROM_TYPE_EX;
typedef struct
{
// General
unsigned short index;
_BOOL enable;
ROM_TYPE_EX rom_type;
char name[64];
// Address
unsigned int region_addr;
REGION_ADDR_TYPE region_addr_type;
unsigned int begin_addr;
unsigned int end_addr;
// File information
char filepath[512];
unsigned int filesize;
// load status
char status[64];
} ROM_INFO_EX;
typedef struct
{
unsigned int m_is_nfb:1;
unsigned int m_security_supported:1;
unsigned int m_cust_para_supported:1;
unsigned int m_system_drive_on_nand:1;
unsigned int m_fota_full:1;
unsigned int m_bootloader_usb_supported:1;
unsigned int m_brom_usb_supported:1;
unsigned int m_bootloader_self_update_supported:1;
char m_project_id[MAX_PROJECT_ID_LENGTH];
} DL_Config_T;
typedef struct
{
DL_Config_T m_config;
} DL_INFO;
typedef enum
{
ROM_VERSION_SV3,
ROM_VERSION_SV5
} ROM_VERSION;
typedef enum
{
NOR_BOOT,
NAND_BOOT,
EMMC_BOOT
} BOOT_TYPE;
typedef struct
{
ROM_VERSION rom_version;
BOOT_TYPE boot_type;
_BOOL security_supported;
_BOOL cust_para_supported;
_BOOL system_drive_on_nand;
_BOOL fota_full;
_BOOL bootloader_usb_supported;
_BOOL brom_usb_supported;
_BOOL bootloader_self_update_supported;
unsigned char project_id[MAX_PROJECT_ID_LENGTH];
_BOOL disable_flash_id_comparison;
} DL_INFO_EX;
extern _BOOL __stdcall DL_IsEnctrypedBin(DL_HANDLE_T pDownloadHandle);
extern int __stdcall DL_Create(DL_HANDLE_T *p_dl_handle);
extern int __stdcall DL_Clone(DL_HANDLE_T *p_new_dl_handle, DL_HANDLE_T p_dl_handle);
extern int __stdcall DL_Destroy(DL_HANDLE_T *p_dl_handle);
extern int __stdcall DL_CreateROMEntries(DL_HANDLE_T dl_handle,
const struct ROMSetting *rom_setting);
extern int __stdcall DL_AutoLoadROMFiles(DL_HANDLE_T dl_handle);
extern int __stdcall DL_LoadScatter(DL_HANDLE_T dl_handle, const char *scatter_filepath);
extern int __stdcall DL_AutoLoadByScatRegionName(DL_HANDLE_T dl_handle, const char *full_filepath, unsigned char allow_rom_type, _BOOL is_scatter_file);
extern int __stdcall DL_SetPacketLength(DL_HANDLE_T dl_handle, unsigned short length);
extern int __stdcall DL_GetCount(DL_HANDLE_T dl_handle, unsigned short *p_rom_count);
extern int __stdcall DL_GetInfo(DL_HANDLE_T dl_handle, DL_INFO *p_dl_info);
extern int __stdcall DL_IsReady(DL_HANDLE_T dl_handle, ROM_INFO *p_rom_info, BL_INFO *p_bl_info, _BOOL check_if_updated);
extern int __stdcall DL_GetJumpTableInfo(DL_HANDLE_T dl_handle, MTK_JumpTable *p_jmptbl_info);
extern int __stdcall DL_GetProjectId(DL_HANDLE_T dl_handle, char *buf, unsigned int buf_len);
extern int __stdcall DL_GetDRAMSetting(DL_HANDLE_T dl_handle, DRAM_SETTING *dram_cfg);
extern int __stdcall DL_ResourceProjectIdComparisonSetting(DL_HANDLE_T dl_handle, _BOOL enable);
extern int __stdcall DL_GetBBChipType(DL_HANDLE_T dl_handle, BBCHIP_TYPE *p_bbchip);
extern int __stdcall DL_GetBBChipName(DL_HANDLE_T dl_handle, char *buf, unsigned int buf_len);
extern int __stdcall DL_GetCustomName(DL_HANDLE_T dl_handle, char *buf, unsigned int buf_len);
extern int __stdcall DL_GetFlashName(DL_HANDLE_T dl_handle, char *buf, unsigned int buf_len);
extern int __stdcall DL_GetFlashDeviceCode(DL_HANDLE_T dl_handle, char *flashID);
extern int __stdcall DL_Rom_GetInfo(DL_HANDLE_T dl_handle, unsigned short index, ROM_INFO *p_rom_info);
extern int __stdcall DL_Rom_GetInfoAll(DL_HANDLE_T dl_handle, ROM_INFO *p_rom_info, unsigned short max_rom_count);
extern int __stdcall DL_Rom_GetResInfo(DL_HANDLE_T dl_handle, unsigned short index, MTK_Resource *p_res_info);
extern int __stdcall DL_Rom_Load(DL_HANDLE_T dl_handle, unsigned short index, const char *rom_filepath);
// [Tier01-LoadFromBuffer]
extern int __stdcall DL_Rom_LoadBuf(DL_HANDLE_T dl_handle, unsigned short index, const unsigned char *buf, unsigned int buf_len);
extern int __stdcall DL_Rom_Unload(DL_HANDLE_T dl_handle, unsigned short index);
extern int __stdcall DL_Rom_UnloadAll(DL_HANDLE_T dl_handle);
extern int __stdcall DL_Rom_SetEnableAttr(DL_HANDLE_T dl_handle, unsigned short index, _BOOL attr);
extern int __stdcall DL_GetCount_Ex(DL_HANDLE_T dl_handle, unsigned short *p_rom_count);
extern int __stdcall DL_GetInfo_Ex(DL_HANDLE_T dl_handle, DL_INFO_EX *p_dl_info);
extern int __stdcall DL_IsReady_Ex(DL_HANDLE_T dl_handle, ROM_INFO_EX *p_rom_info, _BOOL check_if_updated);
extern int __stdcall DL_GetFlashDeviceCode_Ex(DL_HANDLE_T dl_handle, char *flashID, unsigned int max_len);
extern int __stdcall DL_GetBMTPoolAddress(DL_HANDLE_T dl_handle, unsigned int* p_address);
extern int __stdcall DL_Rom_GetInfo_Ex(DL_HANDLE_T dl_handle, unsigned short index, ROM_INFO_EX *p_rom_info);
extern int __stdcall DL_Rom_GetInfoAll_Ex(DL_HANDLE_T dl_handle, ROM_INFO_EX *p_rom_info, unsigned short max_rom_count);
extern int __stdcall DL_Rom_Load_Ex(DL_HANDLE_T dl_handle, unsigned short index, const char *rom_filepath);
// [Tier01-LoadFromBuffer]
extern int __stdcall DL_Rom_LoadBuf_Ex(DL_HANDLE_T dl_handle, unsigned short index, const unsigned char *buf, unsigned int buf_len);
extern int __stdcall DL_Rom_Unload_Ex(DL_HANDLE_T dl_handle, unsigned short index);
extern int __stdcall DL_Rom_UnloadAll_Ex(DL_HANDLE_T dl_handle);
extern int __stdcall DL_Rom_SetEnableAttr_Ex(DL_HANDLE_T dl_handle, unsigned short index, _BOOL attr);
extern int __stdcall DL_IsNFB(DL_HANDLE_T dl_handle, _BOOL *p_is_nfb);
extern int __stdcall DL_SetCallback(DL_HANDLE_T dl_handle,
CALLBACK_REMOTE_GET_FILE_LEN cb_remote_get_file_len,
void * cb_remote_get_file_len_arg,
CALLBACK_REMOTE_READ_FILE cb_remote_read_file,
void * cb_remote_read_file_arg,
CALLBACK_REMOTE_GET_SIG_LEN cb_remote_get_sig_len,
void * cb_remote_get_sig_len_arg,
CALLBACK_REMOTE_READ_SIG cb_remote_read_sig,
void * cb_remote_read_sig_arg,
CALLBACK_FILE_INTEGRITY_CHECK cb_file_integrity_check,
void * cb_file_integrity_check_arg);
extern int __stdcall DL_GetBootType(DL_HANDLE_T dl_handle, BOOT_TYPE *boot_type);
// BL_HANDLE related
extern int __stdcall DL_BL_IsReady(DL_HANDLE_T dl_handle, BL_INFO *p_bl_info, _BOOL check_if_updated);
extern int __stdcall DL_BL_Load(DL_HANDLE_T dl_handle, const char *bl_filepath);
extern int __stdcall DL_BL_EXT_Load(DL_HANDLE_T dl_handle, const char *bl_ext_filepath);
// [Tier01-LoadFromBuffer]
extern int __stdcall DL_BL_LoadBuf(DL_HANDLE_T dl_handle, const unsigned char *buf, unsigned int buf_len);
// [Tier01-LoadFromBuffer]
extern int __stdcall DL_BL_EXT_LoadBuf(DL_HANDLE_T dl_handle, const unsigned char *buf, unsigned int buf_len);
extern int __stdcall DL_BL_GetInfo(DL_HANDLE_T dl_handle, BL_INFO *p_bl_info);
extern int __stdcall DL_BL_SetEnableAttr(DL_HANDLE_T dl_handle, _BOOL attr);
//------------------------------------------------------------------------------
// DL_HANDLE_LIST: Exported Functions
//------------------------------------------------------------------------------
struct DL_HANDLE_LIST;
typedef struct DL_HANDLE_LIST * DL_HANDLE_LIST_T;
extern int __stdcall DL_CreateList(DL_HANDLE_LIST_T * dl_handle_list);
extern int __stdcall DL_CloneList(DL_HANDLE_LIST_T *p_new_dl_handle_list, DL_HANDLE_LIST_T p_dl_handle_list);
extern int __stdcall DL_DestroyList(DL_HANDLE_LIST_T * dl_handle_list);
extern int __stdcall DL_AddHandleToList(DL_HANDLE_LIST_T dl_handle_list, DL_HANDLE_T dl_handle);
extern int __stdcall DL_UpdateHandleToList(DL_HANDLE_LIST_T dl_handle_list, DL_HANDLE_T org_dl_handle, DL_HANDLE_T new_dl_handle);
extern int __stdcall DL_DeleteHandleFromList(DL_HANDLE_LIST_T dl_handle_list, DL_HANDLE_T dl_handle);
extern int __stdcall DL_GetHandleNumber(DL_HANDLE_LIST_T dl_handle_list, int * HandleNumber);
extern int __stdcall DL_GetHandle(DL_HANDLE_LIST_T dl_handle_list, int index, DL_HANDLE_T *dl_handle);
extern int __stdcall DL_CheckHandleInList(DL_HANDLE_LIST_T dl_handle_list, DL_HANDLE_T dl_handle);
extern int __stdcall DL_CheckHandleSameSWVersionInList(DL_HANDLE_LIST_T dl_handle_list, DL_HANDLE_T dl_handle);
//------------------------------------------------------------------------------
// DA_HANDLE: Exported Functions
//------------------------------------------------------------------------------
typedef struct
{
char filepath[256];
unsigned int start_addr;
unsigned char *buf;
unsigned int buf_len;
unsigned int main_prog_size;
char version[13];
char last_modified_date[256];
}DA_INFO;
struct DA_HANDLE;
typedef struct DA_HANDLE * DA_HANDLE_T;
extern int __stdcall DA_Create(DA_HANDLE_T *p_da_handle);
extern int __stdcall DA_Destroy(DA_HANDLE_T *p_da_handle);
extern int __stdcall DA_IsReady(DA_HANDLE_T da_handle, DA_INFO *p_da_info, _BOOL check_if_updated);
extern int __stdcall DA_GetInfo(DA_HANDLE_T da_handle, DA_INFO *p_da_info);
extern int __stdcall DA_SetDefaultStartAddr(DA_HANDLE_T da_handle, unsigned int da_start_addr);
extern int __stdcall DA_Load(DA_HANDLE_T da_handle, const char *da_filepath, _BOOL bDA_Validation);
// [Tier01-LoadFromBuffer]
extern int __stdcall DA_LoadBuf(DA_HANDLE_T da_handle, const unsigned char *buf, unsigned int buf_len, _BOOL bDA_Validation);
extern int __stdcall DA_Unload(DA_HANDLE_T da_handle);
extern int __stdcall DA_SetCallback(DA_HANDLE_T da_handle,
CALLBACK_REMOTE_GET_FILE_LEN cb_remote_get_file_len,
void * cb_remote_get_file_len_arg,
CALLBACK_REMOTE_READ_FILE cb_remote_read_file,
void * cb_remote_read_file_arg,
CALLBACK_REMOTE_GET_SIG_LEN cb_remote_get_sig_len,
void * cb_remote_get_sig_len_arg,
CALLBACK_REMOTE_READ_SIG cb_remote_read_sig,
void * cb_remote_read_sig_arg,
CALLBACK_FILE_INTEGRITY_CHECK cb_file_integrity_check,
void * cb_file_integrity_check_arg);
//------------------------------------------------------------------------------
// RB_HANDLE: Exported Functions
//------------------------------------------------------------------------------
typedef struct
{
char filepath[256];
unsigned int readback_addr;
unsigned int readback_len;
_BOOL enable; // _FALSE -> disbale
// _TRUE -> enable
unsigned short index;
NUTL_ReadFlag_E m_read_flag;
}RB_INFO;
struct RB_HANDLE;
typedef struct RB_HANDLE * RB_HANDLE_T;
extern int __stdcall RB_Create(RB_HANDLE_T *p_rb_handle);
extern int __stdcall RB_Destroy(RB_HANDLE_T *p_rb_handle);
extern int __stdcall RB_SetPacketLength(RB_HANDLE_T rb_handle, unsigned short length);
extern int __stdcall RB_GetCount(RB_HANDLE_T rb_handle, unsigned short *p_rb_count);
extern int __stdcall RB_IsReady(RB_HANDLE_T rb_handle, RB_INFO *p_rb_info);
extern int __stdcall RB_GetInfo(RB_HANDLE_T rb_handle, unsigned short index, RB_INFO *p_rb_info);
extern int __stdcall RB_GetInfoAll(RB_HANDLE_T rb_handle, RB_INFO *p_rb_info, unsigned short max_rb_count);
extern int __stdcall RB_Append(RB_HANDLE_T rb_handle, const char *rb_filepath, unsigned int rb_addr, unsigned int rb_len);
extern int __stdcall RB_Append_ReadToBuf(RB_HANDLE_T rb_handle, unsigned int rb_addr, unsigned int rb_len, char *buf, unsigned int buf_len);
extern int __stdcall RB_Delete(RB_HANDLE_T rb_handle, unsigned short index);
extern int __stdcall RB_SetFilepath(RB_HANDLE_T rb_handle, unsigned short index, const char *rb_filepath);
extern int __stdcall RB_SetReadbackFlag(RB_HANDLE_T rb_handle, unsigned short index, NUTL_ReadFlag_E flag);
extern int __stdcall RB_SetReadbackAddr(RB_HANDLE_T rb_handle, unsigned short index, unsigned int rb_addr);
extern int __stdcall RB_SetReadbackLength(RB_HANDLE_T rb_handle, unsigned short index, unsigned int rb_len);
extern int __stdcall RB_ClearAll(RB_HANDLE_T rb_handle);
extern int __stdcall RB_SetEnableAttr(RB_HANDLE_T rb_handle, unsigned short index, _BOOL attr);
extern int __stdcall RB_EnableReadbackFAT(RB_HANDLE_T rb_handle, unsigned short index, _BOOL attr);
//------------------------------------------------------------------------------
// AUTH_HANDLE: Exported Functions
//------------------------------------------------------------------------------
typedef struct
{
unsigned int m_version;
char m_filepath[512];
unsigned char m_secure_custom_name[32];
unsigned char m_description[512];
} AUTH_INFO;
struct AUTH_HANDLE;
typedef struct AUTH_HANDLE * AUTH_HANDLE_T;
extern int __stdcall AUTH_Create(AUTH_HANDLE_T *p_auth_handle);
extern int __stdcall AUTH_Destroy(AUTH_HANDLE_T *p_auth_handle);
extern int __stdcall AUTH_IsReady(AUTH_HANDLE_T auth_handle,
AUTH_INFO *p_auth_info,
_BOOL bCheckIfUpdated);
extern int __stdcall AUTH_GetInfo(AUTH_HANDLE_T auth_handle,
AUTH_INFO *p_auth_info);
extern int __stdcall AUTH_Load(AUTH_HANDLE_T auth_handle,
const char *auth_filepath);
extern int __stdcall AUTH_Unload(AUTH_HANDLE_T auth_handle);
extern int __stdcall AUTH_SetCallback(
AUTH_HANDLE_T auth_handle,
CALLBACK_REMOTE_GET_FILE_LEN cb_remote_get_file_len,
void *cb_remote_get_file_len_arg,
CALLBACK_REMOTE_READ_FILE cb_remote_read_file,
void *cb_remote_read_file_arg,
CALLBACK_REMOTE_GET_SIG_LEN cb_remote_get_sig_len,
void *cb_remote_get_sig_len_arg,
CALLBACK_REMOTE_READ_SIG cb_remote_read_sig,
void *cb_remote_read_sig_arg,
CALLBACK_FILE_INTEGRITY_CHECK cb_file_integrity_check,
void *cb_file_integrity_check_arg);
//----------------------------------------------------------------------------
// SCERT_HANDLE: Exported Functions
//----------------------------------------------------------------------------
typedef struct
{
unsigned int m_version;
char m_filepath[512];
unsigned char m_secure_custom_name[32];
unsigned char m_description[512];
} SCERT_INFO;
struct SCERT_HANDLE;
typedef struct SCERT_HANDLE * SCERT_HANDLE_T;
extern int __stdcall SCERT_Create(SCERT_HANDLE_T *p_scert_handle);
extern int __stdcall SCERT_Destroy(SCERT_HANDLE_T *p_scert_handle);
extern int __stdcall SCERT_IsReady(SCERT_HANDLE_T scert_handle,
SCERT_INFO *p_scert_info,
_BOOL bCheckIfUpdated);
extern int __stdcall SCERT_GetInfo(SCERT_HANDLE_T scert_handle,
SCERT_INFO *p_scert_info);
extern int __stdcall SCERT_Load(SCERT_HANDLE_T scert_handle,
const char *scert_filepath);
extern int __stdcall SCERT_Unload(SCERT_HANDLE_T scert_handle);
extern int __stdcall SCERT_SetCallback(
SCERT_HANDLE_T scert_handle,
CALLBACK_REMOTE_GET_FILE_LEN cb_remote_get_file_len,
void *cb_remote_get_file_len_arg,
CALLBACK_REMOTE_READ_FILE cb_remote_read_file,
void *cb_remote_read_file_arg,
CALLBACK_REMOTE_GET_SIG_LEN cb_remote_get_sig_len,
void *cb_remote_get_sig_len_arg,
CALLBACK_REMOTE_READ_SIG cb_remote_read_sig,
void *cb_remote_read_sig_arg,
CALLBACK_FILE_INTEGRITY_CHECK cb_file_integrity_check,
void *cb_file_integrity_check_arg);
//----------------------------------------------------------------------------
// ROOTCERT_HANDLE: Exported Functions
//----------------------------------------------------------------------------
typedef struct
{
unsigned int m_version;
char m_filepath[512];
unsigned char m_secure_custom_name[32];
unsigned char m_description[512];
} ROOTCERT_INFO;
struct ROOTCERT_HANDLE;
typedef struct ROOTCERT_HANDLE * ROOTCERT_HANDLE_T;
extern int __stdcall ROOTCERT_Create(ROOTCERT_HANDLE_T *p_rootcert_handle);
extern int __stdcall ROOTCERT_Destroy(ROOTCERT_HANDLE_T *p_rootcert_handle);
extern int __stdcall ROOTCERT_IsReady(ROOTCERT_HANDLE_T rootcert_handle,
ROOTCERT_INFO *p_rootcert_info,
_BOOL bCheckIfUpdated);
extern int __stdcall ROOTCERT_GetInfo(ROOTCERT_HANDLE_T rootcert_handle,
ROOTCERT_INFO *p_rootcert_info);
extern int __stdcall ROOTCERT_Load(ROOTCERT_HANDLE_T rootcert_handle,
const char *rootcert_filepath);
extern int __stdcall ROOTCERT_SyncWithDLHandle(ROOTCERT_HANDLE_T rootcert_handle,
DL_HANDLE_T dl_handle);
extern int __stdcall ROOTCERT_Unload(ROOTCERT_HANDLE_T rootcert_handle);
extern int __stdcall ROOTCERT_SetCallback(
ROOTCERT_HANDLE_T rootcert_handle,
CALLBACK_REMOTE_GET_FILE_LEN cb_remote_get_file_len,
void *cb_remote_get_file_len_arg,
CALLBACK_REMOTE_READ_FILE cb_remote_read_file,
void *cb_remote_read_file_arg,
CALLBACK_REMOTE_GET_SIG_LEN cb_remote_get_sig_len,
void *cb_remote_get_sig_len_arg,
CALLBACK_REMOTE_READ_SIG cb_remote_read_sig,
void *cb_remote_read_sig_arg,
CALLBACK_FILE_INTEGRITY_CHECK cb_file_integrity_check,
void *cb_file_integrity_check_arg);
//------------------------------------------------------------------------------
// PART_HANDLE: Exported Functions
//------------------------------------------------------------------------------
typedef struct PART_HANDLE* PART_HANDLE_T;
typedef struct
{
char name[64];
unsigned int begin_addr;
unsigned int image_length;
} PART_INFO;
extern int __stdcall PART_Create(PART_HANDLE_T* p_part_handle, void* handle);
extern int __stdcall PART_Destroy(PART_HANDLE_T * p_part_handle);
// get the number of partitions from target
extern int __stdcall PART_GetCount(PART_HANDLE_T part_handle, unsigned int *p_part_count);
// get the partition info from target
extern int __stdcall PART_GetInfo(PART_HANDLE_T part_handle, PART_INFO *p_part_info, unsigned int max_part_count);
#ifdef __cplusplus
}
#endif
#endif