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

📄 frm_formatoption.cpp

📁 MTK手机平台下载工具FLASHTOOL界面源码
💻 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) 2002
 *
 *****************************************************************************/

/*******************************************************************************
 * Filename:
 * ---------
 *  frm_FormatOption.cpp
 *
 * Project:
 * --------
 *  Flash tool set
 *
 * Description:
 * ------------
 *  Form of format option
 *
 * Author:
 * -------
 *  Amos Hsu (mtk00539)
 *
 *==============================================================================
 *           HISTORY
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *------------------------------------------------------------------------------
 * $Revision:   1.7  $
 * $Modtime:   Nov 11 2005 11:28:14  $
 * $Log:   //mtkvs01/vmdata/flash_tool/archives/frm_FormatOption.cpp-arc  $
 * 
 *    Rev 1.7   Nov 19 2005 00:58:00   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.6   Oct 19 2005 14:47:24   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.5   May 24 2005 20:03:38   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.4   Jun 16 2004 16:38:14   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.3   May 14 2004 17:03:58   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.2   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.1   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.
 *
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *==============================================================================
 *******************************************************************************/

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

#include <vcl.h>
#pragma hdrstop

#include "main.h"
#include "frm_FormatOption.h"
#include "DL_Go.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormatOption *FormatOption;
//---------------------------------------------------------------------------
__fastcall TFormatOption::TFormatOption(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TFormatOption::OnShow(TObject *Sender) {

    if(g_FormatValidation) {
        m_FormatValidation->Checked = true;
    }
    else {
        m_FormatValidation->Checked = false;
    }

    if( NOR_OPERATION == g_OperationMethod ) {
		FormatStartAddr->Text = "0x" + IntToHex((int)g_ulFormatStartAddr, 8);
    	FormatLength->Text = "0x" + IntToHex((int)g_ulFormatLength, 8);
    }
    else {
		FormatStartAddr->Text = "0x" + IntToHex((int)g_ulNandFormatStartAddr, 8);
    	FormatLength->Text = "0x" + IntToHex((int)g_ulNandFormatLength, 8);
	}

  	// save the original groupbox height
  	m_Original_GroupBox_Height = GroupBox1->Height;
   	m_Original_Form_Height = Height;
    m_Original_Panel_ManualFormat1_Top = m_Panel_ManualFormat1->Top;
	m_Original_Panel_ManualFormat2_Top = m_Panel_ManualFormat2->Top;
    m_Original_Panel_ManualFormat2_Height = m_Panel_ManualFormat2->Height;
	m_Original_Panel_ResetToFactoryDefault1_Top = m_Panel_ResetToFactoryDefault1->Top;
	m_Original_Panel_ResetToFactoryDefault2_Top = m_Panel_ResetToFactoryDefault2->Top;

	if(bCallFromFormatButton) {

        GroupBox1->Height = m_Panel_ManualFormat1->Height+m_Panel_ManualFormat2->Height+m_Panel_ResetToFactoryDefault1->Height+m_Panel_ResetToFactoryDefault2->Height+36;
       	Height = GroupBox1->Height+40;

		m_Panel_ResetToFactoryDefault1->Top = m_Panel_DisableFormat1->Top;
		m_Panel_ResetToFactoryDefault2->Top = m_Panel_ResetToFactoryDefault1->Top+m_Panel_ResetToFactoryDefault1->Height-1;
		m_Panel_ManualFormat1->Top = m_Panel_ResetToFactoryDefault2->Top+m_Panel_ResetToFactoryDefault2->Height+12;
		m_Panel_ManualFormat2->Top = m_Panel_ManualFormat1->Top+m_Panel_ManualFormat1->Height-1;

    	m_Panel_ManualFormat1->Visible = true;
    	m_Panel_ManualFormat2->Visible = true;
    	m_Panel_AutoFormat1->Visible = false;
    	m_Panel_AutoFormat2->Visible = false;
    	m_Panel_DisableFormat1->Visible = false;
    	m_Panel_DisableFormat2->Visible = false;
    	m_Panel_ResetToFactoryDefault1->Visible = true;
    	m_Panel_ResetToFactoryDefault2->Visible = true;

		switch(g_FormatOption) {
		case MANUAL_FORMAT:
			m_Radio_ManualFormatClick(Sender);
			break;
		case RESET_TO_FACTORY:
		default:
			m_Radio_ResetToFactoryDefaultClick(Sender);
			break;
		}

        m_Group_EraseFlag->ItemIndex = 0;
	}
    else {

    	m_Panel_ManualFormat1->Visible = true;
    	m_Panel_ManualFormat2->Visible = true;
    	m_Panel_AutoFormat1->Visible = true;
    	m_Panel_AutoFormat2->Visible = true;
    	m_Panel_DisableFormat1->Visible = true;
    	m_Panel_DisableFormat2->Visible = true;
    	m_Panel_ResetToFactoryDefault1->Visible = true;
    	m_Panel_ResetToFactoryDefault2->Visible = true;

		switch(g_FormatAfterDownloadOption) {
		case RESET_TO_FACTORY:
			m_Radio_ResetToFactoryDefaultClick(Sender);
			break;
		case AUTO_FORMAT:
			m_Radio_AutoFormatClick(Sender);
			break;
		case MANUAL_FORMAT:
			m_Radio_ManualFormatClick(Sender);
			break;
		case DISABLE_FORMAT:
		default:
			m_Radio_DisableFormatClick(Sender);
			break;
		}

    }

    if( bCallFromFormatButton && !(NOR_OPERATION==g_OperationMethod) && g_bEnableAdvanceOption ) {
        m_Group_EraseFlag->Visible = true;
    }
    else {
       	m_Panel_ManualFormat2->Height -= (m_Group_EraseFlag->Height+10);
        GroupBox1->Height -= (m_Group_EraseFlag->Height+10);
       	Height -= (m_Group_EraseFlag->Height+10);
        m_Group_EraseFlag->Visible = false;
	}

    Visible = true;
}
//---------------------------------------------------------------------------
void __fastcall TFormatOption::btn_FormatOKClick(TObject *Sender)
{
    if( NOR_OPERATION == g_OperationMethod ) {
		g_ulFormatStartAddr = strtoul(FormatStartAddr->Text.c_str(), NULL, 16);
		g_ulFormatLength = strtoul(FormatLength->Text.c_str(), NULL, 16);
    }
    else {
		g_ulNandFormatStartAddr = strtoul(FormatStartAddr->Text.c_str(), NULL, 16);
		g_ulNandFormatLength = strtoul(FormatLength->Text.c_str(), NULL, 16);
	}

    if(!bCallFromFormatButton) {

		if(m_Radio_ResetToFactoryDefault->Checked) {
			g_FormatAfterDownloadOption = RESET_TO_FACTORY;
		}else if(m_Radio_AutoFormat->Checked) {
			g_FormatAfterDownloadOption = AUTO_FORMAT;
	    }
	    else if(m_Radio_ManualFormat->Checked) {
			g_FormatAfterDownloadOption = MANUAL_FORMAT;
	    }
        else {
			g_FormatAfterDownloadOption = DISABLE_FORMAT;
        }

		MainForm->updateMenuItem();
    }
	else {

		if(m_Radio_ResetToFactoryDefault->Checked) {
			g_FormatOption = RESET_TO_FACTORY;
		}
        else {
			g_FormatOption = MANUAL_FORMAT;
        }

        switch(m_Group_EraseFlag->ItemIndex) {
        case 1:
            g_EraseFlag = NUTL_FORCE_ERASE;
            break;
        case 2:
            g_EraseFlag = NUTL_MARK_BAD_BLOCK;
            break;
        case 0:
        default:
            g_EraseFlag = NUTL_ERASE;
        }

		if( MT6205 != g_BBCHIP_TYPE )
			MainForm->start_DL(true);
		else
			Form_DL_GO->ShowModal();
	}

	Hide();
}
//---------------------------------------------------------------------------
void __fastcall TFormatOption::btn_FormatCancelClick(TObject *Sender)
{
	Hide();
}

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

void __fastcall TFormatOption::m_Radio_ManualFormatClick(TObject *Sender)
{
	m_Radio_DisableFormat->Checked = false;
	m_Radio_ResetToFactoryDefault->Checked = false;
	m_Radio_AutoFormat->Checked = false;
	m_Radio_ManualFormat->Checked = true;
}
//---------------------------------------------------------------------------

void __fastcall TFormatOption::m_Radio_AutoFormatClick(TObject *Sender)
{
	m_Radio_DisableFormat->Checked = false;
	m_Radio_ResetToFactoryDefault->Checked = false;
	m_Radio_AutoFormat->Checked = true;
	m_Radio_ManualFormat->Checked = false;
}
//---------------------------------------------------------------------------

void __fastcall TFormatOption::m_Radio_DisableFormatClick(TObject *Sender)
{
	m_Radio_DisableFormat->Checked = true;
	m_Radio_ResetToFactoryDefault->Checked = false;
	m_Radio_AutoFormat->Checked = false;
	m_Radio_ManualFormat->Checked = false;
}

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

void __fastcall TFormatOption::m_Radio_ResetToFactoryDefaultClick(TObject *Sender)
{
	m_Radio_DisableFormat->Checked = false;
	m_Radio_ResetToFactoryDefault->Checked = true;
	m_Radio_AutoFormat->Checked = false;
	m_Radio_ManualFormat->Checked = false;
}

//---------------------------------------------------------------------------
void __fastcall TFormatOption::FormClose(TObject *Sender,
      TCloseAction &Action)
{
	Hide();
}
//---------------------------------------------------------------------------
void __fastcall TFormatOption::Hide() {

    Visible = false;

   	// restore the original groupbox height
    GroupBox1->Height = m_Original_GroupBox_Height;
    Height = m_Original_Form_Height;
	m_Panel_ManualFormat1->Top = m_Original_Panel_ManualFormat1_Top;
	m_Panel_ManualFormat2->Top = m_Original_Panel_ManualFormat2_Top;
 	m_Panel_ManualFormat2->Height = m_Original_Panel_ManualFormat2_Height;
	m_Panel_ResetToFactoryDefault1->Top = m_Original_Panel_ResetToFactoryDefault1_Top;
	m_Panel_ResetToFactoryDefault2->Top = m_Original_Panel_ResetToFactoryDefault2_Top;
}
//---------------------------------------------------------------------------

void __fastcall TFormatOption::m_FormatValidationClick(TObject *Sender)
{
    if(m_FormatValidation->Checked) {
        g_FormatValidation = true;
    }
    else {
        g_FormatValidation = false;
    }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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