www.pudn.com > FlashTool_src_v2.9.1006.zip > main.h


/***************************************************************************** 
*  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) 2002 
* 
*****************************************************************************/ 
 
/******************************************************************************* 
* Filename: 
* --------- 
*  main.h 
* 
* Project: 
* -------- 
*  Flash tool set 
* 
* Description: 
* ------------ 
*  main window header file  
* 
* Author: 
* ------- 
*  FZ Hsu (mtk00303) 
* 
*============================================================================== 
*           HISTORY 
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
*------------------------------------------------------------------------------ 
* $Revision:   1.35  $ 
* $Modtime:   Dec 28 2005 22:13:02  $ 
* $Log:   //mtkvs01/vmdata/flash_tool/archives/main.h-arc  $ 
 * 
 * Jul 21 2006 mtk01413 
 * [STP100001021] FlashTool v2.9.1002 release 
 *  
 * 
 * Jun 12 2006 mtk01413 
 * [STP100000922] FlashTool v2.9.1001 release 
 * New features: 
 *  1. [FlashTool/BROM_DLL] Support Multi-Load Autodetection Download. 
 *  
 * 
 * May 24 2006 mtk01413 
 * [STP100000879] FlashTool v2.8.1001 release 
 *  1. [FlashTool][NEW] Support 6229 Download, add m_emi_gen_c in DRAM setting 
 * 
 * Feb 23 2006 mtk00539 
 * [STP100000625] FlashTool v2.7.1016 
 *  
 *  
 *    Rev 1.35   Dec 29 2005 10:57:26   mtk00539 
 *  1. [FlashTool] Add download history feature. 
 * Resolution for 156: [FlashTool v2.7.1013][BUG FIX] Fix BootROM start command failure while manually selecting NMT6226 or MT6227 baseband chip. 
 *  
 *    Rev 1.34   Nov 19 2005 00:58:06   mtk00539 
 *  1. [FlashTool][New] Adapt new BROM_DLL&DA v2.7.1011.  
 * Resolution for 150: [FlashTool v2.7.1011][New] Add UID Secure Booting feature and Bug Fix. 
 *  
 *    Rev 1.33   Oct 19 2005 14:47:26   mtk00539 
 *  1. [FlashTool][New] Adapt new BROM_DLL&DA v2.7.1008.  
 * Resolution for 141: [FlashTool v2.7.1008][New] Support NFB download and many new features. 
 *  
 *    Rev 1.32   Sep 13 2005 13:38:16   mtk00539 
 *  1. [FlashTool][New] Adapt new BROM_DLL&DA v2.4.1016.  
 * Resolution for 131: [FlashTool v2.6.1016][Enhance] Workaround the 1st time power up failure issue when RTC is empty. 
 *  
 *    Rev 1.31   Jul 25 2005 14:56:44   mtk00539 
 *  1. [FlashTool][New] Support MT6229. 
 * Resolution for 125: [FlashTool v2.6.1015][New] Support MT6229. 
 *  
 *    Rev 1.30   Jul 22 2005 20:48:30   mtk00539 
 *  1. [FlashTool][New] Support MT6227. 
 * Resolution for 122: [FlashTool v2.6.1014][New] Support MT6227. 
 *  
 *    Rev 1.29   May 24 2005 20:03:40   mtk00539 
 *  1. [FlashTool][New] Reset FAT to factory default setting.  
 *  2. [FlashTool][New] Option to enable/disable resource project id comparison.  
 * Resolution for 116: [FlashTool v2.6.1012][New] Reset FAT to factory default setting. 
 *  
 *    Rev 1.28   Apr 12 2005 22:14:00   mtk00539 
 *  1. [FlashTool][New] Support MT6228 baseband chip. 
 * Resolution for 110: [FlashTool v2.6.1011][New] Support MT6228 baseband chip. 
 *  
 *    Rev 1.27   Feb 16 2005 17:27:44   mtk00539 
 *  1. [FlashTool][New] Adapt new BROM_DLL&DA v2.4.1009 to support SPANSION S71AL016D and SHARP LRS18C8A flash.  
 *  2. [FlashTool][Enhance] Allow to setup EMI setting in TestMode. 
 *  3. [FlashTool][Enhance] Keep TestMode unless you disable it. In order to allow users to do test continuously. 
 *  4. [FlashTool][Enhance] Add CTRL+S hot-key to save TestMode log into file. 
 * Resolution for 106: [FlashTool v2.6.1009][New] Adapt new BROM_DLL&DA v2.4.1009 to support SPANSION S71AL016D and SHARP LRS18C8A flash. 
 *  
 *    Rev 1.26   Nov 22 2004 14:30:12   mtk00539 
 *  1. [FlashTool][New] Adapt new BROM_DLL&DA v2.4.1008 to enable/disable speed-up baudrate in BootROM stage. 
 * Resolution for 100: [FlashTool v2.6.1008][New] Adapt new BROM_DLL&DA v2.4.1008 to enable/disable speed-up baudrate in BootROM stage. 
 *  
 *    Rev 1.25   Oct 29 2004 11:49:22   mtk00539 
 *  1. [FlashTool][New] Adapt new BROM_DLL&DA v2.4.1006 to fix AM49DL3208GT & S71PL032J download fail problem and some enhancement. 
 *  2. [FlashTool][New] Add auto-detect base band chip type flag. 
 * Resolution for 1: META MAUI v1.0 
 *  
 *    Rev 1.24   Sep 03 2004 19:54:48   mtk00539 
 * [FlashTool][New] Adapt new BROM_DLL&DA v2.4.1004 for MT6217 support. 
 * Resolution for 89: [FlashTool v2.6.1004][New] Adapt new BROM_DLL&DA v2.4.1004 for MT6217 support. 
 *  
 *    Rev 1.23   Jul 19 2004 11:13:30   mtk00539 
 * add baudrate full sync count option 
 * Resolution for 82: [FlashTool v2.6.1001][New] Adapt with BROM_DLL v2.4.1001 and many enhancement. 
 *  
 *    Rev 1.22   Jul 19 2004 02:10:56   mtk00539 
 *  1. [FlashTool][New] Adapt new BROM_DLL v2.4.1001 for many features and bug fix. 
 *  2. [FlashTool][Enhance] Export COM port read/write timeout setting. 
 *  3. [FlashTool][Enhance] Change EMI setting to 32 bits. 
 * Resolution for 82: [FlashTool v2.6.1001][New] Adapt with BROM_DLL v2.4.1001 and many enhancement. 
 *  
 *    Rev 1.21   Jun 16 2004 16:38:34   mtk00539 
 *  1. [FlashTool][Enhance] Re-org format option panel to prevent users confused. 
 *  2. [FlashTool][Enhance] Do not close OK window when operation is done. 
 * Resolution for 78: [FlashTool v2.5.1013][Enhance] Re-org format option panel to prevent users confused. 
 *  
 *    Rev 1.20   Jun 03 2004 11:55:34   mtk00539 
 * when users select new scatter file, set dialog initial dir to scatter file base dir. 
 * Resolution for 76: [FlashTool v2.5.1012][BUG FIX] Fix bug in FAT range info import. 
 *  
 *    Rev 1.19   May 26 2004 21:54:58   mtk00539 
 * [FlashTool][New] Using BROM_DLL_v2.3.1005 new feature to add BootROM stage callback function to disable vibrator to avoid MT6218B series board layout issue. 
 * Resolution for 74: [FlashTool v2.5.1011][New] Add new flag to pull down GPIO17. 
 *  
 *    Rev 1.18   May 21 2004 15:54:54   mtk00539 
 *  1. [FlashTool][BUF FIX] fix incorrect error message of resource detection. 
 * Resolution for 71: [FlashTool v2.5.1010][BUF FIX] fix incorrect error message of resource detection. 
 *  
 *    Rev 1.17   May 14 2004 17:04:22   mtk00539 
 *  1. [FlashTool][New] add CTRL+ALT+O hot-key to toggle Advanced Option Mode. 
 *  2. [FlashTool][New] add FAT auto format mechanism. 
 *  3. [FlashTool][New] add DA auto selection mechanism. 
 *  4. [FlashTool][New] add STOP button. 
 *  5. [FlashTool][Enhance] start timer when BootROM start cmd pass. 
 *  6. [FlashTool][New] display flash info in status bar hint. 
 *  7. [FlashTool][New] display format range info in format progress bar hint. 
 *  8. [FlashTool][New] record the DA, Scatter and DL path separately. 
 * Resolution for 68: [FlashTool v2.5.1009][New] add FAT auto format, DA auto selection mechanism and lots of enhancements. 
 *  
 *    Rev 1.16   Apr 20 2004 15:58:30   mtk00539 
 * [Enhance] hide seldom used option, it an be turn on again by Advance Mode hot-key CTRL+ALT+O. 
 * Resolution for 65: [FlashTool v2.5.1008][New] add baseband chip ECO revision checking flag for FlashDownload. 
 *  
 *    Rev 1.15   Mar 29 2004 14:20:16   mtk00539 
 * [New] add baseband chip ECO revision checking flag for FlashDownload. 
 * Resolution for 65: [FlashTool v2.5.1008][New] add baseband chip ECO revision checking flag for FlashDownload. 
 *  
 *    Rev 1.14   Mar 02 2004 00:28:18   mtk00539 
 *  1. [FlashTool][Enhance] automatically select bbchip according to rom bbchip id.. 
 *  2. [FlashTool][Enhance] automatically load all the resource files. 
 *  3. [FlashTool][Enhance] display resource and jump table information. 
 *  4. [FlashTool][New] add MT6219 support. 
 * Resolution for 54: [FlashTool v2.5.1006][Enhance] bbchip id detection and resource autoload. 
 *  
 *    Rev 1.13   Feb 11 2004 17:54:56   mtk00539 
 * [Enhance] support selectable download 
 * Resolution for 52: [FlashTool v2.5.1002][Enhance] selectable download. 
 *  
 *    Rev 1.12   Feb 05 2004 13:40:36   mtk00539 
 * adapt to BROM DLL v2.2.1001 
 * Resolution for 47: [FlashTool v2.5.1001][New] support multiple concatanated bin files download. 
 *  
 *    Rev 1.11   Oct 29 2003 17:39:12   mtk00539 
 * modify packet length 
 *  
 *    Rev 1.10   Oct 01 2003 23:38:18   mtk00539 
 * Add packet length in DA_WRITE_CMD and DA_READ_CMD. 
 * Resolution for 28: [BootRom v2.1.1001][New] See the reasons below. 
 *  
 *    Rev 1.9   Sep 25 2003 14:03:28   mtk00539 
 * adapt brom.dll v2.1.1001, please see SCR(29) for more details. 
 * Resolution for 29: [FlashTool v2.4.1001][New] See the reasons below. 
 *  
 *    Rev 1.8   Jun 30 2003 19:19:36   mtk00539 
 *  1. [FlashTool][Add Features] Split flashtool function into brom.dll 
 *  2. [FlashTool][Add Features] Format function: users can format any range you want without downloading procedure. 
 *  3. [FlashTool][Add Features] Report format percentage. 
 *  4. [FlashTool][Add Features] Check format range. 
 *  5. [FlashTool][Add Features] Merge FlashTool for Pluto version. 
 *  6. [FlashTool][Add Features] Runtime debug log: you can press (CTRL+ALT+T) to enable/disable debug log whenever you want. 
 *  7. [FlashTool][Add Features] Forcedly Stop hot-key: you can forcedly stop FlashTool by pressing CTRL+Z. 
 *  8. [FlashTool][BUG FIXED] Fix FlashTool MEM_CMD end_addr bug, FlashTool should use (begin_addr+length-1) as end_addr. 
 * Resolution for 11: [FlashTool v2.3.1001][New Version] Split flashtool function into brom.dll 
 *  
 *    Rev 1.7   Jun 11 2003 17:53:34   mtk00539 
 * 1. Modify BootRom library to support MT6218 
 * 2. Modify FlashTool and DA to support AM29PDL128G flash 
 * Resolution for 9: [FlashTool v2.2.1005][Add Feature] Support MT6218 and new flash AM29PDL128G 
 *  
 *    Rev 1.6   Jun 03 2003 22:24:54   mtk00539 
 * 1. extend timeout to 10 sec for large image download in boot_2.cpp 
 * 2. disable unnecesssary debug hot-key. 
 * 3. add shift+ctrl+A for Jensen's DA debug tool kit. 
 * 4. enable build number, and start from 1003. 
 * 5. save baseband chip type, mcu frequency and auto-memory wait state setup flag to ini file. 
 * 6. add DA_SET_REG_CMD command and remove FINISH_CMD, so that release power key could be issued from FlashTool, not hardcoded in DA. 
 * 7. add DA_MCU_FREQ_CMD command, so that we don't have to select different DA while switching frequency. 
 * 8. add new flash MB84VD23280FA-70 for Chicago project. 
 * 9. remove DEVICE_CMD, DA will check flash automatically and report the flash type to PC. 
 * 10. add DA_FORMAT_CMD command to support range format. 
 * 11. display flash type on FlashTool. 
 * 12. merge the DOWNLOAD.H header file, both FlashTool and DA will use the same header file. 
 * 13. modify SPEED_CMD handshake by adding a sync mechanism to detect whether if the speed change is done by both sides. 
 * Resolution for 7: [FlashTool v2.2.1003][AddFeature] Enhanced for KLM and Chicago project. 
 *  
 *    Rev 1.5   May 20 2003 16:22:30   mtk00539 
 * Support 6205/6205B at 13MHz, 26MHz and 52MHz 
 * Resolution for 6: [FlashTool v2.2][AddFeature] Support 6205/6205B at 13MHz, 26MHz and 52MHz. 
 *  
 *    Rev 1.4   Jan 09 2003 17:55:32   mtk00303 
 * add last 1~3 context switch task ID and frame tick time 
 *  
 *    Rev 1.3   Nov 20 2002 19:52:58   mtk00303 
 * update for reference phone 
 *  
 *    Rev 1.2   Jul 30 2002 10:45:24   admin 
 * 2002_0730 
 *  
 *    Rev 1.1   Jul 26 2002 11:52:18   admin 
 * ver 0726 
 *  
 *    Rev 1.0   Jul 20 2002 19:26:14   admin 
 * Initial revision. 
* 
*------------------------------------------------------------------------------ 
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
*============================================================================== 
*******************************************************************************/ 
 
//--------------------------------------------------------------------------- 
 
#ifndef mainH 
#define mainH 
//--------------------------------------------------------------------------- 
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include "CGAUGES.h" 
#include  
#include  
#include "Trayicon.h" 
 
#include "stdio.h" 
 
#include "flashtool_handle.h" 
#include "flashtool.h" 
#include "tboot_1.h" 
#include "CGAUGES.h" 
#include  
 
typedef struct 
{ 
/* 
    TARGET_TIME_OUT_01_ERROR   = 0x1; 
    TARGET_TIME_OUT_LSB_ERROR  = 0x4; 
    TARGET_TIME_OUT_MSB_ERROR  = 0x5; 
    TARGET_CHECKSUM_ERROR      = 0x2; 
    TARGET_BUFFER_FULL_ERROR   = 0x3; 
*/ 
    unsigned char TimeOutErrorCount; 
    unsigned char TimeOutLSB_ErrorCount; 
    unsigned char TimeOutMSB_ErrorCount; 
    unsigned char ChecksumErrorCount; 
    unsigned char BufferFullErrorCount; 
    unsigned char EraseFlashTimeOutCount; 
    unsigned char ProgramFlashTimeOutCount; 
    unsigned char UndefinedErrorCount; 
} TargetDownloadErrorCount; 
 
 
 
 
#ifndef LAB 
    const RS232_TIME_OUT = 10000; // 2002.1.25 
    const TOTAL_TIME_OUT_MULTIPLIER = 7; 
#else 
    const RS232_TIME_OUT = 10000; // 2002.3.12 
    const TOTAL_TIME_OUT_MULTIPLIER = 7; 
#endif 
 
    const RS232_READBACK_READ_TIME_OUT = 2000;  
 
 
class DownloadBinFile { 
public: 
	DownloadBinFile() { 
		m_Filepath = ""; 
		m_Enable = false; 
	} 
 
	~DownloadBinFile() { } 
 
	AnsiString		m_Filepath; 
	bool			m_Enable; 
}; 
 
class DownloadSet { 
public: 
	DownloadSet() { 
		m_Scatter = ""; 
		m_BootLoader = ""; 
		m_BootLoader_Enable = false; 
		m_BinFiles.clear(); 
	} 
	~DownloadSet() { } 
 
	bool operator == (const DownloadSet	&r_value) { 
		if( 0==m_Scatter.AnsiCompareIC(r_value.m_Scatter) &&  
			0==m_BootLoader.AnsiCompareIC(r_value.m_BootLoader) && 
			m_BinFiles.size()==r_value.m_BinFiles.size() 
		) { 
			for(int i=0; i	m_BinFiles; 
}; 
 
typedef std::list		DownloadHistoryList; 
 
#define MAX_DOWNLOAD_HISTORY	10 
 
//--------------------------------------------------------------------------- 
class TMainForm : public TForm 
{ 
 
     friend class tboot_1; 
 
__published:	// IDE-managed Components 
        TMainMenu *m_Main; 
        TMenuItem *File1; 
        TMenuItem *Options1; 
        TMenuItem *Run1; 
        TMenuItem *Download1; 
        TActionList *ActionList1; 
        TMenuItem *Open1; 
        TMenuItem *N1; 
        TMenuItem *Exit1; 
        TMenuItem *BaudRate1; 
        TMenuItem *mi_115200; 
        TMenuItem *mi_38400; 
        TMenuItem *mi_19200; 
        TMenuItem *mi_9600; 
        TMenuItem *mi_57600; 
        TOpenDialog *OpenLdMapDialog; 
        TSaveDialog *SaveOptionDialog; 
        TImageList *ImageList1; 
        TAction *FileOpenDownloadAgent; 
    TAction *FileSave_TestModeLog; 
        TAction *Download; 
        TAction *BaudRate; 
        TAction *ComPort; 
        TMenuItem *N2; 
	TMenuItem *mi_EMI_Config; 
        TAction *OptionsSetup; 
        TAction *OptionsSave; 
        TAction *OptionsOpen; 
        TImageList *ImageList2; 
        TOpenDialog *OpenDownloadAgentDialog; 
        TMenuItem *Openlinkmapfile1; 
        TAction *FileOpenLinkMap; 
        TAction *View_toolbar; 
        TAction *View_StatusBar; 
        TAction *br_115200; 
        TAction *br_57600; 
        TAction *br_38400; 
        TAction *br_19200; 
        TAction *br_9600; 
        TAction *Exit; 
        TOpenDialog *OpenSingleRomFile; 
        TAction *StartAddr; 
        TAction *MB0Setup; 
        TStatusBar *sb_Main; 
        TAction *Readback; 
        TMenuItem *ReadBack1; 
        TPageControl *PageControl1; 
        TTabSheet *ts_Download; 
        TTabSheet *ts_Readback; 
        TListView *ListView1; 
        TToolBar *tb_ReadBack; 
        TToolButton *tb_AddReadBackFile; 
        TImageList *ImageList3; 
        TToolButton *tb_DeleteReadBackFile; 
        TListView *lv_ReadBack; 
        TSaveDialog *sd_ReadBack; 
        TMenuItem *mi_460800; 
        TMenuItem *mi_230400; 
        TAction *br_230400; 
        TAction *br_460800; 
        TTimer *Timer_Download; 
        TCGauge *CGauge1; 
//        TOpenDialog *dlg_OpenMidiFile; 
        TToolBar *tb_Download; 
        TToolButton *tb_OpenDownloadAgent; 
        TToolButton *tb_ScatterLoading; 
        TToolButton *tb_DownBootRom2; 
        TToolButton *ToolButton10; 
        TToolButton *tb_ReadBack2; 
        TMenuItem *Help1; 
        TMenuItem *About1; 
        TEdit *ed_DA_File; 
        TEdit *ed_LinkMapFile; 
        TMenuItem *mi_FormatFDM; 
        TLabel *lb_DA_File; 
        TLabel *lb_LinkMapFile; 
	TMenuItem *MCUClock1; 
	TMenuItem *MCU_13MHz; 
	TMenuItem *MCU_26MHz; 
	TMenuItem *MCU_52MHz; 
	TMenuItem *BaseBandChip1; 
	TMenuItem *BBCHIP_MT6205; 
	TMenuItem *BBCHIP_MT6205B; 
	TAction *Action_MCU_13M; 
	TAction *Action_MCU_26M; 
	TAction *Action_MCU_52M; 
	TAction *Action_MT6205; 
	TAction *Action_MT6205B; 
	TAction *Action_AutoMemSetup; 
	TAction *action_ToggleDebugDA; 
	TRichEdit *DebugDAWindow; 
	TMenuItem *BBCHIP_MT6218; 
	TAction *Action_MT6218; 
	TAction *action_ToggleTrace; 
	TToolButton *FormatButton; 
	TAction *action_ForceStop; 
	TMenuItem *BBCHIP_MT6208; 
	TAction *action_ToggleSkipBootRom; 
	TMenuItem *mi_921600; 
	TMenuItem *BBCHIP_MT6218B; 
	TAction *action_PurgeDebugLog; 
	TMenuItem *PacketLength1; 
	TMenuItem *PL_1; 
	TMenuItem *PL_2; 
	TMenuItem *PL_3; 
	TMenuItem *PL_4; 
	TMenuItem *PL_5; 
	TMenuItem *DCOMPort; 
	TMenuItem *BBCHIP_MT6219; 
	TMenuItem *m_CheckECOVersion; 
	TAction *action_AdvanceOption; 
	TToolButton *DL_StopButton; 
	TToolButton *RB_StopButton; 
	TMenuItem *m_AutoSelectBBChipType; 
	TMenuItem *m_CheckTgtResourceLayout; 
	TMenuItem *m_AutoLoadResByScat; 
	TMenuItem *m_DA_Option; 
	TMenuItem *m_ResourceOption; 
	TMenuItem *m_BBChipOption; 
	TMenuItem *m_BRomStartCmdRetryCount; 
	TMenuItem *BBCHIP_MT6217; 
	TMenuItem *m_PullDownGPIO17; 
	TMenuItem *m_COM_Port_Timeout; 
	TMenuItem *m_Transmission_Option; 
	TMenuItem *m_AutoDetectBBChip; 
	TMenuItem *m_SpeedUpBootROMBaudrate; 
    TSaveDialog *Dialog_SaveTestModeLog; 
    TMenuItem *m_SaveTestModeLog; 
    TMenuItem *BBCHIP_MT6228; 
    TMenuItem *m_CompareProjectId; 
    TTimer *m_FakeProgressTimer; 
    TMenuItem *m_EnableNFICS1; 
    TMenuItem *m_Menu_OperationMethod; 
    TMenuItem *m_Menu_OPM_NOR; 
    TMenuItem *m_Menu_OPM_NAND; 
    TMenuItem *m_Menu_OPM_NFB; 
    TStatusBar *m_HWStatus; 
    TMenuItem *BBCHIP_MT6227; 
    TMenuItem *BBCHIP_MT6229; 
    TMenuItem *BBCHIP_MT6226; 
    TMenuItem *N3; 
    TMenuItem *m_DL_History_0; 
    TMenuItem *m_DL_History_1; 
    TMenuItem *m_DL_History_2; 
    TMenuItem *m_DL_History_3; 
    TMenuItem *m_DL_History_4; 
    TMenuItem *m_DL_History_5; 
    TMenuItem *m_DL_History_6; 
    TMenuItem *m_DL_History_7; 
    TMenuItem *m_DL_History_8; 
    TMenuItem *m_DL_History_9; 
    TMenuItem *BBCHIP_MT6226M; 
        TTreeView *TreeView1; 
        TImageList *ImageList4; 
        TMenuItem *mi_MultiLoad; 
        TPopupMenu *PopupMenu1; 
        TMenuItem *AddaLoad1; 
        TMenuItem *DeleteaLoad1; 
        void __fastcall Download1Click(TObject *Sender); 
        void __fastcall FileOpenDownloadAgentExecute(TObject *Sender); 
        void __fastcall OptionsSetupExecute(TObject *Sender); 
        void __fastcall test_tray_iconClick(TObject *Sender); 
        void __fastcall FileOpenLinkMapExecute(TObject *Sender); 
        void __fastcall FormCreate(TObject *Sender); 
        void __fastcall View_toolbarExecute(TObject *Sender); 
        void __fastcall View_StatusBarExecute(TObject *Sender); 
        void __fastcall br_115200Execute(TObject *Sender); 
        void __fastcall br_57600Execute(TObject *Sender); 
        void __fastcall br_38400Execute(TObject *Sender); 
        void __fastcall br_19200Execute(TObject *Sender); 
        void __fastcall br_9600Execute(TObject *Sender); 
        void __fastcall mi_DEBUGClick(TObject *Sender); 
        void __fastcall ExitExecute(TObject *Sender); 
        void __fastcall FormClose(TObject *Sender, TCloseAction &Action); 
        void __fastcall mi_ViewClick(TObject *Sender); 
        void __fastcall ListView1_oldClick(TObject *Sender); 
        void __fastcall mi_Phase2Click(TObject *Sender); 
        void __fastcall StartAddrExecute(TObject *Sender); 
        void __fastcall MB0SetupExecute(TObject *Sender); 
        void __fastcall ReadbackExecute(TObject *Sender); 
        void __fastcall tb_AddReadBackFileClick(TObject *Sender); 
        void __fastcall tb_DeleteReadBackFileClick(TObject *Sender); 
        void __fastcall lv_ReadBackKeyPress(TObject *Sender, char &Key); 
        void __fastcall lv_ReadBackKeyDown(TObject *Sender, WORD &Key, 
          TShiftState Shift); 
        void __fastcall lv_ReadBackDblClick(TObject *Sender); 
        void __fastcall TestDownloadNot258byteClick(TObject *Sender); 
        void __fastcall br_230400Execute(TObject *Sender); 
        void __fastcall br_460800Execute(TObject *Sender); 
        void __fastcall Timer_DownloadTimer(TObject *Sender); 
        void __fastcall testOKWnd1Click(TObject *Sender); 
        void __fastcall About1Click(TObject *Sender); 
        void __fastcall ts_DownloadShow(TObject *Sender); 
        void __fastcall ts_ReadbackShow(TObject *Sender); 
        void __fastcall mi_FormatFDMClick(TObject *Sender); 
        void __fastcall ts_MidiDownloadShow(TObject *Sender); 
	void __fastcall Action_MCU_13MExecute(TObject *Sender); 
	void __fastcall Action_MCU_26MExecute(TObject *Sender); 
	void __fastcall Action_MCU_52MExecute(TObject *Sender); 
	void __fastcall Action_MT6205Execute(TObject *Sender); 
	void __fastcall Action_MT6205BExecute(TObject *Sender); 
	void __fastcall action_ToggleDebugDAExecute(TObject *Sender); 
	void __fastcall Action_MT6218Execute(TObject *Sender); 
	void __fastcall action_ToggleTraceExecute(TObject *Sender); 
	void __fastcall FormatButtonClick(TObject *Sender); 
	void __fastcall action_ForceStopExecute(TObject *Sender); 
	void __fastcall action_ToggleSkipBootRomExecute(TObject *Sender); 
	void __fastcall BBCHIP_MT6208Click(TObject *Sender); 
	void __fastcall Formatafterdownloading1Click(TObject *Sender); 
	void __fastcall mi_921600Click(TObject *Sender); 
	void __fastcall BBCHIP_MT6218BClick(TObject *Sender); 
	void __fastcall action_PurgeDebugLogExecute(TObject *Sender); 
	void __fastcall PL_1Click(TObject *Sender); 
	void __fastcall PL_2Click(TObject *Sender); 
	void __fastcall PL_3Click(TObject *Sender); 
	void __fastcall PL_4Click(TObject *Sender); 
	void __fastcall PL_5Click(TObject *Sender); 
	void __fastcall UpdatePacketLength(unsigned short pkt_length); 
	void __fastcall Options1Click(TObject *Sender); 
	void __fastcall COMPortSubMenuClick(TObject *Sender); 
	void __fastcall ListView1Click(TObject *Sender); 
	void __fastcall ListView1Change(TObject *Sender, TListItem *Item, 
          TItemChange Change); 
	void __fastcall ListView1Changing(TObject *Sender, TListItem *Item, 
          TItemChange Change, bool &AllowChange); 
	void __fastcall ListView1DblClick(TObject *Sender); 
	void __fastcall RedrawDownloadList(DL_HANDLE_T dl_handle); 
	void __fastcall RedrawDownloadCheckBox(); 
	void __fastcall RedrawReadbackList(); 
	void __fastcall lv_ReadBackChange(TObject *Sender, TListItem *Item, 
          TItemChange Change); 
	void __fastcall lv_ReadBackChanging(TObject *Sender, TListItem *Item, 
          TItemChange Change, bool &AllowChange); 
	void __fastcall lv_ReadBackClick(TObject *Sender); 
	void __fastcall lv_ReadBack_oldDblClick(TObject *Sender); 
	void __fastcall ListView1InfoTip(TObject *Sender, TListItem *Item, 
          AnsiString &InfoTip); 
	void __fastcall BBCHIP_MT6219Click(TObject *Sender); 
	void __fastcall m_CheckECOVersionClick(TObject *Sender); 
	void __fastcall action_AdvanceOptionExecute(TObject *Sender); 
	void __fastcall DL_StopButtonClick(TObject *Sender); 
	void __fastcall RB_StopButtonClick(TObject *Sender); 
	void __fastcall m_AutoSelectBBChipTypeClick(TObject *Sender); 
	void __fastcall m_CheckTgtResourceLayoutClick(TObject *Sender); 
	void __fastcall m_AutoLoadResByScatClick(TObject *Sender); 
	void __fastcall m_BRomStartCmdRetryCountClick(TObject *Sender); 
	void __fastcall m_PullDownGPIO17Click(TObject *Sender); 
	void __fastcall mi_EMI_ConfigClick(TObject *Sender); 
	void __fastcall m_COM_Port_TimeoutClick(TObject *Sender); 
	void __fastcall BBCHIP_MT6217Click(TObject *Sender); 
	void __fastcall m_AutoDetectBBChipClick(TObject *Sender); 
	void __fastcall m_SpeedUpBootROMBaudrateClick(TObject *Sender); 
    void __fastcall FileSave_TestModeLogExecute(TObject *Sender); 
    void __fastcall BBCHIP_MT6228Click(TObject *Sender); 
    void __fastcall m_CompareProjectIdClick(TObject *Sender); 
    void __fastcall m_FakeProgressTimerTimer(TObject *Sender); 
    void __fastcall m_EnableNFICS1Click(TObject *Sender); 
    void __fastcall m_Menu_OPM_NORClick(TObject *Sender); 
    void __fastcall m_Menu_OPM_NANDClick(TObject *Sender); 
    void __fastcall m_Menu_OPM_NFBClick(TObject *Sender); 
    void __fastcall FormDestroy(TObject *Sender); 
    void __fastcall sb_MainDrawPanel(TStatusBar *StatusBar, 
          TStatusPanel *Panel, const TRect &Rect); 
    void __fastcall BBCHIP_MT6227Click(TObject *Sender); 
    void __fastcall BBCHIP_MT6229Click(TObject *Sender); 
    void __fastcall BBCHIP_MT6226Click(TObject *Sender); 
    void __fastcall File1Click(TObject *Sender); 
	void __fastcall OnDownloadHistoryClick(TObject *Sender); 
    void __fastcall BBCHIP_MT6226MClick(TObject *Sender); 
        void __fastcall mi_MultiLoadClick(TObject *Sender); 
        void __fastcall AddaLoad1Click(TObject *Sender); 
        void __fastcall DeleteaLoad1Click(TObject *Sender); 
        void __fastcall TreeView1Click(TObject *Sender); 
 
private:	// User declarations 
 
   int uiMultiBootConfigAddr; 
   unsigned short m_COMPortList[255]; 
   unsigned short m_COMPortCount; 
   TCriticalSection  *m_pUpdateListLock; 
 
   void __fastcall AutoSelectDAandBBChip(DL_HANDLE_T dl_handle); 
   void __fastcall SyncRedrawDownloadList(); 
 
protected: 
   AnsiString asBin; 
   AnsiString asMap; 
   AnsiString ScatBaseDir; 
   AnsiString ROMBaseDir; 
   AnsiString TestModeLogFile; 
 
public:		// User declarations 
 
//        DCB dcbCommPort; 
//        COMMTIMEOUTS ctmoNew; 
 
        __fastcall TMainForm(TComponent* Owner); 
 
 
        void uncheckAllBaudRate(); 
        void uncheckAllComPort(); 
 
        void updateStatusBar(); 
 
        void updateMenuItem(); 
 
        void updateOperationMethod(DL_HANDLE_T dl_handle); 
 
        bool Parse(DL_HANDLE_T dl_handle, AnsiString asMapFileName, bool bAutoLoad); 
 
        void CloseBootAgentFile(); 
 
        bool FileOpenDownloadAgentExecute(); 
        bool FileOpenLinkMapExecute();         
        bool FileSaveTestModeLogExecute(); 
 
        void ReadBack_Finish(); 
        int  UpdateDA(); 
 
        void DisableDownloadButton(); 
        void EnableDownloadButton(); 
		void DisableReadbackButton(); 
		void EnableReadbackButton(); 
		void DisableFormatButton(); 
		void EnableFormatButton(); 
		void DisableStopButton(); 
		void EnableStopButton(); 
		void UpdateCaption(); 
 
		bool LoadByDownloadSet(const DownloadSet &dl_set); 
//        FILE *fp_boot_agent; 
 
		void HWStatusBarClear(); 
		void HWStatusBarUpdate(const DA_REPORT_T *p_da_report, const char *p_storage_hint, const char *m_hw_detection_report); 
 
        //////////////////////////////////// 
 
        // 2002.3.28 for stable. 
 
//        AnsiString asStatusBar0Text;   // 2002.5.9 
 
//        int iProgress;  // 2002.5.9 
 
         ////////////////////// 
 
 
 
        // 2002.3.29 
        tboot_1 *p1; 
 
        bool tboot1end; 
 
 
        ///////////// Multi Boot Config 
 
        void SaveMultiBootConfigAddr( unsigned int uiAddr ); 
 
//////////////////////////////////////////// 
       // Multi boot SETRTS & DL 
       void start_DL( bool bStart_DL ); 
 
       void start_RB( bool b_start_RB ); 
#ifdef _DISABLE_DL_BUTTON 
       void _fastcall enable_DownLoad_button(TObject *Sender); 
#endif 
}; 
//--------------------------------------------------------------------------- 
extern PACKAGE TMainForm *MainForm; 
extern UART_BAUDRATE  BAUD_RATE; 
extern unsigned int  COM_PORT; 
extern EXT_CLOCK	g_EXT_CLOCK; 
extern BBCHIP_TYPE	g_BBCHIP_TYPE; 
extern bool	g_AutoDetectBBCHIP; 
extern bool	g_bDebugDA; 
typedef enum { 
	DISABLE_FORMAT = 0, 
	RESET_TO_FACTORY, 
	AUTO_FORMAT, 
	MANUAL_FORMAT 
} FormatOption_E; 
extern FormatOption_E	g_FormatAfterDownloadOption; 
extern FormatOption_E	g_FormatOption; 
extern bool g_bSkipBootRom; 
extern bool g_bCheckECOVer; 
extern bool g_bCheckTgtResourceLayout; 
extern bool g_bPullDownGPIO17; 
extern bool g_SpeedUpBootROMBaudrate; 
extern bool	g_FormatValidation; 
extern bool g_bEnableAdvanceOption; 
typedef enum { 
	NOR_OPERATION = 0, 
	NAND_OPERATION, 
	NFB_OPERATION 
} OptionMethod_E; 
extern OptionMethod_E	g_OperationMethod; 
extern NUTL_EraseFlag_E	g_EraseFlag; 
extern bool	g_bNFI_SelectCS1; 
extern unsigned short g_PacketLength; 
extern unsigned int g_ulFormatStartAddr; 
extern unsigned int g_ulFormatLength; 
extern unsigned int g_ulNandFormatStartAddr; 
extern unsigned int g_ulNandFormatLength; 
extern unsigned int g_MaxBromStartCmdRetryCount; 
extern unsigned int g_COM_Read_Timeout; 
extern unsigned int g_COM_Write_Timeout; 
extern unsigned char g_Baudrate_FullSync_Count; 
typedef struct { 
	bool	m_bAuto; 
	unsigned int m_Config; 
} EMI_Config_S; 
 
typedef struct { 
	unsigned int	m_nand_acccon; 
    bool			m_enable_dram_setting; 
	unsigned int	m_emi_gen_a; 
	unsigned int	m_emi_gen_b; 
	unsigned int	m_emi_gen_c;         
	unsigned int	m_emi_dram_con_i_mode; 
	unsigned int	m_emi_dram_con_i_ext_mode; 
	unsigned int	m_emi_dram_con_k; 
	unsigned int	m_emi_dram_con_l; 
} DRAM_NFI_Setting; 
 
extern EMI_Config_S g_EMI_Config[8]; 
extern DRAM_NFI_Setting   g_EMI_NFI_Setting; 
extern DL_HANDLE_T	g_DL_HANDLE; 
extern DL_HANDLE_LIST_T	g_DL_HANDLE_LIST; 
extern DA_HANDLE_T	g_DA_HANDLE; 
extern RB_HANDLE_T	g_RB_HANDLE; 
extern BL_HANDLE_T	g_BL_HANDLE; 
extern TTreeNode        * g_rootLoad; 
typedef enum { 
	FLASHTOOL_DOWNLOAD = 0, 
    FLASHTOOL_READBACK, 
    FLASHTOOL_FORMAT 
}FLASHTOOL_FUNCTION; 
extern FLASHTOOL_FUNCTION	g_flashtool_function; 
extern unsigned int g_CostTimeSec; 
extern unsigned int g_ProgressTimeSec; 
extern unsigned int g_DisplayFinishedBytes; 
extern int g_stopflag; 
 
//--------------------------------------------------------------------------- 
class button_sentry { 
   	public: 
	   	button_sentry() { 
		    // disable download button 
		    MainForm->DisableDownloadButton(); 
                    // disable readback button 
		    MainForm->DisableReadbackButton(); 
                    // disable format button 
		    MainForm->DisableFormatButton(); 
		    // disable operation method 
		    MainForm->m_Menu_OperationMethod->Enabled = false; 
                    // enable stop button 
		    MainForm->EnableStopButton(); 
 
                    //Ray 2006.06.12 : BugFix 
                    if( MainForm->mi_MultiLoad->Checked ){ 
                        MainForm->AddaLoad1->Enabled = false; 
                        MainForm->DeleteaLoad1->Enabled = false; 
                    } 
        } 
 
        ~button_sentry() { 
                // enable download button 
                MainForm->EnableDownloadButton(); 
                // enable readback button 
	    	MainForm->EnableReadbackButton(); 
	    	// enable format button 
                MainForm->EnableFormatButton(); 
                // enable operation method 
                MainForm->m_Menu_OperationMethod->Enabled = true; 
                // disable stop button 
                MainForm->DisableStopButton(); 
 
 
                //Ray 2006.05.18 : Multi-Load 
                if( MainForm->mi_MultiLoad->Checked ){ 
                        for( int index = 0; index < g_rootLoad->Count; index++){ 
                                if( (g_rootLoad->Item[index]->ImageIndex == 2) 
                                ||  (g_rootLoad->Item[index]->SelectedIndex == 2) ){ 
                                        g_rootLoad->Item[index]->ImageIndex = 1; 
                                        g_rootLoad->Item[index]->SelectedIndex = 1; 
                                } 
                        } 
 
                        //Ray 2006.06.12 : BugFix 
                        MainForm->AddaLoad1->Enabled = true; 
                        MainForm->DeleteaLoad1->Enabled = true; 
                } 
        } 
}; 
 
class CS_Sentry { 
public: 
	CS_Sentry(TCriticalSection  *cs):m_cs(cs) { m_cs->Acquire(); } 
    ~CS_Sentry() { m_cs->Release(); } 
private: 
	TCriticalSection	*m_cs; 
}; 
 
#endif