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

📄 nvrameditor.cpp

📁 MTK_NVRAM_Editor的源码,可能对你们有用哦
💻 CPP
📖 第 1 页 / 共 3 页
字号:

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