?? rb_option.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:
* ---------
* RB_Option.cpp
*
* Project:
* --------
* Flash tool set
*
* Description:
* ------------
* Readback option window
*
* Author:
* -------
* FZ Hsu (mtk00303)
*
*==============================================================================
* HISTORY
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*------------------------------------------------------------------------------
* $Revision: 1.5 $
* $Modtime: Oct 19 2005 11:14:36 $
* $Log: //mtkvs01/vmdata/flash_tool/archives/RB_Option.cpp-arc $
*
* Rev 1.5 Oct 19 2005 14:47:26 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.4 Oct 01 2003 23:38:18 mtk00539
* Add packet length in DA_WRITE_CMD and DA_READ_CMD.
* Resolution for 28: [BootRom v2.1.1001][New] See the reasons below.
*
* Rev 1.3 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.2 Jan 09 2003 18:11:16 mtk00303
* fix readback address bug
*
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*==============================================================================
*******************************************************************************/
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "RB_Option.h"
#include "main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm_RB_Option *Form_RB_Option;
bool bReadbackAddrLengthTypeHex;
//---------------------------------------------------------------------------
__fastcall TForm_RB_Option::TForm_RB_Option(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm_RB_Option::bb_ReadBack_OKClick(TObject *Sender)
{
int ret;
unsigned long readback_addr;
unsigned long readback_len;
TListItem *pli = MainForm->lv_ReadBack->Selected;
if ( pli != NULL )
{
if ( ed_RB_StartAddr->Text.Length() > 0 ) {
if( bReadbackAddrLengthTypeHex ) {
readback_addr = strtoul(ed_RB_StartAddr->Text.c_str(), NULL, 16);
}
else {
readback_addr = strtoul(ed_RB_StartAddr->Text.c_str(), NULL, 10);
}
}
if ( ed_RB_Length->Text.Length() > 0 ) {
if ( bReadbackAddrLengthTypeHex ) {
readback_len = strtoul(ed_RB_Length->Text.c_str(), NULL, 16);
}
else {
readback_len = strtoul(ed_RB_Length->Text.c_str(), NULL, 10);
}
}
// set read back flag
NUTL_ReadFlag_E read_flag;
if(m_Radio_ReadPageSpare->Checked) {
read_flag = NUTL_READ_PAGE_SPARE;
}
else if(m_Radio_ReadPageOnly->Checked) {
read_flag = NUTL_READ_PAGE_ONLY;
}
else if(m_Radio_ReadSpareOnly->Checked) {
read_flag = NUTL_READ_SPARE_ONLY;
}
else if(m_Radio_ReadPageWithECC->Checked) {
read_flag = NUTL_READ_PAGE_WITH_ECC;
}
else {
read_flag = NUTL_READ_PAGE_WITH_ECC;
}
if(ret=RB_SetReadbackFlag(g_RB_HANDLE, MainForm->lv_ReadBack->ItemIndex, read_flag)) {
if( FTHND_HANDLE_BUSY_NOW == ret ) {
ShowMessage("Program is busy! Can not update setting right now.");
}
else {
ShowMessage("Update readback setting fail!");
}
goto end;
}
if( NOR_OPERATION != g_OperationMethod ) {
// NAND flash read back must be pagesize alignment
if( 0 != (readback_addr%2048) ) {
readback_addr = ((readback_addr/2048)+1)*2048;
ShowMessage("[WARNING] Read back address is adjusted to 2048 pagesize alignment!");
}
if( 0 != (readback_len%2048) ) {
readback_len = ((readback_len/2048)+1)*2048;
ShowMessage("[WARNING] Read back length is adjusted to 2048 pagesize alignment!");
}
}
if(ret=RB_SetReadbackAddr(g_RB_HANDLE, MainForm->lv_ReadBack->ItemIndex, readback_addr)) {
if( FTHND_HANDLE_BUSY_NOW == ret ) {
ShowMessage("Program is busy! Can not update setting right now.");
}
else {
ShowMessage("Update readback setting fail!");
}
goto end;
}
if(ret=RB_SetReadbackLength(g_RB_HANDLE, MainForm->lv_ReadBack->ItemIndex, readback_len)) {
if( FTHND_HANDLE_BUSY_NOW == ret ) {
ShowMessage("Program is busy! Can not update setting right now.");
}
else {
ShowMessage("Update readback setting fail!");
}
goto end;
}
MainForm->RedrawReadbackList();
} // if
end:
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm_RB_Option::bb_CancelClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void _fastcall TForm_RB_Option::KeyPress_Dec(TObject *Sender, char &Key)
{
if ( Key == '\x1B' )
{
dynamic_cast<TEdit *>( Sender)->Undo();
}
else if ( Key < '0' || Key > '9' )
{
if ( Key !='\b' )
Key=NULL;
}
}
//---------------------------------------------------------------------------
void _fastcall TForm_RB_Option::KeyPress_Hex(TObject *Sender, char &Key)
{
if ( Key == '\x1B' )
{
dynamic_cast<TEdit *>( Sender)->Undo();
}
else if ( Key < '0' || Key > '9' )
{
if ( Key !='\b' &&
( Key < 'A' || (Key > 'F' && Key < 'a') || Key > 'f'))
Key=NULL;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm_RB_Option::rb_ReadbackFlagClick(TObject *Sender)
{
if ( bReadbackAddrLengthTypeHex )
{
ed_RB_StartAddr->Text = IntToStr(strtoul(ed_RB_StartAddr->Text.c_str(), NULL, 16));
ed_RB_Length->Text = IntToStr(strtoul(ed_RB_Length->Text.c_str(), NULL, 16));
ed_RB_StartAddr->OnKeyPress = KeyPress_Dec;
ed_RB_Length->OnKeyPress = KeyPress_Dec;
bReadbackAddrLengthTypeHex = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm_RB_Option::rb_ReadbackHexClick(TObject *Sender)
{
if ( ! bReadbackAddrLengthTypeHex )
{
ed_RB_StartAddr->Text = "0x" + IntToHex((int)strtoul(ed_RB_StartAddr->Text.c_str(), NULL, 10), 8);
ed_RB_Length->Text = "0x" + IntToHex((int)strtoul(ed_RB_Length->Text.c_str(), NULL, 10), 8);
ed_RB_StartAddr->OnKeyPress = KeyPress_Hex;
ed_RB_Length->OnKeyPress = KeyPress_Hex;
bReadbackAddrLengthTypeHex = true;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm_RB_Option::FormCreate(TObject *Sender)
{
bReadbackAddrLengthTypeHex = true;
rb_ReadbackHex->Checked = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm_RB_Option::FormHide(TObject *Sender)
{
if( m_Group_ReadBackRange->Top != m_Original_Group_ReadBackRange_Top ) {
m_Group_ReadBackRange->Top = m_Original_Group_ReadBackRange_Top;
}
if( NOR_OPERATION == g_OperationMethod ) {
m_Group_ReadBackFlag->Visible = true;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm_RB_Option::FormShow(TObject *Sender)
{
m_Original_Group_ReadBackRange_Top = m_Group_ReadBackRange->Top;
if( NOR_OPERATION == g_OperationMethod ) {
m_Group_ReadBackRange->Top = m_Group_ReadBackFlag->Top;
m_Group_ReadBackFlag->Visible = false;
}
}
//---------------------------------------------------------------------------
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -