⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multiportflashdownloadtool.cpp

📁 多路下载工具源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
/*****************************************************************************
*  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 + -