📄 multiportflashdownloadtool.cpp
字号:
/*****************************************************************************
* 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) 2005
*
* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/
/*****************************************************************************
*
* Filename:
* ---------
* MultiPortFlashDownloadTool.cpp
*
* Project:
* --------
* Multiport download
*
* Description:
* ------------
* Multiport download form source
*
* Author:
* -------
* Andy Ueng (mtk00490)
*
*============================================================================
* HISTORY
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*------------------------------------------------------------------------------
* $Revision: 1.12 $
* $Modtime: Jun 24 2005 15:13:30 $
* $Log: //mtkvs01/vmdata/Multiport_Download/archives/Multiport_Download/MultiPortFlashDownloadTool.cpp-arc $
*
* Rev 1.12 Jun 24 2005 15:25:08 mtk00490
* Support maximum 16 port download, format only type, multi-bin option
*
* Rev 1.11 Apr 14 2005 16:08:36 mtk00490
* add stop button to stop specific or all mobile downloading and formatting
*
* Rev 1.10 Apr 14 2005 16:05:48 mtk00490
* add stop button to stop specific or all mobile downloading and formatting
*
* Rev 1.9 Feb 18 2005 11:18:38 mtk00490
* Update brom.dll and download agent ver 2.4.1009 to resolve INTEL W18/W30 series flash doesn't support Buffered-Program
*
* Rev 1.8 Dec 01 2004 10:00:16 mtk00490
* Multiport download tool ver 2.4.1007 (Add status indicator--download successful:green light, download fail:red light)
*
* Rev 1.7 Nov 05 2004 17:15:32 mtk00490
* Multiport download tool ver 2.4.1007 (Support automatic baseband chip and external clock rate detection)
*
* Rev 1.6 Sep 08 2004 19:48:50 mtk00490
* Multiport download tool ver 2.4.1004
*
* Rev 1.4 Aug 28 2004 21:10:28 mtk00490
* Multiport download ver 2.4.1003
*
* Rev 1.3 Aug 28 2004 20:47:52 mtk00490
* Multiport download ver 2.4.1002
*
* Rev 1.2 Jul 19 2004 17:27:52 mtk00490
* Multiport download ver 2.4.0
*
* Rev 1.1 Jun 02 2004 21:15:52 mtk00490
* Multiport download ver 2.3.0
* Resolution for 2: Multiport download ver 2.3.0
*
* Rev 1.0 Mar 22 2004 15:13:00 mtk00490
* Initial revision.
* Resolution for 1: Multiport download ver 2.1.0
*
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*============================================================================
****************************************************************************/
//---------------------------------------------------------------------------
#include <vcl.h>
#include <inifiles.hpp>
#include <fcntl.h>
#include <io.h>
#include "com_enum.h"
#include "meta.h"
#pragma hdrstop
// form
#ifndef form_AboutH
#include "form_About.h"
#endif
#ifndef _FORM_MULTILOAD_H_
#include "form_MultiLoad.h"
#endif
#include "Multiport_Common.h"
#ifndef _MD_MSG_
#include "MD_msg.h"
#endif
#include "MultiPortFlashDownloadTool.h"
#include "FlashDownLoad.h"
#include "WaitForFinish.h"
// database
#ifndef _FACTORY_COMMON_H_
#include "factory_common.h"
#endif
#ifndef _FILE_UTILS_H_
#include "file_utils.h"
#endif
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CGAUGES"
#pragma resource "*.dfm"
TMainForm *MainForm;
struct DL_HANDLE *g_DL_HANDLE = NULL;
struct DA_HANDLE *g_DA_HANDLE = NULL;
int m_TheFirstComNo;
HANDLE hPostMsgDestHandle;
bool isStopTrigger[MAX_SUPPORT_PORT_NUM];
// access
HANDLE hSemaphore;
extern bool isShowNoFormatInfo;
extern bool isShowFileNotLoaded;
extern int boot_stop;
extern HANDLE Flash_Download_Event[MAX_SUPPORT_PORT_NUM];
extern int stopflag[MAX_SUPPORT_PORT_NUM];
//---------------------------------------------------------------------------
void __stdcall ErrorHandler(const META_CNF_ERR_CODE err)
{
}
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
cbCOMArray[0] = cbCOM1;
cbCOMArray[1] = cbCOM2;
cbCOMArray[2] = cbCOM3;
cbCOMArray[3] = cbCOM4;
cbCOMArray[4] = cbCOM5;
cbCOMArray[5] = cbCOM6;
cbCOMArray[6] = cbCOM7;
cbCOMArray[7] = cbCOM8;
cbCOMArray[8] = cbCOM9;
cbCOMArray[9] = cbCOM10;
cbCOMArray[10] = cbCOM11;
cbCOMArray[11] = cbCOM12;
cbCOMArray[12] = cbCOM13;
cbCOMArray[13] = cbCOM14;
cbCOMArray[14] = cbCOM15;
cbCOMArray[15] = cbCOM16;
COMPercentageArray[0] = COM1Percentage;
COMPercentageArray[1] = COM2Percentage;
COMPercentageArray[2] = COM3Percentage;
COMPercentageArray[3] = COM4Percentage;
COMPercentageArray[4] = COM5Percentage;
COMPercentageArray[5] = COM6Percentage;
COMPercentageArray[6] = COM7Percentage;
COMPercentageArray[7] = COM8Percentage;
COMPercentageArray[8] = COM9Percentage;
COMPercentageArray[9] = COM10Percentage;
COMPercentageArray[10] = COM11Percentage;
COMPercentageArray[11] = COM12Percentage;
COMPercentageArray[12] = COM13Percentage;
COMPercentageArray[13] = COM14Percentage;
COMPercentageArray[14] = COM15Percentage;
COMPercentageArray[15] = COM16Percentage;
cbAutoPollingArray[0] = cbAutoPolling1;
cbAutoPollingArray[1] = cbAutoPolling2;
cbAutoPollingArray[2] = cbAutoPolling3;
cbAutoPollingArray[3] = cbAutoPolling4;
cbAutoPollingArray[4] = cbAutoPolling5;
cbAutoPollingArray[5] = cbAutoPolling6;
cbAutoPollingArray[6] = cbAutoPolling7;
cbAutoPollingArray[7] = cbAutoPolling8;
cbAutoPollingArray[8] = cbAutoPolling9;
cbAutoPollingArray[9] = cbAutoPolling10;
cbAutoPollingArray[10] = cbAutoPolling11;
cbAutoPollingArray[11] = cbAutoPolling12;
cbAutoPollingArray[12] = cbAutoPolling13;
cbAutoPollingArray[13] = cbAutoPolling14;
cbAutoPollingArray[14] = cbAutoPolling15;
cbAutoPollingArray[15] = cbAutoPolling16;
shpCOMArray[0] = shpCOM1;
shpCOMArray[1] = shpCOM2;
shpCOMArray[2] = shpCOM3;
shpCOMArray[3] = shpCOM4;
shpCOMArray[4] = shpCOM5;
shpCOMArray[5] = shpCOM6;
shpCOMArray[6] = shpCOM7;
shpCOMArray[7] = shpCOM8;
shpCOMArray[8] = shpCOM9;
shpCOMArray[9] = shpCOM10;
shpCOMArray[10] = shpCOM11;
shpCOMArray[11] = shpCOM12;
shpCOMArray[12] = shpCOM13;
shpCOMArray[13] = shpCOM14;
shpCOMArray[14] = shpCOM15;
shpCOMArray[15] = shpCOM16;
pbCOMArray[0] = pbCOM1;
pbCOMArray[1] = pbCOM2;
pbCOMArray[2] = pbCOM3;
pbCOMArray[3] = pbCOM4;
pbCOMArray[4] = pbCOM5;
pbCOMArray[5] = pbCOM6;
pbCOMArray[6] = pbCOM7;
pbCOMArray[7] = pbCOM8;
pbCOMArray[8] = pbCOM9;
pbCOMArray[9] = pbCOM10;
pbCOMArray[10] = pbCOM11;
pbCOMArray[11] = pbCOM12;
pbCOMArray[12] = pbCOM13;
pbCOMArray[13] = pbCOM14;
pbCOMArray[14] = pbCOM15;
pbCOMArray[15] = pbCOM16;
TimerCOMArray[0] = TimerCOM1;
TimerCOMArray[1] = TimerCOM2;
TimerCOMArray[2] = TimerCOM3;
TimerCOMArray[3] = TimerCOM4;
TimerCOMArray[4] = TimerCOM5;
TimerCOMArray[5] = TimerCOM6;
TimerCOMArray[6] = TimerCOM7;
TimerCOMArray[7] = TimerCOM8;
TimerCOMArray[8] = TimerCOM9;
TimerCOMArray[9] = TimerCOM10;
TimerCOMArray[10] = TimerCOM11;
TimerCOMArray[11] = TimerCOM12;
TimerCOMArray[12] = TimerCOM13;
TimerCOMArray[13] = TimerCOM14;
TimerCOMArray[14] = TimerCOM15;
TimerCOMArray[15] = TimerCOM16;
btnCOMStartArray[0] = btnCOM1Start;
btnCOMStartArray[1] = btnCOM2Start;
btnCOMStartArray[2] = btnCOM3Start;
btnCOMStartArray[3] = btnCOM4Start;
btnCOMStartArray[4] = btnCOM5Start;
btnCOMStartArray[5] = btnCOM6Start;
btnCOMStartArray[6] = btnCOM7Start;
btnCOMStartArray[7] = btnCOM8Start;
btnCOMStartArray[8] = btnCOM9Start;
btnCOMStartArray[9] = btnCOM10Start;
btnCOMStartArray[10] = btnCOM11Start;
btnCOMStartArray[11] = btnCOM12Start;
btnCOMStartArray[12] = btnCOM13Start;
btnCOMStartArray[13] = btnCOM14Start;
btnCOMStartArray[14] = btnCOM15Start;
btnCOMStartArray[15] = btnCOM16Start;
btnCOMStopArray[0] = btnCOM1Stop;
btnCOMStopArray[1] = btnCOM2Stop;
btnCOMStopArray[2] = btnCOM3Stop;
btnCOMStopArray[3] = btnCOM4Stop;
btnCOMStopArray[4] = btnCOM5Stop;
btnCOMStopArray[5] = btnCOM6Stop;
btnCOMStopArray[6] = btnCOM7Stop;
btnCOMStopArray[7] = btnCOM8Stop;
btnCOMStopArray[8] = btnCOM9Stop;
btnCOMStopArray[9] = btnCOM10Stop;
btnCOMStopArray[10] = btnCOM11Stop;
btnCOMStopArray[11] = btnCOM12Stop;
btnCOMStopArray[12] = btnCOM13Stop;
btnCOMStopArray[13] = btnCOM14Stop;
btnCOMStopArray[14] = btnCOM15Stop;
btnCOMStopArray[15] = btnCOM16Stop;
}
//---------------------------------------------------------------------------
void _fastcall TMainForm::SubClassWndProc( Messages::TMessage &Message)
{
switch ( Message.Msg )
{
case WM_MD_SELECT_DOWNLOAD_TYPE_FAIL:
Enable_UIComponent();
break;
case WM_MD_DOWNLOAD_SUCCESSFUL:
{
if( MainForm->cbAutoPollingArray[Message.WParam]->Checked )
{
MainForm->btnCOMDownloadClick( Message.WParam );
}
}
break;
default:
this->WndProc( Message );
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormCreate(TObject *Sender)
{
int i;
int j=0;
TIniFile *ini;
AnsiString as_ComportEnabled;
hPostMsgDestHandle = this->Handle;
WindowProc = SubClassWndProc;
// ENABLE DEBUG
//Brom_DebugOn();
bFormatNeeded = false;
// DL_Create(&g_DL_HANDLE);
DA_Create(&g_DA_HANDLE);
// BL_Create(&m_DnParam.bl_handle);
for( i=0; i<MAX_SUPPORT_LOAD_NUM; i++ )
{
m_DnParam.p_dl_handle[i] = new DL_HANDLE_T;
DL_Create(m_DnParam.p_dl_handle[i]);
}
DL_CreateList(&m_DnParam.dl_handle_list);
//READ INI
#ifdef SERVICE_CENTER
MainForm->Caption = (AnsiString) "Multi-port download tool (Service center)";
rbAuto->Enabled = false;
rbManual->Enabled = false;
#endif
#ifndef SERVICE_CENTER
cbType->Items->Add( "Download ROM and FAT" );
#endif
cbType->Items->Add( "Download ROM");
#ifndef SERVICE_CENTER
cbType->Items->Add( "Download ROM and Format");
cbType->Items->Add( "Format");
#endif
// ReadFileSetting();
// INIT HANDLE
//DA_SetStartAddr(g_DA_HANDLE,0x40000800);
//Load DA.Bin
//Load scat.txt
// if(asScatFileName.AnsiCompareIC("") != 0)
// {
// OpenReadScatFile(asScatFileName);
// int iLastDel = asDAFileName.LastDelimiter("\\:");
// if ( asDAFileName.LastDelimiter("\\:") > 0)
// {
// asScat_Path = asScatFileName.SubString(1, iLastDel-1 );
// }
// }
//Load xxx.Bin(Load)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -