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

📄 main.cpp

📁 MTK手机平台下载工具FLASHTOOL界面源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
   ini->WriteString("EMI", "nand_acccon", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_nand_acccon), 8));
   ini->WriteString("EMI", "emi_gen_a", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_gen_a), 8));
   ini->WriteString("EMI", "emi_gen_b", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_gen_b), 8));
   ini->WriteString("EMI", "emi_dram_con_i_mode", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_dram_con_i_mode), 8));
   ini->WriteString("EMI", "emi_dram_con_i_ext_mode", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_dram_con_i_ext_mode), 8));
   ini->WriteString("EMI", "emi_dram_con_k", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_dram_con_k), 8));
   ini->WriteString("EMI", "emi_dram_con_l", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_dram_con_l), 8));

   delete ini;

end:
	DL_Destroy(&g_DL_HANDLE);
	DA_Destroy(&g_DA_HANDLE);
	RB_Destroy(&g_RB_HANDLE);

	// destroy META_DLL 
	META_Deinit();
}
//---------------------------------------------------------------------------


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

void __fastcall TMainForm::mi_ViewClick(TObject *Sender)
{
   updateMenuItem();
}
//---------------------------------------------------------------------------





void __fastcall TMainForm::ListView1_oldClick(TObject *Sender)
{
    int iLastDel=0;
	int ret;
	int index;
	TListView *plv = dynamic_cast<TListView *>(Sender);

    if ( plv->Selected == NULL )
       return;

    if(ROMBaseDir.Length()>0)
    {
       OpenSingleRomFile->InitialDir = ROMBaseDir;
       OpenSingleRomFile->FileName = "";
    }
    else if( 4 <= plv->Selected->SubItems->Count ) {
        iLastDel = plv->Selected->SubItems->Strings[3].LastDelimiter("\\:");
        if ( iLastDel > 0)
        {
	        OpenSingleRomFile->InitialDir = plv->Selected->SubItems->Strings[3].SubString(1, iLastDel-1 );
			OpenSingleRomFile->FileName = "";
        }
	}

	if(OpenSingleRomFile->Execute()) {
//        OpenSingleRomFile->HistoryList->Append(OpenSingleRomFile->FileName.c_str());

		if( NFB_OPERATION == g_OperationMethod ) {
			if( 0 == plv->ItemIndex ) {
				if(ret=BL_LoadByFilepath(g_BL_HANDLE, OpenSingleRomFile->FileName.c_str())) {
					if( FTHND_HANDLE_BUSY_NOW == ret ) {
						ShowMessage("Program is busy! Can not update setting right now.");
						return;
					}
					else {
						ShowMessage(" Load boot-loader \"" + OpenSingleRomFile->FileName + "\" fail!");
						return;
					}
				}
				goto end;
			}
			else {
				index = plv->ItemIndex-1;
			}
		}
		else {
			index = plv->ItemIndex;
		}

		if(ret=DL_Rom_LoadByFilepath(g_DL_HANDLE, index, OpenSingleRomFile->FileName.c_str())) {
			if( FTHND_HANDLE_BUSY_NOW == ret ) {
				ShowMessage("Program is busy! Can not update setting right now.");
				return;
			}
			else if( FTHND_SCAT_REGION_IS_OVERLAP == ret ) {
				ShowMessage( "\"" + OpenSingleRomFile->FileName + "\" is too large and causes region overlap!");
				return;
			}
			else {
				ShowMessage(" Load file \"" + OpenSingleRomFile->FileName + "\" fail!");
				return;
			}
		}

        iLastDel = OpenSingleRomFile->FileName.LastDelimiter("\\:");
        if ( iLastDel > 0)
        {
            ROMBaseDir = OpenSingleRomFile->FileName.SubString(1, iLastDel-1 );
        }

	    // check if NFB enabled
	    _BOOL	bIsNFB=_FALSE;
	    if( FTHND_OK == DL_IsNFB(g_DL_HANDLE, &bIsNFB) ) {
	    	// update operation method 
	        if( bIsNFB && (NFB_OPERATION!=g_OperationMethod) ) {
	            m_Menu_OPM_NFBClick(Sender);
	        }
	        else if( !bIsNFB && (NFB_OPERATION==g_OperationMethod) ) {
	            m_Menu_OPM_NORClick(Sender);
	        }
	    }

		// auto load boot loader 
        if(bIsNFB) {
			BL_AutoLoad(g_BL_HANDLE, OpenSingleRomFile->FileName.c_str(), "*_BOOTLOADER_*.bin");
    	}

		// auto load download bin files 
        if(g_bAutoLoadResByScat) {
	        if(bIsNFB) {
				DL_AutoLoadByScatRegionName(g_DL_HANDLE, OpenSingleRomFile->FileName.c_str(), NORMAL_ROM|RESOURCE_BIN|JUMPTABLE_BIN);
	        }
	        else {
				DL_AutoLoadByScatRegionName(g_DL_HANDLE, OpenSingleRomFile->FileName.c_str(), RESOURCE_BIN|JUMPTABLE_BIN);
			}
        }

        // auto select DA and baseband chip type
        AutoSelectDAandBBChip();
	}

end:
	RedrawDownloadList();
}
//---------------------------------------------------------------------------


void __fastcall TMainForm::mi_Phase2Click(TObject *Sender)
{

   if (PHASE2)
   {
      PHASE2 = false;
      ShowMessage(" go PHASE 1 +  PHASE 2 ");
   }
   else
   {
      PHASE2 = true;
      ShowMessage(" go PHASE 2 ");
   }

}
//---------------------------------------------------------------------------


void __fastcall TMainForm::StartAddrExecute(TObject *Sender)
{
      Form_DA_Option->Visible = true;
}
//---------------------------------------------------------------------------


void __fastcall TMainForm::MB0SetupExecute(TObject *Sender)
{
   ext_mem1Form->Visible = true;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ReadbackExecute(TObject *Sender)
{
//////////////////
     g_flashtool_function = FLASHTOOL_READBACK;

     if ( MT6208!=g_BBCHIP_TYPE && asBin.IsEmpty() )
       if (! FileOpenDownloadAgentExecute() )
       {
          ShowMessage(" You must open download agent file before downloading. ");
          return;
       }

     if ( lv_ReadBack->Items->Count ==0 )
     {
          ShowMessage(" Please add read back file.");
          return;
     }

   // clean Flash device info
	HWStatusBarClear();

	if(UpdateDA()) {
		return;
	}

   if( MT6205 != g_BBCHIP_TYPE )
	   start_DL(true);
   else
	   Form_RB_GO->ShowModal();
}
//------------------------------------------------------------------------------

 void TMainForm::start_RB( bool b_start_RB )
{
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::tb_AddReadBackFileClick(TObject *Sender)
{
	int ret;
	AnsiString s;
	TListItem *pListItem;

    unsigned long default_readback_addr = 0x00000000;
    unsigned long default_readback_len = 0x00000800;

	s = "ROM_" + IntToStr(lv_ReadBack->Items->Count);
	if(ret=RB_Append(g_RB_HANDLE, s.c_str(), default_readback_addr, default_readback_len)) {
		if( FTHND_HANDLE_BUSY_NOW == ret ) {
			ShowMessage("Program is busy! Can not update setting right now.");
		}
		else {
			ShowMessage(" Add Readback file error ");
		}
		return;
	}

	RedrawReadbackList();
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::tb_DeleteReadBackFileClick(TObject *Sender)
{
	int ret;

	if ( lv_ReadBack->Selected == NULL )
		return;

	if(ret=RB_Delete(g_RB_HANDLE, lv_ReadBack->ItemIndex)) {
		if( FTHND_HANDLE_BUSY_NOW == ret ) {
			ShowMessage("Program is busy! Can not delete readback entry right now.");
		}
		else {
			ShowMessage("Delete readback entry fail!");
		}
		return;
	}
	else {
		lv_ReadBack->Selected->Delete();
	}
}
//---------------------------------------------------------------------------


void __fastcall TMainForm::lv_ReadBackKeyPress(TObject *Sender, char &Key)
{


   //

    if ( Key =='\b')
    {

       tb_DeleteReadBackFileClick(Sender);


    }

}
//---------------------------------------------------------------------------

void __fastcall TMainForm::lv_ReadBackKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{


    if ( Key == 46 || Key == 109 )
    {

       tb_DeleteReadBackFileClick(Sender);


    }
    else if ( Key == 107 || Key == 13 )
    {

         tb_AddReadBackFileClick( Sender);


    }



}
//---------------------------------------------------------------------------

void __fastcall TMainForm::lv_ReadBack_oldDblClick(TObject *Sender)
{
	int ret;
	TListView *plv = dynamic_cast<TListView *>(Sender);
	
	if ( plv->Selected == NULL )
		return;

	sd_ReadBack->FileName =  plv->Selected->SubItems->Strings[2];

	RB_INFO	rb_info;
	if(ret=RB_GetInfo(g_RB_HANDLE, plv->ItemIndex, &rb_info)) {
		if( FTHND_HANDLE_BUSY_NOW == ret ) {
			ShowMessage("Program is busy! Can not update setting right now.");
		}
		else {
			ShowMessage("Update readback setting fail!");
		}
		return;
	}

	if ( sd_ReadBack->Execute() )
	{
		if(ret=RB_SetFilepath(g_RB_HANDLE, plv->ItemIndex, sd_ReadBack->FileName.c_str())) {
			if( FTHND_HANDLE_BUSY_NOW == ret ) {
				ShowMessage("Program is busy! Can not update setting right now.");
			}
			else {
				ShowMessage("Update readback setting fail!");
			}
			return;
		}
		else {
			plv->Selected->SubItems->Strings[2] = sd_ReadBack->FileName ;
		}
	}
	else {
		return;
	}

	Form_RB_Option->rb_ReadbackHex->Checked = true;
	Form_RB_Option->ed_RB_StartAddr->Text = "0x" + IntToHex((int)rb_info.readback_addr, 8);
	Form_RB_Option->ed_RB_Length->Text = "0x" + IntToHex((int)rb_info.readback_len, 8);
	switch(rb_info.m_read_flag) {
	case NUTL_READ_PAGE_ONLY:
    	Form_RB_Option->m_Radio_ReadPageOnly->Checked = true;
		break;
	case NUTL_READ_SPARE_ONLY:
    	Form_RB_Option->m_Radio_ReadSpareOnly->Checked = true;
		break;
	case NUTL_READ_PAGE_WITH_ECC:
    	Form_RB_Option->m_Radio_ReadPageWithECC->Checked = true;
		break;
	case NUTL_READ_PAGE_SPARE:
	default:
    	Form_RB_Option->m_Radio_ReadPageSpare->Checked = true;
		break;
	}

	Form_RB_Option->Visible= true;
	
	Form_RB_Option->bb_ReadBack_OK->Visible = true;
}
//---------------------------------------------------------------------------

void TMainForm::ReadBack_Finish()
{
}
void __fastcall TMainForm::TestDownloadNot258byteClick(TObject *Sender)
{
//

#ifdef _DEBUG

   if ( bDownloadNot258Byte )
   {
      bDownloadNot258Byte = false;
      ShowMessage(" Download Normal Mode");
   }
   else
   {
      bDownloadNot258Byte = true;
      ShowMessage(" Download Abnormal Mode \n NOT 258 bytes per page.");
   }

#endif
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::br_230400Execute(TObject *Sender)
{
//
   BAUD_RATE  = UART_BAUD_230400;
   uncheckAllBaudRate();
   mi_230400->Checked = true;
   updateStatusBar();
   PL_2Click(Sender);
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::br_460800Execute(TObject *Sender)
{
   BAUD_RATE  = UART_BAUD_460800;
   uncheckAllBaudRate();
   mi_460800->Checked = true;
   updateStatusBar();
   PL_3Click(Sender);
}
//---------------------------------------------------------------

⌨️ 快捷键说明

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