📄 nvrameditor.~cpp
字号:
//---------------------------------------------------------------------------
__fastcall TfrmNVRAMEditor::TfrmNVRAMEditor(TComponent* Owner)
: TForm(Owner)
{
tbReadFromNVRAM->Enabled = true;
tb_save_to_NVRAM->Enabled = true;
tb_NVRAM_Clear->Enabled = true;
NVRAM_ReadReq_allocated = false;
NVRAM_WriteReq_allocated = false;
// WindowProc = SubClassWndProc;
}
//---------------------------------------------------------------------------
void __fastcall TfrmNVRAMEditor::tbReadFromNVRAMClick(TObject *Sender)
{
// added by Andy Ueng
if(!NVRAMMan->IsInit)
{ frmMainSel->mnuFDMDatabaseClick(this);
}
if(!NVRAMMan->IsInit) return;
// end of added
sb_NVRAM_editor->Panels->Items[0]->Text = "";
sb_NVRAM_editor->Panels->Items[1]->Text = "";
sb_NVRAM_editor->Panels->Items[2]->Text = "";
if ( tv_NVRAM->Selected == NULL )
{
ShowMessage(" You must select a record from left tree view window ");
return;
}
// modified by Andy Ueng
//ptn_element = tv_NVRAM->Selected ;
//ptn_group = ptn_element->Parent;
ptn_selected = tv_NVRAM->Selected ;
// end of modified
// modified by Andy Ueng
// if ( ptn_group == NULL )
if ( ptn_selected == NULL )
// end of modified
return;
// strcpy( fdm_node_rec_name , tv_FDM->Selected->Text.c_str());
if (! find_node_index( NVRAM_TreeItem, tv_NVRAM->Selected, iNVRAM_TreeItemIndex ))
{
ShowMessage(" NVRAM editor error: can't find this node ");
return;
}
if ( Sender != NULL )
{
dynamic_cast <TControl *>(Sender)->Enabled = false;
}
if ( NVRAM_TreeItem[iNVRAM_TreeItemIndex].vTreeItemHandle.intVal == 0 )
{
// do nothing
} else
{
long lModified;
NVRAM_RawDataTree->TreeGetModify( NVRAM_TreeItem[iNVRAM_TreeItemIndex].vTreeItemHandle, &lModified );
if ( lModified )
{
NVRAM_RawDataTree->TreeSetSel( NVRAM_TreeItem[iNVRAM_TreeItemIndex].vTreeItemHandle );
int msg_result = Application->MessageBox( " Do you want to save this struct ? ",
" NVRAM editor ",
MB_YESNOCANCEL) ;
switch ( msg_result )
{
case IDYES :
// modified by Andy Ueng
// tb_FDM_download_to_FDMClick( NULL );
tbSaveToNVRAMClick( NULL );
NVRAM_RawDataTree->TreeDeleteItem( NVRAM_TreeItem[iNVRAM_TreeItemIndex].vTreeItemHandle ); // added by Andy Ueng
NVRAM_TreeItem[iNVRAM_TreeItemIndex].vTreeItemHandle.intVal = 0; // added by Andy Ueng
// IDyes-> download & read back from fdm
//return;
break;
case IDNO :
NVRAM_RawDataTree->TreeDeleteItem( NVRAM_TreeItem[iNVRAM_TreeItemIndex].vTreeItemHandle );
NVRAM_TreeItem[iNVRAM_TreeItemIndex].vTreeItemHandle.intVal = 0;
break;
case IDCANCEL :
tbReadFromNVRAM->Enabled = true; // added by Andy Ueng
return;
//break; // Unreachable code
}
} else
{
NVRAM_RawDataTree->TreeDeleteItem( NVRAM_TreeItem[iNVRAM_TreeItemIndex].vTreeItemHandle );
NVRAM_TreeItem[iNVRAM_TreeItemIndex].vTreeItemHandle.intVal = 0;
}
}
int i_struct_name_buf_len=0;
// modified by Andy Ueng
// META_RESULT mr1 = META_NVRAM_GetRecStructNameLength( ptn_group->Text.c_str(),
// ptn_element->Text.c_str(),
// &i_struct_name_buf_len );
META_RESULT mr1 = META_NVRAM_GetRecStructNameLength(ptn_selected->Parent->Text.c_str(),
&i_struct_name_buf_len );
// end of modified
if ( mr1 != META_SUCCESS )
{
META_result_handler( mr1);
if ( Sender != NULL )
{
dynamic_cast <TControl *>(Sender)->Enabled = true;
}
return;
}
// char *pc_struct_buf;
// pc_struct_buf = ( char *) malloc( i_struct_name_buf_len );
if ( i_struct_name_buf_len > 0 ) // ==0 RawData
{
// modified by Andy Ueng
// mr1 = META_FDM_GetRecStructName( ptn_group->Text.c_str(),
// ptn_element->Text.c_str(),
// FDM_TreeItem[ iFDM_TreeItemIndex ].StructName,
// i_struct_name_buf_len );
mr1 = META_NVRAM_GetRecStructName(ptn_selected->Parent->Text.c_str(),
NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].StructName,
i_struct_name_buf_len );
// end of modified
if ( mr1 != META_SUCCESS )
{
META_result_handler( mr1);
if ( Sender != NULL )
{
dynamic_cast <TControl *>(Sender)->Enabled = true;
}
return;
}
// as_FDM_node_struct_name = AnsiString( pc_struct_buf );
/*
mr1 = META_FDM_GetRecLength( ptn_group->Text.c_str(),
ptn_element->Text.c_str(),
&i_FDM_read_RecLength );
*/
// modified by Andy Ueng
// mr1 = META_FDM_GetRecLength( ptn_group->Text.c_str(),
// ptn_element->Text.c_str(),
// &(FDM_TreeItem[ iFDM_TreeItemIndex ].iDataLen) );
mr1 = META_NVRAM_GetRecLen( ptn_selected->Parent->Text.c_str(),
&(NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].iDataLen) );
// end of modified
// rec==0 use raw data edito!
if ( mr1 != META_SUCCESS )
{
META_result_handler( mr1);
if ( Sender != NULL )
{
dynamic_cast <TControl *>(Sender)->Enabled = true;
}
return;
}
NVRAM_node_read_rec.buf = new char[ NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].iDataLen];
NVRAM_node_read_rec.len = NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].iDataLen;
} else
{
NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].iDataLen = 0;
strcpy ( NVRAM_TreeItem[ iNVRAM_TreeItemIndex ].StructName,
ptn_selected->Text.c_str()
);
NVRAM_node_read_rec.buf = new char[ RAW_DATA_BUF_LEN ];
NVRAM_node_read_rec.len = RAW_DATA_BUF_LEN ;
}
if( NVRAM_ReadReq == NULL)
{
NVRAM_ReadReq = new FT_NVRAM_READ_REQ;
}
NVRAM_ReadReq->LID = ptn_selected->Parent->Text.c_str();
NVRAM_ReadReq->RID = ptn_selected->Text.ToInt();
mr1 = META_NVRAM_Read( NVRAM_ReadReq,
&NVRAM_node_read_rec,
::NVRAM_node_read_rec_cnf_cb,
&NVRAM_node_read_rec_token,
NULL );
// end of modified
if ( mr1 != META_SUCCESS )
{
META_result_handler( mr1);
if ( Sender != NULL )
{
dynamic_cast <TControl *>(Sender)->Enabled = true;
}
return;
}
else
{
// modified by Andy Ueng
// ptn_rec = ptn_element;
ptn_rec = ptn_selected;
// end of modified
}
// end of added
}
//---------------------------------------------------------------------------
void __fastcall TfrmNVRAMEditor::tbSaveToNVRAMClick(TObject *Sender)
{
// added by Andy Ueng
if(!NVRAMMan->IsInit)
{ frmMainSel->mnuFDMDatabaseClick(this);
}
if(!NVRAMMan->IsInit) return;
// end of added
// modified by Andy Ueng
// sb_FDM_editor->Panels->Items[0]->Text = "";
// sb_FDM_editor->Panels->Items[1]->Text = "";
// sb_FDM_editor->Panels->Items[2]->Text = "";
sb_NVRAM_editor->Panels->Items[0]->Text = "";
sb_NVRAM_editor->Panels->Items[1]->Text = "";
sb_NVRAM_editor->Panels->Items[2]->Text = "";
// end of modified
// modified by Andy Ueng
// if ( FDM_RawDataTree->Visible )
if ( NVRAM_RawDataTree->Visible )
// end of modified
{ // Active X tree
// modified by Andy Ueng
// if ( tv_FDM->Selected == NULL )
if ( tv_NVRAM->Selected == NULL )
// end of modified
{
ShowMessage(" You must select a element to download to NVRAM ");
return;
}
// modified by Andy Ueng
// ptn_element = tv_FDM->Selected;
// ptn_group = ptn_element->Parent;
ptn_selected = tv_NVRAM->Selected;
// end of modified
// modified by Andy Ueng
// if ( ptn_element->Parent == NULL )
if ( ptn_selected->Parent == NULL )
// end of modified
{
ShowMessage(" You must select a element to download to NVRAM ");
return;
}
// modified by Andy Ueng
// if (! get_index_from_group_element_name( ptn_group->Text.c_str(),
// ptn_element->Text.c_str(),
// iFDM_TreeItemIndex
// ))
// modified by Andy Ueng
// if (! get_index_from_LID( ptn_selected->Parent->Text.c_str(),
// iNVRAM_TreeItemIndex
// ))
if (! get_index_from_LID( ptn_selected->Parent->Text.c_str(),
&iNVRAM_TreeItemIndex
))
// end of modified
// end of modified
{
ShowMessage(" NVRAM editor error: can't find index");
return;
}
// added by Andy Ueng
iNVRAM_TreeItemIndex = iNVRAM_TreeItemIndex + ptn_selected->Text.ToInt()-1;
// end of added
// modified by Andy Ueng
// if( FDM_TreeItem[iFDM_TreeItemIndex].vTreeItemHandle.intVal ==0)
if( NVRAM_TreeItem[iNVRAM_TreeItemIndex].vTreeItemHandle.intVal ==0)
// end of modified
{
ShowMessage(" Please read this struct from NVRAM before downloading.");
return;
}
if ( Sender != NULL )
{
dynamic_cast <TControl *>(Sender)->Enabled = false;
}
// 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 );
if( NVRAM_WriteReq == NULL)
{
NVRAM_WriteReq = new FT_NVRAM_WRITE_REQ;
}
NVRAM_WriteReq->LID = ptn_selected->Parent->Text.c_str();
NVRAM_WriteReq->RID = ptn_selected->Text.ToInt(); // temp set to 1
NVRAM_WriteReq->buf = NVRAM_TreeItem[iNVRAM_TreeItemIndex].Buf;
NVRAM_WriteReq->len = NVRAM_TreeItem[iNVRAM_TreeItemIndex].iDataLen;
META_RESULT mr1 = META_NVRAM_Write( NVRAM_WriteReq,
::NVRAM_node_write_rec_cnf_cb,
&NVRAM_node_write_rec_token,
NULL );
// end of modified
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -