flashtool_handle.h
上传用户:gelin96
上传日期:2017-01-08
资源大小:20993k
文件大小:24k
源码类别:

MTK

开发平台:

C++ Builder

  1. /*******************************************************************************
  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) 2003
  8.  *
  9.  ******************************************************************************/
  10. /*******************************************************************************
  11.  * Filename:
  12.  * ---------
  13.  *  flashtool_handle.h
  14.  *
  15.  * Project:
  16.  * --------
  17.  *  Flash Download/Readback/Format Library.
  18.  *
  19.  * Description:
  20.  * ------------
  21.  *  The exported C interface APIs to deal with FlashTool handles.
  22.  *
  23.  * Author:
  24.  * -------
  25.  *  Amos Hsu (mtk00539)
  26.  *
  27.  *==============================================================================
  28.  *           HISTORY
  29.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  30.  *------------------------------------------------------------------------------
  31.  * $Revision:   1.13  $
  32.  * $Modtime:   Oct 19 2005 11:01:14  $
  33.  * $Log:   //mtkvs01/vmdata/flash_tool/archives/BootRom/flashtool_handle.h-arc  $
  34.  *
  35.  * Jan 31 2008 mtk01413
  36.  * [STP100001630] [FlashTool] v3.0804.0 release
  37.  * New features:
  38.  *  1. USB Download for End User
  39.  * Enhancements:
  40.  *  1. [DA] Download Optimization with 921k on MT6225/MT6229/MT6230/MT6235/MT6238
  41.  *  2. [DA] Provide two download methodology : Best Effort Erase (default) and Sequential Erase
  42.  *  3. [DA] New CheckID algorithm for all SPANSION MCP series
  43.  *
  44.  * Dec 3 2007 mtk01413
  45.  * [STP100001568] [FlashTool] v3.0748.0 release
  46.  * New features:
  47.  *  1. USB Download on MT6225/MT6226/MT6227 Series BB
  48.  *  2. GPS Download
  49.  *  3. MT6238, MT6235, TK6516 AP/MD  DVT
  50.  *
  51.  * Aug 30 2007 mtk01413
  52.  * [STP100001497] [FlashTool] v3.2.0 release
  53.  * 
  54.  *
  55.  * Mar 12 2007 mtk01413
  56.  * [STP100001329] FlashTool v3.1.04 release
  57.  * Enhancements:
  58.  *  1. [FlashTool/BROM_DLL/DA] Auto-Format when enabling System_Drive_On_NAND
  59.  *  2. [FlashTool] Show Parameter List View automatically when loading secure-on MAUI
  60.  *  3. [FlashTool] Move "Paremeter"/ "File Management"/ "ROM Writer" under "Window" menu item
  61.  *  4. [FlashTool] Show DA version and Build Date in help dialog
  62.  *  
  63.  *
  64.  * Jan 2 2007 mtk01413
  65.  * [STP100001195] FlashTool v3.1.02 release
  66.  * New features:
  67.  *  1. [BROM_DLL/DA] Support FOTA(Firmware update Over The Air) download.
  68.  *  2. [BROM_DLL/DA] Support MT6223  download.
  69.  *  3. [BROM_DLL/DA] Support MT6268T download.
  70.  *  4. [DA] Supports new NOR Flash device
  71.  *  [SPANSION] S29GL128NH
  72.  *  [SPANSION] S29GL128NL
  73.  *  [SPANSION] S29GL256NH
  74.  *  [SPANSION] S29GL256NL
  75.  *  [SPANSION] S29GL512NH
  76.  *  [SPANSION] S29GL512NL
  77.  * 
  78.  * Enhancements:
  79.  *  1. [DA] Support BBC(Blank Block Check) for NOR Flash Format.
  80.  *  2. [BROM_DLL/DA] Support Retransmit mechanism for NAND Readback operation.
  81.  *  3. [BROM_DLL] Enhance E-NFB Check.
  82.  * 
  83.  *
  84.  * Nov 2 2006 mtk01413
  85.  * [STP100001195] FlashTool v3.1.02 release
  86.  * New features:
  87.  *  1. [BROM_DLL/DA] E-NFB (Enhanced NFB) Download.
  88.  * 
  89.  *
  90.  * Sep 27 2006 mtk00539
  91.  * [STP100001145] FlashTool v3.1.01 release
  92.  * 
  93.  *
  94.  * Aug 16 2006 mtk00539
  95.  * [STP100001057] FlashTool v3.1.00 release
  96.  * Add new function DL_GetProjectId().
  97.  *
  98.  * Aug 14 2006 mtk00539
  99.  * [STP100001057] FlashTool v3.1.00 release
  100.  * 
  101.  *
  102.  * Jun 12 2006 mtk01413
  103.  * [STP100000922] FlashTool v2.9.1001 release
  104.  * New features:
  105.  *  1. [FlashTool/BROM_DLL] Support Multi-Load Autodetection Download.
  106.  * 
  107.  *
  108.  * May 24 2006 mtk01413
  109.  * [STP100000879] FlashTool v2.8.1001 release
  110.  *  1. [BROM_DLL][NEW] Support 6229 Download, add m_emi_gen_c in DRAM setting
  111.  *
  112.  * Feb 23 2006 mtk00539
  113.  * [STP100000625] FlashTool v2.7.1016
  114.  * 
  115.  * 
  116.  *    Rev 1.13   Oct 19 2005 14:44:44   mtk00539
  117.  *  1. [BROM_DLL&DA][New] New H/W devices detection architecture including NOR, NAND, SRAM and DRAM detection. 
  118.  *  2. [BROM_DLL&DA][New] DA partial download technic, that overcomes DA size exceeds MT6205B internal SRAM (32KB).
  119.  *  3. [BROM_DLL&DA][New] Format verification option, each byte should be 0xFF after erasure. 
  120.  *  4. [BROM_DLL&DA][New] DA validation to ensure invalid binary could not be loaded.
  121.  *  5. [BROM_DLL&DA][New] Support NFB download. 
  122.  *  6. [BROM_DLL&DA][New] Support NAND flash format with 3 method, NORMAL, FORCEDLY ERASE and MARK AS BAD BLOCK. 
  123.  *  7. [BROM_DLL&DA][New] Support NAND flash read back with 4 methods, PAGE+ECC, PAGE ONLY, SPARE ONLY and PAGE+SPARE. 
  124.  * Resolution for 140: [BROM_DLL v2.7.1008][New] Support NFB download and many new features.
  125.  * 
  126.  *    Rev 1.12   May 24 2005 19:54:24   mtk00539
  127.  *  1. [BROM_DLL][New] Add DA_cmd::CMD_EnableWatchDog() to enable watchdog after download process. 
  128.  *  2. [BROM_DLL][New] Add DL_ResourceProjectIdComparisonSetting() API to enable/disable resource project id comparison. 
  129.  *  3. [BROM_DLL][New] Add callback function in Boot_META() series API to do extra process after BootROM start command passed.
  130.  *  4. [BROM_DLL][BUG FIX] Fix com port error after using HyperTerminal.
  131.  *  5. [BROM_DLL][BUG FIX] Fix m_boot_timeout takes no effect in BRom_AutoBoot::BRom_StartCmd().
  132.  *  6. [BROM_DLL][Change Behavior] Stop download process while CALLBACK_BEFORE_PROCESS return non-zero value. 
  133.  *  7. [BROM_DLL][Change Behavior] Skip resource table size and content size checking for CustPack project.
  134.  * Resolution for 115: [BROM_DLL v2.4.1012][New] Support new flash devices and bug fix.
  135.  * 
  136.  *    Rev 1.11   Nov 22 2004 14:27:54   mtk00539
  137.  *  1. [BROM_DLL][BUG FIX] Add baudrate sync procedure for BootROM stage baudrate change for Prolific convertor.
  138.  *  2. [BROM_DLL][BUG FIX] Fix ReadData() delay time too long problem in DA_cmd::CMD_ChangeUartSpeed() while target is running at 13MHz.
  139.  *  3. [BROM_DLL][BUG FIX] DO NOT use while loop in reading BootROM ack in BRom_AutoBoot::BRom_StartCmd(), it will cause BootROM timeout.
  140.  *  4. [BROM_DLL][Enhance] Extend the read timeout waiting time in DA_cmd::CMD_WriteData, because SHARP flash program time is slow.
  141.  *  5. [BROM_DLL][Enhance] Add m_speedup_brom_baudrate flag to enable/disable speed-up baudrate in BootROM stage.
  142.  * Resolution for 99: [BROM_DLL v2.4.1008][New] Support INTEL family flash Buffered-Program method.
  143.  * 
  144.  *    Rev 1.10   May 21 2004 15:44:40   mtk00539
  145.  *  1. [brom.dll][New] add J2ME_ROM resource for w04.21 load.
  146.  *  2. [brom.dll][New] add MT6217 BootROM.
  147.  *  3. [brom.dll][New] add Brom_DownloadData API.
  148.  *  4. [brom.dll][New] remove Brom_Verify relative APIs.
  149.  *  5. [brom.dll][Enhance] move region overlap checking from Rom_Load() to IsReady() for more convenience.
  150.  * Resolution for 70: [BROM_DLL v2.3.1003][New] add J2ME_ROM resource for w04.21 load.
  151.  * 
  152.  *    Rev 1.9   May 14 2004 17:01:28   mtk00539
  153.  *  1. [brom.dll][BUG FIX] fix DA_cmd::CMD_WriteData() buffer overrun problem.
  154.  *  2. [brom.dll][BUG FIX] remove DA_HANDLE & DL_HANDLE rwlock_writer_sentry for multi-thread download.
  155.  *  3. [brom.dll][BUG FIX] fix download address remap problem for Multi-Bin download on MT6218B series projects.
  156.  *  4. [brom.dll][Enhance] for the unknown bbchip_name just bypass ECO checking, don't stop process.
  157.  *  5. [brom.dll][New] add FAT auto format mechanism, parse the embedded FAT range info from the end of the ROM file.
  158.  *  6. [brom.dll][New] add DA auto selection mechanism, parse the embedded custom_bane info from the end of the DA file.
  159.  *  7. [brom.dll][New] add _ByhCOM interface to let users to control com port handle.
  160.  *  8. [brom.dll][New] add BootROM start command retry mechanism to prevent cable TX/RX cross over.
  161.  *  9. [brom.dll][New] add MT6219_AV, MT6219_BV and MT6218B_FN support.
  162.  * 10. [DA][New] add DA auto selection mechanism, append custom_name at the end of DA.
  163.  * 11. [DA][New] add FAT auto format mechanism, report flash manufacture id and device code to PC side.
  164.  * Resolution for 67: [BootRom v2.3.1001][New] add FAT auto format, DA auto selection mechanism and bug fix.
  165.  * 
  166.  *    Rev 1.8   Mar 29 2004 13:59:24   mtk00539
  167.  *  1. [brom.dll][New] add baseband chip ECO revision checking flag for FlashDownload.
  168.  *  2. [brom.dll][Enhance] replace port_no with unsigned int instead of COM_PORT_NO enum.
  169.  *  3. [brom.dll][Enhance] add new member p_bbchip_name in FLASHTOOL_ARG to report target baseband chip name.
  170.  *  4. [brom.dll][Enhance] enumerate com port from registry and also check whether if its property is PST_RS232.
  171.  *  5. [brom.dll][Enhance] change com_sentry::Open() procedure to use SetCommConfig() like HyperTerminal.
  172.  * Resolution for 64: [BootRom v2.2.1013][New] add baseband chip ECO revision checking flag for FlashDownload.
  173.  * 
  174.  *    Rev 1.7   Mar 15 2004 12:00:42   mtk00539
  175.  * fix FTHND_UNKNOWN_BBCHIP_TYPE error code value
  176.  * Resolution for 59: [BootRom v2.2.1011][Enhance] split get firmware version to external imported library.
  177.  * 
  178.  *    Rev 1.6   Mar 02 2004 00:19:06   mtk00539
  179.  * 1. [brom.dll][Enhance] add resource and jump table consistency detection.
  180.  * 2. [brom.dll][Enhance] read back target's jump table layout and compare before download.
  181.  * 3. [brom.dll][Enhance] automatically load all the resource files.
  182.  * 4. [brom.dll][Enhance] add target bbchip id detection.
  183.  * 5. [brom.dll][Enhance] add ini module.
  184.  * 6. [brom.dll][Enhance] add MT6219 support.
  185.  * Resolution for 53: [BootRom v2.2.1007][Enhance] resource layout error detection.
  186.  * 
  187.  *    Rev 1.5   Feb 11 2004 17:52:16   mtk00539
  188.  * [Enhance] support selectable download
  189.  * Resolution for 51: [BootRom v2.2.1003][Enhance] selectable download.
  190.  * 
  191.  *    Rev 1.4   Feb 05 2004 14:13:54   mtk00539
  192.  * supposupport multiple concatanated bin files download.
  193.  * Resolution for 46: [BootRom v2.2.1001][New] support multiple concatanated bin files download.
  194.  * 
  195.  *    Rev 1.3   Oct 02 2003 00:51:46   mtk00539
  196.  * Fix return code.
  197.  * Resolution for 28: [BootRom v2.1.1001][New] See the reasons below.
  198.  * 
  199.  *    Rev 1.2   Oct 01 2003 23:34:06   mtk00539
  200.  * Add packet length in DA_WRITE_CMD and DA_READ_CMD.
  201.  * Resolution for 28: [BootRom v2.1.1001][New] See the reasons below.
  202.  * 
  203.  *    Rev 1.1   Sep 25 2003 13:57:54   mtk00539
  204.  * brom.dll v2.1.1001, please see SCR(28) for more details.
  205.  * Resolution for 28: [BootRom v2.1.1001][New] See the reasons below.
  206.  * 
  207.  *    Rev 1.0   Jun 30 2003 18:13:58   admin
  208.  * Initial revision.
  209.  * 
  210.  *------------------------------------------------------------------------------
  211.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  212.  *==============================================================================
  213.  *******************************************************************************/
  214. #ifndef _FLASHTOOL_HANDLE_H_
  215. #define _FLASHTOOL_HANDLE_H_
  216. #include "mtk_mcu.h"
  217. #include "mtk_status.h"
  218. #include "mtk_resource.h"
  219. #include "DOWNLOAD.H"
  220. #ifdef __cplusplus
  221. extern "C" {
  222. #endif
  223. //------------------------------------------------------------------------------
  224. // Boolean                                                                      
  225. //------------------------------------------------------------------------------
  226. typedef enum {
  227. _FALSE = 0,
  228. _TRUE = 1
  229. } _BOOL;
  230. //------------------------------------------------------------------------------
  231. // prototype of remote file operation method callback                           
  232. //------------------------------------------------------------------------------
  233. typedef int (__stdcall *CALLBACK_REMOTE_GET_FILE_LEN)(const char *filepath, unsigned int * const p_file_length, void *user_arg);
  234. typedef int (__stdcall *CALLBACK_REMOTE_READ_FILE)(const char *filepath, unsigned char * const p_file_content, unsigned int file_length, void *user_arg);
  235. //------------------------------------------------------------------------------
  236. // prototype of remote file's signature operation method callback                           
  237. //------------------------------------------------------------------------------
  238. typedef int (__stdcall *CALLBACK_REMOTE_GET_SIG_LEN)(const char *filepath, unsigned int * const p_sig_length, void *user_arg);
  239. typedef int (__stdcall *CALLBACK_REMOTE_READ_SIG)(const char *filepath, unsigned char * const p_sig_content, unsigned int sig_length, void *user_arg);
  240. //------------------------------------------------------------------------------
  241. // prototype of customized file integrity check callback                        
  242. //------------------------------------------------------------------------------
  243. typedef int (__stdcall *CALLBACK_FILE_INTEGRITY_CHECK)(unsigned char * const p_file_content, unsigned int * const p_file_length, void *user_arg);
  244. //------------------------------------------------------------------------------
  245. // BL_HANDLE: Exported Functions                                                
  246. //------------------------------------------------------------------------------
  247. typedef struct {
  248. _BOOL m_valid; // _TRUE -> dram setting is valid 
  249. unsigned int m_emi_gen_a;
  250. unsigned int m_emi_gen_b;
  251. unsigned int m_emi_gen_c;
  252. unsigned int m_emi_gen_d;
  253. unsigned int m_emi_con_i;
  254. unsigned int m_emi_con_i_ext;
  255. unsigned int m_emi_con_j;
  256. unsigned int m_emi_con_k;
  257. unsigned int m_emi_con_l;
  258. unsigned int m_emi_con_m;
  259. unsigned int m_emi_con_n;
  260. } DRAM_SETTING;
  261. typedef struct {
  262. char m_version[5];
  263. char m_filepath[512];
  264. unsigned int m_filesize;
  265. unsigned int m_start_addr;
  266. unsigned int m_chksum_seed;
  267. unsigned int m_chksum;
  268. DRAM_SETTING m_dram_cfg;
  269. _BOOL m_enable; // _FALSE -> disbale 
  270. // _TRUE  -> enable  
  271. } BL_INFO;
  272. //------------------------------------------------------------------------------
  273. // DL_HANDLE: Exported Functions                                                
  274. //------------------------------------------------------------------------------
  275. typedef enum {
  276. ABSOLUTE_ADDR = 0,
  277. OFFSET_VALUE
  278. } REGION_ADDR_TYPE;
  279. typedef enum {
  280. NORMAL_ROM  = 0x01,
  281. RESOURCE_BIN  = 0x02,
  282. JUMPTABLE_BIN  = 0x03,
  283. ENFB_BIN  = 0x04,
  284. UA_BIN  = 0x05,
  285. BL_BIN  = 0x06,
  286. //
  287. UNKNOWN_BIN  = 0xFFF
  288. } ROM_TYPE;
  289. typedef struct {
  290. char  name[64];
  291. unsigned int  region_addr;
  292. REGION_ADDR_TYPE addr_type; // ABSOLUTE_ADDR -> region_addr is absolute address 
  293. // OFFSET_VALUE  -> region_addr is offset value 
  294. unsigned int  begin_addr;
  295. unsigned int  end_addr;
  296. char  filepath[256];
  297. unsigned int  filesize;
  298. unsigned short  index;
  299. ROM_TYPE rom_type;
  300. _BOOL enable; // _FALSE -> disbale 
  301. // _TRUE  -> enable  
  302. }ROM_INFO;
  303. typedef struct {
  304. unsigned int m_is_nfb:1;
  305. unsigned int m_security_supported:1;
  306. unsigned int m_cust_para_supported:1;
  307. unsigned int m_system_drive_on_nand:1;
  308. unsigned int m_fota_full:1;
  309. } DL_Config_T;
  310. typedef struct {
  311. DL_Config_T m_config;
  312. } DL_INFO;
  313. struct DL_HANDLE;
  314. typedef struct DL_HANDLE * DL_HANDLE_T;
  315. extern int __stdcall DL_Create(DL_HANDLE_T  *p_dl_handle);
  316. extern int __stdcall DL_Destroy(DL_HANDLE_T  *p_dl_handle);
  317. extern int __stdcall DL_LoadScatter(DL_HANDLE_T  dl_handle, const char *scatter_filepath);
  318. extern int __stdcall DL_SetPacketLength(DL_HANDLE_T  dl_handle, unsigned short length);
  319. extern int __stdcall DL_GetCount(DL_HANDLE_T  dl_handle, unsigned short *p_rom_count);
  320. extern int __stdcall DL_GetInfo(DL_HANDLE_T  dl_handle, DL_INFO  *p_dl_info);
  321. extern int __stdcall DL_IsReady(DL_HANDLE_T  dl_handle, ROM_INFO  *p_rom_info, BL_INFO  *p_bl_info, _BOOL  check_if_updated);
  322. extern int __stdcall DL_GetJumpTableInfo(DL_HANDLE_T  dl_handle, MTK_JumpTable  *p_jmptbl_info);
  323. extern int __stdcall DL_GetProjectId(DL_HANDLE_T  dl_handle, char *buf, unsigned int buf_len);
  324. extern int __stdcall DL_ResourceProjectIdComparisonSetting(DL_HANDLE_T  dl_handle, _BOOL  enable);
  325. extern int __stdcall DL_AutoLoadByScatRegionName(DL_HANDLE_T  dl_handle, const char *full_filepath, unsigned char allow_rom_type);
  326. extern int __stdcall DL_GetBBChipType(DL_HANDLE_T  dl_handle, BBCHIP_TYPE  *p_bbchip);
  327. extern int __stdcall DL_GetBBChipName(DL_HANDLE_T  dl_handle, char *buf, unsigned int buf_len);
  328. extern int __stdcall DL_GetCustomName(DL_HANDLE_T  dl_handle, char *buf, unsigned int buf_len);
  329. extern int __stdcall DL_Rom_GetInfo(DL_HANDLE_T  dl_handle, unsigned short index, ROM_INFO  *p_rom_info);
  330. extern int __stdcall DL_Rom_GetInfoAll(DL_HANDLE_T  dl_handle, ROM_INFO  *p_rom_info, unsigned short max_rom_count);
  331. extern int __stdcall DL_Rom_GetResInfo(DL_HANDLE_T  dl_handle, unsigned short index, MTK_Resource  *p_res_info);
  332. extern int __stdcall DL_Rom_Load(DL_HANDLE_T  dl_handle, unsigned short index, const char *rom_filepath);
  333. extern int __stdcall DL_Rom_Unload(DL_HANDLE_T  dl_handle, unsigned short index);
  334. extern int __stdcall DL_Rom_UnloadAll(DL_HANDLE_T  dl_handle);
  335. extern int __stdcall DL_Rom_SetEnableAttr(DL_HANDLE_T  dl_handle, unsigned short index, _BOOL  attr);
  336. extern int __stdcall DL_IsNFB(DL_HANDLE_T  dl_handle, _BOOL  *p_is_nfb);
  337. extern int __stdcall DL_SetCallback(DL_HANDLE_T  dl_handle, 
  338. CALLBACK_REMOTE_GET_FILE_LEN cb_remote_get_file_len,
  339. void * cb_remote_get_file_len_arg,
  340. CALLBACK_REMOTE_READ_FILE cb_remote_read_file,
  341. void * cb_remote_read_file_arg,
  342. CALLBACK_REMOTE_GET_SIG_LEN cb_remote_get_sig_len,
  343. void * cb_remote_get_sig_len_arg,
  344. CALLBACK_REMOTE_READ_SIG cb_remote_read_sig,
  345. void * cb_remote_read_sig_arg,
  346. CALLBACK_FILE_INTEGRITY_CHECK cb_file_integrity_check,
  347. void * cb_file_integrity_check_arg);
  348. // BL_HANDLE related 
  349. extern int __stdcall DL_BL_IsReady(DL_HANDLE_T  dl_handle, BL_INFO  *p_bl_info, _BOOL  check_if_updated);
  350. extern int __stdcall DL_BL_Load(DL_HANDLE_T  dl_handle, const char *bl_filepath);
  351. extern int __stdcall DL_BL_GetInfo(DL_HANDLE_T  dl_handle, BL_INFO  *p_bl_info);
  352. extern int __stdcall DL_BL_SetEnableAttr(DL_HANDLE_T  dl_handle, _BOOL  attr);
  353. //------------------------------------------------------------------------------
  354. // DL_HANDLE_LIST: Exported Functions                                           
  355. //------------------------------------------------------------------------------
  356. struct DL_HANDLE_LIST;
  357. typedef struct DL_HANDLE_LIST * DL_HANDLE_LIST_T;
  358. extern int __stdcall DL_CreateList(DL_HANDLE_LIST_T * dl_handle_list);
  359. extern int __stdcall DL_DestroyList(DL_HANDLE_LIST_T * dl_handle_list);
  360. extern int __stdcall DL_AddHandleToList(DL_HANDLE_LIST_T dl_handle_list, DL_HANDLE_T dl_handle);
  361. extern int __stdcall DL_DeleteHandleFromList(DL_HANDLE_LIST_T dl_handle_list, DL_HANDLE_T dl_handle);
  362. extern int __stdcall DL_GetHandleNumber(DL_HANDLE_LIST_T dl_handle_list, int * HandleNumber);
  363. extern int __stdcall DL_CheckHandleInList(DL_HANDLE_LIST_T dl_handle_list, DL_HANDLE_T dl_handle);
  364. extern int __stdcall DL_CheckHandleSameSWVersionInList(DL_HANDLE_LIST_T dl_handle_list, DL_HANDLE_T dl_handle);
  365. //------------------------------------------------------------------------------
  366. // DA_HANDLE: Exported Functions                                                
  367. //------------------------------------------------------------------------------
  368. typedef struct {
  369. char filepath[256];
  370. unsigned int start_addr;
  371. unsigned char *buf;
  372. unsigned int buf_len;
  373. unsigned int main_prog_size;
  374. char version[13];
  375. char last_modified_date[256];
  376. }DA_INFO;
  377. struct DA_HANDLE;
  378. typedef struct DA_HANDLE * DA_HANDLE_T;
  379. extern int __stdcall DA_Create(DA_HANDLE_T  *p_da_handle);
  380. extern int __stdcall DA_Destroy(DA_HANDLE_T  *p_da_handle);
  381. extern int __stdcall DA_IsReady(DA_HANDLE_T  da_handle, DA_INFO  *p_da_info, _BOOL  check_if_updated);
  382. extern int __stdcall DA_GetInfo(DA_HANDLE_T  da_handle, DA_INFO  *p_da_info);
  383. extern int __stdcall DA_SetDefaultStartAddr(DA_HANDLE_T  da_handle, unsigned int da_start_addr);
  384. extern int __stdcall DA_Load(DA_HANDLE_T  da_handle, const char *da_filepath, _BOOL  bDA_Validation);
  385. extern int __stdcall DA_Unload(DA_HANDLE_T  da_handle);
  386. extern int __stdcall DA_SetCallback(DL_HANDLE_T  dl_handle, 
  387. CALLBACK_REMOTE_GET_FILE_LEN cb_remote_get_file_len,
  388. void * cb_remote_get_file_len_arg,
  389. CALLBACK_REMOTE_READ_FILE cb_remote_read_file,
  390. void * cb_remote_read_file_arg,
  391. CALLBACK_REMOTE_GET_SIG_LEN cb_remote_get_sig_len,
  392. void * cb_remote_get_sig_len_arg,
  393. CALLBACK_REMOTE_READ_SIG cb_remote_read_sig,
  394. void * cb_remote_read_sig_arg,
  395. CALLBACK_FILE_INTEGRITY_CHECK cb_file_integrity_check,
  396. void * cb_file_integrity_check_arg);
  397. //------------------------------------------------------------------------------
  398. // RB_HANDLE: Exported Functions                                                
  399. //------------------------------------------------------------------------------
  400. typedef struct {
  401. char filepath[256];
  402. unsigned int readback_addr;
  403. unsigned int readback_len;
  404. _BOOL enable; // _FALSE -> disbale 
  405. // _TRUE  -> enable  
  406. unsigned short index;
  407. NUTL_ReadFlag_E m_read_flag;
  408. }RB_INFO;
  409. struct RB_HANDLE;
  410. typedef struct RB_HANDLE * RB_HANDLE_T;
  411. extern int __stdcall RB_Create(RB_HANDLE_T  *p_rb_handle);
  412. extern int __stdcall RB_Destroy(RB_HANDLE_T  *p_rb_handle);
  413. extern int __stdcall RB_SetPacketLength(RB_HANDLE_T  rb_handle, unsigned short length);
  414. extern int __stdcall RB_GetCount(RB_HANDLE_T  rb_handle, unsigned short *p_rb_count);
  415. extern int __stdcall RB_IsReady(RB_HANDLE_T  rb_handle, RB_INFO  *p_rb_info);
  416. extern int __stdcall RB_GetInfo(RB_HANDLE_T  rb_handle, unsigned short index, RB_INFO  *p_rb_info);
  417. extern int __stdcall RB_GetInfoAll(RB_HANDLE_T  rb_handle, RB_INFO  *p_rb_info, unsigned short max_rb_count);
  418. extern int __stdcall RB_Append(RB_HANDLE_T  rb_handle, const char *rb_filepath, unsigned int rb_addr, unsigned int rb_len);
  419. 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);
  420. extern int __stdcall RB_Delete(RB_HANDLE_T  rb_handle, unsigned short index);
  421. extern int __stdcall RB_SetFilepath(RB_HANDLE_T  rb_handle, unsigned short index, const char *rb_filepath);
  422. extern int __stdcall RB_SetReadbackFlag(RB_HANDLE_T  rb_handle, unsigned short index, NUTL_ReadFlag_E  flag);
  423. extern int __stdcall RB_SetReadbackAddr(RB_HANDLE_T  rb_handle, unsigned short index, unsigned int rb_addr);
  424. extern int __stdcall RB_SetReadbackLength(RB_HANDLE_T  rb_handle, unsigned short index, unsigned int rb_len);
  425. extern int __stdcall RB_ClearAll(RB_HANDLE_T  rb_handle);
  426. extern int __stdcall RB_SetEnableAttr(RB_HANDLE_T  rb_handle, unsigned short index, _BOOL  attr);
  427. extern int __stdcall RB_EnableReadbackFAT(RB_HANDLE_T  rb_handle, unsigned short index, _BOOL  attr);
  428. //------------------------------------------------------------------------------
  429. // AUTH_HANDLE: Exported Functions                                              
  430. //------------------------------------------------------------------------------
  431. typedef struct {
  432. unsigned int m_version;
  433. char m_filepath[512];
  434. unsigned char m_secure_custom_name[32];
  435. unsigned char m_description[512];
  436. } AUTH_INFO;
  437. struct AUTH_HANDLE;
  438. typedef struct AUTH_HANDLE * AUTH_HANDLE_T;
  439. extern int __stdcall AUTH_Create(AUTH_HANDLE_T  *p_auth_handle);
  440. extern int __stdcall AUTH_Destroy(AUTH_HANDLE_T  *p_auth_handle);
  441. extern int __stdcall AUTH_IsReady(AUTH_HANDLE_T  auth_handle, AUTH_INFO  *p_auth_info, _BOOL  bCheckIfUpdated);
  442. extern int __stdcall AUTH_GetInfo(AUTH_HANDLE_T  auth_handle, AUTH_INFO  *p_auth_info);
  443. extern int __stdcall AUTH_Load(AUTH_HANDLE_T  auth_handle, const char *auth_filepath);
  444. extern int __stdcall AUTH_Unload(AUTH_HANDLE_T  auth_handle);
  445. extern int __stdcall AUTH_SetCallback(AUTH_HANDLE_T  auth_handle, 
  446. CALLBACK_REMOTE_GET_FILE_LEN cb_remote_get_file_len,
  447. void * cb_remote_get_file_len_arg,
  448. CALLBACK_REMOTE_READ_FILE cb_remote_read_file,
  449. void * cb_remote_read_file_arg,
  450. CALLBACK_REMOTE_GET_SIG_LEN cb_remote_get_sig_len,
  451. void * cb_remote_get_sig_len_arg,
  452. CALLBACK_REMOTE_READ_SIG cb_remote_read_sig,
  453. void * cb_remote_read_sig_arg,
  454. CALLBACK_FILE_INTEGRITY_CHECK cb_file_integrity_check,
  455. void * cb_file_integrity_check_arg);
  456. #ifdef __cplusplus
  457. }
  458. #endif
  459. #endif