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

📄 multiportflashdownloadtool.cpp

📁 多路下载工具源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:

            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 + -