📄 multiportflashdownloadtool.cpp
字号:
iLastDel = OpenROMDialog->FileName.LastDelimiter("\\:");
if ( iLastDel > 0)
{
asROM_Path = OpenROMDialog->FileName.SubString(1, iLastDel-1 );
}
// check if NFB enabled
_BOOL bNFBEnabled=_FALSE;
if( FTHND_OK == DL_IsNFB(g_DL_HANDLE, &bNFBEnabled) )
{
// update operation method
if( bNFBEnabled && (OPERATION_NFB!=m_DnParam.eOperation) ) {
rbNFBClick(Sender);
}
else if( !bNFBEnabled && (OPERATION_NFB==m_DnParam.eOperation) ) {
rbNORClick(Sender);
}
}
// auto load boot loader
if(bNFBEnabled)
{
BL_AutoLoad(m_DnParam.bl_handle, OpenROMDialog->FileName.c_str(), "*_BOOTLOADER_*.bin");
}
// auto load download bin files
if( m_bAutoLoadResByScat )
{
if(bNFBEnabled)
{
DL_AutoLoadByScatRegionName(g_DL_HANDLE, OpenROMDialog->FileName.c_str(), NORMAL_ROM|RESOURCE_BIN|JUMPTABLE_BIN);
}
else
{
DL_AutoLoadByScatRegionName(g_DL_HANDLE, OpenROMDialog->FileName.c_str(), RESOURCE_BIN|JUMPTABLE_BIN);
}
}
}
}
RedrawLVList();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::lvChanging(TObject *Sender, TListItem *Item,
TItemChange Change, bool &AllowChange)
{
lvChanged.bPreCheckBoxState = Item->Checked;
lvChanged.iChangedIndex = NO_CHANGE;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::lvChange(TObject *Sender, TListItem *Item,
TItemChange Change)
{
if( (Change == ctState) && (Item->Checked != lvChanged.bPreCheckBoxState) )
{
lvChanged.iChangedIndex = Item->Index;
return;
}
lvChanged.iChangedIndex = NO_CHANGE;
}
#endif
//---------------------------------------------------------------------------
void __fastcall TMainForm::mOpenDAFileClick(TObject *Sender)
{
FileOpenDownloadAgentExecute();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::Openlinkmapfile1Click(TObject *Sender)
{
// FileOpenScatExecute();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::About1Click(TObject *Sender)
{
// Form_About->Show();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::OpenDownloadAgentFile1Click(TObject *Sender)
{
FileOpenDownloadAgentExecute();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::OpenScatterFile1Click(TObject *Sender)
{
frmMultiLoad->Left = 1;
frmMultiLoad->Top = 1;
frmMultiLoad->Show();
}
//---------------------------------------------------------------------------
//=============================================================================
//void TMainForm::ReadFileSetting( void )
//{
// asDAFileName = INIFileH.read_DA_bin( "MultiPortFlashDownloadProject.ini", Application->ExeName );
// asScatFileName = INIFileH.read_Scatter( "MultiPortFlashDownloadProject.ini", Application->ExeName );
// asROMFileName = INIFileH.read_ROM( "MultiPortFlashDownloadProject.ini", Application->ExeName );
// asFATFileName = INIFileH.read_FAT( "MultiPortFlashDownloadProject.ini", Application->ExeName );
// m_asBLFileName = INIFileH.read_BootLoader( "MultiPortFlashDownloadProject.ini", Application->ExeName );
//}
//----------------------------------------------------------------------------
//void TMainForm::WriteFileSetting( void )
//{
// INIFileH.write_DA_bin( "MultiPortFlashDownloadProject.ini", Application->ExeName, asDAFileName);
// INIFileH.write_Scatter( "MultiPortFlashDownloadProject.ini", Application->ExeName, asScatFileName);
// INIFileH.write_ROM( "MultiPortFlashDownloadProject.ini", Application->ExeName, asROMFileName);
// INIFileH.write_FAT( "MultiPortFlashDownloadProject.ini", Application->ExeName, asFATFileName);
// INIFileH.write_BootLoader( "MultiPortFlashDownloadProject.ini", Application->ExeName, m_asBLFileName);
//}
//=============================================================================
void TMainForm::Display_DAFile( void )
{
m_asDAFileName = INIFileH.read_DA_bin( "MultiPortFlashDownloadProject.ini", Application->ExeName );
if(m_asDAFileName.AnsiCompareIC("") != 0)
{
if( OpenReadDAFile(m_asDAFileName) )
{
int iLD = m_asDAFileName.LastDelimiter("\\:");
if ( m_asDAFileName.LastDelimiter("\\:") > 0)
{
m_asDAPath = m_asDAFileName.SubString(1, iLD-1 );
}
lblDAFileName->Caption = m_asDAFileName;
}
}
}
//----------------------------------------------------------------------------
void TMainForm::Save_DAFile( void )
{
INIFileH.write_DA_bin( "MultiPortFlashDownloadProject.ini", Application->ExeName, m_asDAFileName);
}
//=============================================================================
void TMainForm::Display_Type( void )
{
m_asType = INIFileH.read_Type( "MultiPortFlashDownloadProject.ini", Application->ExeName );
#ifndef SERVICE_CENTER
if( m_asType.AnsiCompareIC("Download ROM and FAT") == 0 )
{
cbType->ItemIndex = DOWNLOAD_ROM_AND_FAT_INDEX;
}
else if( m_asType.AnsiCompareIC("Download ROM") == 0 )
{
cbType->ItemIndex = DOWNLOAD_ROM_INDEX;
}
else if( m_asType.AnsiCompareIC("Download ROM and Format") == 0 )
{
cbType->ItemIndex = DOWNLOAD_ROM_AND_FORMAT_INDEX;
}
else
{
cbType->ItemIndex = FORMAT_INDEX;
}
#else
cbType->ItemIndex = DOWNLOAD_ROM_INDEX;
#endif
}
//------------------------------------------------------------------------------
void TMainForm::Save_Type( void )
{
#ifndef SERVICE_CENTER
switch ( cbType->ItemIndex )
{
case DOWNLOAD_ROM_AND_FAT_INDEX:
INIFileH.write_Type( "MultiPortFlashDownloadProject.ini", Application->ExeName, (AnsiString) "Download ROM and FAT");
break;
case DOWNLOAD_ROM_INDEX:
INIFileH.write_Type( "MultiPortFlashDownloadProject.ini", Application->ExeName, (AnsiString) "Download ROM");
break;
case DOWNLOAD_ROM_AND_FORMAT_INDEX:
INIFileH.write_Type( "MultiPortFlashDownloadProject.ini", Application->ExeName, (AnsiString) "Download ROM and Format");
break;
case FORMAT_INDEX:
INIFileH.write_Type( "MultiPortFlashDownloadProject.ini", Application->ExeName, (AnsiString) "Format");
break;
default: // default set to 460800
INIFileH.write_Baseband_chip( "MultiPortFlashDownloadProject.ini", Application->ExeName, (AnsiString) "Download ROM and FAT");
break;
}
#else
INIFileH.write_Type( "MultiPortFlashDownloadProject.ini", Application->ExeName, (AnsiString) "Download ROM");
#endif
}
//=============================================================================
void TMainForm::Display_FormatFatRangeVisible( void )
{
#ifndef SERVICE_CENTER
if( cbType->ItemIndex == DOWNLOAD_ROM_AND_FORMAT_INDEX )
{
gbFormatFATRange->Visible = true;
rbAuto->Visible = true;
rbManual->Visible = true;
AnsiString as_RTFD_visible = INIFileH.read_Reset_to_factory_default_visible( "MultiPortFlashDownloadProject.ini", Application->ExeName );
if( as_RTFD_visible.AnsiCompareIC("yes") == 0 )
{
rbResetToFactory->Visible = true;
lblResetToFactory->Visible = true;
}
else
{ rbResetToFactory->Visible = false;
lblResetToFactory->Visible = false;
}
}
else if( cbType->ItemIndex == FORMAT_INDEX )
{
gbFormatFATRange->Visible = true;
rbAuto->Visible = false;
if( rbAuto->Checked )
{
rbManual->Checked = true;
}
rbManual->Visible = true;
AnsiString as_RTFD_visible = INIFileH.read_Reset_to_factory_default_visible( "MultiPortFlashDownloadProject.ini", Application->ExeName );
if( as_RTFD_visible.AnsiCompareIC("yes") == 0 )
{
rbResetToFactory->Visible = true;
lblResetToFactory->Visible = true;
}
else
{
rbResetToFactory->Visible = false;
lblResetToFactory->Visible = false;
}
}
else
#endif
{
gbFormatFATRange->Visible = false;
}
}
//---------------------------------------------------------------------------
void TMainForm::Display_FormatFatRange( void )
{
Display_FormatFatRangeVisible();
AnsiString as_Format_FAT_range = INIFileH.read_Format_FAT_range( "MultiPortFlashDownloadProject.ini", Application->ExeName );
if( as_Format_FAT_range.AnsiCompareIC( "auto" ) == 0 )
{
rbAuto->Checked = true;
}
else if( as_Format_FAT_range.AnsiCompareIC( "manual" ) == 0 )
{
rbManual->Checked = true;
}
else
{ rbResetToFactory->Checked = true;
}
}
//------------------------------------------------------------------------------
void TMainForm::Save_FormatFatRange( void )
{
if( rbAuto->Checked )
{
INIFileH.write_Format_FAT_range( "MultiPortFlashDownloadProject.ini", Application->ExeName, (AnsiString) "auto");
}
else if( rbManual->Checked )
{
INIFileH.write_Format_FAT_range( "MultiPortFlashDownloadProject.ini", Application->ExeName, (AnsiString) "manual");
}
else
{ INIFileH.write_Format_FAT_range( "MultiPortFlashDownloadProject.ini", Application->ExeName, (AnsiString) "reset factory default");
}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TMainForm::Read_FormatFATBeginAddress( void )
{
m_asFormat_FAT_begin_address = INIFileH.read_Format_FAT_Begin_Address( "MultiPortFlashDownloadProject.ini", Application->ExeName );
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TMainForm::Read_FormatFATLength( void )
{
m_asFormat_FAT_length = INIFileH.read_Format_FAT_length( "MultiPortFlashDownloadProject.ini", Application->ExeName );
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TMainForm::Read_NANDFormatFATBeginAddress( void )
{
AnsiString as_NAND_Format_FAT_begin_address = INIFileH.read_NAND_Format_FAT_Begin_Address( "MultiPortFlashDownloadProject.ini", Application->ExeName );
m_DnParam.nfb_param.ui_nand_fat_begin_addr = as_NAND_Format_FAT_begin_address.ToInt();
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TMainForm::Read_NANDFormatFATLength( void )
{
AnsiString as_NAND_Format_FAT_length = INIFileH.read_NAND_Format_FAT_length( "MultiPortFlashDownloadProject.ini", Application->ExeName );
m_DnParam.nfb_param.ui_nand_fat_length = as_NAND_Format_FAT_length.ToInt();
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TMainForm::Read_NandAcccon( void )
{
AnsiString as_NandAcccon = INIFileH.read_NandAcccon( "MultiPortFlashDownloadProject.ini", Application->ExeName );
m_DnParam.emi_param.nand_acccon = (unsigned int) as_NandAcccon.ToInt();
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TMainForm::Read_EraseValidation( void )
{
AnsiString as_EraseValidation = INIFileH.read_Erase_Validation( "MultiPortFlashDownloadProject.ini", Application->ExeName );
if( as_EraseValidation.AnsiCompareIC("yes") == 0 )
{ m_DnParam.nfb_param.b_validation = _TRUE;
}
else
{ m_DnParam.nfb_param.b_validation = _FALSE;
}
}
#if 0
//==============================================================================
void TMainForm::Display_LVSetting( void )
{
int ret;
int iLastDel = 0;
if( rbNFB->Checked )
{
LoadBootLoader();
}
asROMFileName = INIFileH.read_ROM( "MultiPortFlashDownloadProject.ini", Application->ExeName );
if( asROMFileName.AnsiCompareIC("") != 0 )
{
if(ret=DL_Rom_LoadByFilepath(g_DL_HANDLE, 0, asROMFileName.c_str()))
{
if( FTHND_HANDLE_BUSY_NOW == ret )
{
Application->MessageBox( "Program is busy! Can not update setting right now.", "Fail", MB_OK );
return;
}
else if( FTHND_SCAT_REGION_IS_OVERLAP == ret )
{
AnsiString as_msg = "\"" + asROMFileName + "\" is too large and causes region overlap!";
Application->MessageBox( as_msg.c_str(), "Fail", MB_OK );
return;
}
else
{
AnsiString as_msg = " Load file \"" + asROMFileName + "\" fail!";
Application->MessageBox( as_msg.c_str(), "Fail", MB_OK );
return;
}
}
iLastDel = asROMFileName.LastDelimiter("\\:");
if ( iLastDel > 0)
{
asROM_Path = asROMFileName.SubString(1, iLastDel-1 );
}
// auto load boot loader
if(rbNFB->Checked)
{
BL_AutoLoad(m_DnParam.bl_handle, asROMFileName.c_str(), "*_BOOTLOADER_*.bin");
}
// auto load download bin files
if( m_bAutoLoadResByScat )
{
if(rbNFB->Checked)
{
DL_AutoLoadByScatRegionName(g_DL_HANDLE, asROMFileName.c_str(), NORMAL_ROM|RESOURCE_BIN|JUMPTABLE_BIN);
}
else
{
DL_AutoLoadByScatRegionName(g_DL_HANDLE, asROMFileName.c_str(), RESOURCE_BIN|JUMPTABLE_BIN);
}
}
}
// #ifndef SERVICE_CENTER
AnsiString as_LV_FAT_index;
asFATFileName = INIFileH.read_FAT( "MultiPortFlashDownloadProject.ini", Application->ExeName );
as_LV_FAT_index = INIFileH.read_LV_FAT_index( "MultiPortFlashDownloadProject.ini", Application->ExeName );
i_LV_FAT_index = as_LV_FAT_index.ToInt();
if( i_LV_FAT_index>=1 && cbType->ItemIndex == DOWNLOAD_ROM_AND_FAT_INDEX )
{
if( asFATFileName.AnsiCompareIC("") != 0 )
{
if(ret=DL_Rom_LoadByFilepath(g_DL_HANDLE, i_LV_FAT_index, asFATFileName.c_str()))
{
if( FTHND_HANDLE_BUSY_NOW == ret )
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -