📄 nvrameditor.~cpp
字号:
if ( mr1 != META_SUCCESS )
{
META_result_handler( mr1);
if ( Sender != NULL )
{
dynamic_cast <TControl *>(Sender)->Enabled = true;
}
return;
}
} else
{ // Raw Data Editor
// modified by Andy Ueng
// read_Raw_Data_from_StringGrid( sg_FDM_editor,
// RAW_DATA_START_COL,
// RAW_DATA_START_ROW,
// RAW_DATA_COL_COUNTS,
// FDM_TreeItem[ iFDM_TreeItemIndex ].iDataLen,
// FDM_TreeItem[ iFDM_TreeItemIndex ].Buf );
read_Raw_Data_from_StringGrid( sg_NVRAM_editor,
RAW_DATA_START_COL,
RAW_DATA_START_ROW,
RAW_DATA_COL_COUNTS,
NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].iDataLen,
NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].Buf );
// end of modified
// modified by Andy Ueng
// META_RESULT mr1 = META_FDM_WriteRec( FDM_TreeItem[ iFDM_TreeItemIndex ].GroupName,
// FDM_TreeItem[ iFDM_TreeItemIndex ].ElementName,
// FDM_TreeItem[ iFDM_TreeItemIndex ].Buf ,
// FDM_TreeItem[ iFDM_TreeItemIndex ].iDataLen,
// &fdm_node_write_rec_cnf,
// fdm_node_write_rec_cnf_cb,
// &fdm_node_write_rec_token );
META_RESULT mr1 = META_NVRAM_Write( NVRAM_WriteReq,
::NVRAM_node_write_rec_cnf_cb,
&NVRAM_node_write_rec_token,
NULL );
// end of modified
if ( mr1 != META_SUCCESS )
{
META_result_handler( mr1);
if ( Sender != NULL )
{
dynamic_cast <TControl *>(Sender)->Enabled = true;
}
return;
}
}
// end of added
}
void __stdcall TfrmNVRAMEditor::NVRAM_node_read_rec_cnf_cb( const FT_NVRAM_READ_CNF *cnf, const short token, void *usrData)
// end of modified
{
tbReadFromNVRAM->Enabled = true;
if ( cnf->status != FDM_READ_SUCCESS )
{
sb_NVRAM_editor->Panels->Items[0]->Text = " NVRAM read record fail ";
sb_NVRAM_editor->Panels->Items[1]->Text = "";
sb_NVRAM_editor->Panels->Items[2]->Text = "";
Application->MessageBox( "NVRAM read record fail", "FAILURE", MB_OK );
}
else
{
sb_NVRAM_editor->Panels->Items[0]->Text = " NVRAM read record successfully ";
sb_NVRAM_editor->Panels->Items[1]->Text = "";
sb_NVRAM_editor->Panels->Items[2]->Text = "";
if (NVRAM_node_read_rec.len ==0)
{
sb_NVRAM_editor->Panels->Items[1]->Text = " buf length: 0 ";
return;
} else
{
sb_NVRAM_editor->Panels->Items[1]->Text = " buf length: " +
IntToStr( NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].iDataLen);
}
if (NVRAM_node_read_rec.status == FDM_DATA_VALID)
{
sb_NVRAM_editor->Panels->Items[2]->Text = " data valid ";
} else
{
sb_NVRAM_editor->Panels->Items[2]->Text = " data invalid ";
return;
}
// if ( i_FDM_read_RecLength > 0)
if ( NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].iDataLen > 0)
{
NVRAM_RawDataTree->Visible = true;
tb_NVRAM_Tree_Property->Enabled = true;
sg_NVRAM_editor->Visible = false;
memcpy( NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].Buf,
NVRAM_node_read_rec.buf,
NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].iDataLen );
if( NVRAM_node_read_rec.buf != NULL)
{
delete [] NVRAM_node_read_rec.buf;
NVRAM_node_read_rec.buf = NULL;
}
long bStruct = true;
NVRAM_RawDataTree->EncodeNvramData( NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].iDataLen,
TVariant((long)NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].Buf),
TVariant((char *)NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].LIDNAME) ,
&NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].vTreeItemHandle
);
} else
{
memcpy( NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].Buf,
NVRAM_node_read_rec.buf,
NVRAM_node_read_rec.len );
if(NVRAM_node_read_rec.buf)
{
delete [] NVRAM_node_read_rec.buf;
NVRAM_node_read_rec.buf = NULL;
}
NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].iDataLen = NVRAM_node_read_rec.len;
NVRAM_RawDataTree->Visible = false;
tb_NVRAM_Tree_Property->Enabled = false;
sg_NVRAM_editor->Visible = true;
show_Raw_Data_on_StringGrid( sg_NVRAM_editor,
NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].Buf,
NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].iDataLen
);
}
NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].bRead = true;
}
}
//------------------------------------------------------------------------------
// modified by Andy Ueng
// void fdm_node_write_rec_cnf_cb( FdmWriteRec_Cnf *cnf)
void __stdcall TfrmNVRAMEditor::NVRAM_node_write_rec_cnf_cb( const FT_NVRAM_WRITE_CNF *cnf, const short token, void *usrData)
// end of modified
{
tb_save_to_NVRAM->Enabled = true;
if ( cnf->status == FDM_WRITE_SUCCESS )
{
sb_NVRAM_editor->Panels->Items[0]->Text = " NVRAM write record successfully ";
sb_NVRAM_editor->Panels->Items[1]->Text = "";
sb_NVRAM_editor->Panels->Items[2]->Text = "";
if ( NVRAM_RawDataTree->Visible )
{
NVRAM_RawDataTree->TreeSetModify( NVRAM_TreeItem[iNVRAM_TreeItemIndex].vTreeItemHandle,
false);
}
// ShowMessage(" NVRAM write record successfully ");
} else
{
sb_NVRAM_editor->Panels->Items[0]->Text =" NVRAM write record fail ";
sb_NVRAM_editor->Panels->Items[1]->Text = "";
sb_NVRAM_editor->Panels->Items[2]->Text = "";
Application->MessageBox( "NVRAM write record fail", "FAILURE", MB_OK );
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmNVRAMEditor::tb_NVRAM_Tree_PropertyClick(TObject *Sender)
{
LPUNKNOWN pUnk = NULL;
pUnk = NVRAM_RawDataTree->ControlInterface;
IOleObject* pIOle = NULL;
if ( SUCCEEDED( pUnk->QueryInterface( IID_IOleObject, (void**)&pIOle)))
{
IOleClientSite* pCS = NULL;
pIOle->GetClientSite(&pCS);
RECT rct;
pIOle->DoVerb(OLEIVERB_PROPERTIES,NULL,pCS,0, this->Handle ,&rct);
pIOle->Release();
pCS->Release();
}
}
//---------------------------------------------------------------------------
bool TfrmNVRAMEditor::get_index_from_handle( TreeStructType *tst,
int i,
int &index )
{
for( int I=0; I<iTotalTreeItemCount; I++)
{
if (tst[ I ].vTreeItemHandle.intVal == i )
{
index = I;
return true;
}
}
return false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmNVRAMEditor::tb_NVRAM_ClearClick(TObject *Sender)
{
// added by Andy Ueng
if(!NVRAMMan->IsInit)
{ frmMainSel->mnuFDMDatabaseClick(this);
}
if(!NVRAMMan->IsInit) return;
// end of added
if ( NVRAM_RawDataTree->Visible )
{
if (iTotalTreeItemCount == 0)
return;
TVariant vTreeItemHandle;
NVRAM_RawDataTree->TreeGetSel( &vTreeItemHandle );
if ( vTreeItemHandle.intVal == 0 )
{
ShowMessage("Please select a tree item to clear ");
return;
}
int iItemIndex = -1;
if ( ! get_index_from_handle( NVRAM_TreeItem, vTreeItemHandle.intVal , iItemIndex ))
{
ShowMessage(" NVRAM editor error: can't get item index ");
} else
{
long lModified;
NVRAM_RawDataTree->TreeGetModify( NVRAM_TreeItem[ iItemIndex].vTreeItemHandle , &lModified );
if ( lModified )
{
int msg_result = Application->MessageBox( " Do you want to save this struct ? ",
" NVRAM editor ",
MB_YESNOCANCEL) ;
switch ( msg_result )
{
case IDYES :
tbSaveToNVRAMClick( NULL );
tb_NVRAM_ClearClick(Sender);
return;
case IDNO :
NVRAM_RawDataTree->TreeDeleteItem( NVRAM_TreeItem[ iItemIndex ].vTreeItemHandle );
NVRAM_TreeItem[ iItemIndex ].vTreeItemHandle.intVal = 0 ;
break;
case IDCANCEL :
return;
} // switch
}
else
{
NVRAM_RawDataTree->TreeDeleteItem( NVRAM_TreeItem[ iItemIndex ].vTreeItemHandle );
NVRAM_TreeItem[ iItemIndex ].vTreeItemHandle.intVal = 0 ;
}
}
} else
{
fill_StringGrid( sg_NVRAM_editor,
RAW_DATA_START_COL,
RAW_DATA_START_ROW,
RAW_DATA_COL_COUNTS,
NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].iDataLen,
AnsiString("00") );
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmNVRAMEditor::OnClick(TObject *Sender)
{
if (find_node_index( NVRAM_TreeItem, tv_NVRAM->Selected, iNVRAM_TreeItemIndex ))
{
if(NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].vTreeItemHandle.intVal != 0)
{
NVRAM_RawDataTree->TreeSetSel( NVRAM_TreeItem[iNVRAM_TreeItemIndex].vTreeItemHandle );
}
}
}
//---------------------------------------------------------------------------
__fastcall TfrmNVRAMEditor::~TfrmNVRAMEditor(void)
{
if(NVRAM_ReadReq != NULL)
{
delete NVRAM_ReadReq;
NVRAM_ReadReq = NULL;
}
if(NVRAM_WriteReq != NULL)
{
delete NVRAM_WriteReq;
NVRAM_WriteReq = NULL;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -