form_wifitxprofile.cpp
上传用户:gelin96
上传日期:2017-01-08
资源大小:20993k
文件大小:24k
源码类别:

MTK

开发平台:

C++ Builder

  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. // form
  5. #include "form_WiFITxProfile.h"
  6. #ifndef _FORM_MAIN_H_
  7. #include "form_main.h"
  8. #endif
  9. // man
  10. #ifndef  _MAN_FDM_H_
  11. #include "man_fdm.h"
  12. #endif
  13. // misc
  14. #ifndef  _MISC_WIFI_H_
  15. #include "misc_wifi.h"
  16. #endif
  17. // WiFi
  18. #ifndef  _MT5911_COMMON_H_
  19. #include "mt5911_common.h"
  20. #endif
  21. //---------------------------------------------------------------------------
  22. typedef enum
  23. {
  24.     WIFI_CHANNEL_2412M = 0,
  25.     WIFI_CHANNEL_2417M,
  26.     WIFI_CHANNEL_2422M,
  27.     WIFI_CHANNEL_2427M,
  28.     WIFI_CHANNEL_2432M,
  29.     WIFI_CHANNEL_2437M,
  30.     WIFI_CHANNEL_2442M,
  31.     WIFI_CHANNEL_2447M,
  32.     WIFI_CHANNEL_2452M,
  33.     WIFI_CHANNEL_2457M,
  34.     WIFI_CHANNEL_2462M,
  35.     WIFI_CHANNEL_2467M,
  36.     WIFI_CHANNEL_2472M,
  37.     WIFI_CHANNEL_2484M,
  38.     WIFI_CHANNEL_2400M_COUNT       /* Total count */
  39. } E_WIFI_CHANNEL_2400M;
  40. typedef enum
  41. {
  42.     WIFI_CHANNEL_5040M = 0,
  43.     WIFI_CHANNEL_5060M,
  44.     WIFI_CHANNEL_5080M,
  45.     WIFI_CHANNEL_5170M,
  46.     WIFI_CHANNEL_5180M,
  47.     WIFI_CHANNEL_5190M,
  48.     WIFI_CHANNEL_5200M,
  49.     WIFI_CHANNEL_5210M,
  50.     WIFI_CHANNEL_5220M,
  51.     WIFI_CHANNEL_5230M,
  52.     WIFI_CHANNEL_5240M,
  53.     WIFI_CHANNEL_5260M,
  54.     WIFI_CHANNEL_5280M,
  55.     WIFI_CHANNEL_5300M,
  56.     WIFI_CHANNEL_5320M,
  57.     WIFI_CHANNEL_5500M,
  58.     WIFI_CHANNEL_5520M,
  59.     WIFI_CHANNEL_5540M,
  60.     WIFI_CHANNEL_5560M,
  61.     WIFI_CHANNEL_5580M,
  62.     WIFI_CHANNEL_5600M,
  63.     WIFI_CHANNEL_5620M,
  64.     WIFI_CHANNEL_5640M,
  65.     WIFI_CHANNEL_5660M,
  66.     WIFI_CHANNEL_5680M,
  67.     WIFI_CHANNEL_5700M,
  68.     WIFI_CHANNEL_5745M,
  69.     WIFI_CHANNEL_5765M,
  70.     WIFI_CHANNEL_5785M,
  71.     WIFI_CHANNEL_5805M,
  72.     WIFI_CHANNEL_4920M,
  73.     WIFI_CHANNEL_4940M,
  74.     WIFI_CHANNEL_4960M,
  75.     WIFI_CHANNEL_4980M,
  76.     WIFI_CHANNEL_5000M_COUNT       /* Total count */
  77. } E_WIFI_CHANNEL_5000M;
  78. //---------------------------------------------------------------------------
  79. #pragma package(smart_init)
  80. #pragma resource "*.dfm"
  81. TfrmWiFiTxProfile *frmWiFiTxProfile;
  82. //---------------------------------------------------------------------------
  83. static void  CNF_ReadTxPower2400MFromNVRAM( void )
  84. {   frmWiFiTxProfile->UploadTxPower2400MFromFlashDone();
  85. }
  86. //---------------------------------------------------------------------------
  87. static void CNF_WriteTxPower2400MToNVRAM( void )
  88. {   frmWiFiTxProfile->DownloadTxPower2400MToFlashDone();
  89. }
  90. //---------------------------------------------------------------------------
  91. static void CNF_ReadTxPower5000MFromNVRAM( void )
  92. {   frmWiFiTxProfile->UploadTxPower5000MFromFlashDone();
  93. }
  94. //---------------------------------------------------------------------------
  95. static void CNF_WriteTxPower5000MToNVRAM( void )
  96. {   frmWiFiTxProfile->DownloadTxPower5000MToFlashDone();
  97. }
  98. //---------------------------------------------------------------------------
  99. static void ConfirmCallback_ReadAEE( void )
  100. {   frmWiFiTxProfile->ConfirmCallback_ReadEE();
  101. }
  102. //============================================================================
  103. __fastcall TfrmWiFiTxProfile::TfrmWiFiTxProfile(TComponent* Owner)
  104.         : TForm(Owner)
  105. {
  106. }
  107. //---------------------------------------------------------------------------
  108. //---------------------------------------------------------------------------
  109. void __fastcall TfrmWiFiTxProfile::FormCreate(TObject *Sender)
  110. {
  111.     edtCCKCHDAC[ 0] = edtCCKCHDAC00;
  112.     edtCCKCHDAC[ 1] = edtCCKCHDAC01;
  113.     edtCCKCHDAC[ 2] = edtCCKCHDAC02;
  114.     edtCCKCHDAC[ 3] = edtCCKCHDAC03;
  115.     edtCCKCHDAC[ 4] = edtCCKCHDAC04;
  116.     edtCCKCHDAC[ 5] = edtCCKCHDAC05;
  117.     edtCCKCHDAC[ 6] = edtCCKCHDAC06;
  118.     edtCCKCHDAC[ 7] = edtCCKCHDAC07;
  119.     edtCCKCHDAC[ 8] = edtCCKCHDAC08;
  120.     edtCCKCHDAC[ 9] = edtCCKCHDAC09;
  121.     edtCCKCHDAC[10] = edtCCKCHDAC0A;
  122.     edtCCKCHDAC[11] = edtCCKCHDAC0B;
  123.     edtCCKCHDAC[12] = edtCCKCHDAC0C;
  124.     edtCCKCHDAC[13] = edtCCKCHDAC0D;
  125.     edtOFDMCHDAC[ 0] = edtOFDMCHDAC00;
  126.     edtOFDMCHDAC[ 1] = edtOFDMCHDAC01;
  127.     edtOFDMCHDAC[ 2] = edtOFDMCHDAC02;
  128.     edtOFDMCHDAC[ 3] = edtOFDMCHDAC03;
  129.     edtOFDMCHDAC[ 4] = edtOFDMCHDAC04;
  130.     edtOFDMCHDAC[ 5] = edtOFDMCHDAC05;
  131.     edtOFDMCHDAC[ 6] = edtOFDMCHDAC06;
  132.     edtOFDMCHDAC[ 7] = edtOFDMCHDAC07;
  133.     edtOFDMCHDAC[ 8] = edtOFDMCHDAC08;
  134.     edtOFDMCHDAC[ 9] = edtOFDMCHDAC09;
  135.     edtOFDMCHDAC[10] = edtOFDMCHDAC0A;
  136.     edtOFDMCHDAC[11] = edtOFDMCHDAC0B;
  137.     edtOFDMCHDAC[12] = edtOFDMCHDAC0C;
  138.     edtOFDMCHDAC[13] = edtOFDMCHDAC0D;
  139.     Init();
  140. }
  141. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  142. //---------------------------------------------------------------------------
  143. void TfrmWiFiTxProfile::Init( void )
  144. {
  145.      m_bInit          = true;
  146. }
  147. //------------------------------------------------------------------------------
  148. void  TfrmWiFiTxProfile::ReDrawFields( void )
  149. {
  150.     int  i;
  151.     char str[256];
  152.     if( 0 == btnTxPowerDac->Tag ) // Dec
  153.     {
  154.         btnTxPowerDac->Caption = "TX Power DAC (Dec)";
  155.         for(i=0; i<NUM_TX_POWER_2400M_CH; i++)
  156.         {
  157.             edtCCKCHDAC[i]->Text  = IntToStr( m_sTxPwr2400M.CCKTxPWR[i] );
  158.             edtOFDMCHDAC[i]->Text = IntToStr( m_sTxPwr2400M.OFDMTxPWR[i] );
  159.         }
  160.     }
  161.     else
  162.     {
  163.         btnTxPowerDac->Caption = "TX Power DAC (Hex)";
  164.         for(i=0; i<NUM_TX_POWER_2400M_CH; i++)
  165.         {
  166.             sprintf( str, "%X", m_sTxPwr2400M.CCKTxPWR[i] );
  167.             edtCCKCHDAC[i]->Text = str;
  168.             sprintf( str, "%X", m_sTxPwr2400M.OFDMTxPWR[i] );
  169.             edtOFDMCHDAC[i]->Text = str;
  170.         }
  171.     }
  172. }
  173. //---------------------------------------------------------------------------
  174. bool  TfrmWiFiTxProfile::CheckFields( void )
  175. {
  176.     int  i;
  177.     unsigned short  usdata[NUM_TX_POWER_2400M_CH];
  178.     AnsiString  text;
  179.     for(i=0; i<NUM_TX_POWER_2400M_CH; i++)
  180.     {
  181.        // text = edtCHDAC[i]->Text;  if( !IsValidWiFiTxPowerDac( text, usdata[i] ) )         {  edtCHDACCheck(edtCHDAC[i]);   return(false);   }
  182.     }
  183.     return true;
  184. }
  185. //---------------------------------------------------------------------------
  186. void  TfrmWiFiTxProfile::CurrentPageReset( void )
  187. {
  188.     btnUploadFromFlash->Enabled = true;
  189.     btnDownloadToFlash->Enabled = true;
  190.     btnChangeDB->Enabled = true;
  191.     btnLoadFromFile->Enabled = true;
  192.     btnSaveToFile->Enabled = true;
  193.     btnLoadFromEEPROM->Enabled = true;
  194. }
  195. //---------------------------------------------------------------------------
  196. void  TfrmWiFiTxProfile::CurrentPageLock( void )
  197. {
  198.     btnUploadFromFlash->Enabled = false;
  199.     btnDownloadToFlash->Enabled = false;
  200.     btnChangeDB->Enabled = false;
  201.     btnLoadFromFile->Enabled = false;
  202.     btnSaveToFile->Enabled = false;
  203.     btnLoadFromEEPROM->Enabled = false;
  204. }
  205. //--------------------------------------------------------------------------
  206. void  TfrmWiFiTxProfile::ShowHintLabel( TControl *sender, char* hint )
  207. {
  208.    TPoint pt0 = this->ClientOrigin;
  209.    TPoint pt1 = sender->ClientOrigin;
  210.    lblHint->Left = (pt1.x-pt0.x);
  211.    lblHint->Top  = (pt1.y-pt0.y)+sender->Height+3;
  212.    lblHint->Caption = hint;
  213.    lblHint->Visible = true;
  214.    HintTimer->Enabled = true;
  215. }
  216. //---------------------------------------------------------------------------
  217. void __fastcall TfrmWiFiTxProfile::btnUploadFromFlashClick(TObject *Sender)
  218. {
  219.     if( ! NVRAMMan->Get_IsInit() )
  220.     {   frmMainSel->mnuFDMDatabaseClick(Sender);
  221.         if( ! NVRAMMan->Get_IsInit() )
  222.         {
  223.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialization fail";
  224.             Application->MessageBox( "Execution Failure : NVRAM database file initialization fail", "FAILURE", MB_OK );
  225.             return;
  226.         }
  227.         //stNVRAMDB->Caption = frmMainSel->Get_NVRAMDBFileName();
  228.     }
  229.     m_WIFI_TXP_Obj.ConfirmCallback = ::CNF_ReadTxPower2400MFromNVRAM;
  230.     m_WIFI_TXP_Obj.REQ_Read_TxPower2400M_From_NVRAM_Start( );
  231.     CurrentPageLock();
  232.     sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Upload WiFi TX power setting from flash progressing";
  233. }
  234. //---------------------------------------------------------------------------
  235. void  TfrmWiFiTxProfile::UploadTxPower2400MFromFlashDone( void )
  236. {
  237.     E_METAAPP_RESULT_T state = m_WIFI_TXP_Obj.Get_ConfirmState();
  238.     switch( state )
  239.     {
  240.         case METAAPP_SUCCESS:
  241.         {
  242.             m_sTxPwr2400M = m_WIFI_TXP_Obj.Get_TxChannelDac2400M();
  243.             ReDrawFields();
  244.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Upload WiFi TX power setting from flash successfully";
  245.         }
  246.         break;
  247.         case METAAPP_FAIL:
  248.         {
  249.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Upload WiFi TX power setting from flash fail, please check the version of load and NVRAM database are same.";
  250.             Application->MessageBox( "Execution Failure : Upload WiFi TX power from flash, please check 1. GSM850 support. 2. The version of load and NVRAM database are same.", "FAILURE", MB_OK );
  251.         }
  252.         break;
  253.         case METAAPP_TIMEOUT:
  254.         {
  255.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Upload WiFi TX power setting from flash timeout";
  256.             Application->MessageBox( "Execution Timeout : Upload WiFi TX power flash", "TIMEOUT", MB_OK );
  257.         }
  258.         break;
  259.         case METAAPP_STOP:
  260.         {
  261.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Upload WiFi TX power setting from flash stop";
  262.             Application->MessageBox( "Execution Timeout : Upload WiFi TX power from flash", "STOP", MB_OK );
  263.         }
  264.         break;
  265.     }
  266.     CurrentPageReset();
  267. }
  268. //---------------------------------------------------------------------------
  269. void  TfrmWiFiTxProfile::UploadTxPower5000MFromFlashDone( void )
  270. {
  271.     E_METAAPP_RESULT_T state = m_WIFI_TXP_Obj.Get_ConfirmState();
  272.     char  str[20];
  273.     float  fdata;
  274.     switch( state )
  275.     {
  276.         case METAAPP_SUCCESS:
  277.         {
  278.              m_sTxPwr5000M = m_WIFI_TXP_Obj.Get_TxChannelDac5000M();
  279.              ReDrawFields();
  280.              sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Upload WiFi TX power setting from flash successful";
  281.         }
  282.         break;
  283.         case METAAPP_FAIL:
  284.         {
  285.              sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Upload WiFi TX power setting fail, please check the version of load and NVRAM database are same.";
  286.              Application->MessageBox( "Execution Failure : Upload WiFi TX power setting, please check the version of load and NVRAM database are same.", "FAILURE", MB_OK );
  287.              CurrentPageReset();
  288.         }
  289.         break;
  290.         case METAAPP_TIMEOUT:
  291.         {
  292.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Upload WiFi TX power setting timeout";
  293.             Application->MessageBox( "Execution Timeout : Upload WiFi TX power setting", "TIMEOUT", MB_OK );
  294.             CurrentPageReset();
  295.         }
  296.         break;
  297.         case METAAPP_STOP:
  298.         {
  299.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Upload WiFi TX power setting stop";
  300.             CurrentPageReset();
  301.         }
  302.         break;
  303.     }
  304. }
  305. //---------------------------------------------------------------------------
  306. void __fastcall TfrmWiFiTxProfile::HintTimerTimer(TObject *Sender)
  307. {
  308.     HintTimer->Enabled = false;
  309.     lblHint->Visible = false;
  310. }
  311. //---------------------------------------------------------------------------
  312. void  TfrmWiFiTxProfile::WIFI_APC_Obj( CWIFIAPC  *wifi_apc_obj )
  313. {
  314.     //m_pWIFI_APC_2400M_Obj = wifi_apc_2400m_obj;
  315. }
  316. void __fastcall TfrmWiFiTxProfile::btnSaveToFileClick(TObject *Sender)
  317. {
  318.     char str[512];
  319.     bool ok;
  320.     ok = SaveDialog->Execute();
  321.     if( !ok )
  322.     {
  323.         sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Save WiFi TX setting to file fail";
  324.         return;
  325.     }
  326.     strcpy( str, SaveDialog->FileName.c_str() );
  327.     if( m_sWiFiCap.support_802_11g || m_sWiFiCap.support_802_11b )
  328.     {
  329.         m_WIFI_TXP_Obj.Set_TxChannelDac2400M( m_sTxPwr2400M );
  330.         ok = m_WIFI_TXP_Obj.REQ_Write_TxPower2400M_To_File( str );
  331.         if( !ok )
  332.         {
  333.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Save WiFi TX setting to file fail";
  334.             Application->MessageBox( "Execution Failure : Save WiFi TX setting to file", "FAILURE", MB_OK );
  335.             return;
  336.         }
  337.     }
  338.    // if( m_sWiFiCap.support_802_11a )
  339.    // {
  340.    //     m_WIFI_TXP_Obj.Set_TxChannelDac5000M( m_sTxPwr5000M );
  341.    //     ok = m_WIFI_TXP_Obj.REQ_Write_TxPower5000M_To_File( str );
  342.    //     if( !ok )
  343.    //     {
  344.    //         sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Save WiFi TX setting to file fail";
  345.    //         Application->MessageBox( "Execution Failure : Save WiFi TX setting to file", "FAILURE", MB_OK );
  346.    //         return;
  347.    //     }
  348.    // }
  349.     sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Save WiFi TX setting to file successfully";    
  350. }
  351. //---------------------------------------------------------------------------
  352. void __fastcall TfrmWiFiTxProfile::btnLoadFromFileClick(TObject *Sender)
  353. {
  354.     char str[512];
  355.     bool ok;
  356.     float  fdata;
  357.     ok = OpenDialog->Execute();
  358.     if( !ok )
  359.     {
  360.         sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Load WiFi TX setting from file fail";
  361.         return;
  362.     }
  363.     strcpy( str, OpenDialog->FileName.c_str() );
  364.     if( m_sWiFiCap.support_802_11g || m_sWiFiCap.support_802_11b )
  365.     {
  366.         ok = m_WIFI_TXP_Obj.REQ_Read_TxPower2400M_From_File( str );
  367.         if( ok )
  368.         {
  369.             m_sTxPwr2400M = m_WIFI_TXP_Obj.Get_TxChannelDac2400M();
  370.         }
  371.         else
  372.         {
  373.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Load WiFi TX setting from file fail";
  374.             Application->MessageBox( "Execution Failure : Load WiFi TX setting from file", "FAILURE", MB_OK );
  375.         }
  376.     }
  377.     if( m_sWiFiCap.support_802_11a )
  378.     {
  379.         ok = m_WIFI_TXP_Obj.REQ_Read_TxPower5000M_From_File( str );
  380.         if( ok )
  381.         {
  382.             m_sTxPwr5000M = m_WIFI_TXP_Obj.Get_TxChannelDac5000M();
  383.         }
  384.         else
  385.         {
  386.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Load WiFi TX setting from file fail";
  387.             Application->MessageBox( "Execution Failure : Load WiFi TX setting from file", "FAILURE", MB_OK );
  388.         }
  389.     }
  390.     ReDrawFields();
  391.     sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Load WiFi TX setting from file successfully";    
  392. }
  393. //---------------------------------------------------------------------------
  394. void __fastcall TfrmWiFiTxProfile::btnChangeDBClick(TObject *Sender)
  395. {
  396.     frmMainSel->mnuFDMDatabaseClick(Sender);
  397.     if( ! NVRAMMan->Get_IsInit() )
  398.     {
  399.         sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialization fail";
  400.         Application->MessageBox( "Execution Failure : NVRAM database file initialization fail", "FAILURE", MB_OK );
  401.         return;
  402.     }
  403.     sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Change NVRAM database file successfully";    
  404. }
  405. //---------------------------------------------------------------------------
  406. void __fastcall TfrmWiFiTxProfile::btnDownloadToFlashClick(TObject *Sender)
  407. {
  408.     if( ! NVRAMMan->Get_IsInit() )
  409.     {  frmMainSel->mnuFDMDatabaseClick(Sender);
  410.     }
  411.     if( ! NVRAMMan->Get_IsInit() )
  412.     {
  413.         sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialize fail";
  414.         Application->MessageBox( "Execution Failure : NVRAM database file initialize fail", "FAILURE", MB_OK );
  415.         return;
  416.     }
  417.     if( m_sWiFiCap.support_802_11g || m_sWiFiCap.support_802_11b )
  418.     {
  419.         m_WIFI_TXP_Obj.Set_TxChannelDac2400M( m_sTxPwr2400M );
  420.         m_WIFI_TXP_Obj.ConfirmCallback = ::CNF_WriteTxPower2400MToNVRAM;
  421.         m_WIFI_TXP_Obj.REQ_Write_TxPower2400M_To_NVRAM_Start();
  422.     }
  423.   //  else if( m_sWiFiCap.support_802_11a )
  424.   //  {
  425.   //      m_WIFI_TXP_Obj.Set_TxChannelDac5000M( m_sTxPwr5000M );
  426.   //      m_WIFI_TXP_Obj.ConfirmCallback = ::CNF_WriteTxPower5000MToNVRAM;
  427.   //      m_WIFI_TXP_Obj.REQ_Write_TxPower5000M_To_NVRAM_Start();
  428.   //  }
  429.     CurrentPageLock();
  430.     sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Download WiFi TX power setting to flash progressing";
  431. }
  432. //---------------------------------------------------------------------------
  433. void  TfrmWiFiTxProfile::DownloadTxPower2400MToFlashDone( void )
  434. {
  435.     E_METAAPP_RESULT_T state = m_WIFI_TXP_Obj.Get_ConfirmState();
  436.     switch( state )
  437.     {
  438.         case METAAPP_SUCCESS:
  439.         {
  440.            // if( m_sWiFiCap.support_802_11a )
  441.            // {
  442.            //     m_WIFI_TXP_Obj.Set_TxChannelDac5000M( m_sTxPwr5000M );
  443.            //     m_WIFI_TXP_Obj.ConfirmCallback = ::CNF_WriteTxPower5000MToNVRAM;
  444.            //     m_WIFI_TXP_Obj.REQ_Write_TxPower5000M_To_NVRAM_Start();
  445.            // }
  446.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Download WiFi TX power setting to flash successfully";
  447.             CurrentPageReset();
  448.         }
  449.         break;
  450.         case METAAPP_FAIL:
  451.         {
  452.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Download WiFi TX power setting to flash fail, please check the version of load and NVRAM database are same.";
  453.             Application->MessageBox( "Execution Failure : Download WiFi TX power setting to flash, please check the version of load and NVRAM database are same.", "FAILURE", MB_OK );
  454.             CurrentPageReset();
  455.         }
  456.         break;
  457.         case METAAPP_TIMEOUT:
  458.         {
  459.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Download WiFi TX power setting to flash timeout";
  460.             Application->MessageBox( "Execution Timeout : Download WiFi TX power setting to flash", "TIMEOUT", MB_OK );
  461.             CurrentPageReset();
  462.         }
  463.         break;
  464.         case METAAPP_STOP:
  465.         {
  466.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Download WiFi TX power setting to flash stop";
  467.             CurrentPageReset();
  468.         }
  469.         break;
  470.     }
  471. }
  472. //---------------------------------------------------------------------------
  473. void  TfrmWiFiTxProfile::DownloadTxPower5000MToFlashDone( void )
  474. {
  475.     E_METAAPP_RESULT_T state = m_WIFI_TXP_Obj.Get_ConfirmState();
  476.     switch( state )
  477.     {
  478.         case METAAPP_SUCCESS:
  479.         {
  480.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Download TX channel power setting to flash successful";
  481.         }
  482.         break;
  483.         case METAAPP_FAIL:
  484.         {
  485.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Download TX channel power setting to flash fail, please check the version of load and NVRAM database are same.";
  486.             Application->MessageBox( "Execution Failure : Download TX channel power setting to flash, please check the version of load and NVRAM database are same.", "FAILURE", MB_OK );
  487.             CurrentPageReset();
  488.         }
  489.         break;
  490.         case METAAPP_TIMEOUT:
  491.         {
  492.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Download TX channel power setting to flash timeout";
  493.             Application->MessageBox( "Execution Timeout : Download TX channel power setting to flash", "TIMEOUT", MB_OK );
  494.             CurrentPageReset();
  495.         }
  496.         break;
  497.         case METAAPP_STOP:
  498.         {
  499.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString) "  Download TX channel power setting to flash stop";
  500.             CurrentPageReset();
  501.         }
  502.         break;
  503.     }
  504. }
  505. void __fastcall TfrmWiFiTxProfile::FormShow(TObject *Sender)
  506. {
  507.     if( m_bInit )
  508.     {
  509.         m_bInit = false;
  510.         m_sWiFiCap = frmMainSel->Get_FinalWiFiCap();
  511.     }
  512. }
  513. //---------------------------------------------------------------------------
  514. void __fastcall TfrmWiFiTxProfile::btnTxPowerDacClick(TObject *Sender)
  515. {
  516.     if( 0 == btnTxPowerDac->Tag )  // Dec-->Hex
  517.     {    btnTxPowerDac->Tag = 1;
  518.     }
  519.     else  //Hex-->Dec
  520.     {    btnTxPowerDac->Tag = 0;
  521.     }
  522.     ReDrawFields();
  523. }
  524. //--------------------------------------------------------------------------
  525. void __fastcall TfrmWiFiTxProfile::edtCCKCHDACCheck(TObject *Sender)
  526. {
  527.     unsigned char  uc_data;
  528.     AnsiString  text;
  529.     TEdit *edit = (TEdit*)Sender;
  530.     char  hint[] = " value shall be 0~63 ";
  531.     text = edit->Text;
  532.     if( 0 == btnTxPowerDac->Tag )  // Dec
  533.     {
  534.         if( !IsValidDecWiFiTxPowerDac( text, uc_data ) )
  535.         {
  536.             ShowHintLabel( edit, hint );
  537.             edit->SetFocus();
  538.             return;
  539.         }
  540.     }
  541.     else  // Hex
  542.     {
  543.         if( !IsValidHexWiFiTxPowerDac( text, uc_data ) )
  544.         {
  545.             ShowHintLabel( edit, hint );
  546.             edit->SetFocus();
  547.             return;
  548.         }
  549.     }
  550.     m_sTxPwr2400M.CCKTxPWR[edit->Tag] = uc_data;
  551. }
  552. //---------------------------------------------------------------------------
  553. void __fastcall TfrmWiFiTxProfile::edtOFDMCHDACCheck(TObject *Sender)
  554. {
  555.     unsigned char  uc_data;
  556.     AnsiString  text;
  557.     TEdit *edit = (TEdit*)Sender;
  558.     char  hint[] = " value shall be 0~63 ";
  559.     text = edit->Text;
  560.     if( 0 == btnTxPowerDac->Tag )  // Dec
  561.     {
  562.         if( !IsValidDecWiFiTxPowerDac( text, uc_data ) )
  563.         {
  564.             ShowHintLabel( edit, hint );
  565.             edit->SetFocus();
  566.             return;
  567.         }
  568.     }
  569.     else  // Hex
  570.     {
  571.         if( !IsValidHexWiFiTxPowerDac( text, uc_data ) )
  572.         {
  573.             ShowHintLabel( edit, hint );
  574.             edit->SetFocus();
  575.             return;
  576.         }
  577.     }
  578.     m_sTxPwr2400M.OFDMTxPWR[edit->Tag] = uc_data;
  579. }
  580. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  581. void TfrmWiFiTxProfile::Compose_EEPROM_Parameter( void )
  582. {
  583.     m_sEE.count = 14;
  584.     for (unsigned int i=0; i<m_sEE.count; i++)
  585.     {
  586.         m_sEE.eeprom[i].index = ADDR_MT5911_EEPROM_2_4G_CCK_TX_POWER + i;
  587.     }
  588. }
  589. //--------------------------------------------------------------------------
  590. void __fastcall TfrmWiFiTxProfile::btnLoadFromEEPROMClick(TObject *Sender)
  591. {
  592.     CurrentPageLock();
  593.     Compose_EEPROM_Parameter();
  594.     m_WIFI_EE_Obj.ConfirmCallback  = ::ConfirmCallback_ReadAEE;
  595.     m_WIFI_EE_Obj.REQ_Read_From_EE_Start( m_sEE );
  596.     sbWiFiTXP->Panels->Items[0]->Text = (AnsiString)"  Load WiFi TX power from EEPROM progressing";
  597. }
  598. //-----------------------------------------------
  599. void TfrmWiFiTxProfile::ConfirmCallback_ReadEE( void )
  600. {
  601.     E_METAAPP_RESULT_T state = m_WIFI_EE_Obj.Get_ConfirmState();
  602.     switch (state)
  603.     {
  604.         case METAAPP_SUCCESS:
  605.         {
  606.             m_sEE = m_WIFI_EE_Obj.Get_EE();
  607.             WiFiTxPowerEEToNVRAM();
  608.             ReDrawFields();
  609.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString)"  Load WiFi TX power from EEPROM successfully";
  610.         }
  611.         break;
  612.         case METAAPP_FAIL:
  613.         {
  614.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString)"  Load WiFi TX power from EEPROM fail";
  615.             Application->MessageBox( "Execution Timeout : Load WiFi TX power from EEPROM", "FAIL", MB_OK );
  616.         }
  617.         break;
  618.         case METAAPP_TIMEOUT:
  619.         {
  620.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString)"  Load WiFi TX power from EEPROM timeout";
  621.             Application->MessageBox( "Execution Timeout : Load WiFi TX power from EEPROM", "TIMEOUT", MB_OK );
  622.         }
  623.         break;
  624.         case METAAPP_STOP:
  625.         {
  626.             sbWiFiTXP->Panels->Items[0]->Text = (AnsiString)"  Load WiFi TX power from EEPROM stop";
  627.         }
  628.         break;
  629.     }
  630.     CurrentPageReset();
  631. }
  632. //--------------------------------------------------------------------------
  633. void TfrmWiFiTxProfile::WiFiTxPowerEEToNVRAM( void )
  634. {
  635.     int i;
  636.     for(i=0; i<NUM_TX_POWER_2400M_CH/2; i++)
  637.     {
  638.         m_sTxPwr2400M.CCKTxPWR[2*i]   = (unsigned char) m_sEE.eeprom[i].eeprom_data16 & 0x00FF;
  639.         m_sTxPwr2400M.CCKTxPWR[2*i+1] = (unsigned char) ((m_sEE.eeprom[i].eeprom_data16 & 0xFF00)>>8);
  640.     }
  641.     for(i=0; i<NUM_TX_POWER_2400M_CH/2; i++)
  642.     {
  643.         m_sTxPwr2400M.OFDMTxPWR[2*i]   = (unsigned char) m_sEE.eeprom[i+NUM_TX_POWER_2400M_CH/2].eeprom_data16 & 0x00FF ;
  644.         m_sTxPwr2400M.OFDMTxPWR[2*i+1] = (unsigned char) ((m_sEE.eeprom[i+NUM_TX_POWER_2400M_CH/2].eeprom_data16 & 0xFF00)>>8);
  645.     }
  646. }