📄 frm_formatoption.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 + -