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

MTK

开发平台:

C++ Builder

  1.     switch( state )
  2.     {
  3.         case STATE_MAC_OK:
  4.         {
  5.            // m_uiMacData = m_WIFI_MAC_Obj.Get_MacData();
  6.             if( rbMAC16bits->Checked )
  7.             {
  8.                 m_sMCR16 = m_WIFI_MAC_Obj.Get_MCR16();
  9.                 DeCompose_MCR16_Data( ACCESS_SINGLE );
  10.             }
  11.             else
  12.             {
  13.                 m_sMCR = m_WIFI_MAC_Obj.Get_MCR();
  14.                 DeCompose_MCR_Data( ACCESS_SINGLE );
  15.             }
  16.             ReDrawFields( PAGEIDX_MAC );
  17.             sbMAC->Panels->Items[0]->Text = (AnsiString)"  Read MAC register successfully";
  18.         }
  19.         break;
  20.         case STATE_MAC_FAIL:
  21.         {
  22.             sbMAC->Panels->Items[0]->Text = (AnsiString)"  Read MAC register fail";
  23.             Application->MessageBox( "Execution Timeout : Read MAC register", "FAIL", MB_OK );
  24.             Force_WiFi_Stop();
  25.         }
  26.         break;
  27.         case STATE_MAC_TIMEOUT:
  28.         {
  29.             sbMAC->Panels->Items[0]->Text = (AnsiString)"  Read MAC register timeout";
  30.             Application->MessageBox( "Execution Timeout : Read MAC register", "TIMEOUT", MB_OK );
  31.             Force_WiFi_Stop();
  32.         }
  33.         break;
  34.         case STATE_MAC_STOP:
  35.             sbMAC->Panels->Items[0]->Text = (AnsiString)"  Read MAC register stop";
  36.         break;
  37.     }
  38.     CurrentPageReset();
  39. }
  40. //---------------------------------------------------------------------------
  41. void __fastcall TfrmWiFi::btnMACWriteClick(TObject *Sender)
  42. {
  43.     //AnsiString text;
  44.     //unsigned int mac_reg_addr, mac_reg_data;
  45.     //text = edtMACMCRAddress->Text;        if( !IsValidHexWiFiMacRegAddr( text, mac_reg_addr ) )           {  edtMACMCRAddressCheck(edtMACMCRAddress);            return;   }
  46.     //text = edtMACMCRData->Text;        if( !IsValidHexWiFiMacRegValue( text, mac_reg_data ) )           {  edtMACMCRDataCheck(edtMACMCRData);            return;   }
  47.     if( ! CheckFields( ACCESS_SINGLE, OP_WRITE ) )
  48.     {
  49.         sbMAC->Panels->Items[0]->Text = (AnsiString) "  Write MAC register fail";
  50.         Application->MessageBox( "Execution Failure : Write MAC register", "FAILURE", MB_OK );
  51.         return;
  52.     }
  53.     CurrentPageLock();
  54.     m_WIFI_MAC_Obj.ConfirmCallback  = ::ConfirmCallback_WriteMACReg;
  55.     if( rbMAC16bits->Checked )
  56.     {
  57.         Compose_MCR16_Parameter( ACCESS_SINGLE );
  58.         Compose_MCR16_Data( ACCESS_SINGLE );
  59.         m_WIFI_MAC_Obj.REQ_Write_MCR16_Setting_To_Reg_Start( m_sMCR16 );
  60.     }
  61.     else
  62.     {
  63.         Compose_MCR_Parameter( ACCESS_SINGLE );
  64.         Compose_MCR_Data( ACCESS_SINGLE );
  65.         m_WIFI_MAC_Obj.REQ_Write_MCR_Setting_To_Reg_Start( m_sMCR );
  66.     }
  67. }
  68. //---------------------------------------------------------------------------
  69. void TfrmWiFi::ConfirmCallback_WriteMACReg( void )
  70. {
  71.     int state = m_WIFI_MAC_Obj.Get_ConfirmState();
  72.     switch( state )
  73.     {
  74.         case STATE_MAC_OK:
  75.         {
  76.             
  77.             sbMAC->Panels->Items[0]->Text = (AnsiString)"  Write MAC register successfully";
  78.         }
  79.         break;
  80.         case STATE_MAC_FAIL:
  81.         {
  82.             sbMAC->Panels->Items[0]->Text = (AnsiString)"  Write MAC register fail";
  83.             Application->MessageBox( "Execution Timeout : Write MAC register", "FAIL", MB_OK );
  84.             Force_WiFi_Stop();
  85.         }
  86.         break;
  87.         case STATE_MAC_TIMEOUT:
  88.         {
  89.             sbMAC->Panels->Items[0]->Text = (AnsiString)"  Write MAC register timeout";
  90.             Application->MessageBox( "Execution Timeout : Write MAC register", "TIMEOUT", MB_OK );
  91.             Force_WiFi_Stop();
  92.         }
  93.         break;
  94.         case STATE_MAC_STOP:
  95.             sbMAC->Panels->Items[0]->Text = (AnsiString)"  Write MAC register stop";
  96.         break;
  97.     }
  98.     CurrentPageReset();
  99. }
  100. //===========================================================================
  101. static AnsiString WIFI_802_11B_TX_RATE[] =
  102. {
  103.     "1",
  104.     "2",
  105.     "5.5",
  106.     "11"
  107. };
  108. static AnsiString WIFI_802_11AG_TX_RATE[] =
  109. {
  110.     "6",
  111.     "9",
  112.     "12",
  113.     "18",
  114.     "24",
  115.     "36",
  116.     "48",
  117.     "54"
  118. };
  119. //---------------------------------------------------------------------------
  120. void  TfrmWiFi::DisplayWiFiTxRate( void )
  121. {
  122.     int i;
  123.     cbTXTxRate->Items->Clear();
  124.     if( m_sWiFiCap.support_802_11b )
  125.     {
  126.         for( i=0; i<sizeof(WIFI_802_11B_TX_RATE)/sizeof(WIFI_802_11B_TX_RATE[0]); i++ )
  127.         {
  128.             cbTXTxRate->Items->Add( WIFI_802_11B_TX_RATE[i] );
  129.         }
  130.     }
  131.     if( m_sWiFiCap.support_802_11a || m_sWiFiCap.support_802_11g )
  132.     {
  133.         for( i=0; i<sizeof(WIFI_802_11AG_TX_RATE)/sizeof(WIFI_802_11AG_TX_RATE[0]); i++ )
  134.         {
  135.             cbTXTxRate->Items->Add( WIFI_802_11AG_TX_RATE[i] );
  136.         }
  137.     }
  138. }
  139. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  140. static AnsiString WIFI_802_11BG_CHANNEL[] =
  141. {
  142.     "1 (2412000)",
  143.     "2 (2417000)",
  144.     "3 (2422000)",
  145.     "4 (2427000)",
  146.     "5 (2432000)",
  147.     "6 (2437000)",
  148.     "7 (2442000)",
  149.     "8 (2447000)",
  150.     "9 (2452000)",
  151.     "10 (2457000)",
  152.     "11 (2462000)",
  153.     "12 (2467000)",
  154.     "13 (2472000)",
  155.     "14 (2484000)"
  156. };
  157. static AnsiString WIFI_802_11A_CHANNEL[] =
  158. {
  159.     "8 (5040000)",
  160.     "12 (5060000)",
  161.     "16 (5080000)",
  162.     "34 (5170000)",
  163.     "36 (5180000)",
  164.     "38 (5190000)",
  165.     "40 (5200000)",
  166.     "42 (5210000)",
  167.     "44 (5220000)",
  168.     "46 (5230000)",
  169.     "48 (5240000)",
  170.     "52 (5260000)",
  171.     "56 (5280000)",
  172.     "60 (5300000)",
  173.     "64 (5320000)",
  174.     "100 (5500000)",
  175.     "104 (5520000)",
  176.     "108 (5540000)",
  177.     "112 (5560000)",
  178.     "116 (5580000)",
  179.     "120 (5600000)",
  180.     "124 (5620000)",
  181.     "128 (5640000)",
  182.     "132 (5660000)",
  183.     "136 (5680000)",
  184.     "140 (5700000)",
  185.     "149 (5745000)",
  186.     "153 (5765000)",
  187.     "157 (5785000)",
  188.     "161 (5805000)",
  189.     "240 (4920000)",
  190.     "244 (4940000)",
  191.     "248 (4960000)",
  192.     "252 (4980000)"
  193. };
  194. //---------------------------------------------------------------------------
  195. void  TfrmWiFi::DisplayWiFiChannel( void )
  196. {
  197.     int i;
  198.     cbTXChannelID->Items->Clear();
  199.     cbCPRChannelID->Items->Clear();
  200.     if( m_sWiFiCap.support_802_11b || m_sWiFiCap.support_802_11g )
  201.     {
  202.         for( i=0; i<sizeof(WIFI_802_11BG_CHANNEL)/sizeof(WIFI_802_11BG_CHANNEL[0]); i++ )
  203.         {
  204.             cbTXChannelID->Items->Add( WIFI_802_11BG_CHANNEL[i] );
  205.             cbCPRChannelID->Items->Add( WIFI_802_11BG_CHANNEL[i] );
  206.         }
  207.     }
  208.     if( m_sWiFiCap.support_802_11a )
  209.     {
  210.         for( i=0; i<sizeof(WIFI_802_11A_CHANNEL)/sizeof(WIFI_802_11A_CHANNEL[0]); i++ )
  211.         {
  212.             cbTXChannelID->Items->Add( WIFI_802_11A_CHANNEL[i] );
  213.             cbCPRChannelID->Items->Add( WIFI_802_11A_CHANNEL[i] );
  214.         }
  215.     }
  216.    // m_WIFI_GNRL_Obj.ConfirmCallback = ::ConfirmCallback_QueryChannelList;
  217.    // m_WIFI_GNRL_Obj.REQ_Query_ChannelList_Start( &m_sChannelList );
  218. }
  219. //---------------------------------------------------------------------------
  220. void TfrmWiFi::ConfirmCallback_QueryChannelList( void )
  221. {
  222.     // channel ID
  223.     cbTXChannelID->Items->Clear();
  224.     cbCPRChannelID->Items->Clear();
  225.     for (unsigned int i = 0; i <m_sChannelList.channel_num; i++)
  226.     {
  227.         cbTXChannelID->Items->Add(m_sChannelList.channel_list[i]);
  228.         cbCPRChannelID->Items->Add(m_sChannelList.channel_list[i]);
  229.     }
  230. }
  231. //---------------------------------------------------------------------------
  232. void TfrmWiFi::Display_CPTXTxPower( void )
  233. {
  234.     //bool bCcks;
  235.     int nTxPwr;
  236.     //if( cbTXTxRate->Text.ToInt() < 4)
  237.     //{
  238.     //    bCcks = 1;
  239.     //}
  240.     //else
  241.     //{
  242.     //    bCcks = 0;
  243.     //}
  244. #if 0
  245.     macFunc.ReadTxPowerFromEeprom(m_nCardIndex, m_nChannel, bCcks, &nTxPwr, m_ndBValue, !m_b5GBand);
  246.     m_szHexTxPwr.Format("%x", nTxPwr);
  247.     if(m_szHexTxPwr.GetLength() > 2){
  248.         m_szHexTxPwr = "0";
  249.     }
  250. #endif
  251. }
  252. //---------------------------------------------------------------------------
  253. void __fastcall TfrmWiFi::HintTimerTimer(TObject *Sender)
  254. {
  255.     HintTimer->Enabled = false;
  256.     lblHint->Visible = false;    
  257. }
  258. //---------------------------------------------------------------------------
  259. void  TfrmWiFi::Force_WiFi_Stop( void )
  260. {
  261.     TimerWiFi->Enabled = false;
  262.     switch(pctlToolSel->ActivePageIndex)
  263.     {
  264.         case PAGEIDX_TXALL:
  265.         {
  266.             if( rbTXOP->Checked )
  267.             {
  268.                 m_WIFI_TXOP_Obj.REQ_Stop();
  269.             }
  270.             else if( rbTXCS->Checked )
  271.             {
  272.                 m_WIFI_TXCS_Obj.REQ_Stop();
  273.             }
  274.             else if( rbCPT->Checked )
  275.             {
  276.                 m_WIFI_CPT_Obj.REQ_Stop();
  277.             }
  278.             else
  279.             {
  280.                 m_WIFI_LF_Obj.REQ_Stop();
  281.             }    
  282.         }
  283.         break;
  284.         case PAGEIDX_CPRX:
  285.             m_WIFI_CPRX_Obj.REQ_Stop();
  286.         break;
  287.         case PAGEIDX_PS:
  288.               m_WIFI_PS_Obj.REQ_Stop();
  289.         break;
  290.         case PAGEIDX_BB:
  291.              m_WIFI_BB_Obj.REQ_Stop();
  292.         break;
  293.         case PAGEIDX_MAC:
  294.              m_WIFI_MAC_Obj.REQ_Stop();
  295.         break;
  296.         case PAGEIDX_EE:
  297.              m_WIFI_EE_Obj.REQ_Stop();
  298.         break;
  299.         case PAGEIDX_SC:
  300.         {
  301.             m_WIFI_SC_Obj.REQ_Stop();
  302.         }
  303.     }
  304.     m_WIFI_STOP_Obj.REQ_Start();
  305. }
  306. //---------------------------------------------------------------------------
  307. unsigned int  TfrmWiFi::ChannelID_To_ChannelFreq( unsigned int channel_id )
  308. {
  309.     unsigned int channel_freq[]=
  310.     {
  311.         2412000, //  1
  312.         2417000, //  2
  313.         2422000, //  3
  314.         2427000, //  4
  315.         2432000, //  5
  316.         2437000, //  6
  317.         2442000, //  7
  318.         2447000, //  8
  319.         2452000, //  9
  320.         2457000, // 10
  321.         2462000, // 11
  322.         2467000, // 12
  323.         2472000, // 13
  324.         2484000  // 14
  325.     };
  326.     return channel_freq[channel_id-1];
  327. }
  328. //---------------------------------------------------------------------------
  329. unsigned int  TfrmWiFi::ChannelFreq_To_ChannelID( unsigned int channel_freq )
  330. {
  331.     int channel_id;
  332.     unsigned int channel_freq_arry[]=
  333.     {
  334.         2412000, //  1
  335.         2417000, //  2
  336.         2422000, //  3
  337.         2427000, //  4
  338.         2432000, //  5
  339.         2437000, //  6
  340.         2442000, //  7
  341.         2447000, //  8
  342.         2452000, //  9
  343.         2457000, // 10
  344.         2462000, // 11
  345.         2467000, // 12
  346.         2472000, // 13
  347.         2484000  // 14
  348.     };
  349.     for( int i=0; i<sizeof(channel_freq); i++)
  350.     {
  351.         if( channel_freq_arry[i] == channel_freq )
  352.         {   channel_id = i+1;
  353.             break;
  354.         }
  355.     }
  356.     return channel_id;
  357. }
  358. //==========================================================================
  359. void __fastcall TfrmWiFi::TimerWiFiTimer(TObject *Sender)
  360. {
  361.     if (1 == btnTXStart->Tag)
  362.     {
  363.         m_WIFI_CPT_Obj.ConfirmCallback  = ::ConfirmCallback_QueryTxStatus;
  364.         m_WIFI_CPT_Obj.REQ_Query_TxStatus_Start(m_bAlcSupport);
  365.     }
  366.     else if (1 == btnCPRStart->Tag)
  367.     {
  368.         m_WIFI_CPRX_Obj.ConfirmCallback  = ::ConfirmCallback_QueryRxStatus;
  369.         m_WIFI_CPRX_Obj.REQ_QueryRxStatus_Start();
  370.     }
  371. }
  372. //---------------------------------------------------------------------------
  373. void TfrmWiFi::ConfirmCallback_QueryTxStatus( void )
  374. {
  375.     int state = m_WIFI_CPT_Obj.Get_ConfirmState();
  376.     switch (state)
  377.     {
  378.         case METAAPP_SUCCESS:
  379.         {
  380.             WiFi_TxStatus_Ex_S  tx_status;
  381.             tx_status = m_WIFI_CPT_Obj.Get_TxStatus();
  382.             stTXPacketSent->Caption = IntToStr(tx_status.pkt_sent_count);
  383.             stTXAckCount->Caption = IntToStr(tx_status.pkt_sent_acked);
  384.             if (m_bAlcSupport)
  385.             {
  386.                 m_stAverageALC->Caption        = IntToStr(tx_status.avgAlc);
  387.                 m_stTXCCKGainControl->Caption  = IntToStr(tx_status.cckGainControl);
  388.                 m_stTXOFDMGainControl->Caption = IntToStr(tx_status.ofdmGainControl);
  389.             }
  390.         }
  391.         break;
  392.         case METAAPP_FAIL:
  393.         {
  394.             sbTX->Panels->Items[0]->Text = (AnsiString)"  Query continuous packet TX status fail";
  395.             Application->MessageBox( "Execution Failure : Query continuous packet TX status", "FAILURE", MB_OK );
  396.             Force_WiFi_Stop();
  397.             CurrentPageReset();
  398.         }
  399.         break;
  400.         case METAAPP_TIMEOUT:
  401.         {
  402.              sbTX->Panels->Items[0]->Text = (AnsiString)"  Query continuous packet TX status timeout";
  403.              Application->MessageBox( "Execution Timeout : Query continuous packet TX status", "TIMEOUT", MB_OK );
  404.              Force_WiFi_Stop();
  405.              CurrentPageReset();
  406.         }
  407.         break;
  408.         case METAAPP_STOP:
  409.         {
  410.              sbTX->Panels->Items[0]->Text = (AnsiString)"  Query continuous packet TX status stop";
  411.              CurrentPageReset();
  412.         }
  413.         break;
  414.     }
  415. }
  416. //---------------------------------------------------------------------------
  417. void TfrmWiFi::ConfirmCallback_QueryRxStatus( void )
  418. {
  419.     int state = m_WIFI_CPRX_Obj.Get_ConfirmState();
  420.     switch( state )
  421.     {
  422.         case STATE_CPRX_OK:
  423.         {
  424.             WiFi_RxStatus_S  rx_status;
  425.             rx_status = m_WIFI_CPRX_Obj.Get_RxStatus();
  426.            // if( WIFI_BB_IPN2128 == m_final_WiFiId )
  427.            // {
  428.            //     stCPRSuccess->Caption = IntToStr( rx_status.int_rx_ok_num - m_sOriRxStatus.int_rx_ok_num );
  429.            // }
  430.            // else
  431.             {
  432.                 stCPRSuccess->Caption = IntToStr( rx_status.pau_rx_pkt_count - m_sOriRxStatus.pau_rx_pkt_count - ( rx_status.pau_crc_err_count - m_sOriRxStatus.pau_crc_err_count ) );
  433.             }
  434.             stCPRCRCErr->Caption  = IntToStr( rx_status.pau_crc_err_count - m_sOriRxStatus.pau_crc_err_count );
  435.             stCPRTotal->Caption   = IntToStr( stCPRSuccess->Caption.ToInt() + stCPRCRCErr->Caption.ToInt() );
  436.             if( stCPRTotal->Caption.ToInt() != 0 )
  437.             {
  438.                 char str[20];
  439.                 sprintf(str, "%.2f", (float) stCPRCRCErr->Caption.ToInt() * 100.0 / stCPRTotal->Caption.ToInt() );
  440.                 stCPRFER->Caption =  (AnsiString) str;
  441.             }
  442.             else
  443.             {   stCPRFER->Caption = "0";
  444.             }
  445.             stCPRint_rx_ok_num->Caption = IntToStr( rx_status.int_rx_ok_num );
  446.     stCPRint_crc_err_num->Caption = IntToStr( rx_status.int_crc_err_num );
  447.         stCPRpau_rx_ok_count->Caption = IntToStr( rx_status.pau_rx_pkt_count );
  448.     stCPRpau_crc_err_count->Caption = IntToStr( rx_status.pau_crc_err_count );
  449.     stCPRpau_cca_count->Caption = IntToStr( rx_status.pau_cca_count );
  450.             stCPRpau_rx_fifo_full_count->Caption = IntToStr( rx_status.pau_rx_fifo_full_count );
  451.             for( int i=0; i<WIFI_TEST_RATE_COUNT; i++ )
  452.             {
  453.                 stCPRGood[i]->Caption = IntToStr( rx_status.int_rate_ok_num[i] - m_sOriRxStatus.int_rate_ok_num[i] );
  454.                 stCPRBad[i]->Caption  = IntToStr( rx_status.int_rate_crc_err_num[i] - m_sOriRxStatus.int_rate_crc_err_num[i] );
  455.                 stCPRSum[i]->Caption   = IntToStr( stCPRGood[i]->Caption.ToInt() + stCPRBad[i]->Caption.ToInt() );
  456.                 if( stCPRSum[i]->Caption.ToInt() != 0 )
  457.                 {
  458.                     char str[20];
  459.                     sprintf(str, "%.2f", (float) stCPRBad[i]->Caption.ToInt() * 100.0 / stCPRSum[i]->Caption.ToInt() );
  460.                     stCPRFer[i]->Caption =  (AnsiString) str;
  461.                 }
  462.                 else
  463.                 {   stCPRFer[i]->Caption = "0";
  464.                 }
  465.             }
  466.             // RSSI
  467.             stCPRMin->Caption = IntToStr( rx_status.int_rssi_min );
  468.             stCPRMax->Caption = IntToStr( rx_status.int_rssi_max );
  469.             stCPRMean->Caption = IntToStr( rx_status.int_rssi_mean );
  470.             stCPRVariance->Caption = IntToStr( rx_status.int_rssi_variance );
  471.             // Preamble
  472.             stCPRLong->Caption = IntToStr( rx_status.int_long_preamble_num );
  473.             stCPRShort->Caption = IntToStr( rx_status.int_short_preamble_num );
  474.             sbCPR->Panels->Items[0]->Text = (AnsiString)"  Query continuous packet RX status successfully";
  475.         }
  476.         break;
  477.         case STATE_CPRX_FAIL:
  478.         {
  479.             sbCPR->Panels->Items[0]->Text = (AnsiString)"  Query continuous packet RX status fail";
  480.             Application->MessageBox( "Execution Failure : Query continuous packet RX status", "FAILURE", MB_OK );
  481.             Force_WiFi_Stop();
  482.             CurrentPageReset();
  483.         }
  484.         break;
  485.         case STATE_CPRX_TIMEOUT:
  486.         {
  487.              sbCPR->Panels->Items[0]->Text = (AnsiString)"  Query continuous packet RX status timeout";
  488.              Application->MessageBox( "Execution Timeout : Query continuous packet RX status", "TIMEOUT", MB_OK );
  489.              Force_WiFi_Stop();
  490.              CurrentPageReset();
  491.         }
  492.         break;
  493.         case STATE_CPRX_STOP:
  494.         {
  495.              sbCPR->Panels->Items[0]->Text = (AnsiString)"  Query continuous packet RX status stop";
  496.              CurrentPageReset();
  497.         }
  498.         break;
  499.     }
  500. }
  501. //===========================================================================
  502. //////////////////////////////////     BBCR    //////////////////////////////
  503. //===========================================================================
  504. void TfrmWiFi::AllocateBBCRVector( void )
  505. {
  506.     if( NULL == m_pvBBCRDisp  )
  507.     {
  508.         m_pvBBCRDisp    = new vector<WiFi_BBReg8_S>;
  509.     }
  510. }
  511. //--------------------------------------------------------------------------
  512. void TfrmWiFi::EraseBBCRVector( void )
  513. {
  514.     if( NULL == m_pvBBCRDisp  )
  515.     {
  516.         if( ! m_pvBBCRDisp->empty() )
  517.         {
  518.             m_pvBBCRDisp->erase( m_pvBBCRDisp->begin(), m_pvBBCRDisp->end() );
  519.         }
  520.     }
  521. }
  522. //--------------------------------------------------------------------------
  523. void TfrmWiFi::DeAllocateBBCRVector( void )
  524. {
  525.     if( m_pvBBCRDisp != NULL )
  526.     {
  527.         if( ! m_pvBBCRDisp->empty() )
  528.         {
  529.             m_pvBBCRDisp->erase( m_pvBBCRDisp->begin(), m_pvBBCRDisp->end() );
  530.         }
  531.         delete m_pvBBCRDisp;
  532.         m_pvBBCRDisp = NULL;
  533.     }
  534. }
  535. //---------------------------------------------------------------------------
  536. void __fastcall TfrmWiFi::btnBBDumpBBRegClick(TObject *Sender)
  537. {
  538.     if( !CheckFields( ACCESS_DUMP, OP_READ ) )
  539.     {
  540.         sbBB->Panels->Items[0]->Text = (AnsiString) "  Dump baseband registers fail";
  541.         Application->MessageBox( "Execution Failure : Dump baseband registers", "FAILURE", MB_OK );
  542.         return;
  543.     }
  544.     FillBBResult(true);
  545.     CurrentPageLock();
  546.     m_uiBBCount=0;
  547.     Compose_BBCR_Parameter( ACCESS_DUMP );
  548.     AllocateBBCRVector();
  549.     EraseBBCRVector();
  550.     m_WIFI_BB_Obj.ConfirmCallback  = ::ConfirmCallback_ReadAllBBReg;
  551.     m_WIFI_BB_Obj.REQ_Read_BBCR_Setting_From_Reg_Start( m_sBBCR );
  552.     sbBB->Panels->Items[0]->Text = (AnsiString)"  Dump baseband registers progressing";
  553. }
  554. //---------------------------------------------------------------------------
  555. void TfrmWiFi::ConfirmCallback_ReadAllBBReg( void )
  556. {
  557.     int state = m_WIFI_BB_Obj.Get_ConfirmState();
  558.     switch( state )
  559.     {
  560.         case STATE_BB_OK:
  561.         {
  562.             m_sBBCR = m_WIFI_BB_Obj.Get_BBCR();
  563.             for (unsigned int i=0; i<m_sBBCR.count; i++ )
  564.             {
  565.                 WiFi_BBReg8_S bbcr;
  566.                 bbcr.index = m_sBBCR.bb_reg8[i].index;
  567.                 bbcr.bbcr_data8 = m_sBBCR.bb_reg8[i].bbcr_data8;
  568.                 m_pvBBCRDisp->push_back( bbcr );
  569.             }
  570.             if( m_sBBCR.bb_reg8[m_sBBCR.count-1].index < m_uiBBEndIdx )
  571.             {
  572.                 Compose_BBCR_Parameter( ACCESS_DUMP );
  573.                 m_WIFI_BB_Obj.ConfirmCallback  = ::ConfirmCallback_ReadAllBBReg;
  574.                 m_WIFI_BB_Obj.REQ_Read_BBCR_Setting_From_Reg_Start( m_sBBCR );
  575.             }
  576.             else
  577.             {
  578.                 FillBBResult( false );
  579.                 sbBB->Panels->Items[0]->Text = (AnsiString)"  Dump baseband registers successfully";
  580.                 CurrentPageReset();
  581.             }
  582.         }
  583.         break;
  584.         case STATE_BB_FAIL:
  585.         {
  586.             sbBB->Panels->Items[0]->Text = (AnsiString)"  Dump baseband registers fail";
  587.             Application->MessageBox( "Execution Timeout : Dump baseband registers", "FAIL", MB_OK );
  588.             Force_WiFi_Stop();
  589.             CurrentPageReset();
  590.         }
  591.         break;
  592.         case STATE_BB_TIMEOUT:
  593.         {
  594.             sbBB->Panels->Items[0]->Text = (AnsiString)"  Dump baseband registers timeout";
  595.             Application->MessageBox( "Execution Timeout : Dump baseband registers", "TIMEOUT", MB_OK );
  596.             Force_WiFi_Stop();
  597.             CurrentPageReset();
  598.         }
  599.         break;
  600.         case STATE_BB_STOP:
  601.         {
  602.             sbBB->Panels->Items[0]->Text = (AnsiString)"  Dump baseband registers stop";
  603.             CurrentPageReset();
  604.         }
  605.         break;
  606.     }
  607. }
  608. //---------------------------------------------------------------------------
  609. void __fastcall TfrmWiFi::btnBBCRDataClick(TObject *Sender)
  610. {
  611.     if( btnBBCRData->Tag==0 )  // Dec-->Hex
  612.     {    btnBBCRData->Tag = 1;
  613.     }
  614.     else  //Hex-->Dec
  615.     {    btnBBCRData->Tag = 0;
  616.     }
  617.     ReDrawFields( PAGEIDX_BB );
  618. }
  619. //---------------------------------------------------------------------------
  620. //---------------------------------------------------------------------------
  621. void __fastcall TfrmWiFi::btnMACMCRDataClick(TObject *Sender)
  622. {
  623.     if( btnMACMCRData->Tag==0 )  // Dec-->Hex
  624.     {   btnMACMCRData->Tag = 1;
  625.     }
  626.     else  //Hex-->Dec
  627.     {    btnMACMCRData->Tag = 0;
  628.     }
  629.     ReDrawFields( PAGEIDX_MAC );
  630. }
  631. //---------------------------------------------------------------------------
  632. void __fastcall TfrmWiFi::btnEEDataClick(TObject *Sender)
  633. {
  634.     if( 0 == btnEEData->Tag )  // Dec-->Hex
  635.     {   btnEEData->Tag = 1;
  636.     }
  637.     else  //Hex-->Dec
  638.     {    btnEEData->Tag = 0;
  639.     }
  640.     ReDrawFields( PAGEIDX_EE );
  641. }
  642. //---------------------------------------------------------------------------
  643. void __fastcall TfrmWiFi::btnEEReadClick(TObject *Sender)
  644. {
  645.     AnsiString text;
  646.     unsigned int ee_addr;
  647.     text = edtEEIndex->Text;        if( !IsValidHexWiFiEERegAddr( text, ee_addr ) )           {  edtMACMCRAddressCheck(edtMACMCRAddress);            return;   }
  648.     m_uiEEPROMIdx = ee_addr;
  649.     Compose_EEPROM_Parameter( ACCESS_SINGLE );
  650.     CurrentPageLock();
  651.     m_WIFI_EE_Obj.ConfirmCallback  = ::ConfirmCallback_ReadEE;
  652.     m_WIFI_EE_Obj.REQ_Read_From_EE_Start( m_sEE );
  653. }
  654. //---------------------------------------------------------------------------
  655. void TfrmWiFi::ConfirmCallback_ReadEE( void )
  656. {
  657.     E_METAAPP_RESULT_T state = m_WIFI_EE_Obj.Get_ConfirmState();
  658.     switch (state)
  659.     {
  660.         case METAAPP_SUCCESS:
  661.         {
  662.             m_sEE = m_WIFI_EE_Obj.Get_EE();
  663.             DeCompose_EEPROM_Data( ACCESS_SINGLE );
  664.             ReDrawFields( PAGEIDX_EE );
  665.             sbEE->Panels->Items[0]->Text = (AnsiString)"  Read EEPROM successfully";
  666.         }
  667.         break;
  668.         case METAAPP_FAIL:
  669.         {
  670.             sbEE->Panels->Items[0]->Text = (AnsiString)"  Read EEPROM fail";
  671.             Application->MessageBox( "Execution Fail : Read EEPROM", "FAIL", MB_OK );
  672.             Force_WiFi_Stop();
  673.         }
  674.         break;
  675.         case METAAPP_TIMEOUT:
  676.         {
  677.             sbEE->Panels->Items[0]->Text = (AnsiString)"  Read EEPROM timeout";
  678.             Application->MessageBox( "Execution Timeout : Read EEPROM", "TIMEOUT", MB_OK );
  679.             Force_WiFi_Stop();
  680.         }
  681.         break;
  682.         case METAAPP_STOP:
  683.         {
  684.             sbEE->Panels->Items[0]->Text = (AnsiString)"  Read EEPROM stop";
  685.         }
  686.         break;
  687.     }
  688.     CurrentPageReset();
  689. }
  690. //--------------------------------------------------------------------------
  691. void __fastcall TfrmWiFi::btnEEWriteClick(TObject *Sender)
  692. {
  693. #if 0
  694.     if( ! CheckFields( ACCESS_SINGLE, OP_WRITE ) )
  695.     {
  696.         sbMAC->Panels->Items[0]->Text = (AnsiString) "  Write EEPROM fail";
  697.         Application->MessageBox( "Execution Failure : Write EEPROM", "FAILURE", MB_OK );
  698.         return;
  699.     }
  700.     CurrentPageLock();
  701.     m_WIFI_EE_Obj.ConfirmCallback  = ::ConfirmCallback_WriteEE;
  702.     m_WIFI_EE_Obj.REQ_Write_To_EE_Start( m_sEE );
  703. #endif
  704.     if( !CheckFields( ACCESS_SINGLE, OP_WRITE ) )
  705.     {
  706.         sbEE->Panels->Items[0]->Text = (AnsiString) "  Write EEPROM fail";
  707.         Application->MessageBox( "Execution Failure : Write EEPROM", "FAILURE", MB_OK );
  708.         return;
  709.     }
  710.     Compose_EEPROM_Parameter( ACCESS_SINGLE );
  711.     Compose_EEPROM_Data( ACCESS_SINGLE );
  712.     m_WIFI_EE_Obj.ConfirmCallback  = ::ConfirmCallback_WriteEE;
  713.     m_WIFI_EE_Obj.REQ_Write_To_EE_Start( m_sEE );
  714. }
  715. //---------------------------------------------------------------------------
  716. void TfrmWiFi::ConfirmCallback_WriteEE( void )
  717. {
  718.     E_METAAPP_RESULT_T state = m_WIFI_EE_Obj.Get_ConfirmState();
  719.     switch( state )
  720.     {
  721.         case METAAPP_SUCCESS:
  722.         {
  723.             sbEE->Panels->Items[0]->Text = (AnsiString)"  Write EEPROM successfully";
  724.         }
  725.         break;
  726.         case METAAPP_FAIL:
  727.         {
  728.             sbEE->Panels->Items[0]->Text = (AnsiString)"  Write EEPROM fail";
  729.             Application->MessageBox( "Execution Timeout : Write EEPROM", "FAIL", MB_OK );
  730.             Force_WiFi_Stop();
  731.         }
  732.         break;
  733.         case METAAPP_TIMEOUT:
  734.         {
  735.             sbEE->Panels->Items[0]->Text = (AnsiString)"  Write EEPROM timeout";
  736.             Application->MessageBox( "Execution Timeout : Write EEPROM", "TIMEOUT", MB_OK );
  737.             Force_WiFi_Stop();
  738.         }
  739.         break;
  740.         case METAAPP_STOP:
  741.         {
  742.             sbEE->Panels->Items[0]->Text = (AnsiString)"  Write EEPROM stop";
  743.         }
  744.         break;
  745.     }
  746.     CurrentPageReset();
  747. }
  748. void __fastcall TfrmWiFi::edtEEIndexCheck(TObject *Sender)
  749. {
  750.     AnsiString  text;
  751.     unsigned int uidata;
  752.     TEdit *edit = (TEdit*)Sender;
  753.     AnsiString as_hint = " value is not valid ";
  754.     char  hint[256];
  755.     strcpy( hint, as_hint.c_str() );
  756.     text = edit->Text;
  757.     if( !IsValidHexWiFiEERegAddr( text, uidata )  )
  758.     {
  759.         ShowHintLabel( edit, hint );
  760.         edit->SetFocus();
  761.         return;
  762.     }
  763.    // if( usdata > m_sWiFiCap.eeprom_size  )
  764.    // {
  765.    //     ShowHintLabel( edit, hint );
  766.    //     edit->SetFocus();
  767.    //     return;
  768.    // }
  769.    // if( 0 != uidata%2 )
  770.    // {
  771.    //     ShowHintLabel( edit, hint );
  772.    //     edit->SetFocus();
  773.    //     return;
  774.    // }
  775.    // if( uidata >= m_sWiFiCap.eeprom_size-1 )
  776.    // {
  777.    //     ShowHintLabel( edit, hint );
  778.   //      edit->SetFocus();
  779.   //      return;
  780.    // }
  781.     m_uiEEPROMIdx = uidata;
  782. }
  783. //---------------------------------------------------------------------------
  784. void __fastcall TfrmWiFi::edtEEDataCheck(TObject *Sender)
  785. {
  786.     AnsiString  text;
  787.     unsigned short  usdata;
  788.     int  band;
  789.     TEdit *edit = (TEdit*)Sender;        
  790.     char  hint[] = " character is not valid ";
  791.     text = edit->Text;
  792.     if( 0 == btnEEData->Tag )  // Dec
  793.     {
  794.         if( !IsValidDecWiFiEERegValue( text, usdata ) )
  795.         {
  796.             ShowHintLabel( edit, hint );
  797.             edit->SetFocus();
  798.             return;
  799.         }
  800.     }
  801.     if( 1 == btnEEData->Tag ) // Hex
  802.     {
  803.         if( !IsValidHexWiFiEERegValue( text, usdata ) )
  804.         {
  805.             ShowHintLabel( edit, hint );
  806.             edit->SetFocus();
  807.             return;
  808.         }
  809.     }
  810.     m_sEE.eeprom[0].eeprom_data16 = usdata;
  811. }
  812. //---------------------------------------------------------------------------
  813. void __fastcall TfrmWiFi::btnTXTxChannelPowerClick(TObject *Sender)
  814. {
  815.     frmWiFiTxProfile->Top  = 152;
  816.     frmWiFiTxProfile->Left = 152;
  817.     frmWiFiTxProfile->Show();
  818. }
  819. void __fastcall TfrmWiFi::btnTXOPUploadFromFlashClick(TObject *Sender)
  820. {
  821.     if( ! NVRAMMan->Get_IsInit() )
  822.     {  frmMainSel->mnuFDMDatabaseClick(Sender);
  823.     }
  824.     if( ! NVRAMMan->Get_IsInit() )
  825.     {
  826.         sbTX->Panels->Items[0]->Text = (AnsiString) " NVRAM database file initialize fail";
  827.         Application->MessageBox( "Execution Failure : NVRAM database file initialize fail", "FAILURE", MB_OK );
  828.         return;
  829.     }
  830.     CurrentPageLock();
  831.     if( m_sWiFiCap.support_802_11g || m_sWiFiCap.support_802_11b )
  832.     {
  833.         m_WIFI_APC_Obj.ConfirmCallback = ::CNF_TXOP_ReadTxPower2400MFromNVRAM;
  834.         m_WIFI_APC_Obj.REQ_Read_TxPower2400M_From_NVRAM_Start();
  835.     }
  836.     else if( m_sWiFiCap.support_802_11a )
  837.     {
  838.         m_WIFI_APC_Obj.ConfirmCallback = ::CNF_TXOP_ReadTxPower5000MFromNVRAM;
  839.         m_WIFI_APC_Obj.REQ_Read_TxPower5000M_From_NVRAM_Start();
  840.     }
  841. }
  842. //---------------------------------------------------------------------------
  843. void  TfrmWiFi::TXOP_UploadTxPower2400MFromFlashDone( void )
  844. {
  845. #if 0
  846.     E_METAAPP_RESULT_T state = m_WIFI_APC_Obj.Get_ConfirmState();
  847.     char  str[20];
  848.     float  fdata;
  849.     switch( state )
  850.     {
  851.         case METAAPP_SUCCESS:
  852.         {
  853.             m_sTxPwr2400M = m_WIFI_APC_Obj.Get_TxChannelDac2400M();
  854.             if( m_sWiFiCap.support_802_11a )
  855.             {
  856.                 m_WIFI_APC_Obj.ConfirmCallback = ::CNF_TXOP_ReadTxPower5000MFromNVRAM;
  857.                 m_WIFI_APC_Obj.REQ_Read_TxPower5000M_From_NVRAM_Start();
  858.             }
  859.             else
  860.             {
  861.                 ReDrawFields( PAGEIDX_TXOP );
  862.                 sbTX->Panels->Items[0]->Text = (AnsiString) "  Upload TX channel power setting from flash successful";
  863.                 CurrentPageReset();
  864.             }
  865.         }
  866.         break;
  867.         case METAAPP_FAIL:
  868.         {
  869.              sbTX->Panels->Items[0]->Text = (AnsiString) "  Upload TX channel power setting fail, please check the version of load and NVRAM database are same.";
  870.              Application->MessageBox( "Execution Failure : Upload TX channel power setting, please check the version of load and NVRAM database are same.", "FAILURE", MB_OK );
  871.              CurrentPageReset();
  872.         }
  873.         break;
  874.         case METAAPP_TIMEOUT:
  875.         {
  876.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Upload TX channel power setting timeout";
  877.             Application->MessageBox( "Execution Timeout : Upload TX channel power setting", "TIMEOUT", MB_OK );
  878.             CurrentPageReset();
  879.         }
  880.         break;
  881.         case METAAPP_STOP:
  882.         {
  883.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Upload TX channel power setting stop";
  884.             CurrentPageReset();
  885.         }
  886.         break;
  887.     }
  888. #endif
  889. }
  890. //---------------------------------------------------------------------------
  891. void  TfrmWiFi::TXOP_UploadTxPower5000MFromFlashDone( void )
  892. {
  893. #if 0
  894.     E_METAAPP_RESULT_T state = m_WIFI_APC_Obj.Get_ConfirmState();
  895.     char  str[20];
  896.     float  fdata;
  897.     switch( state )
  898.     {
  899.         case METAAPP_SUCCESS:
  900.         {
  901.             m_sTxPwr5000M = m_WIFI_APC_Obj.Get_TxChannelDac5000M();
  902.             ReDrawFields( PAGEIDX_TXOP );
  903.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Upload TX channel power setting from flash successful";
  904.         }
  905.         break;
  906.         case METAAPP_FAIL:
  907.         {
  908.              sbTX->Panels->Items[0]->Text = (AnsiString) "  Upload TX channel power setting fail, please check the version of load and NVRAM database are same.";
  909.              Application->MessageBox( "Execution Failure : Upload TX channel power setting, please check the version of load and NVRAM database are same.", "FAILURE", MB_OK );
  910.         }
  911.         break;
  912.         case METAAPP_TIMEOUT:
  913.         {
  914.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Upload TX channel power setting timeout";
  915.             Application->MessageBox( "Execution Timeout : Upload TX channel power setting", "TIMEOUT", MB_OK );
  916.         }
  917.         break;
  918.         case METAAPP_STOP:
  919.         {
  920.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Upload TX channel power setting stop";
  921.         }
  922.         break;
  923.     }
  924.     CurrentPageReset();
  925. #endif
  926. }
  927. //--------------------------------------------------------------------------
  928. void __fastcall TfrmWiFi::btnTXOPDownloadToFlashClick(TObject *Sender)
  929. {
  930.    // if( !CheckFields() )
  931.    // {
  932.    //    // sbBB->Panels->Items[0]->Text = (AnsiString) "  Write baseband register fail";
  933.    //    // Application->MessageBox( "Execution Failure : Write baseband register", "FAILURE", MB_OK );
  934.    //     return;
  935.    // }
  936.     if( ! NVRAMMan->Get_IsInit())
  937.     {  frmMainSel->mnuFDMDatabaseClick(Sender);
  938.     }
  939.     if( ! NVRAMMan->Get_IsInit() )
  940.     {
  941.         sbTX->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialize fail";
  942.         Application->MessageBox( "Execution Failure : NVRAM database file initialize fail", "FAILURE", MB_OK );
  943.         return;
  944.     }
  945.     CurrentPageLock();
  946.     if( m_sWiFiCap.support_802_11g || m_sWiFiCap.support_802_11b )
  947.     {
  948.         m_WIFI_APC_Obj.Set_TxChannelDac2400M( m_sTxPwr2400M );
  949.         m_WIFI_APC_Obj.ConfirmCallback = ::CNF_TXOP_WriteTxPower2400MToNVRAM;
  950.         m_WIFI_APC_Obj.REQ_Write_TxPower2400M_To_NVRAM_Start();
  951.     }
  952.     else if( m_sWiFiCap.support_802_11a )
  953.     {
  954.         m_WIFI_APC_Obj.Set_TxChannelDac5000M( m_sTxPwr5000M );
  955.         m_WIFI_APC_Obj.ConfirmCallback = ::CNF_TXOP_WriteTxPower5000MToNVRAM;
  956.         m_WIFI_APC_Obj.REQ_Write_TxPower5000M_To_NVRAM_Start();
  957.     }
  958. }
  959. //---------------------------------------------------------------------------
  960. void  TfrmWiFi::TXOP_DownloadTxPower2400MToFlashDone( void )
  961. {
  962.     E_METAAPP_RESULT_T state = m_WIFI_APC_Obj.Get_ConfirmState();
  963.     switch( state )
  964.     {
  965.         case METAAPP_SUCCESS:
  966.         {
  967.             if( m_sWiFiCap.support_802_11a )
  968.             {
  969.                 m_WIFI_APC_Obj.Set_TxChannelDac5000M( m_sTxPwr5000M );
  970.                 m_WIFI_APC_Obj.ConfirmCallback = ::CNF_TXOP_WriteTxPower5000MToNVRAM;
  971.                 m_WIFI_APC_Obj.REQ_Write_TxPower5000M_To_NVRAM_Start();
  972.             }
  973.             else
  974.             {
  975.                 sbTX->Panels->Items[0]->Text = (AnsiString) "  Download TX channel power setting to flash successful";
  976.                 CurrentPageReset();
  977.             }
  978.         }
  979.         break;
  980.         case METAAPP_FAIL:
  981.         {
  982.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Download TX channel power setting to flash fail, please check the version of load and NVRAM database are same.";
  983.             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 );
  984.             CurrentPageReset();
  985.         }
  986.         break;
  987.         case METAAPP_TIMEOUT:
  988.         {
  989.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Download TX channel power setting to flash timeout";
  990.             Application->MessageBox( "Execution Timeout : Download TX channel power setting to flash", "TIMEOUT", MB_OK );
  991.             CurrentPageReset();
  992.         }
  993.         break;
  994.         case METAAPP_STOP:
  995.         {
  996.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Download TX channel power setting to flash stop";
  997.             CurrentPageReset();
  998.         }
  999.         break;
  1000.     }
  1001. }
  1002. //---------------------------------------------------------------------------
  1003. void  TfrmWiFi::TXOP_DownloadTxPower5000MToFlashDone( void )
  1004. {
  1005.     E_METAAPP_RESULT_T state = m_WIFI_APC_Obj.Get_ConfirmState();
  1006.     switch( state )
  1007.     {
  1008.         case METAAPP_SUCCESS:
  1009.         {
  1010.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Download TX channel power setting to flash successful";
  1011.         }
  1012.         break;
  1013.         case METAAPP_FAIL:
  1014.         {
  1015.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Download TX channel power setting to flash fail, please check the version of load and NVRAM database are same.";
  1016.             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 );
  1017.         }
  1018.         break;
  1019.         case METAAPP_TIMEOUT:
  1020.         {
  1021.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Download TX channel power setting to flash timeout";
  1022.             Application->MessageBox( "Execution Timeout : Download TX channel power setting to flash", "TIMEOUT", MB_OK );
  1023.         }
  1024.         break;
  1025.         case METAAPP_STOP:
  1026.         {
  1027.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Download TX channel power setting to flash stop";
  1028.         }
  1029.         break;
  1030.     }
  1031.     CurrentPageReset();
  1032. }
  1033. //--------------------------------------------------------------------------
  1034. void __fastcall TfrmWiFi::btnTXOPChangeDBClick(TObject *Sender)
  1035. {
  1036.     frmMainSel->mnuFDMDatabaseClick(Sender);
  1037.     if( ! NVRAMMan->Get_IsInit() )
  1038.     {
  1039.         sbTX->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialization fail";
  1040.         Application->MessageBox( "Execution Failure : NVRAM database file initialization fail", "FAILURE", MB_OK );
  1041.         return;
  1042.     }
  1043.     sbTX->Panels->Items[0]->Text = (AnsiString) "  Change NVRAM database file successfully";
  1044. }
  1045. //---------------------------------------------------------------------------
  1046. void __fastcall TfrmWiFi::btnTXOPLoadFromFileClick(TObject *Sender)
  1047. {
  1048. #if 0
  1049.     char str[512];
  1050.     bool ok;
  1051.     float  fdata;
  1052.     ok = OpenDialog->Execute();
  1053.     if( !ok )
  1054.     {
  1055.         sbTX->Panels->Items[0]->Text = (AnsiString) "  Load TX channel power setting from file fail";
  1056.         return;
  1057.     }
  1058.     strcpy( str, OpenDialog->FileName.c_str() );
  1059.     if( m_sWiFiCap.support_802_11g || m_sWiFiCap.support_802_11b )
  1060.     {
  1061.         ok = m_WIFI_APC_Obj.REQ_Read_TxPower2400M_From_File( str );
  1062.         if( ok )
  1063.         {
  1064.             m_sTxPwr2400M = m_WIFI_APC_Obj.Get_TxChannelDac2400M();
  1065.         }
  1066.         else
  1067.         {
  1068.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Load TX channel power setting from file fail";
  1069.             Application->MessageBox( "Execution Failure : Load TX channel power setting from file", "FAILURE", MB_OK );
  1070.         }
  1071.     }
  1072.     if( m_sWiFiCap.support_802_11a )
  1073.     {
  1074.         ok = m_WIFI_APC_Obj.REQ_Read_TxPower5000M_From_File( str );
  1075.         if( ok )
  1076.         {
  1077.             m_sTxPwr5000M = m_WIFI_APC_Obj.Get_TxChannelDac5000M();
  1078.         }
  1079.         else
  1080.         {
  1081.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Load TX channel power setting from file fail";
  1082.             Application->MessageBox( "Execution Failure : Load TX channel power setting from file", "FAILURE", MB_OK );
  1083.         }
  1084.     }
  1085.     ReDrawFields( PAGEIDX_TXOP );  
  1086.     sbTX->Panels->Items[0]->Text = (AnsiString) "  Load TX channel power setting from file successfully";
  1087. #endif    
  1088. }
  1089. //---------------------------------------------------------------------------
  1090. void __fastcall TfrmWiFi::btnTXOPSaveToFileClick(TObject *Sender)
  1091. {
  1092.     char str[512];
  1093.     bool ok;
  1094.     ok = SaveDialog->Execute();
  1095.     if( !ok )
  1096.     {
  1097.         sbTX->Panels->Items[0]->Text = (AnsiString) "  Save TX channel power setting to file fail";
  1098.         return;
  1099.     }
  1100.     strcpy( str, SaveDialog->FileName.c_str() );
  1101.     if( m_sWiFiCap.support_802_11g || m_sWiFiCap.support_802_11b )
  1102.     {
  1103.         m_WIFI_APC_Obj.Set_TxChannelDac2400M( m_sTxPwr2400M );
  1104.         ok = m_WIFI_APC_Obj.REQ_Write_TxPower2400M_To_File( str );
  1105.         if( !ok )
  1106.         {
  1107.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Save TX channel power setting to file fail";
  1108.             Application->MessageBox( "Execution Failure : Save TX channel power setting to file", "FAILURE", MB_OK );
  1109.             return;
  1110.         }
  1111.     }
  1112.     if( m_sWiFiCap.support_802_11a )
  1113.     {
  1114.         m_WIFI_APC_Obj.Set_TxChannelDac5000M( m_sTxPwr5000M );
  1115.         ok = m_WIFI_APC_Obj.REQ_Write_TxPower5000M_To_File( str );
  1116.         if( !ok )
  1117.         {
  1118.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Save TX channel power setting to file fail";
  1119.             Application->MessageBox( "Execution Failure : Save TX channel power setting to file", "FAILURE", MB_OK );
  1120.             return;
  1121.         }
  1122.     }
  1123.     sbTX->Panels->Items[0]->Text = (AnsiString) "  Save TX channel power setting to file successfully";
  1124. }
  1125. //---------------------------------------------------------------------------
  1126. void TfrmWiFi::REQ_TXOP_SetDbmToDac( int dbm )
  1127. {
  1128. #if 0
  1129.     WiFi_DBM2DAC_Set_S dbm2dac_set;
  1130.     dbm2dac_set.ch_freq = ChannelID_To_ChannelFreq( cbTXOPChannelID->Text.ToInt() );
  1131.     dbm2dac_set.tx_rate = (WiFi_TestRate_E) (WiFi_TestRate_E) GetWiFiTxRateFromStr( cbTXOPTXRate->Text );
  1132.     dbm2dac_set.dbm     = dbm;
  1133.     m_WIFI_APC_Obj.ConfirmCallback = ::CNF_TXOP_SetDbmToDac;
  1134.     m_WIFI_APC_Obj.REQ_SetDbmToDac_Start( dbm2dac_set );
  1135. #endif
  1136. }
  1137. //---------------------------------------------------------------------------
  1138. void TfrmWiFi::CNF_TXOP_SetDbmToDac( void )
  1139. {
  1140.     E_METAAPP_RESULT_T state = m_WIFI_APC_Obj.Get_ConfirmState();
  1141.     switch( state )
  1142.     {
  1143.         case METAAPP_SUCCESS:
  1144.         {
  1145.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Set dBm to DAC successful";
  1146.             m_WIFI_APC_Obj.ConfirmCallback = ::CNF_TXOP_QueryDbmToDac;
  1147.             m_WIFI_APC_Obj.REQ_QueryDbmToDac_Start( );
  1148.         }
  1149.         break;
  1150.         case METAAPP_FAIL:
  1151.         {
  1152.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Set dBm to DAC fail";
  1153.             Application->MessageBox( "Execution Failure : Set dBm to DAC", "FAILURE", MB_OK );
  1154.             CurrentPageReset();
  1155.         }
  1156.         break;
  1157.         case METAAPP_TIMEOUT:
  1158.         {
  1159.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Set dBm to DAC timeout";
  1160.             Application->MessageBox( "Execution Timeout : Set dBm to DAC", "TIMEOUT", MB_OK );
  1161.             CurrentPageReset();
  1162.         }
  1163.         break;
  1164.         case METAAPP_STOP:
  1165.         {
  1166.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Set dBm to DAC stop";
  1167.             CurrentPageReset();
  1168.         }
  1169.         break;
  1170.     }
  1171. }
  1172. //---------------------------------------------------------------------------
  1173. void TfrmWiFi::CNF_TXOP_QueryDbmToDac( void )
  1174. {
  1175. #if 0
  1176.     E_METAAPP_RESULT_T state = m_WIFI_APC_Obj.Get_ConfirmState();
  1177.     switch( state )
  1178.     {
  1179.         case METAAPP_SUCCESS:
  1180.         {
  1181.             ReDrawFields( PAGEIDX_TXOP );
  1182.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Query dBm to DAC successful";
  1183.         }
  1184.         break;
  1185.         case METAAPP_FAIL:
  1186.         {
  1187.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Query dBm to DAC fail";
  1188.             Application->MessageBox( "Execution Failure : Query dBm to DAC", "FAILURE", MB_OK );
  1189.             CurrentPageReset();
  1190.         }
  1191.         break;
  1192.         case METAAPP_TIMEOUT:
  1193.         {
  1194.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Query dBm to DAC timeout";
  1195.             Application->MessageBox( "Execution Timeout : Query dBm to DAC", "TIMEOUT", MB_OK );
  1196.         }
  1197.         break;
  1198.         case METAAPP_STOP:
  1199.         {
  1200.             sbTX->Panels->Items[0]->Text = (AnsiString) "  Set dBm to DAC stop";
  1201.         }
  1202.         break;
  1203.     }
  1204.     CurrentPageReset();
  1205. #endif
  1206. }
  1207. //--------------------------------------------------------------------------
  1208. void __fastcall TfrmWiFi::rbTXOPMaxClick(TObject *Sender)
  1209. {
  1210.     REQ_TXOP_SetDbmToDac( WIFI_DBM_MAX );
  1211. }
  1212. //---------------------------------------------------------------------------
  1213. void __fastcall TfrmWiFi::rbTXOP0dBmClick(TObject *Sender)
  1214. {
  1215.     REQ_TXOP_SetDbmToDac( WIFI_DBM_0 );
  1216. }
  1217. //---------------------------------------------------------------------------
  1218. void __fastcall TfrmWiFi::rbTXOP5dBmClick(TObject *Sender)
  1219. {
  1220.     REQ_TXOP_SetDbmToDac( WIFI_DBM_5 );
  1221. }
  1222. //---------------------------------------------------------------------------
  1223. void __fastcall TfrmWiFi::rbTXOP10dBmClick(TObject *Sender)
  1224. {
  1225.     REQ_TXOP_SetDbmToDac( WIFI_DBM_10 );
  1226. }
  1227. //===========================================================================
  1228. //////////////////////////////////     MCR    //////////////////////////////
  1229. //===========================================================================
  1230. void TfrmWiFi::AllocateMCRVector( void )
  1231. {
  1232.     if( NULL == m_pvMCRDisp  )
  1233.     {
  1234.         m_pvMCRDisp    = new vector<WiFi_MACReg32_S>;
  1235.     }
  1236. }
  1237. //--------------------------------------------------------------------------
  1238. void TfrmWiFi::EraseMCRVector( void )
  1239. {
  1240.     if( NULL == m_pvMCRDisp  )
  1241.     {
  1242.         if( ! m_pvMCRDisp->empty() )
  1243.         {
  1244.             m_pvMCRDisp->erase( m_pvMCRDisp->begin(), m_pvMCRDisp->end() );
  1245.         }
  1246.     }
  1247. }
  1248. //--------------------------------------------------------------------------
  1249. void TfrmWiFi::DeAllocateMCRVector( void )
  1250. {
  1251.     if( m_pvMCRDisp != NULL )
  1252.     {
  1253.         if( ! m_pvMCRDisp->empty() )
  1254.         {
  1255.             m_pvMCRDisp->erase( m_pvMCRDisp->begin(), m_pvMCRDisp->end() );
  1256.         }
  1257.         delete m_pvMCRDisp;
  1258.         m_pvMCRDisp = NULL;
  1259.     }
  1260. }
  1261. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1262. void TfrmWiFi::AllocateMCR16Vector( void )
  1263. {
  1264.     if( NULL == m_pvMCR16Disp  )
  1265.     {
  1266.         m_pvMCR16Disp    = new vector<WiFi_MACReg16_S>;
  1267.     }
  1268. }
  1269. //--------------------------------------------------------------------------
  1270. void TfrmWiFi::EraseMCR16Vector( void )
  1271. {
  1272.     if( NULL == m_pvMCR16Disp  )
  1273.     {
  1274.         if( ! m_pvMCR16Disp->empty() )
  1275.         {
  1276.             m_pvMCR16Disp->erase( m_pvMCR16Disp->begin(), m_pvMCR16Disp->end() );
  1277.         }
  1278.     }
  1279. }
  1280. //--------------------------------------------------------------------------
  1281. void TfrmWiFi::DeAllocateMCR16Vector( void )
  1282. {
  1283.     if( m_pvMCR16Disp != NULL )
  1284.     {
  1285.         if( ! m_pvMCR16Disp->empty() )
  1286.         {
  1287.             m_pvMCR16Disp->erase( m_pvMCR16Disp->begin(), m_pvMCR16Disp->end() );
  1288.         }
  1289.         delete m_pvMCR16Disp;
  1290.         m_pvMCR16Disp = NULL;
  1291.     }
  1292. }
  1293. //---------------------------------------------------------------------------
  1294. void __fastcall TfrmWiFi::btnMACDumpAllMacRegClick(TObject *Sender)
  1295. {
  1296.     if( !CheckFields( ACCESS_DUMP, OP_READ ) )
  1297.     {
  1298.         sbBB->Panels->Items[0]->Text = (AnsiString) "  Dump baseband registers fail";
  1299.         Application->MessageBox( "Execution Failure : Dump baseband registers", "FAILURE", MB_OK );
  1300.         return;
  1301.     }
  1302.     
  1303.     CurrentPageLock();
  1304.     FillMACResult(true);
  1305.     m_WIFI_MAC_Obj.ConfirmCallback  = ::ConfirmCallback_ReadAllMACReg;
  1306.     m_uiMACCount=0;
  1307.     if( rbMAC16bits->Checked )
  1308.     {
  1309.         AllocateMCR16Vector();
  1310.         EraseMCR16Vector();
  1311.         Compose_MCR16_Parameter( ACCESS_DUMP );
  1312.         m_WIFI_MAC_Obj.REQ_Read_MCR16_Setting_From_Reg_Start( m_sMCR16 );
  1313.     }
  1314.     else
  1315.     {
  1316.         AllocateMCRVector();
  1317.         EraseMCRVector();
  1318.         Compose_MCR_Parameter( ACCESS_DUMP );
  1319.         m_WIFI_MAC_Obj.REQ_Read_MCR_Setting_From_Reg_Start( m_sMCR );
  1320.     }
  1321.     sbMAC->Panels->Items[0]->Text = (AnsiString)"  Dump all MAC register progressing";
  1322. }
  1323. //---------------------------------------------------------------------------
  1324. void TfrmWiFi::ConfirmCallback_ReadAllMACReg( void )
  1325. {
  1326.     int state = m_WIFI_MAC_Obj.Get_ConfirmState();
  1327.     switch( state )
  1328.     {
  1329.         case STATE_MAC_OK:
  1330.         {
  1331.             if( rbMAC16bits->Checked )
  1332.             {
  1333.                 m_sMCR16 = m_WIFI_MAC_Obj.Get_MCR16();
  1334.                 for (unsigned int i=0; i<m_sMCR16.count; i++ )
  1335.                 {
  1336.                     m_pvMCR16Disp->push_back( m_sMCR16.mac_reg16[i] );
  1337.                 }
  1338.             }
  1339.             else
  1340.             {
  1341.                 m_sMCR = m_WIFI_MAC_Obj.Get_MCR();
  1342.                 for (unsigned int i=0; i<m_sMCR.count; i++)
  1343.                 {
  1344.                     m_pvMCRDisp->push_back(m_sMCR.mac_reg32[i]);
  1345.                 }
  1346.             }
  1347.             m_WIFI_MAC_Obj.ConfirmCallback  = ::ConfirmCallback_ReadAllMACReg;
  1348.             if( rbMAC16bits->Checked )
  1349.             {
  1350.                 if( m_sMCR16.mac_reg16[m_sMCR16.count-1].index < m_uiMacEndAddr )
  1351.                 {
  1352.                     Compose_MCR16_Parameter( ACCESS_DUMP );
  1353.                     m_WIFI_MAC_Obj.REQ_Read_MCR16_Setting_From_Reg_Start( m_sMCR16 );
  1354.                 }
  1355.                 else
  1356.                 {
  1357.                     FillMACResult( false );
  1358.                     sbMAC->Panels->Items[0]->Text = (AnsiString)"  Dump MAC registers successfully";
  1359.                     CurrentPageReset();
  1360.                 }
  1361.             }
  1362.             else
  1363.             {
  1364.                 if( m_sMCR.mac_reg32[m_sMCR.count-1].index < m_uiMacEndAddr )
  1365.                 {
  1366.                     Compose_MCR_Parameter( ACCESS_DUMP );
  1367.                     m_WIFI_MAC_Obj.REQ_Read_MCR_Setting_From_Reg_Start( m_sMCR );
  1368.                 }
  1369.                 else
  1370.                 {
  1371.                     FillMACResult( false );
  1372.                     sbMAC->Panels->Items[0]->Text = (AnsiString)"  Dump MAC registers successfully";
  1373.                     CurrentPageReset();
  1374.                 }
  1375.             }
  1376.         }
  1377.         break;
  1378.        // case STATE_MAC_SECTION_OK:
  1379.        // {
  1380.        //     FillMACResult( false );
  1381.        //     m_WIFI_MAC_Obj.ConfirmCallback  = ::ConfirmCallback_ReadAllMACReg;
  1382.        //    // m_WIFI_MAC_Obj.REQ_Read_From_AllReg();
  1383.        //
  1384.        //    // sbBB->Panels->Items[0]->Text = (AnsiString)"  Dump all baseband register successfully";
  1385.        // }
  1386.       //  break;
  1387.         case STATE_MAC_FAIL:
  1388.         {
  1389.             sbMAC->Panels->Items[0]->Text = (AnsiString)"  Dump MAC registers fail";
  1390.             Application->MessageBox( "Execution Timeout : Dump MAC registers", "FAIL", MB_OK );
  1391.             Force_WiFi_Stop();
  1392.             CurrentPageReset();
  1393.         }
  1394.         break;
  1395.         case STATE_MAC_TIMEOUT:
  1396.         {
  1397.             sbMAC->Panels->Items[0]->Text = (AnsiString)"  Dump MAC registers timeout";
  1398.             Application->MessageBox( "Execution Timeout : Dump MAC registers", "TIMEOUT", MB_OK );
  1399.             Force_WiFi_Stop();
  1400.             CurrentPageReset();
  1401.         }
  1402.         break;
  1403.         case STATE_MAC_STOP:
  1404.         {
  1405.             sbMAC->Panels->Items[0]->Text = (AnsiString)"  Dump MAC registers stop";
  1406.             CurrentPageReset();
  1407.         }
  1408.         break;
  1409.     }
  1410. }
  1411. //============================================================================
  1412. //////////////////////////////////     EEPRM    //////////////////////////////
  1413. //============================================================================
  1414. //--------------------------------------------------------------------------
  1415. void TfrmWiFi::AllocateEEPROMVector( void )
  1416. {
  1417.     if( NULL == m_pvEEDisp  )
  1418.     {
  1419.         m_pvEEDisp    = new vector<WiFi_EEPROM_S>;
  1420.     }
  1421. }
  1422. //--------------------------------------------------------------------------
  1423. void TfrmWiFi::EraseEEPROMVector( void )
  1424. {
  1425.     if( NULL == m_pvEEDisp  )
  1426.     {
  1427.         if( ! m_pvEEDisp->empty() )
  1428.         {
  1429.             m_pvEEDisp->erase( m_pvEEDisp->begin(), m_pvEEDisp->end() );
  1430.         }
  1431.     }
  1432. }
  1433. //--------------------------------------------------------------------------
  1434. void TfrmWiFi::DeAllocateEEPROMVector( void )
  1435. {
  1436.     if( m_pvEEDisp != NULL )
  1437.     {
  1438.         if( ! m_pvEEDisp->empty() )
  1439.         {
  1440.             m_pvEEDisp->erase( m_pvEEDisp->begin(), m_pvEEDisp->end() );
  1441.         }
  1442.         delete m_pvEEDisp;
  1443.         m_pvEEDisp = NULL;
  1444.     }
  1445. }
  1446. //----------------------------------------------------------------------------
  1447. void __fastcall TfrmWiFi::btnEEClick(TObject *Sender)
  1448. {
  1449.     if( !CheckFields( ACCESS_DUMP, OP_READ ) )
  1450.     {
  1451.         sbEE->Panels->Items[0]->Text = (AnsiString) "  Dump EEPROM fail";
  1452.         Application->MessageBox( "Execution Failure : Dump EEPROM", "FAILURE", MB_OK );
  1453.         return;
  1454.     }
  1455.     FillEEResult(true);
  1456.     CurrentPageLock();
  1457.     m_uiEEPROMCount = 0;
  1458.     Compose_EEPROM_Parameter( ACCESS_DUMP );
  1459. //    m_uiDispEEPROMCount = 0;
  1460.     AllocateEEPROMVector();
  1461.     EraseEEPROMVector();
  1462.     m_WIFI_EE_Obj.ConfirmCallback  = ::ConfirmCallback_ReadAllEE;
  1463.     m_WIFI_EE_Obj.REQ_Read_From_EE_Start( m_sEE );
  1464.     sbEE->Panels->Items[0]->Text = (AnsiString)"  Dump EEPROM progressing";
  1465. }
  1466. //---------------------------------------------------------------------------
  1467. void TfrmWiFi::ConfirmCallback_ReadAllEE( void )
  1468. {
  1469.     int state = m_WIFI_EE_Obj.Get_ConfirmState();
  1470.     switch( state )
  1471.     {
  1472.         case METAAPP_SUCCESS:
  1473.         {
  1474.             m_sEE = m_WIFI_EE_Obj.Get_EE();
  1475.             for (unsigned int i=0; i<m_sEE.count; i++ )
  1476.             {
  1477.                 WiFi_EEPROM_S eeprom;
  1478.                 eeprom.index = m_sEE.eeprom[i].index;
  1479.                 eeprom.eeprom_data16 = m_sEE.eeprom[i].eeprom_data16;
  1480.                 m_pvEEDisp->push_back( eeprom );
  1481.             }
  1482.           //  m_uiDispEEPROMCount += m_sEE.count;
  1483.             //FillEEResult( false );
  1484.             if( m_sEE.eeprom[m_sEE.count-1].index < m_uiEEPROMEndIdx )
  1485.             {
  1486.                 Compose_EEPROM_Parameter( ACCESS_DUMP );
  1487.                 m_WIFI_EE_Obj.ConfirmCallback  = ::ConfirmCallback_ReadAllEE;
  1488.                 m_WIFI_EE_Obj.REQ_Read_From_EE_Start( m_sEE );
  1489.             }
  1490.             else
  1491.             {
  1492.                 FillEEResult( false );
  1493.                 sbEE->Panels->Items[0]->Text = (AnsiString)"  Dump all EEPROM successfully";
  1494.                 CurrentPageReset();
  1495.             }
  1496.         }
  1497.         break;
  1498.        // case STATE_EE_SECTION_OK:
  1499.       //  {
  1500.        //     FillEEResult( false );
  1501.        //     m_WIFI_EE_Obj.ConfirmCallback  = ::ConfirmCallback_ReadAllEE;
  1502.        //     m_WIFI_EE_Obj.REQ_Read_From_AllEE();
  1503.        //
  1504.        //     sbBB->Panels->Items[0]->Text = (AnsiString)"  Dump all baseband register successfully";
  1505.       //  }
  1506.        // break;
  1507.         case METAAPP_FAIL:
  1508.         {
  1509.             sbEE->Panels->Items[0]->Text = (AnsiString)"  Dump all EEPROM fail";
  1510.             Application->MessageBox( "Execution Timeout : Dump all EEPROM", "FAIL", MB_OK );
  1511.             Force_WiFi_Stop();
  1512.             CurrentPageReset();
  1513.         }
  1514.         break;
  1515.         case METAAPP_TIMEOUT:
  1516.         {
  1517.             sbEE->Panels->Items[0]->Text = (AnsiString)"  Dump all EEPROM timeout";
  1518.             Application->MessageBox( "Execution Timeout : Dump all EEPROM", "TIMEOUT", MB_OK );
  1519.             Force_WiFi_Stop();
  1520.             CurrentPageReset();
  1521.         }
  1522.         break;
  1523.         case METAAPP_STOP:
  1524.         {
  1525.             sbEE->Panels->Items[0]->Text = (AnsiString)"  Dump all EEPROM stop";
  1526.             CurrentPageReset();
  1527.         }
  1528.         break;
  1529.     }
  1530. }
  1531. //----------------------------------------------------------------------------
  1532. void __fastcall TfrmWiFi::btnPSStartClick(TObject *Sender)
  1533. {
  1534.      CurrentPageLock();
  1535.      m_WIFI_PS_Obj.ConfirmCallback  = ::ConfirmCallback_PS;
  1536.      m_WIFI_PS_Obj.REQ_Start( (WiFi_PowerManagementMode_E) cbPSPowerMode->ItemIndex +1);
  1537. }
  1538. //---------------------------------------------------------------------------
  1539. //---------------------------------------------------------------------------
  1540. void TfrmWiFi::ConfirmCallback_PS( void )
  1541. {
  1542.     int state = m_WIFI_PS_Obj.Get_ConfirmState();
  1543.     switch( state )
  1544.     {
  1545.         case STATE_PS_OK:
  1546.         {
  1547.             sbPS->Panels->Items[0]->Text = (AnsiString)"  Power saving test progressing";
  1548.         }
  1549.         break;
  1550.         case STATE_PS_FAIL:
  1551.         {
  1552.             sbPS->Panels->Items[0]->Text = (AnsiString)"  Power saving test fail";
  1553.             Application->MessageBox( "Execution Timeout : Power saving test ", "FAIL", MB_OK );
  1554.             Force_WiFi_Stop();
  1555.             CurrentPageReset();
  1556.         }
  1557.         break;
  1558.         case STATE_PS_TIMEOUT:
  1559.         {
  1560.             sbPS->Panels->Items[0]->Text = (AnsiString)"  Power saving test timeout";
  1561.             Application->MessageBox( "Execution Timeout : Power saving test ", "TIMEOUT", MB_OK );
  1562.             Force_WiFi_Stop();
  1563.             CurrentPageReset();
  1564.         }
  1565.         break;
  1566.         case STATE_PS_STOP:
  1567.         {
  1568.             sbPS->Panels->Items[0]->Text = (AnsiString)"  Power saving test stop";
  1569.             CurrentPageReset();
  1570.         }
  1571.         break;
  1572.     }
  1573. }
  1574. void __fastcall TfrmWiFi::btnPSStopClick(TObject *Sender)
  1575. {
  1576.     if( 1 == btnPSStart->Tag )
  1577.     {
  1578.         Force_WiFi_Stop();
  1579.         CurrentPageReset();
  1580.         sbPS->Panels->Items[0]->Text = (AnsiString)"  Stop power saving test successfully";
  1581.     }
  1582. }
  1583. //---------------------------------------------------------------------------
  1584. void __fastcall TfrmWiFi::btnCPRQueryRxCounterClick(TObject *Sender)
  1585. {
  1586.     CurrentPageLock();
  1587.     m_WIFI_CPRX_Obj.ConfirmCallback  = ::ConfirmCallback_QueryRxCounter;
  1588.     m_WIFI_CPRX_Obj.REQ_QueryRxCounter_Start();
  1589. }
  1590. //---------------------------------------------------------------------------
  1591. void TfrmWiFi::ConfirmCallback_QueryRxCounter( void )
  1592. {
  1593.     int state = m_WIFI_CPRX_Obj.Get_ConfirmState();
  1594.     switch( state )
  1595.     {
  1596.         case STATE_CPRX_OK:
  1597.         {
  1598.             WiFi_RxCounter_S  rx_counter;
  1599.             rx_counter = m_WIFI_CPRX_Obj.Get_RxCounter();
  1600.             stCPRED->Caption = IntToStr( rx_counter.ED );
  1601.             stCPROSD->Caption = IntToStr( rx_counter.OSD );
  1602.             stCPRSQ1->Caption = IntToStr( rx_counter.SQ1 );
  1603.             stCPRSFD->Caption = IntToStr( rx_counter.SFD );
  1604.             stCPRCRC16->Caption = IntToStr( rx_counter.CRC16 );
  1605.             
  1606.             sbCPR->Panels->Items[0]->Text = (AnsiString)"  Query continuous packet RX counter successfully";
  1607.         }
  1608.         break;
  1609.         case STATE_CPRX_FAIL:
  1610.         {
  1611.             sbCPR->Panels->Items[0]->Text = (AnsiString)"  Query continuous packet RX counter fail";
  1612.             Application->MessageBox( "Execution Failure : Query continuous packet RX counter", "FAILURE", MB_OK );
  1613.             Force_WiFi_Stop();
  1614.         }
  1615.         break;
  1616.         case STATE_CPRX_TIMEOUT:
  1617.         {
  1618.              sbCPR->Panels->Items[0]->Text = (AnsiString)"  Query continuous packet RX counter timeout";
  1619.              Application->MessageBox( "Execution Timeout : Query continuous packet RX counter", "TIMEOUT", MB_OK );
  1620.              Force_WiFi_Stop();
  1621.         }
  1622.         break;
  1623.         case STATE_CPRX_STOP:
  1624.         {
  1625.              sbCPR->Panels->Items[0]->Text = (AnsiString)"  Query continuous packet RX status stop";
  1626.         }
  1627.         break;
  1628.     }
  1629.     CurrentPageReset();
  1630. }
  1631. //--------------------------------------------------------------------------
  1632. void __fastcall TfrmWiFi::btnTXTxPowerDacClick(TObject *Sender)
  1633. {
  1634.     if( 0 == btnTXTxPowerDac->Tag )  // Dec-->Hex
  1635.     {    btnTXTxPowerDac->Tag = 1;
  1636.     }
  1637.     else  //Hex-->Dec
  1638.     {    btnTXTxPowerDac->Tag = 0;
  1639.     }
  1640.     ReDrawFields( PAGEIDX_TXALL );
  1641. }
  1642. //---------------------------------------------------------------------------
  1643. void __fastcall TfrmWiFi::btnTXOPTxPowerDacClick(TObject *Sender)
  1644. {
  1645. #if 0
  1646.     if( 0 == btnTXOPTxPowerDac->Tag )  // Dec-->Hex
  1647.     {    btnTXOPTxPowerDac->Tag = 1;
  1648.     }
  1649.     else  //Hex-->Dec
  1650.     {    btnTXOPTxPowerDac->Tag = 0;
  1651.     }
  1652.     ReDrawFields( PAGEIDX_TXOP );
  1653. #endif    
  1654. }
  1655. //---------------------------------------------------------------------------
  1656. void __fastcall TfrmWiFi::btnTXCSTxPowerDacClick(TObject *Sender)
  1657. {
  1658. #if 0
  1659.     if( 0 == btnTXTxPowerDac->Tag )  // Dec-->Hex
  1660.     {    btnTXTxPowerDac->Tag = 1;
  1661.     }
  1662.     else  //Hex-->Dec
  1663.     {    btnTXTxPowerDac->Tag = 0;
  1664.     }
  1665.     ReDrawFields( PAGEIDX_TXCS );
  1666. #endif    
  1667. }
  1668. //---------------------------------------------------------------------------
  1669. void __fastcall TfrmWiFi::btnLFTxPowerDacClick(TObject *Sender)
  1670. {
  1671. #if 0
  1672.     if( 0 == btnLFTxPowerDac->Tag )  // Dec-->Hex
  1673.     {    btnLFTxPowerDac->Tag = 1;
  1674.     }
  1675.     else  //Hex-->Dec
  1676.     {    btnLFTxPowerDac->Tag = 0;
  1677.     }
  1678.     ReDrawFields( PAGEIDX_LF );
  1679. #endif    
  1680. }
  1681. //---------------------------------------------------------------------------
  1682. void __fastcall TfrmWiFi::edtTXOPTxPowerDACCheck(TObject *Sender)
  1683. {
  1684. #if 0
  1685.     unsigned char  us_data;
  1686.     AnsiString  text;
  1687.     TEdit *edit = (TEdit*)Sender;
  1688.     char  hint[] = " character is not valid ";
  1689.     text = edit->Text;
  1690.     if( 0 == btnTXOPTxPowerDac->Tag )  // Dec
  1691.     {
  1692.         if( !IsValidDecWiFiTxPowerDac( text, uc_data ) )
  1693.         {
  1694.             ShowHintLabel( edit, hint );
  1695.             edit->SetFocus();
  1696.             return;
  1697.         }
  1698.     }
  1699.     else  // Hex
  1700.     {
  1701.         if( !IsValidHexWiFiTxPowerDac( text, uc_data ) )
  1702.         {
  1703.             ShowHintLabel( edit, hint );
  1704.             edit->SetFocus();
  1705.             return;
  1706.         }
  1707.     }
  1708.     m_sTxPwr2400M.CCKTxPWR[cbTXOPChannelID->ItemIndex] = uc_data;
  1709. #endif
  1710. }
  1711. //---------------------------------------------------------------------------
  1712. void __fastcall TfrmWiFi::edtTXCSTxPowerDACCheck(TObject *Sender)
  1713. {
  1714. #if 0
  1715.     unsigned char  uc_data;
  1716.     AnsiString  text;
  1717.     TEdit *edit = (TEdit*)Sender;
  1718.     char  hint[] = " character is not valid ";
  1719.     text = edit->Text;
  1720.     if( 0 == btnTXCSTxPowerDac->Tag )  // Dec
  1721.     {
  1722.         if( !IsValidDecWiFiTxPowerDac( text, uc_data ) )
  1723.         {
  1724.             ShowHintLabel( edit, hint );
  1725.             edit->SetFocus();
  1726.             return;
  1727.         }
  1728.     }
  1729.     else  // Hex
  1730.     {
  1731.         if( !IsValidHexWiFiTxPowerDac( text, uc_data ) )
  1732.         {
  1733.             ShowHintLabel( edit, hint );
  1734.             edit->SetFocus();
  1735.             return;
  1736.         }
  1737.     }
  1738.     m_sTxPwr2400M.CCKTxPWR[cbTXCSChannelID->ItemIndex] = uc_data;
  1739. #endif
  1740. }
  1741. //---------------------------------------------------------------------------
  1742. void __fastcall TfrmWiFi::edtLFTxPowerDACCheck(TObject *Sender)
  1743. {
  1744. #if 0
  1745.      unsigned char  uc_data;
  1746.     AnsiString  text;
  1747.     TEdit *edit = (TEdit*)Sender;
  1748.     char  hint[] = " character is not valid ";
  1749.     text = edit->Text;
  1750.     if( 0 == btnTXTxPowerDac->Tag )  // Dec
  1751.     {
  1752.         if( !IsValidDecWiFiTxPowerDac( text, uc_data ) )
  1753.         {
  1754.             ShowHintLabel( edit, hint );
  1755.             edit->SetFocus();
  1756.             return;
  1757.         }
  1758.     }
  1759.     else  // Hex
  1760.     {
  1761.         if( !IsValidHexWiFiTxPowerDac( text, uc_data ) )
  1762.         {
  1763.             ShowHintLabel( edit, hint );
  1764.             edit->SetFocus();
  1765.             return;
  1766.         }
  1767.     }
  1768.     m_sTxPwr2400M.CCKTxPWR[cbLFChannelID->ItemIndex] = uc_data;
  1769. #endif    
  1770. }
  1771. //---------------------------------------------------------------------------
  1772. void __fastcall TfrmWiFi::miCopyClick(TObject *Sender)
  1773. {
  1774.     switch(pctlToolSel->ActivePageIndex)
  1775.     {
  1776.         case PAGEIDX_BB:
  1777.         {
  1778.             memBBResult->SelectAll();
  1779.             memBBResult->CopyToClipboard();
  1780.         }
  1781.         break;
  1782.         case PAGEIDX_MAC:
  1783.         {
  1784.             memMACResult->SelectAll();
  1785.             memMACResult->CopyToClipboard();
  1786.         }
  1787.         break;
  1788.         case PAGEIDX_EE:
  1789.         {
  1790.             memEEResult->SelectAll();
  1791.             memEEResult->CopyToClipboard();
  1792.         }
  1793.         break;
  1794.     }    
  1795. }
  1796. //---------------------------------------------------------------------------
  1797. void __fastcall TfrmWiFi::btnBBStopClick(TObject *Sender)
  1798. {
  1799.     if( 1 == btnBBRead->Tag )
  1800.     {
  1801.         Force_WiFi_Stop();
  1802.         CurrentPageReset();
  1803.         sbBB->Panels->Items[0]->Text = (AnsiString)"  Stop baseband register read/write successfully";
  1804.     }
  1805. }
  1806. //---------------------------------------------------------------------------
  1807. void __fastcall TfrmWiFi::btnMACStopClick(TObject *Sender)
  1808. {
  1809.     if( 1 == btnMACRead->Tag )
  1810.     {
  1811.         Force_WiFi_Stop();
  1812.         CurrentPageReset();
  1813.         sbMAC->Panels->Items[0]->Text = (AnsiString)"  Stop MAC register read/write successfully";
  1814.     }
  1815. }
  1816. //---------------------------------------------------------------------------
  1817. void __fastcall TfrmWiFi::btnEEStopClick(TObject *Sender)
  1818. {
  1819.     if( 1 == btnEERead->Tag )
  1820.     {
  1821.         Force_WiFi_Stop();
  1822.         CurrentPageReset();
  1823.         sbEE->Panels->Items[0]->Text = (AnsiString)"  Stop EEPRom read/write successfully";
  1824.     }
  1825. }
  1826. //---------------------------------------------------------------------------
  1827. void __fastcall TfrmWiFi::rbTXOPClick(TObject *Sender)
  1828. {
  1829.     DisableCPTUIComponent();
  1830. }
  1831. //---------------------------------------------------------------------------
  1832. void __fastcall TfrmWiFi::rbTXCSClick(TObject *Sender)
  1833. {
  1834.     DisableCPTUIComponent();
  1835. }
  1836. //---------------------------------------------------------------------------
  1837. void __fastcall TfrmWiFi::rbTXLFClick(TObject *Sender)
  1838. {
  1839.     DisableCPTUIComponent();
  1840. }
  1841. //---------------------------------------------------------------------------
  1842. void __fastcall TfrmWiFi::rbCPTClick(TObject *Sender)
  1843. {
  1844.     EnableCPTUIComponent();
  1845. }    
  1846. //---------------------------------------------------------------------------
  1847. void __fastcall TfrmWiFi::btnTXCalTxDCClick(TObject *Sender)
  1848. {
  1849.     m_WIFI_TXDC_Obj.ConfirmCallback  = ::ConfirmCallback_TxDcOffsetCal;
  1850.     m_WIFI_TXDC_Obj.REQ_TxDcOffsetCal_Start();
  1851.     CurrentPageLock();
  1852.     sbTX->Panels->Items[0]->Text = (AnsiString)"  TX DC offset calibration progressing";
  1853. }     
  1854. //-------------------------------------------------------
  1855. void  TfrmWiFi::ConfirmCallback_TxDcOffsetCal( void )
  1856. {
  1857.     E_METAAPP_RESULT_T state = m_WIFI_TXDC_Obj.Get_ConfirmState();
  1858.     switch( state )
  1859.     {
  1860.         case METAAPP_SUCCESS:
  1861.         {
  1862.             m_sTxDcOffset = m_WIFI_TXDC_Obj.Get_TxDcOffset();
  1863.             ReDrawFields( PAGEIDX_TXALL );
  1864.             sbTX->Panels->Items[0]->Text = (AnsiString)"  TX DC offset calibration successfully";
  1865.         }
  1866.         break;
  1867.         case METAAPP_FAIL:
  1868.         {
  1869.             sbTX->Panels->Items[0]->Text = (AnsiString)"  TX DC offset calibration fail";
  1870.             Application->MessageBox( "Execution Failure : TX DC offset calibration", "FAILURE", MB_OK );
  1871.             Force_WiFi_Stop();
  1872.         }
  1873.         break;
  1874.         case METAAPP_TIMEOUT:
  1875.         {
  1876.              sbTX->Panels->Items[0]->Text = (AnsiString)"  TX DC offset calibration timeout";
  1877.              Application->MessageBox( "Execution Timeout : TX DC offset calibration TX", "TIMEOUT", MB_OK );
  1878.              Force_WiFi_Stop();
  1879.         }
  1880.         break;
  1881.         case METAAPP_STOP:
  1882.         {
  1883.              sbTX->Panels->Items[0]->Text = (AnsiString)"  TX DC offset calibration stop";
  1884.         }
  1885.         break;
  1886.     }
  1887.     CurrentPageReset();
  1888. }
  1889. //---------------------------------------------------------------------------
  1890. void __fastcall TfrmWiFi::edtTXFramCtrlCheck(TObject *Sender)
  1891. {
  1892.     AnsiString  text;
  1893.     unsigned char  ucdata;
  1894.     TEdit *edit = (TEdit*)Sender;
  1895.     char  hint[] = " value shall be 0~255 ";
  1896.     text = edit->Text;
  1897.     if( !IsValidHexWiFiMacHeaderFrameCtrl( text, ucdata ) )
  1898.     {
  1899.         ShowHintLabel( edit, hint );
  1900.         edit->SetFocus();
  1901.         return;
  1902.     }
  1903.     m_sWiFiCPT.s_mac_header.frame_ctrl[edit->Tag] = ucdata;
  1904. }
  1905. //---------------------------------------------------------------------------
  1906. void __fastcall TfrmWiFi::edtTXDurationCheck(TObject *Sender)
  1907. {
  1908.     AnsiString  text;
  1909.     unsigned char  ucdata;
  1910.     TEdit *edit = (TEdit*)Sender;
  1911.     char  hint[] = " value shall be 0~255 ";
  1912.     text = edit->Text;
  1913.     if( !IsValidHexWiFiMacHeaderDuration( text, ucdata ) )
  1914.     {
  1915.         ShowHintLabel( edit, hint );
  1916.         edit->SetFocus();
  1917.         return;
  1918.     }
  1919.     m_sWiFiCPT.s_mac_header.duration[edit->Tag] = ucdata;
  1920. }
  1921. //---------------------------------------------------------------------------
  1922. void __fastcall TfrmWiFi::edtTXAddress1Check(TObject *Sender)
  1923. {
  1924.     AnsiString  text;
  1925.     unsigned char  ucdata;
  1926.     TEdit *edit = (TEdit*)Sender;
  1927.     char  hint[] = " value shall be 0~255 ";
  1928.     text = edit->Text;
  1929.     if( !IsValidHexWiFiMacHeaderAddress( text, ucdata ) )
  1930.     {
  1931.         ShowHintLabel( edit, hint );
  1932.         edit->SetFocus();
  1933.         return;
  1934.     }
  1935.     m_sWiFiCPT.s_mac_header.address1[edit->Tag] = ucdata;
  1936. }
  1937. //---------------------------------------------------------------------------
  1938. void __fastcall TfrmWiFi::edtTXAddress2Check(TObject *Sender)
  1939. {
  1940.     AnsiString  text;
  1941.     unsigned char  ucdata;
  1942.     TEdit *edit = (TEdit*)Sender;
  1943.     char  hint[] = " value shall be 0~255 ";
  1944.     text = edit->Text;
  1945.     if( !IsValidHexWiFiMacHeaderAddress( text, ucdata ) )
  1946.     {
  1947.         ShowHintLabel( edit, hint );
  1948.         edit->SetFocus();
  1949.         return;
  1950.     }
  1951.     m_sWiFiCPT.s_mac_header.address2[edit->Tag] = ucdata;
  1952. }
  1953. //---------------------------------------------------------------------------
  1954. void __fastcall TfrmWiFi::edtTXAddress3Check(TObject *Sender)
  1955. {
  1956.     AnsiString  text;
  1957.     unsigned char  ucdata;
  1958.     TEdit *edit = (TEdit*)Sender;
  1959.     char  hint[] = " value shall be 0~255 ";
  1960.     text = edit->Text;
  1961.     if( !IsValidHexWiFiMacHeaderAddress( text, ucdata ) )
  1962.     {
  1963.         ShowHintLabel( edit, hint );
  1964.         edit->SetFocus();
  1965.         return;
  1966.     }
  1967.     m_sWiFiCPT.s_mac_header.address3[edit->Tag] = ucdata;
  1968. }
  1969. //---------------------------------------------------------------------------
  1970. void __fastcall TfrmWiFi::edtTXSeqCtrlCheck(TObject *Sender)
  1971. {
  1972.     AnsiString  text;
  1973.     unsigned char  ucdata;
  1974.     TEdit *edit = (TEdit*)Sender;
  1975.     char  hint[] = " value shall be 0~255 ";
  1976.     text = edit->Text;
  1977.     if( !IsValidHexWiFiMacHeaderSeqCtrl( text, ucdata ) )
  1978.     {
  1979.         ShowHintLabel( edit, hint );
  1980.         edit->SetFocus();
  1981.         return;
  1982.     }
  1983.     m_sWiFiCPT.s_mac_header.seq_ctrl[edit->Tag] = ucdata;
  1984. }
  1985. //---------------------------------------------------------------------------
  1986. void __fastcall TfrmWiFi::edtTXIDcOffsetCheck(TObject *Sender)
  1987. {
  1988.     AnsiString  text;
  1989.     unsigned char  ucdata;
  1990.     TEdit *edit = (TEdit*)Sender;
  1991.     char  hint[] = " value shall be 0~255 ";
  1992.     text = edit->Text;
  1993.     if( 0 == btnTXIDC->Tag ) // Dec
  1994.     {
  1995.         if( !IsValidDecWiFiTxDcOffset( text, ucdata ) )
  1996.         {
  1997.             ShowHintLabel( edit, hint );
  1998.             edit->SetFocus();
  1999.             return;
  2000.         }
  2001.     }
  2002.     else
  2003.     {
  2004.         if( !IsValidHexWiFiTxDcOffset( text, ucdata ) )
  2005.         {
  2006.             ShowHintLabel( edit, hint );
  2007.             edit->SetFocus();
  2008.             return;
  2009.         }
  2010.     }
  2011.     m_sTxDcOffset.i_ch_offset = ucdata;
  2012. }
  2013. //---------------------------------------------------------------------------
  2014. void __fastcall TfrmWiFi::edtTXQDCOffsetCheck(TObject *Sender)
  2015. {
  2016.     AnsiString  text;
  2017.     unsigned char  ucdata;
  2018.     TEdit *edit = (TEdit*)Sender;
  2019.     char  hint[] = " value shall be 0~255 ";
  2020.     text = edit->Text;
  2021.     if( 0 == btnTXQDC->Tag ) // Dec
  2022.     {
  2023.         if( !IsValidDecWiFiTxDcOffset( text, ucdata ) )
  2024.         {
  2025.             ShowHintLabel( edit, hint );
  2026.             edit->SetFocus();
  2027.             return;
  2028.         }
  2029.     }
  2030.     else
  2031.     {
  2032.         if( !IsValidHexWiFiTxDcOffset( text, ucdata ) )
  2033.         {
  2034.             ShowHintLabel( edit, hint );
  2035.             edit->SetFocus();
  2036.             return;
  2037.         }
  2038.     }
  2039.     m_sTxDcOffset.q_ch_offset = ucdata;
  2040. }
  2041. //---------------------------------------------------------------------------
  2042. void __fastcall TfrmWiFi::btnTXIDCClick(TObject *Sender)
  2043. {
  2044.     if( 0 == btnTXIDC->Tag )  // Dec-->Hex
  2045.     {   btnTXIDC->Tag = 1;
  2046.     }
  2047.     else  //Hex-->Dec
  2048.     {   btnTXIDC->Tag = 0;
  2049.     }
  2050.     ReDrawFields( PAGEIDX_TXALL );
  2051. }
  2052. //---------------------------------------------------------------------------
  2053. void __fastcall TfrmWiFi::btnTXQDCClick(TObject *Sender)
  2054. {
  2055.     if( 0 == btnTXQDC->Tag )  // Dec-->Hex
  2056.     {   btnTXQDC->Tag = 1;
  2057.     }
  2058.     else  //Hex-->Dec
  2059.     {   btnTXQDC->Tag = 0;
  2060.     }
  2061.     ReDrawFields( PAGEIDX_TXALL );
  2062. }
  2063. //---------------------------------------------------------------------------
  2064. void __fastcall TfrmWiFi::btnTXDCUploadFromFlashClick(TObject *Sender)
  2065. {
  2066.     if( ! NVRAMMan->Get_IsInit() )
  2067.     {  frmMainSel->mnuFDMDatabaseClick(Sender);
  2068.     }
  2069.     if( ! NVRAMMan->Get_IsInit() )
  2070.     {
  2071.         sbTX->Panels->Items[0]->Text = (AnsiString) " NVRAM database file initialize fail";
  2072.         Application->MessageBox( "Execution Failure : NVRAM database file initialize fail", "FAILURE", MB_OK );
  2073.         return;
  2074.     }
  2075.     CurrentPageLock();
  2076.     m_WIFI_TXDC_Obj.ConfirmCallback = ::CNF_ReadTxDCFromNVRAM;
  2077.     m_WIFI_TXDC_Obj.REQ_Read_From_NVRAM_Start(); 
  2078. }
  2079. //---------------------------------------------------------------------------
  2080. void __fastcall TfrmWiFi::btnTXDCDownloadToFlashClick(TObject *Sender)
  2081. {
  2082.      if( ! NVRAMMan->Get_IsInit() )
  2083.     {  frmMainSel->mnuFDMDatabaseClick(Sender);
  2084.     }
  2085.     if( ! NVRAMMan->Get_IsInit() )
  2086.     {
  2087.         sbTX->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialize fail";
  2088.         Application->MessageBox( "Execution Failure : NVRAM database file initialize fail", "FAILURE", MB_OK );
  2089.         return;
  2090.     }
  2091.     CurrentPageLock();
  2092.     m_WIFI_TXDC_Obj.Set_TxDcOffset( m_sTxDcOffset );
  2093.     m_WIFI_TXDC_Obj.ConfirmCallback = ::CNF_WriteTxDCToNVRAM;
  2094.     m_WIFI_TXDC_Obj.REQ_Write_To_NVRAM_Start();
  2095. }
  2096. //---------------------------------------------------------------------------
  2097. void __fastcall TfrmWiFi::btnBBRegSettingClick(TObject *Sender)
  2098. {
  2099.     frmWiFiBBCR->Top  = 1;
  2100.     frmWiFiBBCR->Left = 77;
  2101.     frmWiFiBBCR->Show();
  2102. }
  2103. //---------------------------------------------------------------------------
  2104. void __fastcall TfrmWiFi::btnMACRegSettingClick(TObject *Sender)
  2105. {
  2106.     frmWiFiMCR->Top  = 1;
  2107.     frmWiFiMCR->Left = 77;
  2108.     frmWiFiMCR->Show();    
  2109. }
  2110. //---------------------------------------------------------------------------
  2111. void __fastcall TfrmWiFi::btnSCStartClick(TObject *Sender)
  2112. {
  2113.     if( stSCScriptFile->Caption.AnsiCompareIC("") == 0 )
  2114.     {
  2115.         stSC->Panels->Items[0]->Text = (AnsiString)"  Please select script file before start test";
  2116.         Application->MessageBox( "Execution Timeout : Please select script file before start test", "FAIL", MB_OK );
  2117.         return;
  2118.     }
  2119.     S_WIFISC  wifisc;
  2120.     wifisc.hPostMsgDestHandle = this->Handle;
  2121.     wifisc.filename           = stSCScriptFile->Caption;
  2122.     wifisc.log                = m_pSCLog;
  2123.     CurrentPageLock();
  2124.     m_WIFI_SC_Obj.ConfirmCallback  = ::ConfirmCallback_SC;
  2125.     m_WIFI_SC_Obj.REQ_Start( wifisc );
  2126. }
  2127. //---------------------------------------------------------------------------
  2128. void TfrmWiFi::ConfirmCallback_SC( void )
  2129. {
  2130.     int state = m_WIFI_SC_Obj.Get_ConfirmState();
  2131.     switch( state )
  2132.     {
  2133.         case STATE_SC_OK:
  2134.         {
  2135.             stSC->Panels->Items[0]->Text = (AnsiString)"  Script test successfully";
  2136.         }
  2137.         break;
  2138.         case STATE_SC_FAIL:
  2139.         {
  2140.             stSC->Panels->Items[0]->Text = (AnsiString)"  Script test fail";
  2141.             Application->MessageBox( "Execution Fail : Script test", "FAIL", MB_OK );
  2142.            // Force_WiFi_Stop();
  2143.         }
  2144.         break;
  2145.         case STATE_SC_TIMEOUT:
  2146.         {
  2147.             
  2148.             stSC->Panels->Items[0]->Text = (AnsiString)"  Script test timeout";
  2149.             Application->MessageBox( "Execution Timeout : Script test", "TIMEOUT", MB_OK );
  2150.             //Force_WiFi_Stop();
  2151.         }
  2152.         break;
  2153.         case STATE_SC_STOP:
  2154.             stSC->Panels->Items[0]->Text = (AnsiString)"  Script test stop";
  2155.         break;
  2156.     }
  2157.     FillSCResult();
  2158.     CurrentPageReset();
  2159. }
  2160. //---------------------------------------------------------------------------
  2161. void __fastcall TfrmWiFi::btnSCStopClick(TObject *Sender)
  2162. {
  2163.     if( 1 == btnSCStart->Tag )
  2164.     {
  2165.         Force_WiFi_Stop();
  2166.         CurrentPageReset();
  2167.         stSC->Panels->Items[0]->Text = (AnsiString)"  Stop script test successfully";
  2168.     }
  2169. }
  2170. //---------------------------------------------------------------------------
  2171. //===========================================================================
  2172. void __fastcall TfrmWiFi::btnSCScriptFileClick(TObject *Sender)
  2173. {
  2174.     char str[512];
  2175.     bool ok;
  2176.     ok = dlgOpenScriptFile->Execute();
  2177.     if( !ok )
  2178.     {
  2179.         stSC->Panels->Items[0]->Text = (AnsiString) "  Load script file fail";
  2180.         return;
  2181.     }
  2182.     strcpy( str, dlgOpenScriptFile->FileName.c_str() );
  2183.     //ok = m_WIFI_SC_Obj.REQ_Open_File( str );
  2184.     stSCScriptFile->Caption = str;
  2185.     stSC->Panels->Items[0]->Text = (AnsiString) "  Setup script file successfully";
  2186.     
  2187. }
  2188. //--------------------------------------------------------------------------
  2189. void TfrmWiFi::FillSCResult( void )
  2190. {
  2191.     for(int i=0; i<m_pSCLog->Count; i++ )
  2192.     {
  2193.         memSCResult->Lines->Add(m_pSCLog->Strings[i]);
  2194.     }
  2195.     m_pSCLog->Clear();
  2196. }
  2197. //--------------------------------------------------------------------------
  2198. void __fastcall TfrmWiFi::btnEEPROMSettingClick(TObject *Sender)
  2199. {
  2200.     frmWiFiEEPROM->Top  = 1;
  2201.     frmWiFiEEPROM->Left = 77;
  2202.     frmWiFiEEPROM->Show();
  2203. }
  2204. //---------------------------------------------------------------------------
  2205. //---------------------------------------------------------------------------
  2206. void TfrmWiFi::Compose_BBCR_Parameter( E_ACCESS_TYPE type )
  2207. {
  2208.     if( ACCESS_SINGLE == type )
  2209.     {
  2210.         m_sBBCR.count     = 1;
  2211.         m_sBBCR.bb_reg8[0].index = m_uiBBIdx;
  2212.     }
  2213.     else
  2214.     {
  2215.         m_sBBCR.count     = m_uiBBEndIdx - m_uiBBBeginIdx - m_uiBBCount*WIFI_MAX_COUNT + 1;
  2216.         if( m_sBBCR.count > WIFI_MAX_COUNT )  m_sBBCR.count = WIFI_MAX_COUNT;
  2217.         for (unsigned int i=0; i<m_sBBCR.count; i++)
  2218.         {
  2219.              m_sBBCR.bb_reg8[i].index = m_uiBBBeginIdx + i + m_uiBBCount*WIFI_MAX_COUNT;;
  2220.         }
  2221.         m_uiBBCount++;
  2222.     }
  2223. }
  2224. //---------------------------------------------------------------------------
  2225. void TfrmWiFi::Compose_BBCR_Data( E_ACCESS_TYPE type )
  2226. {
  2227.     if( ACCESS_SINGLE == type )
  2228.     {
  2229.         m_sBBCR.bb_reg8[0].bbcr_data8 = m_ucBBValue;
  2230.     }
  2231.     else
  2232.     {
  2233.     }
  2234. }
  2235. //---------------------------------------------------------------------------
  2236. void TfrmWiFi::DeCompose_BBCR_Data( E_ACCESS_TYPE type )
  2237. {
  2238.     if( ACCESS_SINGLE == type )
  2239.     {
  2240.         m_ucBBValue = m_sBBCR.bb_reg8[0].bbcr_data8;
  2241.     }
  2242.     else
  2243.     {
  2244.     }    
  2245. }
  2246. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2247. void TfrmWiFi::Compose_MCR_Parameter( E_ACCESS_TYPE type )
  2248. {
  2249.     if( ACCESS_SINGLE == type )
  2250.     {
  2251.         m_sMCR.count                = 1;
  2252.         m_sMCR.mac_reg32[0].index   = m_uiMacAddr;
  2253.     }
  2254.     else
  2255.     {
  2256.         int data_size = sizeof(m_sMCR.mac_reg32[0].mcr_data32);
  2257.         m_sMCR.count     = (m_uiMacEndAddr - m_uiMacBeginAddr)/data_size + 1 - m_uiMACCount*WIFI_MAX_COUNT;
  2258.         if( m_sMCR.count > WIFI_MAX_COUNT )  m_sMCR.count = WIFI_MAX_COUNT;
  2259.         for (unsigned  int i=0; i<m_sMCR.count; i++)
  2260.         {
  2261.              m_sMCR.mac_reg32[i].index = m_uiMacBeginAddr + (i + m_uiMACCount*WIFI_MAX_COUNT)*data_size;
  2262.         }
  2263.         m_uiMACCount++;
  2264.     }
  2265. }
  2266. //---------------------------------------------------------------------------
  2267. void TfrmWiFi::Compose_MCR_Data( E_ACCESS_TYPE type )
  2268. {
  2269.     if( ACCESS_SINGLE == type )
  2270.     {
  2271.         m_sMCR.mac_reg32[0].mcr_data32 = m_uiMacData;
  2272.     }
  2273. }
  2274. //---------------------------------------------------------------------------
  2275. void TfrmWiFi::DeCompose_MCR_Data( E_ACCESS_TYPE type )
  2276. {
  2277.     if( ACCESS_SINGLE == type )
  2278.     {
  2279.         m_uiMacData = m_sMCR.mac_reg32[0].mcr_data32;
  2280.     }
  2281. }
  2282. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2283. void TfrmWiFi::Compose_MCR16_Parameter( E_ACCESS_TYPE type )
  2284. {
  2285.     if( ACCESS_SINGLE == type )
  2286.     {
  2287.         m_sMCR16.count     = 1;
  2288.         m_sMCR16.mac_reg16[0].index  = m_uiMacAddr;
  2289.     }
  2290.     else
  2291.     {
  2292.         int data_size = sizeof(m_sMCR16.mac_reg16[0].mcr_data16);
  2293.         m_sMCR16.count     = (m_uiMacEndAddr - m_uiMacBeginAddr)/data_size + 1 - m_uiMACCount*WIFI_MAX_COUNT;
  2294.         if( m_sMCR16.count > WIFI_MAX_COUNT )  m_sMCR16.count = WIFI_MAX_COUNT;
  2295.         for (unsigned int i=0; i<m_sMCR16.count; i++)
  2296.         {
  2297.              m_sMCR16.mac_reg16[i].index = m_uiMacBeginAddr + (i + m_uiMACCount*WIFI_MAX_COUNT)*data_size;
  2298.         }
  2299.         m_uiMACCount++;
  2300.     }
  2301. }
  2302. //---------------------------------------------------------------------------
  2303. void TfrmWiFi::Compose_MCR16_Data( E_ACCESS_TYPE type )
  2304. {
  2305.     if( ACCESS_SINGLE == type )
  2306.     {
  2307.         m_sMCR16.mac_reg16[0].mcr_data16 = m_usMac16Data;
  2308.     }
  2309. }
  2310. //---------------------------------------------------------------------------
  2311. void TfrmWiFi::DeCompose_MCR16_Data( E_ACCESS_TYPE type )
  2312. {
  2313.     if( ACCESS_SINGLE == type )
  2314.     {
  2315.         m_usMac16Data = m_sMCR16.mac_reg16[0].mcr_data16;
  2316.     }
  2317. }
  2318. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2319. void TfrmWiFi::Compose_EEPROM_Parameter( E_ACCESS_TYPE type )
  2320. {
  2321.     switch( type )
  2322.     {
  2323.         case ACCESS_SINGLE:
  2324.         {
  2325.             m_sEE.count           = 1;
  2326.             m_sEE.eeprom[0].index = m_uiEEPROMIdx;
  2327.         }
  2328.         break;
  2329.         case ACCESS_DUMP:
  2330.         {
  2331.             // int data_size = sizeof(m_sEE.eeprom[0].eeprom_data16);
  2332.             m_sEE.count     = (m_uiEEPROMEndIdx - m_uiEEPROMBeginIdx) -m_uiEEPROMCount*WIFI_MAX_COUNT + 1;
  2333.             if( m_sEE.count > WIFI_MAX_COUNT )  m_sEE.count = WIFI_MAX_COUNT;
  2334.             for (unsigned int i=0; i<m_sEE.count; i++)
  2335.             {
  2336.                 m_sEE.eeprom[i].index = m_uiEEPROMBeginIdx + (i+ m_uiEEPROMCount*WIFI_MAX_COUNT);
  2337.             }
  2338.             m_uiEEPROMCount++;
  2339.         }
  2340.         break;
  2341.         case ACCESS_TX_POWER:
  2342.         {
  2343.             m_sEE.count = 14;
  2344.             for (unsigned int i=0; i<m_sEE.count; i++)
  2345.             {
  2346.                 m_sEE.eeprom[i].index = ADDR_MT5911_EEPROM_2_4G_CCK_TX_POWER + i;
  2347.             }
  2348.         }
  2349.         break;
  2350.         case ACCESS_TX_DC_OFFSET:
  2351.         {
  2352.             m_sEE.count = 1;
  2353.             m_sEE.eeprom[0].index = ADDR_MT5911_EEPROM_DAC_IQ_OFFSET;
  2354.         }
  2355.         break;
  2356.     }
  2357. }
  2358. //---------------------------------------------------------------------------
  2359. void TfrmWiFi::Compose_EEPROM_Data( E_ACCESS_TYPE type )
  2360. {
  2361.     if( ACCESS_SINGLE == type )
  2362.     {
  2363.         m_sEE.eeprom[0].eeprom_data16   = m_usEEPROMData;
  2364.     }
  2365. }
  2366. //---------------------------------------------------------------------------
  2367. void TfrmWiFi::DeCompose_EEPROM_Data( E_ACCESS_TYPE type )
  2368. {
  2369.     if( ACCESS_SINGLE == type )
  2370.     {
  2371.         m_usEEPROMData  = m_sEE.eeprom[0].eeprom_data16;
  2372.     }
  2373. }
  2374. //===========================================================================
  2375. void __fastcall TfrmWiFi::edtBBBeginCRIndexCheck(TObject *Sender)
  2376. {
  2377.     AnsiString  text;
  2378.     unsigned int  uidata;
  2379.     TEdit *edit = (TEdit*)Sender;
  2380.     char  hint[] = " value should be 0~127 ";
  2381.     text = edit->Text;
  2382.     if( !IsValidDecWiFiBBRegAddr( text, uidata ) )
  2383.     {
  2384.         ShowHintLabel( edit, hint );
  2385.         edit->SetFocus();
  2386.         return;
  2387.     }
  2388.     if( uidata > 127 )
  2389.     {
  2390.         ShowHintLabel( edit, hint );
  2391.         edit->SetFocus();
  2392.         return;
  2393.     }
  2394.     m_uiBBBeginIdx = uidata;
  2395. }
  2396. //---------------------------------------------------------------------------
  2397. void __fastcall TfrmWiFi::edtBBEndCRIndexCheck(TObject *Sender)
  2398. {
  2399.     AnsiString  text;
  2400.     unsigned int  uidata;
  2401.     TEdit *edit = (TEdit*)Sender;
  2402.     char  hint[] = " value should be 0~127 ";
  2403.     text = edit->Text;
  2404.     if( !IsValidDecWiFiBBRegAddr( text, uidata ) )
  2405.     {
  2406.         ShowHintLabel( edit, hint );
  2407.         edit->SetFocus();
  2408.         return;
  2409.     }
  2410.     if( uidata > 127 )
  2411.     {
  2412.         ShowHintLabel( edit, hint );
  2413.         edit->SetFocus();
  2414.         return;
  2415.     }
  2416.     m_uiBBEndIdx = uidata;
  2417. }
  2418. //---------------------------------------------------------------------------
  2419. void __fastcall TfrmWiFi::edtMACBeginMCRAddrCheck(TObject *Sender)
  2420. {
  2421.     AnsiString  text;
  2422.     unsigned int  uidata;
  2423.     TEdit *edit = (TEdit*)Sender;
  2424.     char  hint[] = " character is not valid ";
  2425.     char  hint16[] = " value should be multiple of 2 ";
  2426.     char  hint32[] = " value should be multiple of 4 ";
  2427.     text = edit->Text;
  2428.     if( !IsValidHexWiFiMacRegAddr( text, uidata ) )
  2429.     {
  2430.         ShowHintLabel( edit, hint );
  2431.         edit->SetFocus();
  2432.         return;
  2433.     }
  2434.     if( rbMAC16bits->Checked )
  2435.     {
  2436.         if( 0 != uidata%2 )
  2437.         {
  2438.             ShowHintLabel( edit, hint16 );
  2439.             edit->SetFocus();
  2440.             return;
  2441.         }
  2442.     }
  2443.     else
  2444.     {
  2445.         if( 0 != uidata%4 )
  2446.         {
  2447.             ShowHintLabel( edit, hint32 );
  2448.             edit->SetFocus();
  2449.             return;
  2450.         }
  2451.     }
  2452.     m_uiMacBeginAddr = uidata;
  2453. }
  2454. //---------------------------------------------------------------------------
  2455. void __fastcall TfrmWiFi::edtMACEndMCRAddrCheck(TObject *Sender)
  2456. {
  2457.     AnsiString  text;
  2458.     unsigned int  uidata;
  2459.     TEdit *edit = (TEdit*)Sender;
  2460.     char  hint[] = " character is not valid ";
  2461.     char  hint16[] = " value should be multiple of 2 ";
  2462.     char  hint32[] = " value should be multiple of 4 ";
  2463.     text = edit->Text;
  2464.     if( !IsValidHexWiFiMacRegAddr( text, uidata ) )
  2465.     {
  2466.         ShowHintLabel( edit, hint );
  2467.         edit->SetFocus();
  2468.         return;
  2469.     }
  2470.     if( rbMAC16bits->Checked )
  2471.     {
  2472.         if( 0 != uidata%2 )
  2473.         {
  2474.             ShowHintLabel( edit, hint16 );
  2475.             edit->SetFocus();
  2476.             return;
  2477.         }
  2478.     }
  2479.     else
  2480.     {
  2481.         if( 0 != uidata%4 )
  2482.         {
  2483.             ShowHintLabel( edit, hint32 );
  2484.             edit->SetFocus();
  2485.             return;
  2486.         }
  2487.     }
  2488.     m_uiMacEndAddr = uidata;
  2489. }
  2490. //---------------------------------------------------------------------------
  2491. void __fastcall TfrmWiFi::edtBeginEEIndexCheck(TObject *Sender)
  2492. {
  2493.     AnsiString  text;
  2494.     unsigned int uidata;
  2495.     TEdit *edit = (TEdit*)Sender;
  2496.     AnsiString as_hint = " value is not valid";
  2497.     char  hint[256];
  2498.     strcpy( hint, as_hint.c_str() );
  2499.     text = edit->Text;
  2500.     if( !IsValidHexWiFiEERegAddr( text, uidata )  )
  2501.     {
  2502.         ShowHintLabel( edit, hint );
  2503.         edit->SetFocus();
  2504.         return;
  2505.     }
  2506.    // if( uidata >= m_sWiFiCap.eeprom_size-1 )
  2507.    // {
  2508.    //     ShowHintLabel( edit, hint );
  2509.    //     edit->SetFocus();
  2510.    //     return;
  2511.    // }
  2512.    // if( 0 != uidata%2 )
  2513.    // {
  2514.    //     ShowHintLabel( edit, hint );
  2515.    //     edit->SetFocus();
  2516.    //     return;
  2517.    // }
  2518.     m_uiEEPROMBeginIdx = uidata;
  2519. }
  2520. //---------------------------------------------------------------------------
  2521. void __fastcall TfrmWiFi::edtEndEEIndexCheck(TObject *Sender)
  2522. {
  2523.     AnsiString  text;
  2524.     unsigned int uidata;
  2525.     TEdit *edit = (TEdit*)Sender;
  2526.     AnsiString as_hint = " value should be multiple of 2, ragne 0~" + IntToStr(m_sWiFiCap.eeprom_size-1);
  2527.     char  hint[256];
  2528.     strcpy( hint, as_hint.c_str() );
  2529.     text = edit->Text;
  2530.     if( !IsValidHexWiFiEERegAddr( text, uidata )  )
  2531.     {
  2532.         ShowHintLabel( edit, hint );
  2533.         edit->SetFocus();
  2534.         return;
  2535.     }
  2536.   //  if( uidata >= m_sWiFiCap.eeprom_size-1 )
  2537.   //  {
  2538.   //      ShowHintLabel( edit, hint );
  2539.   //      edit->SetFocus();
  2540.   //      return;
  2541.   //  }
  2542.   //  if( 0 != uidata%2 )
  2543.   //  {
  2544.   //      ShowHintLabel( edit, hint );
  2545.   //      edit->SetFocus();
  2546.   //      return;
  2547.   //  }
  2548.     m_uiEEPROMEndIdx = uidata;
  2549. }
  2550. //---------------------------------------------------------------------------
  2551. void __fastcall TfrmWiFi::rbMAC32bitsClick(TObject *Sender)
  2552. {
  2553.     edtMACMCRAddressCheck( edtMACMCRAddress );
  2554.     edtMACBeginMCRAddrCheck( edtMACBeginMCRAddr );
  2555.     edtMACEndMCRAddrCheck( edtMACEndMCRAddr );
  2556. }
  2557. //---------------------------------------------------------------------------
  2558. void __fastcall TfrmWiFi::rbMAC16bitsClick(TObject *Sender)
  2559. {
  2560.     edtMACMCRAddressCheck( edtMACMCRAddress );
  2561.     edtMACBeginMCRAddrCheck( edtMACBeginMCRAddr );
  2562.     edtMACEndMCRAddrCheck( edtMACEndMCRAddr );    
  2563. }
  2564. //---------------------------------------------------------------------------
  2565. void __fastcall TfrmWiFi::btnLoadTxPowerFromEEClick(TObject *Sender)
  2566. {
  2567.     CurrentPageLock();
  2568.     Compose_EEPROM_Parameter( ACCESS_TX_POWER );
  2569.     m_WIFI_EE_Obj.ConfirmCallback  = ::ConfirmCallback_ReadTxPowerFromEE;
  2570.     m_WIFI_EE_Obj.REQ_Read_From_EE_Start( m_sEE );
  2571.     sbTX->Panels->Items[0]->Text = (AnsiString)"  Load WiFi TX power from EEPROM progressing";
  2572. }
  2573. //-------------------------------------------
  2574. void TfrmWiFi::ConfirmCallback_ReadTxPowerFromEE( void )
  2575. {
  2576.     int state = m_WIFI_EE_Obj.Get_ConfirmState();
  2577.     switch( state )
  2578.     {
  2579.         case METAAPP_SUCCESS:
  2580.         {
  2581.             m_sEE = m_WIFI_EE_Obj.Get_EE();
  2582.             WiFiTxPowerEEToNVRAM();
  2583.             Compose_EEPROM_Parameter( ACCESS_TX_DC_OFFSET );
  2584.             m_WIFI_EE_Obj.ConfirmCallback  = ::ConfirmCallback_ReadTxDcOffsetFromEE;
  2585.             m_WIFI_EE_Obj.REQ_Read_From_EE_Start( m_sEE );
  2586.             sbTX->Panels->Items[0]->Text = (AnsiString)"  Load WiFi TX power from EEPROM successfully";
  2587.         }
  2588.         break;
  2589.         case METAAPP_FAIL:
  2590.         {
  2591.             sbTX->Panels->Items[0]->Text = (AnsiString)"  Load WiFi TX power from EEPROM fail";
  2592.             Application->MessageBox( "Execution Timeout : Load WiFi TX power from EEPROM", "FAIL", MB_OK );
  2593.             CurrentPageReset();
  2594.         }
  2595.         break;
  2596.         case METAAPP_TIMEOUT:
  2597.         {
  2598.             sbTX->Panels->Items[0]->Text = (AnsiString)"  Load WiFi TX power from EEPROM timeout";
  2599.             Application->MessageBox( "Execution Timeout : Load WiFi TX power from EEPROM", "TIMEOUT", MB_OK );
  2600.             CurrentPageReset();
  2601.         }
  2602.         break;
  2603.         case METAAPP_STOP:
  2604.         {
  2605.             sbTX->Panels->Items[0]->Text = (AnsiString)"  Load WiFi TX power from EEPROM stop";
  2606.             CurrentPageReset();
  2607.         }
  2608.         break;
  2609.     }
  2610. }
  2611. //----------------------------------------
  2612. void TfrmWiFi::ConfirmCallback_ReadTxDcOffsetFromEE(void)
  2613. {
  2614.     E_METAAPP_RESULT_T state = m_WIFI_EE_Obj.Get_ConfirmState();
  2615.     switch (state)
  2616.     {
  2617.         case METAAPP_SUCCESS:
  2618.         {
  2619.             m_sEE = m_WIFI_EE_Obj.Get_EE();
  2620.             WiFiTxDcOffsetEEToNVRAM();
  2621.             ReDrawFields( PAGEIDX_TXALL );
  2622.             sbTX->Panels->Items[0]->Text = (AnsiString)"  Load WiFi TX power from EEPROM successfully";
  2623.         }
  2624.         break;
  2625.         case METAAPP_FAIL:
  2626.         {
  2627.             sbTX->Panels->Items[0]->Text = (AnsiString)"  Load WiFi TX power from EEPROM fail";
  2628.             Application->MessageBox( "Execution Timeout : Load WiFi TX power from EEPROM", "FAIL", MB_OK );
  2629.         }
  2630.         break;
  2631.         case METAAPP_TIMEOUT:
  2632.         {
  2633.             sbTX->Panels->Items[0]->Text = (AnsiString)"  Load WiFi TX power from EEPROM timeout";
  2634.             Application->MessageBox( "Execution Timeout : Load WiFi TX power from EEPROM", "TIMEOUT", MB_OK );
  2635.         }
  2636.         break;
  2637.         case METAAPP_STOP:
  2638.         {
  2639.             sbTX->Panels->Items[0]->Text = (AnsiString)"  Load WiFi TX power from EEPROM stop";
  2640.         }
  2641.         break;
  2642.     }
  2643.     CurrentPageReset();
  2644. }
  2645. //--------------------------------------------------------------------------
  2646. void TfrmWiFi::WiFiTxPowerEEToNVRAM( void )
  2647. {
  2648.     int i;
  2649.     for(i=0; i<NUM_TX_POWER_2400M_CH/2; i++)
  2650.     {
  2651.         m_sTxPwr2400M.CCKTxPWR[2*i]   = (unsigned char) m_sEE.eeprom[i].eeprom_data16 & 0x00FF;
  2652.         m_sTxPwr2400M.CCKTxPWR[2*i+1] = (unsigned char) ( (m_sEE.eeprom[i].eeprom_data16 & 0xFF00)>>8 );
  2653.     }
  2654.     for(i=0; i<NUM_TX_POWER_2400M_CH/2; i++)
  2655.     {
  2656.         m_sTxPwr2400M.OFDMTxPWR[2*i]   = (unsigned char) m_sEE.eeprom[i+NUM_TX_POWER_2400M_CH/2].eeprom_data16 & 0x00FF;
  2657.         m_sTxPwr2400M.OFDMTxPWR[2*i+1] = (unsigned char) ((m_sEE.eeprom[i+NUM_TX_POWER_2400M_CH/2].eeprom_data16 & 0xFF00)>>8);
  2658.     }
  2659. }
  2660. //--------------------------------------------------------------------------
  2661. void  TfrmWiFi::WiFiTxDcOffsetEEToNVRAM( void )
  2662. {
  2663.     m_sTxDcOffset.i_ch_offset = (unsigned char) ((m_sEE.eeprom[0].eeprom_data16 >> 8) & 0x001F);
  2664.     m_sTxDcOffset.q_ch_offset = (unsigned char) (m_sEE.eeprom[0].eeprom_data16 & 0x001F );
  2665. }
  2666. //--------------------------------------------------------------------------
  2667. void __fastcall TfrmWiFi::btnTXLoadTxDcOffsetFromEEClick(TObject *Sender)
  2668. {
  2669.     CurrentPageLock();
  2670.     Compose_EEPROM_Parameter( ACCESS_TX_DC_OFFSET );
  2671.     m_WIFI_EE_Obj.ConfirmCallback  = ::ConfirmCallback_ReadTxDcOffsetFromEE;
  2672.     m_WIFI_EE_Obj.REQ_Read_From_EE_Start( m_sEE );
  2673.     sbTX->Panels->Items[0]->Text = (AnsiString)"  Load WiFi TX DC offset from EEPROM progressing";
  2674. }
  2675. //---------------------------------------------------------------------------
  2676. void __fastcall TfrmWiFi::rbEEByteClick(TObject *Sender)
  2677. {
  2678.     FillEEResult(true);
  2679.     FillEEResult(false);
  2680. }
  2681. //---------------------------------------------------------------------------
  2682. void __fastcall TfrmWiFi::rbEEWordClick(TObject *Sender)
  2683. {
  2684.     FillEEResult(true);
  2685.     FillEEResult(false);    
  2686. }
  2687. void __fastcall TfrmWiFi::m_btnTxAlcClick(TObject *Sender)
  2688. {
  2689.     frmWiFiALC2400M->Top  = 152;
  2690.     frmWiFiALC2400M->Left = 152;
  2691.     frmWiFiALC2400M->Show();
  2692. }
  2693. //---------------------------------------------------------------------------
  2694. void __fastcall TfrmWiFi::FormActivate(TObject *Sender)
  2695. {
  2696.     if (m_bInit)
  2697.     {
  2698.         m_bInit = false;
  2699.         m_sWiFiCap = frmMainSel->Get_FinalWiFiCap();
  2700.         m_bAlcSupport = m_cWIFI_ALC_Obj.REQ_Query_ALC_Suppport_Start();
  2701.         m_btnTxAlc->Visible = m_bAlcSupport;
  2702.         m_cbTXTargetGain->Visible = m_bAlcSupport;
  2703.         m_cbTXAlcTracking->Visible = m_bAlcSupport;
  2704.         m_cbTargetAlc->Visible = m_bAlcSupport;
  2705.         m_lblTXTargetAlc->Visible = m_bAlcSupport;
  2706.         m_edtTXTargetAlc->Visible = m_bAlcSupport;
  2707.         m_lblAverageALC->Visible = m_bAlcSupport;
  2708.         m_stAverageALC->Visible = m_bAlcSupport;
  2709.         m_lblTXCCKGainControl->Visible = m_bAlcSupport;
  2710.         m_stTXCCKGainControl->Visible = m_bAlcSupport;
  2711.         m_lblTXOFDMGainControl->Visible = m_bAlcSupport;
  2712.         m_stTXOFDMGainControl->Visible = m_bAlcSupport;
  2713.         DisplayWiFiChannel();
  2714.         DisplayWiFiTxRate();
  2715.     }
  2716. }
  2717. //---------------------------------------------------------------------------