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

📄 nvrameditor.~cpp

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




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