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

📄 flashdownload.cpp

📁 多串口下载手机软件的软件
💻 CPP
📖 第 1 页 / 共 3 页
字号:
/*****************************************************************************
*  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).
*
*****************************************************************************/

//---------------------------------------------------------------------------

//#include <clx.h>
#pragma hdrstop
#include "Multiport_Common.h"

#ifndef _MD_MSG_
#include "MD_msg.h"
#endif

#include "FlashDownLoad.h"
#include "MultiPortFlashDownloadTool.h"

#ifndef _FACTORY_COMMON_H_
#include "factory_common.h"
#endif

#pragma package(smart_init)

bool isShowNoFormatInfo = false;
bool isShowFileNotLoaded = false;
BBCHIP_TYPE gbb_chip_type;
int boot_stop = 0;
HANDLE Flash_Download_Event[MAX_SUPPORT_PORT_NUM];
int    stopflag[MAX_SUPPORT_PORT_NUM];
DA_REPORT_T   da_report;
extern bool isStopTrigger[MAX_SUPPORT_PORT_NUM];

// access
extern HANDLE hSemaphore;
//=============================================================================
////////////////////////   call back   ////////////////////////////////////////
//=============================================================================
static int __stdcall cb_download_da_init(void *usr_arg)
{

	TBOOT1 *t=(TBOOT1 *)usr_arg;
        int i;

        i = t->m_com_port.number - m_TheFirstComNo;
        MainForm->DownLoadTimeSec[i]=0;

        // access
        if( MainForm->Get_EnableFactoryDatabaseLog() )
        {
            TDateTime datetime;
            TDateTime date = datetime.CurrentDate();
            TDateTime time = datetime.CurrentTime();
            sTime     stime;
            time.DecodeTime( &stime.hour, &stime.min, &stime.sec, &stime.msec);
            MainForm->SetDnDate( i, date );
            MainForm->SetDnStartTime( i, time );
            MainForm->SetDnStartsTime( i, stime );
        }
        //MainForm->TimerCOMArray[i]->Enabled = false;
        //MainForm->TimerCOMArray[i]->Interval = 1000;
        //MainForm->TimerCOMArray[i]->Enabled = true;


        MainForm->pbCOMArray[i]->ForeColor = clRed; 
	t->progress_percentage = 0;
	t->prefix = "DA ";
	t->SyncInitProgress();

        return 0;
}

//---------------------------------------------------------------------------
static int __stdcall cb_download_da(unsigned char percent, unsigned int sent_bytes, unsigned int total_bytes, void *usr_arg)
{

	TBOOT1 *t=(TBOOT1 *)usr_arg;

	t->progress_percentage = percent;
	t->prefix = "DA ";
	t->SyncUpdateProgress();

        return 0;
}

//---------------------------------------------------------------------------
static int __stdcall cb_download_flash_init(void *usr_arg)
{

	TBOOT1 *t=(TBOOT1 *)usr_arg;
        int i;

	t->progress_percentage = 0;
	t->prefix = "DL ";
	t->SyncInitProgress();

        return 0;
}

//---------------------------------------------------------------------------
static int __stdcall cb_download_flash(unsigned char percent, unsigned int sent_bytes, unsigned int total_bytes, void *usr_arg)
{

	TBOOT1 *t=(TBOOT1 *)usr_arg;

	t->progress_percentage = percent;
	t->prefix = "DL ";
	t->SyncUpdateProgress();
       // if (percent <= 5)
        {
             int i = t->m_com_port.number - m_TheFirstComNo;
             MainForm->pbCOMArray[i]->ForeColor = clBlue;  // VCL

        }

        return 0;
}

//==============================================================================
static int __stdcall cb_format_report_init(void *usr_arg)
{
    TBOOT1 *t=(TBOOT1 *)usr_arg;
    int i;

    t->progress_percentage = 0;
    t->prefix = "FR ";
    t->SyncInitProgress();

    return 0;
}

//------------------------------------------------------------------------------
static int __stdcall cb_format_report(unsigned char percent, void *usr_arg)
{
    TBOOT1 *t=(TBOOT1 *)usr_arg;

    t->progress_percentage = percent;
    t->prefix = "FR ";
    t->SyncUpdateProgress();
   // if (percent <= 50)
    {
        int i = t->m_com_port.number - m_TheFirstComNo;
        MainForm->pbCOMArray[i]->ForeColor = clGreen;   // VCL
    }

    return 0;
}

//-----------------------------------------------------------------------------------
static int __stdcall cb_before_process(const DA_REPORT_T  *p_da_report, void *usr_arg)
{
#if 0
    TBOOT1 *t=(TBOOT1 *)usr_arg;
    int i;
    i = t->m_com_port.number - m_TheFirstComNo;
    //-----------------------------------------------------------------------
    // to do: set stopflag[i]=BOOT_STOP when flash type does not match
    // check flash type here
    if( p_da_report->/* flash type match */ )
    {
		....
    }
    else
    {
        /* not match */
        stopflag[i] = BOOT_STOP;
    }


#endif
    return 0;  
}

//------------------------------------------------------------------------------
static int __stdcall cb_in_brom_stage(unsigned int brom_handle, HANDLE hCOM, void *usr_arg) {

	int ret;
	unsigned short	value16;
        TBOOT1 *t=(TBOOT1 *)usr_arg;

	if( MainForm->isPullDownGPIO17 && gbb_chip_type == MT6218B )
        {
		// configure GPIO17 mode to GPIO 
		value16 = 0x000C;
		ret = Brom_Write16Cmd(brom_handle, hCOM, (0x80120000+0x0120+0x08)/*GPIO_MODE3_CLR*/, &value16, 1);

		// configure GPIO17 direction as output
		value16 = 0x0002;
		ret = Brom_Write16Cmd(brom_handle, hCOM, (0x80120000+0x0010+0x04)/*GPIO_DIR2_SET*/, &value16, 1);

		// pull down GPIO17 to disable vibrator
		value16 = 0x0002;
		ret = Brom_Write16Cmd(brom_handle, hCOM, (0x80120000+0x00a0+0x08)/*GPIO_DOUT2_CLR*/, &value16, 1);
	}

    return 0;
}

//---------------------------------------------------------------------------

//   Important: Methods and properties of objects in CLX can only be
//   used in a method called using Synchronize, for example:
//
//      Synchronize(UpdateCaption);
//
//   where UpdateCaption could look like:
//
//      void __fastcall TBOOT1::UpdateCaption()
//      {
//        Form1->Caption = "Updated in a thread";
//      }
//==============================================================================
__fastcall TBOOT1::TBOOT1(bool CreateSuspended, HANDLE hMsgHandle, COM_PORT_HANDLE ComPortIndex, BBCHIP_TYPE bb_chip,
                         EXT_CLOCK ext_clock, bool check_eco_ver, UART_BAUDRATE   baud_rate, bool b_format_needed)
        : TThread(CreateSuspended)
{
    hPostMsgDestHandle = hMsgHandle;
    m_com_port = ComPortIndex;
    Baseband_chip_type = bb_chip;
    gbb_chip_type = bb_chip;
    External_clock_type = ext_clock;
    bCheckECOVersion = check_eco_ver;
    UART_baud_rate = baud_rate;
    bFormatNeeded = b_format_needed;
}

//---------------------------------------------------------------------------
void _fastcall TBOOT1::ShowMsg()
{
    //ShowMessage( asMsg );
    MainForm->sbMPDT->Panels->Items[0]->Text = asMsg;
}

//---------------------------------------------------------------------------
void _fastcall TBOOT1::StartDownLoad()
{

        int i;
        i = m_com_port.number - m_TheFirstComNo;
        //MainForm->COMPercentageArray[i]->Caption = "Start";
        MainForm->Set_COMPercentageCaption(i, "START");
        MainForm->Set_shpCOMColor(i, clBlue);

}

//---------------------------------------------------------------------------
void _fastcall TBOOT1::SyncStartDownLoad()
{
	Synchronize(StartDownLoad);
}

//---------------------------------------------------------------------------
void _fastcall TBOOT1::InitProgress()
{

        int i;
        i = m_com_port.number - m_TheFirstComNo;
       // MainForm->COMPercentageArray[i]->Caption = prefix + "0%";
       //MainForm->COMPercentageArray[i]->Caption = prefix;
       MainForm->Set_COMPercentageCaption( i, prefix );

}

//---------------------------------------------------------------------------
void _fastcall TBOOT1::SyncInitProgress()
{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -