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

MTK

开发平台:

C++ Builder

  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #ifndef  _METAAPP_COMMON_H_
  5. #include "METAAPP_common.h"
  6. #endif
  7. #ifndef _FORM_WIFIALC2400M_H_
  8. #include "form_WiFiALC2400M.h"
  9. #endif
  10. #ifndef _FORM_MAIN_H_
  11. #include "form_main.h"
  12. #endif
  13. #ifndef  _MISC_WIFI_H_
  14. #include "misc_wifi.h"
  15. #endif
  16. #ifndef  _MT5911_COMMON_H_
  17. #include "mt5911_common.h"
  18. #endif
  19. #ifndef  _MAN_FDM_H_
  20. #include "man_fdm.h"
  21. #endif
  22. //---------------------------------------------------------------------------
  23. #pragma package(smart_init)
  24. #pragma resource "*.dfm"
  25. TfrmWiFiALC2400M *frmWiFiALC2400M;
  26. //===========================================================================
  27. static void CNF_ReadAlc2400MFromNVRAM(void)
  28. {
  29.     frmWiFiALC2400M->UploadAlc2400MFromFlashDone();
  30. }
  31. //---------------------------------------------------------------------------
  32. static void CNF_WriteAlc2400MToNVRAM(void)
  33. {
  34.     frmWiFiALC2400M->DownloadAlc2400MToFlashDone();
  35. }
  36. //---------------------------------------------------------------------------
  37. static void CNF_ReadAlcCCKFromEE(void)
  38. {
  39.     frmWiFiALC2400M->CNF_ReadAlcCCKFromEE();
  40. }
  41. //---------------------------------------------------------------------------
  42. static void CNF_ReadAlcOFDMFromEE(void)
  43. {
  44.     frmWiFiALC2400M->CNF_ReadAlcOFDMFromEE();
  45. }
  46. //---------------------------------------------------------------------------
  47. static void CNF_ReadAlcSlopeFromEE(void)
  48. {
  49.     frmWiFiALC2400M->CNF_ReadAlcSlopeFromEE();
  50. }
  51. //===========================================================================
  52. __fastcall TfrmWiFiALC2400M::TfrmWiFiALC2400M(TComponent* Owner)
  53.         : TForm(Owner)
  54. {
  55.     m_edtTxAlcCCK[ 0] = m_edtTxAlcCCK00;
  56.     m_edtTxAlcCCK[ 1] = m_edtTxAlcCCK01;
  57.     m_edtTxAlcCCK[ 2] = m_edtTxAlcCCK02;
  58.     m_edtTxAlcCCK[ 3] = m_edtTxAlcCCK03;
  59.     m_edtTxAlcCCK[ 4] = m_edtTxAlcCCK04;
  60.     m_edtTxAlcCCK[ 5] = m_edtTxAlcCCK05;
  61.     m_edtTxAlcCCK[ 6] = m_edtTxAlcCCK06;
  62.     m_edtTxAlcCCK[ 7] = m_edtTxAlcCCK07;
  63.     m_edtTxAlcCCK[ 8] = m_edtTxAlcCCK08;
  64.     m_edtTxAlcCCK[ 9] = m_edtTxAlcCCK09;
  65.     m_edtTxAlcCCK[10] = m_edtTxAlcCCK10;
  66.     m_edtTxAlcCCK[11] = m_edtTxAlcCCK11;
  67.     m_edtTxAlcCCK[12] = m_edtTxAlcCCK12;
  68.     m_edtTxAlcCCK[13] = m_edtTxAlcCCK13;
  69.     m_edtTxOutputPowerDbCCK[ 0] = m_edtTxOutputPowerDbCCK00;
  70.     m_edtTxOutputPowerDbCCK[ 1] = m_edtTxOutputPowerDbCCK01;
  71.     m_edtTxOutputPowerDbCCK[ 2] = m_edtTxOutputPowerDbCCK02;
  72.     m_edtTxOutputPowerDbCCK[ 3] = m_edtTxOutputPowerDbCCK03;
  73.     m_edtTxOutputPowerDbCCK[ 4] = m_edtTxOutputPowerDbCCK04;
  74.     m_edtTxOutputPowerDbCCK[ 5] = m_edtTxOutputPowerDbCCK05;
  75.     m_edtTxOutputPowerDbCCK[ 6] = m_edtTxOutputPowerDbCCK06;
  76.     m_edtTxOutputPowerDbCCK[ 7] = m_edtTxOutputPowerDbCCK07;
  77.     m_edtTxOutputPowerDbCCK[ 8] = m_edtTxOutputPowerDbCCK08;
  78.     m_edtTxOutputPowerDbCCK[ 9] = m_edtTxOutputPowerDbCCK09;
  79.     m_edtTxOutputPowerDbCCK[10] = m_edtTxOutputPowerDbCCK10;
  80.     m_edtTxOutputPowerDbCCK[11] = m_edtTxOutputPowerDbCCK11;
  81.     m_edtTxOutputPowerDbCCK[12] = m_edtTxOutputPowerDbCCK12;
  82.     m_edtTxOutputPowerDbCCK[13] = m_edtTxOutputPowerDbCCK13;
  83.     m_btnOFDMTxRate[0] = m_btnOFDMTxRate0;
  84.     m_btnOFDMTxRate[1] = m_btnOFDMTxRate1;
  85.     m_btnOFDMTxRate[2] = m_btnOFDMTxRate2;
  86.     m_btnOFDMTxRate[3] = m_btnOFDMTxRate3;
  87.     m_btnOFDMTxRate[4] = m_btnOFDMTxRate4;
  88.     m_btnOFDMTxRate[5] = m_btnOFDMTxRate5;
  89.     m_btnOFDMTxRate[6] = m_btnOFDMTxRate6;
  90.     m_btnOFDMTxRate[7] = m_btnOFDMTxRate7;
  91.     m_edtOFDMTxAlcOffset[0] = m_edtOFDMTxAlcOffset0;
  92.     m_edtOFDMTxAlcOffset[1] = m_edtOFDMTxAlcOffset1;
  93.     m_edtOFDMTxAlcOffset[2] = m_edtOFDMTxAlcOffset2;
  94.     m_edtOFDMTxAlcOffset[3] = m_edtOFDMTxAlcOffset3;
  95.     m_edtOFDMTxAlcOffset[4] = m_edtOFDMTxAlcOffset4;
  96.     m_edtOFDMTxAlcOffset[5] = m_edtOFDMTxAlcOffset5;
  97.     m_edtOFDMTxAlcOffset[6] = m_edtOFDMTxAlcOffset6;
  98.     m_edtOFDMTxAlcOffset[7] = m_edtOFDMTxAlcOffset7;
  99.     m_edtOFDMTxOutputPowerOffset[0] = m_edtOFDMTxOutputPowerOffset0;
  100.     m_edtOFDMTxOutputPowerOffset[1] = m_edtOFDMTxOutputPowerOffset1;
  101.     m_edtOFDMTxOutputPowerOffset[2] = m_edtOFDMTxOutputPowerOffset2;
  102.     m_edtOFDMTxOutputPowerOffset[3] = m_edtOFDMTxOutputPowerOffset3;
  103.     m_edtOFDMTxOutputPowerOffset[4] = m_edtOFDMTxOutputPowerOffset4;
  104.     m_edtOFDMTxOutputPowerOffset[5] = m_edtOFDMTxOutputPowerOffset5;
  105.     m_edtOFDMTxOutputPowerOffset[6] = m_edtOFDMTxOutputPowerOffset6;
  106.     m_edtOFDMTxOutputPowerOffset[7] = m_edtOFDMTxOutputPowerOffset7;
  107.     m_edtTxAlcOFDM[ 0] = m_edtTxAlcOFDM00;
  108.     m_edtTxAlcOFDM[ 1] = m_edtTxAlcOFDM01;
  109.     m_edtTxAlcOFDM[ 2] = m_edtTxAlcOFDM02;
  110.     m_edtTxAlcOFDM[ 3] = m_edtTxAlcOFDM03;
  111.     m_edtTxAlcOFDM[ 4] = m_edtTxAlcOFDM04;
  112.     m_edtTxAlcOFDM[ 5] = m_edtTxAlcOFDM05;
  113.     m_edtTxAlcOFDM[ 6] = m_edtTxAlcOFDM06;
  114.     m_edtTxAlcOFDM[ 7] = m_edtTxAlcOFDM07;
  115.     m_edtTxAlcOFDM[ 8] = m_edtTxAlcOFDM08;
  116.     m_edtTxAlcOFDM[ 9] = m_edtTxAlcOFDM09;
  117.     m_edtTxAlcOFDM[10] = m_edtTxAlcOFDM10;
  118.     m_edtTxAlcOFDM[11] = m_edtTxAlcOFDM11;
  119.     m_edtTxAlcOFDM[12] = m_edtTxAlcOFDM12;
  120.     m_edtTxAlcOFDM[13] = m_edtTxAlcOFDM13;
  121.     m_edtTxOutputPowerDbOFDM[ 0] = m_edtTxOutputPowerDbOFDM00;
  122.     m_edtTxOutputPowerDbOFDM[ 1] = m_edtTxOutputPowerDbOFDM01;
  123.     m_edtTxOutputPowerDbOFDM[ 2] = m_edtTxOutputPowerDbOFDM02;
  124.     m_edtTxOutputPowerDbOFDM[ 3] = m_edtTxOutputPowerDbOFDM03;
  125.     m_edtTxOutputPowerDbOFDM[ 4] = m_edtTxOutputPowerDbOFDM04;
  126.     m_edtTxOutputPowerDbOFDM[ 5] = m_edtTxOutputPowerDbOFDM05;
  127.     m_edtTxOutputPowerDbOFDM[ 6] = m_edtTxOutputPowerDbOFDM06;
  128.     m_edtTxOutputPowerDbOFDM[ 7] = m_edtTxOutputPowerDbOFDM07;
  129.     m_edtTxOutputPowerDbOFDM[ 8] = m_edtTxOutputPowerDbOFDM08;
  130.     m_edtTxOutputPowerDbOFDM[ 9] = m_edtTxOutputPowerDbOFDM09;
  131.     m_edtTxOutputPowerDbOFDM[10] = m_edtTxOutputPowerDbOFDM10;
  132.     m_edtTxOutputPowerDbOFDM[11] = m_edtTxOutputPowerDbOFDM11;
  133.     m_edtTxOutputPowerDbOFDM[12] = m_edtTxOutputPowerDbOFDM12;
  134.     m_edtTxOutputPowerDbOFDM[13] = m_edtTxOutputPowerDbOFDM13;
  135. }
  136. //------------------------------------------------------------------------------
  137. void TfrmWiFiALC2400M::ReDrawFields(E_DRAW_MASK_WIFI_ALC2400M mask)
  138. {
  139.     if (mask & DRAW_MASK_WIFI_ALC2400M_CCK_ALC)
  140.     {
  141.         for (int i=0; i<WIFI_ALC_2400M_CH_NUM; i++)
  142.         {
  143.             m_edtTxAlcCCK[i]->Text           = IntToStr(m_sWiFiAlcPower2400M.txAlcCCK[i]);
  144.         }
  145.     }
  146.     if (mask & DRAW_MASK_WIFI_ALC2400M_CCK_POWER)
  147.     {
  148.         for (int i=0; i<WIFI_ALC_2400M_CH_NUM; i++)
  149.         {
  150.             m_edtTxOutputPowerDbCCK[i]->Text = IntToStr(m_sWiFiAlcPower2400M.txOutputPowerDBCCK[i]);
  151.         }
  152.     }
  153.     if (mask & DRAW_MASK_WIFI_ALC2400M_OFDM_OFFSET)
  154.     {
  155.         for (int i=0; i<WIFI_ALC_2400M_TX_RATE_NUM; i++)
  156.         {
  157.             m_edtOFDMTxAlcOffset[i]->Text         = IntToStr(m_cOFDMTxAlcOffset[i]);
  158.             m_edtOFDMTxOutputPowerOffset[i]->Text = IntToStr(m_cOFDMTxOutputPowerOffset[i]);
  159.         }
  160.     }
  161.     if (mask & DRAW_MASK_WIFI_ALC2400M_OFDM_ALC)
  162.     {
  163.         for (int i=0; i<WIFI_ALC_2400M_CH_NUM; i++)
  164.         {
  165.             m_edtTxAlcOFDM[i]->Text = IntToStr(m_sWiFiAlcPower2400M.txAlcOFDM[m_pnlOFDMTxRate->Tag][i]);
  166.         }
  167.     }
  168.     if (mask & DRAW_MASK_WIFI_ALC2400M_OFDM_POWER)
  169.     {
  170.         for (int i=0; i<WIFI_ALC_2400M_CH_NUM; i++)
  171.         {
  172.             m_edtTxOutputPowerDbOFDM[i]->Text = IntToStr(m_sWiFiAlcPower2400M.txOutputPowerDBOFDM[m_pnlOFDMTxRate->Tag][i]);
  173.         }
  174.     }
  175.     if (mask & DRAW_MASK_WIFI_ALC2400M_SLOPE)
  176.     {
  177.         m_edtALCSlop1Divider->Text  = IntToStr(m_sWiFiAlcSlope2400M.alcSlop1Divider);
  178.         m_edtALCSlop1Dividend->Text = IntToStr(m_sWiFiAlcSlope2400M.alcSlop1Dividend);
  179.         m_edtALCSlop2Divider->Text  = IntToStr(m_sWiFiAlcSlope2400M.alcSlop2Divider);
  180.         m_edtALCSlop2Dividend->Text = IntToStr(m_sWiFiAlcSlope2400M.alcSlop2Dividend);
  181.     }
  182. }
  183. //---------------------------------------------------------------------------
  184. bool TfrmWiFiALC2400M::CheckFields(E_CHECK_MASK_WIFI_ALC2400M mask)
  185. {
  186.     unsigned char ucdata;
  187.     AnsiString  text;
  188.     if (mask & CHECK_MASK_WIFI_ALC2400M_CCK_ALC)
  189.     {
  190.         for (int i=0; i<NUM_TX_POWER_2400M_CH; i++)
  191.         {
  192.             text = m_edtTxAlcCCK[i]->Text;
  193.             if (!IsValidWiFiTxAlcCCK(text, ucdata))
  194.             {
  195.                 edtTxAlcCCKCheck(m_edtTxAlcCCK[i]);
  196.                 return false;
  197.             }
  198.             m_sWiFiAlcPower2400M.txAlcCCK[i] = ucdata;
  199.         }
  200.     }
  201.     if (mask & CHECK_MASK_WIFI_ALC2400M_CCK_POWER)
  202.     {
  203.         for (int i=0; i<NUM_TX_POWER_2400M_CH; i++)
  204.         {
  205.             text = m_edtTxOutputPowerDbCCK[i]->Text;
  206.             if (!IsValidWiFiTxOutputPowerDbCCK(text, ucdata))
  207.             {
  208.                 edtTxOutputPowerDbCCKCheck(m_edtTxOutputPowerDbCCK[i]);
  209.                 return false;
  210.             }
  211.             m_sWiFiAlcPower2400M.txOutputPowerDBCCK[i] = ucdata;
  212.         }
  213.     }
  214.     if (mask & CHECK_MASK_WIFI_ALC2400M_OFDM_ALC)
  215.     {
  216.         for (int i=0; i<NUM_TX_POWER_2400M_CH; i++)
  217.         {
  218.             text = m_edtTxAlcOFDM[i]->Text;
  219.             if (!IsValidWiFiTxOutputPowerDbCCK(text, ucdata))
  220.             {
  221.                 edtTxAlcOFDMCheck(m_edtTxAlcOFDM[i]);
  222.                 return false;
  223.             }
  224.             m_sWiFiAlcPower2400M.txAlcOFDM[m_pnlOFDMTxRate->Tag][i] = ucdata;
  225.         }
  226.     }
  227.     if (mask & CHECK_MASK_WIFI_ALC2400M_OFDM_POWER)
  228.     {
  229.         for (int i=0; i<NUM_TX_POWER_2400M_CH; i++)
  230.         {
  231.             text = m_edtTxOutputPowerDbOFDM[i]->Text;
  232.             if (!IsValidWiFiTxOutputPowerDbOFDM(text, ucdata))
  233.             {
  234.                 edtTxOutputPowerDbOFDMCheck(m_edtTxOutputPowerDbOFDM[i]);
  235.                 return false;
  236.             }
  237.             m_sWiFiAlcPower2400M.txOutputPowerDBOFDM[m_pnlOFDMTxRate->Tag][i] = ucdata;
  238.         }
  239.     }
  240.     if (mask & CHECK_MASK_WIFI_ALC2400M_SLOPE)
  241.     {
  242.         // alcSlop1Divider
  243.         text = m_edtALCSlop1Divider->Text;
  244.         if (!IsValidWiFiAlcSlopeDivider(text, ucdata))
  245.         {
  246.             m_edtALCSlopDividerCheck(m_edtALCSlop1Divider);
  247.             return false;
  248.         }
  249.         m_sWiFiAlcSlope2400M.alcSlop1Divider = ucdata;
  250.         // alcSlop1Dividend
  251.         text = m_edtALCSlop1Dividend->Text;
  252.         if (!IsValidWiFiAlcSlopeDividend(text, ucdata))
  253.         {
  254.             m_edtALCSlopDividerCheck(m_edtALCSlop1Dividend);
  255.             return false;
  256.         }
  257.         m_sWiFiAlcSlope2400M.alcSlop1Dividend = ucdata;
  258.         // alcSlop2Divider
  259.         text = m_edtALCSlop2Divider->Text;
  260.         if (!IsValidWiFiAlcSlopeDivider(text, ucdata))
  261.         {
  262.             m_edtALCSlopDividerCheck(m_edtALCSlop2Divider);
  263.             return false;
  264.         }
  265.         m_sWiFiAlcSlope2400M.alcSlop2Divider = ucdata;
  266.         // alcSlop2Dividend
  267.         text = m_edtALCSlop2Dividend->Text;
  268.         if (!IsValidWiFiAlcSlopeDividend(text, ucdata))
  269.         {
  270.             m_edtALCSlopDividerCheck(m_edtALCSlop2Dividend);
  271.             return false;
  272.         }
  273.         m_sWiFiAlcSlope2400M.alcSlop2Dividend = ucdata;
  274.     }
  275.     return true;
  276. }
  277. //---------------------------------------------------------------------------
  278. void TfrmWiFiALC2400M::CurrentPageReset(void)
  279. {
  280.     btnUploadFromFlash->Enabled = true;
  281.     btnDownloadToFlash->Enabled = true;
  282.     btnChangeDB->Enabled = true;
  283. }
  284. //---------------------------------------------------------------------------
  285. void TfrmWiFiALC2400M::CurrentPageLock(void)
  286. {
  287.     btnUploadFromFlash->Enabled = false;
  288.     btnDownloadToFlash->Enabled = false;
  289.     btnChangeDB->Enabled = false;
  290. }
  291. //--------------------------------------------------------------------------
  292. void TfrmWiFiALC2400M::ShowHintLabel(TControl *sender, char* hint)
  293. {
  294.    TPoint pt0 = this->ClientOrigin;
  295.    TPoint pt1 = sender->ClientOrigin;
  296.    lblHint->Left = (pt1.x-pt0.x);
  297.    lblHint->Top  = (pt1.y-pt0.y)+sender->Height+3;
  298.    lblHint->Caption = hint;
  299.    lblHint->Visible = true;
  300.    HintTimer->Enabled = true;
  301. }
  302. //---------------------------------------------------------------------------
  303. void __fastcall TfrmWiFiALC2400M::edtTxAlcCCKCheck(TObject *Sender)
  304. {
  305.     unsigned char  uc_data;
  306.     AnsiString  text;
  307.     TEdit *edit = (TEdit*)Sender;
  308.     char  hint[] = " value shall be 0~255 ";
  309.     text = edit->Text;
  310.     if (!IsValidWiFiTxAlcCCK(text, uc_data))
  311.     {
  312.         ShowHintLabel(edit, hint);
  313.         edit->SetFocus();
  314.         return;
  315.     }
  316.     m_sWiFiAlcPower2400M.txAlcCCK[edit->Tag] = uc_data;
  317. }
  318. //---------------------------------------------------------------------------
  319. void __fastcall TfrmWiFiALC2400M::edtTxOutputPowerDbCCKCheck(
  320.       TObject *Sender)
  321. {
  322.     unsigned char  uc_data;
  323.     AnsiString  text;
  324.     TEdit *edit = (TEdit*)Sender;
  325.     char  hint[] = " value shall be 0~255 ";
  326.     text = edit->Text;
  327.     if (!IsValidWiFiTxOutputPowerDbCCK(text, uc_data))
  328.     {
  329.         ShowHintLabel(edit, hint);
  330.         edit->SetFocus();
  331.         return;
  332.     }
  333.     m_sWiFiAlcPower2400M.txOutputPowerDBCCK[edit->Tag] = uc_data;
  334. }
  335. //---------------------------------------------------------------------------
  336. void __fastcall TfrmWiFiALC2400M::edtTxAlcOFDMCheck(TObject *Sender)
  337. {
  338.     unsigned char  uc_data;
  339.     AnsiString  text;
  340.     TEdit *edit = (TEdit*)Sender;
  341.     char  hint[] = " value shall be 0~255 ";
  342.     text = edit->Text;
  343.     if (!IsValidWiFiTxAlcOFDM(text, uc_data))
  344.     {
  345.         ShowHintLabel(edit, hint);
  346.         edit->SetFocus();
  347.         return;
  348.     }
  349.     m_sWiFiAlcPower2400M.txAlcOFDM[m_pnlOFDMTxRate->Tag][edit->Tag] = uc_data;
  350. }
  351. //---------------------------------------------------------------------------
  352. void __fastcall TfrmWiFiALC2400M::edtTxOutputPowerDbOFDMCheck(
  353.       TObject *Sender)
  354. {
  355.     unsigned char  uc_data;
  356.     AnsiString  text;
  357.     TEdit *edit = (TEdit*)Sender;
  358.     char  hint[] = " value shall be 0~255 ";
  359.     text = edit->Text;
  360.     if (!IsValidWiFiTxOutputPowerDbOFDM(text, uc_data))
  361.     {
  362.         ShowHintLabel(edit, hint);
  363.         edit->SetFocus();
  364.         return;
  365.     }
  366.     m_sWiFiAlcPower2400M.txOutputPowerDBOFDM[m_pnlOFDMTxRate->Tag][edit->Tag] = uc_data;
  367. }
  368. //---------------------------------------------------------------------------
  369. void __fastcall TfrmWiFiALC2400M::btnOFDMTxRateClick(TObject *Sender)
  370. {
  371.     TButton *btn = (TButton *) Sender;
  372.     m_pnlOFDMTxRate->Tag = btn->Tag;
  373.     m_pnlOFDMTxRate->Caption = "TX Rate " + IntToStr(btn->Tag);
  374.     for (int i=0; i<WIFI_ALC_2400M_TX_RATE_NUM; i++)
  375.     {
  376.         if (i != btn->Tag )
  377.         {
  378.             m_edtOFDMTxAlcOffset[i]->Visible = true;
  379.             m_edtOFDMTxOutputPowerOffset[i]->Visible = true;
  380.         }
  381.         else
  382.         {
  383.             m_edtOFDMTxAlcOffset[i]->Visible = false;
  384.             m_edtOFDMTxOutputPowerOffset[i]->Visible = false;
  385.         }
  386.     }
  387.     ReDrawFields(DRAW_MASK_WIFI_ALC2400M_OFDM_ALC | DRAW_MASK_WIFI_ALC2400M_OFDM_POWER);
  388. }
  389. //---------------------------------------------------------------------------
  390. void __fastcall TfrmWiFiALC2400M::HintTimerTimer(TObject *Sender)
  391. {
  392.     HintTimer->Enabled = false;
  393.     lblHint->Visible = false;
  394. }
  395. //---------------------------------------------------------------------------
  396. void __fastcall TfrmWiFiALC2400M::btnUploadFromFlashClick(TObject *Sender)
  397. {
  398.     if (!NVRAMMan->Get_IsInit())
  399.     {
  400.         frmMainSel->mnuFDMDatabaseClick(Sender);
  401.         if (!NVRAMMan->Get_IsInit())
  402.         {
  403.             m_sbALC->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialization fail";
  404.             Application->MessageBox( "Execution Failure : NVRAM database file initialization fail", "FAILURE", MB_OK );
  405.             return;
  406.         }
  407.     }
  408.     m_cWIFI_ALC_Obj.ConfirmCallback = ::CNF_ReadAlc2400MFromNVRAM;
  409.     m_cWIFI_ALC_Obj.REQ_Read_From_NVRAM_Start( );
  410.     CurrentPageLock();
  411.     m_sbALC->Panels->Items[0]->Text = (AnsiString) "  Upload WiFi TX power setting from flash progressing";
  412. }
  413. //-----------------------------------------
  414. void TfrmWiFiALC2400M::UploadAlc2400MFromFlashDone(void)
  415. {
  416.     E_METAAPP_RESULT_T state = m_cWIFI_ALC_Obj.Get_ConfirmState();
  417.     switch( state )
  418.     {
  419.         case METAAPP_SUCCESS:
  420.         {
  421.             WiFi_ALC_2400M_S* p_alc_power = m_cWIFI_ALC_Obj.Get_AlcPower2400M();
  422.             m_sWiFiAlcPower2400M = *p_alc_power;
  423.             WiFi_TxALC_2400M_S* p_alc_slope = m_cWIFI_ALC_Obj.Get_AlcSlope2400M();
  424.             m_sWiFiAlcSlope2400M = *p_alc_slope;
  425.             ReDrawFields(DRAW_MASK_WIFI_ALC2400M_CCK_ALC     |
  426.                          DRAW_MASK_WIFI_ALC2400M_CCK_POWER   |
  427.                          DRAW_MASK_WIFI_ALC2400M_OFDM_ALC    |
  428.                          DRAW_MASK_WIFI_ALC2400M_OFDM_POWER  |
  429.                          DRAW_MASK_WIFI_ALC2400M_SLOPE);
  430.             m_sbALC->Panels->Items[0]->Text = (AnsiString) "  Upload WiFi ALC setting from flash successfully";
  431.         }
  432.         break;
  433.         case METAAPP_FAIL:
  434.         {
  435.             m_sbALC->Panels->Items[0]->Text = (AnsiString) "  Upload WiFi WiFi ALC setting from flash fail, please check the version of load and NVRAM database are same.";
  436.             Application->MessageBox( "Execution Failure : Upload WiFi ALC setting from flash, please check 1. GSM850 support. 2. The version of load and NVRAM database are same.", "FAILURE", MB_OK );
  437.         }
  438.         break;
  439.         case METAAPP_TIMEOUT:
  440.         {
  441.             m_sbALC->Panels->Items[0]->Text = (AnsiString) "  Upload WiFi ALC setting setting from flash timeout";
  442.             Application->MessageBox( "Execution Timeout : Upload WiFi ALC setting from flash", "TIMEOUT", MB_OK );
  443.         }
  444.         break;
  445.         case METAAPP_STOP:
  446.         {
  447.             m_sbALC->Panels->Items[0]->Text = (AnsiString) "  Upload WiFi ALC setting setting from flash stop";
  448.             Application->MessageBox( "Execution Timeout : Upload WiFi ALC setting from flash", "STOP", MB_OK );
  449.         }
  450.         break;
  451.         default:
  452.         {
  453.         }
  454.         break;
  455.     }
  456.     CurrentPageReset();
  457. }
  458. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  459. void __fastcall TfrmWiFiALC2400M::btnDownloadToFlashClick(TObject *Sender)
  460. {
  461.     if (!CheckFields(CHECK_MASK_WIFI_ALC2400M_CCK_ALC    |
  462.                      CHECK_MASK_WIFI_ALC2400M_CCK_POWER  |
  463.                      CHECK_MASK_WIFI_ALC2400M_OFDM_ALC   |
  464.                      CHECK_MASK_WIFI_ALC2400M_OFDM_POWER |
  465.                      CHECK_MASK_WIFI_ALC2400M_SLOPE
  466.                     )
  467.        )
  468.     {
  469.         return;
  470.     }
  471.                          
  472.     if (!NVRAMMan->Get_IsInit())
  473.     {
  474.         frmMainSel->mnuFDMDatabaseClick(Sender);
  475.     }
  476.     if (!NVRAMMan->Get_IsInit())
  477.     {
  478.         m_sbALC->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialize fail";
  479.         Application->MessageBox( "Execution Failure : NVRAM database file initialize fail", "FAILURE", MB_OK );
  480.         return;
  481.     }
  482.     m_cWIFI_ALC_Obj.Set_AlcPower2400M(m_sWiFiAlcPower2400M);
  483.     m_cWIFI_ALC_Obj.Set_AlcSlope2400M(m_sWiFiAlcSlope2400M);
  484.     
  485.     m_cWIFI_ALC_Obj.ConfirmCallback = ::CNF_WriteAlc2400MToNVRAM;
  486.     m_cWIFI_ALC_Obj.REQ_Write_To_NVRAM_Start();
  487.     CurrentPageLock();
  488.     m_sbALC->Panels->Items[0]->Text = (AnsiString) "  Download WiFi ALC setting to flash progressing";
  489. }
  490. //---------------------------------------------------------------------------
  491. void TfrmWiFiALC2400M::DownloadAlc2400MToFlashDone(void)
  492. {
  493.     E_METAAPP_RESULT_T state = m_cWIFI_ALC_Obj.Get_ConfirmState();
  494.     switch (state)
  495.     {
  496.         case METAAPP_SUCCESS:
  497.         {
  498.             m_sbALC->Panels->Items[0]->Text = (AnsiString) "  Download WiFi ALC setting to flash successfully";
  499.         }
  500.         break;
  501.         case METAAPP_FAIL:
  502.         {
  503.             m_sbALC->Panels->Items[0]->Text = (AnsiString) "  Download WiFi ALC setting to flash fail, please check the version of load and NVRAM database are same.";
  504.             Application->MessageBox( "Execution Failure : Download WiFi ALC setting to flash, please check the version of load and NVRAM database are same.", "FAILURE", MB_OK );
  505.         }
  506.         break;
  507.         case METAAPP_TIMEOUT:
  508.         {
  509.             m_sbALC->Panels->Items[0]->Text = (AnsiString) "  Download WiFi ALC setting to flash timeout";
  510.             Application->MessageBox( "Execution Timeout : Download WiFi ALC setting to flash", "TIMEOUT", MB_OK );
  511.         }
  512.         break;
  513.         case METAAPP_STOP:
  514.         {
  515.             m_sbALC->Panels->Items[0]->Text = (AnsiString) "  Download WiFi ALC setting to flash stop";
  516.         }
  517.         break;
  518.         default:
  519.         {
  520.         }
  521.         break;
  522.     }
  523.     CurrentPageReset();
  524. }
  525. //---------------------------------------------------------------------------
  526. void __fastcall TfrmWiFiALC2400M::btnLoadFromFileClick(TObject *Sender)
  527. {
  528.     char str[512];
  529.     bool ok;
  530.     float  fdata;
  531.     ok = OpenDialog->Execute();
  532.     if (!ok)
  533.     {
  534.         m_sbALC->Panels->Items[0]->Text = (AnsiString) "  Load WiFi ALC setting from file fail";
  535.         return;
  536.     }
  537.     strcpy(str, OpenDialog->FileName.c_str());
  538.     ok = m_cWIFI_ALC_Obj.REQ_Read_From_File(str);
  539.     if (!ok)
  540.     {
  541.         m_sbALC->Panels->Items[0]->Text = (AnsiString) "  Load WiFi ALC setting from file fail";
  542.         Application->MessageBox( "Execution Failure : Load WiFi ALC setting from file", "FAILURE", MB_OK );
  543.         return;
  544.     }
  545.     WiFi_ALC_2400M_S* p_alc_power = m_cWIFI_ALC_Obj.Get_AlcPower2400M();
  546.     m_sWiFiAlcPower2400M = *p_alc_power;
  547.     WiFi_TxALC_2400M_S* p_alc_slope = m_cWIFI_ALC_Obj.Get_AlcSlope2400M();
  548.     m_sWiFiAlcSlope2400M = *p_alc_slope;
  549.     ReDrawFields(DRAW_MASK_WIFI_ALC2400M_CCK_ALC     |
  550.                  DRAW_MASK_WIFI_ALC2400M_CCK_POWER   |
  551.                  DRAW_MASK_WIFI_ALC2400M_OFDM_ALC    |
  552.                  DRAW_MASK_WIFI_ALC2400M_OFDM_POWER  |
  553.                  DRAW_MASK_WIFI_ALC2400M_SLOPE);
  554.                  
  555.     m_sbALC->Panels->Items[0]->Text = (AnsiString) "  Load WiFi ALC setting from file successfully";
  556. }
  557. //---------------------------------------------------------------------------
  558. void __fastcall TfrmWiFiALC2400M::btnSaveToFileClick(TObject *Sender)
  559. {
  560.     char str[512];
  561.     bool ok;
  562.     ok = SaveDialog->Execute();
  563.     if (!ok)
  564.     {
  565.         m_sbALC->Panels->Items[0]->Text = (AnsiString) "  Save WiFi ALC setting to file fail";
  566.         return;
  567.     }
  568.     strcpy(str, SaveDialog->FileName.c_str());
  569.     m_cWIFI_ALC_Obj.Set_AlcPower2400M(m_sWiFiAlcPower2400M);
  570.     m_cWIFI_ALC_Obj.Set_AlcSlope2400M(m_sWiFiAlcSlope2400M);
  571.     ok = m_cWIFI_ALC_Obj.REQ_Write_To_File(str);
  572.     if (!ok)
  573.     {
  574.         m_sbALC->Panels->Items[0]->Text = (AnsiString) "  Save WiFi ALC setting to file fail";
  575.         Application->MessageBox( "Execution Failure : Save WiFi ALC setting to file", "FAILURE", MB_OK );
  576.         return;
  577.     }
  578.     m_sbALC->Panels->Items[0]->Text = (AnsiString) "  Save WiFi ALC setting to file successfully";
  579. }
  580. void __fastcall TfrmWiFiALC2400M::m_btnApplyClick(TObject *Sender)
  581. {
  582.     // CCK
  583.     for (int i=0; i<WIFI_ALC_2400M_TX_RATE_NUM; i++)
  584.     {
  585.         if (i != m_pnlOFDMTxRate->Tag)
  586.         {
  587.             for (int j=0; j<WIFI_ALC_2400M_CH_NUM; j++)
  588.             {
  589.                 m_sWiFiAlcPower2400M.txAlcOFDM[i][j] = m_sWiFiAlcPower2400M.txAlcOFDM[m_pnlOFDMTxRate->Tag][j] + m_cOFDMTxAlcOffset[i];
  590.                 m_sWiFiAlcPower2400M.txOutputPowerDBOFDM[i][j] = m_sWiFiAlcPower2400M.txOutputPowerDBOFDM[m_pnlOFDMTxRate->Tag][j] + m_cOFDMTxOutputPowerOffset[i];
  591.             }
  592.         }
  593.     }
  594. }
  595. //---------------------------------------------------------------------------
  596. void __fastcall TfrmWiFiALC2400M::edtOFDMTxAlcOffsetCheck(TObject *Sender)
  597. {
  598.     char  c_data;
  599.     AnsiString  text;
  600.     TEdit *edit = (TEdit*)Sender;
  601.     char  hint[] = " value shall be -128~127 ";
  602.     text = edit->Text;
  603.     if (!IsValidWiFiAlcOffset(text, c_data))
  604.     {
  605.         ShowHintLabel(edit, hint);
  606.         edit->SetFocus();
  607.         return;
  608.     }
  609.     m_cOFDMTxAlcOffset[edit->Tag] = c_data;
  610. }
  611. //---------------------------------------------------------------------------
  612. void __fastcall TfrmWiFiALC2400M::edtOFDMTxOutputPowerOffsetCheck(
  613.       TObject *Sender)
  614. {
  615.     char  c_data;
  616.     AnsiString  text;
  617.     TEdit *edit = (TEdit*)Sender;
  618.     char  hint[] = " value shall be -128~127 ";
  619.     text = edit->Text;
  620.     if (!IsValidWiFiAlcOffset(text, c_data))
  621.     {
  622.         ShowHintLabel(edit, hint);
  623.         edit->SetFocus();
  624.         return;
  625.     }
  626.     m_cOFDMTxOutputPowerOffset[edit->Tag] = c_data;
  627. }
  628. //---------------------------------------------------------------------------
  629. void __fastcall TfrmWiFiALC2400M::m_edtALCSlopDividerCheck(TObject *Sender)
  630. {
  631.     unsigned char uc_data;
  632.     AnsiString  text;
  633.     TEdit *edit = (TEdit*)Sender;
  634.     char  hint[] = " value shall be 1~100 ";
  635.     text = edit->Text;
  636.     if (!IsValidWiFiAlcSlopeDivider(text, uc_data))
  637.     {
  638.         ShowHintLabel(edit, hint);
  639.         edit->SetFocus();
  640.         return;
  641.     }
  642.     if (0 == edit->Tag)
  643.     {
  644.         m_sWiFiAlcSlope2400M.alcSlop1Divider = uc_data;
  645.     }
  646.     else
  647.     {
  648.        m_sWiFiAlcSlope2400M.alcSlop2Divider = uc_data;
  649.     }
  650. }
  651. //---------------------------------------------------------------------------
  652. void __fastcall TfrmWiFiALC2400M::m_edtALCSlopDividendCheck(
  653.       TObject *Sender)
  654. {
  655.     unsigned char uc_data;
  656.     AnsiString  text;
  657.     TEdit *edit = (TEdit*)Sender;
  658.     char  hint[] = " value shall be 1~100 ";
  659.     text = edit->Text;
  660.     if (!IsValidWiFiAlcSlopeDividend(text, uc_data))
  661.     {
  662.         ShowHintLabel(edit, hint);
  663.         edit->SetFocus();
  664.         return;
  665.     }
  666.     if (0 == edit->Tag)
  667.     {
  668.         m_sWiFiAlcSlope2400M.alcSlop1Dividend = uc_data;
  669.     }
  670.     else
  671.     {
  672.        m_sWiFiAlcSlope2400M.alcSlop2Dividend = uc_data;
  673.     }
  674. }
  675. //---------------------------------------------------------------------------
  676. void __fastcall TfrmWiFiALC2400M::btnChangeDBClick(TObject *Sender)
  677. {
  678.     frmMainSel->mnuFDMDatabaseClick(Sender);
  679.     if (!NVRAMMan->Get_IsInit())
  680.     {
  681.         m_sbALC->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialization fail";
  682.         Application->MessageBox("Execution Failure : NVRAM database file initialization fail", "FAILURE", MB_OK);
  683.         return;
  684.     }
  685.     m_sbALC->Panels->Items[0]->Text = (AnsiString) "  Change NVRAM database file successfully";
  686. }
  687. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  688. void TfrmWiFiALC2400M::Compose_EEPROM_Parameter(E_WIFI_EE_ALC_TYPE_T type)
  689. {
  690.     switch (type)
  691.     {
  692.         case WIFI_EE_ALC_TYPE_2_4_G_CCK:
  693.         {
  694.             m_sEE.count = 14;
  695.             for (unsigned int i=0; i<m_sEE.count; i++)
  696.             {
  697.                 m_sEE.eeprom[i].index = ADDR_MT5911_EEPROM_2_4G_CCK_ALC + i;
  698.             }
  699.         }
  700.         break;
  701.         case WIFI_EE_ALC_TYPE_2_4_G_OFDM:
  702.         {
  703.             m_sEE.count = 14;
  704.             for (unsigned int i=0; i<m_sEE.count; i++)
  705.             {
  706.                 m_sEE.eeprom[i].index = ADDR_MT5911_EEPROM_2_4G_OFDM_ALC + i;
  707.             }
  708.         }
  709.         break;
  710.         case WIFI_EE_ALC_TYPE_SLOPE:
  711.         {
  712.             m_sEE.count = 2;
  713.             for (unsigned int i=0; i<m_sEE.count; i++)
  714.             {
  715.                 m_sEE.eeprom[i].index = ADDR_MT5911_EEPROM_ALC_SLOPE + i;
  716.             }
  717.         }
  718.         break;
  719.     }
  720. }
  721. //---------------------------------------------------------------------------
  722. void TfrmWiFiALC2400M::WiFiAlcEEToNVRAMFormat(E_WIFI_EE_ALC_TYPE_T type)
  723. {
  724.     switch (type)
  725.     {
  726.         case WIFI_EE_ALC_TYPE_2_4_G_CCK:
  727.         {
  728.             for (int i=0; i<WIFI_ALC_2400M_CH_NUM; i++)
  729.             {
  730.                 m_sWiFiAlcPower2400M.txAlcCCK[i]           = m_sEE.eeprom[i].eeprom_data16 & 0x00FF;
  731.                 m_sWiFiAlcPower2400M.txOutputPowerDBCCK[i] = (m_sEE.eeprom[i].eeprom_data16 & 0xFF00) >> 8;
  732.             }
  733.         }
  734.         break;
  735.         case WIFI_EE_ALC_TYPE_2_4_G_OFDM:
  736.         {
  737.             for (int i=0; i<WIFI_ALC_2400M_TX_RATE_NUM; i++)
  738.             {
  739.                 for (int j=0; j<WIFI_ALC_2400M_CH_NUM; j++)
  740.                 {
  741.                     m_sWiFiAlcPower2400M.txAlcOFDM[i][j]        = m_sEE.eeprom[i].eeprom_data16 & 0x00FF;
  742.                     m_sWiFiAlcPower2400M.txOutputPowerDBOFDM[i][j] = (m_sEE.eeprom[i].eeprom_data16 & 0xFF00) >> 8;
  743.                 }
  744.             }
  745.         }
  746.         break;
  747.         case WIFI_EE_ALC_TYPE_SLOPE:
  748.         {
  749.             m_sWiFiAlcSlope2400M.alcSlop1Divider  = m_sEE.eeprom[0].eeprom_data16 & 0x00FF;
  750.             m_sWiFiAlcSlope2400M.alcSlop1Dividend = (m_sEE.eeprom[0].eeprom_data16 & 0xFF00) >> 8;
  751.             m_sWiFiAlcSlope2400M.alcSlop2Divider  = m_sEE.eeprom[1].eeprom_data16 & 0x00FF;
  752.             m_sWiFiAlcSlope2400M.alcSlop2Dividend = (m_sEE.eeprom[1].eeprom_data16 & 0xFF00) >> 8;
  753.         }
  754.         break;
  755.     }
  756. }
  757. //===========================================================================
  758. void __fastcall TfrmWiFiALC2400M::m_btnLoadFromEEPROMClick(TObject *Sender)
  759. {
  760.     CurrentPageLock();
  761.     Compose_EEPROM_Parameter(WIFI_EE_ALC_TYPE_2_4_G_CCK);
  762.     m_WIFI_EE_Obj.ConfirmCallback  = ::CNF_ReadAlcCCKFromEE;
  763.     m_WIFI_EE_Obj.REQ_Read_From_EE_Start(m_sEE);
  764.     m_sbALC->Panels->Items[0]->Text = (AnsiString)"  Load WiFi ALC setting from EEPROM progressing";
  765. }
  766. //-------------------------------------------
  767. void TfrmWiFiALC2400M::CNF_ReadAlcCCKFromEE(void)
  768. {
  769.     E_METAAPP_RESULT_T state = m_WIFI_EE_Obj.Get_ConfirmState();
  770.     switch (state)
  771.     {
  772.         case METAAPP_SUCCESS:
  773.         {
  774.             m_sEE = m_WIFI_EE_Obj.Get_EE();
  775.             WiFiAlcEEToNVRAMFormat(WIFI_EE_ALC_TYPE_2_4_G_CCK);
  776.             Compose_EEPROM_Parameter(WIFI_EE_ALC_TYPE_2_4_G_OFDM);
  777.             m_WIFI_EE_Obj.ConfirmCallback  = ::CNF_ReadAlcOFDMFromEE;
  778.             m_WIFI_EE_Obj.REQ_Read_From_EE_Start(m_sEE);
  779.         }
  780.         break;
  781.         case METAAPP_FAIL:
  782.         {
  783.             m_sbALC->Panels->Items[0]->Text = (AnsiString)"  Load WiFi ALC setting from EEPROM fail";
  784.             Application->MessageBox("Execution Timeout : Load WiFi ALC setting from EEPROM", "FAIL", MB_OK);
  785.             CurrentPageReset();
  786.         }
  787.         break;
  788.         case METAAPP_TIMEOUT:
  789.         {
  790.             m_sbALC->Panels->Items[0]->Text = (AnsiString)"  Load WiFi ALC setting from EEPROM timeout";
  791.             Application->MessageBox( "Execution Timeout : Load WiFi ALC setting from EEPROM", "TIMEOUT", MB_OK );
  792.             CurrentPageReset();
  793.         }
  794.         break;
  795.         case METAAPP_STOP:
  796.         {
  797.             m_sbALC->Panels->Items[0]->Text = (AnsiString)"  Load WiFi ALC setting from EEPROM stop";
  798.             CurrentPageReset();
  799.         }
  800.         break;
  801.     }
  802. }
  803. //----------------------------------------
  804. void TfrmWiFiALC2400M::CNF_ReadAlcOFDMFromEE(void)
  805. {
  806.     E_METAAPP_RESULT_T state = m_WIFI_EE_Obj.Get_ConfirmState();
  807.     switch (state)
  808.     {
  809.         case METAAPP_SUCCESS:
  810.         {
  811.             m_sEE = m_WIFI_EE_Obj.Get_EE();
  812.             WiFiAlcEEToNVRAMFormat(WIFI_EE_ALC_TYPE_2_4_G_OFDM);
  813.             Compose_EEPROM_Parameter(WIFI_EE_ALC_TYPE_SLOPE);
  814.             m_WIFI_EE_Obj.ConfirmCallback  = ::CNF_ReadAlcSlopeFromEE;
  815.             m_WIFI_EE_Obj.REQ_Read_From_EE_Start(m_sEE);
  816.         }
  817.         break;
  818.         case METAAPP_FAIL:
  819.         {
  820.             m_sbALC->Panels->Items[0]->Text = (AnsiString)"  Load WiFi ALC setting power from EEPROM fail";
  821.             Application->MessageBox("Execution Timeout : Load WiFi ALC setting from EEPROM", "FAIL", MB_OK);
  822.             CurrentPageReset();
  823.         }
  824.         break;
  825.         case METAAPP_TIMEOUT:
  826.         {
  827.             m_sbALC->Panels->Items[0]->Text = (AnsiString)"  Load WiFi ALC setting from EEPROM timeout";
  828.             Application->MessageBox("Execution Timeout : Load WiFi ALC setting from EEPROM", "TIMEOUT", MB_OK);
  829.             CurrentPageReset();
  830.         }
  831.         break;
  832.         case METAAPP_STOP:
  833.         {
  834.             m_sbALC->Panels->Items[0]->Text = (AnsiString)"  Load WiFi ALC setting from EEPROM stop";
  835.             CurrentPageReset();
  836.         }
  837.         break;
  838.     }
  839. }
  840. //----------------------------------------
  841. void TfrmWiFiALC2400M::CNF_ReadAlcSlopeFromEE(void)
  842. {
  843.     E_METAAPP_RESULT_T state = m_WIFI_EE_Obj.Get_ConfirmState();
  844.     switch (state)
  845.     {
  846.         case METAAPP_SUCCESS:
  847.         {
  848.             m_sEE = m_WIFI_EE_Obj.Get_EE();
  849.             WiFiAlcEEToNVRAMFormat(WIFI_EE_ALC_TYPE_SLOPE);
  850.             ReDrawFields(DRAW_MASK_WIFI_ALC2400M_CCK_ALC    |
  851.                          DRAW_MASK_WIFI_ALC2400M_CCK_POWER  |
  852.                          DRAW_MASK_WIFI_ALC2400M_OFDM_ALC   |
  853.                          DRAW_MASK_WIFI_ALC2400M_OFDM_POWER |
  854.                          DRAW_MASK_WIFI_ALC2400M_SLOPE);
  855.             m_sbALC->Panels->Items[0]->Text = (AnsiString)"  Load WiFi ALC setting from EEPROM successfully";
  856.         }
  857.         break;
  858.         case METAAPP_FAIL:
  859.         {
  860.             m_sbALC->Panels->Items[0]->Text = (AnsiString)"  Load WiFi ALC setting from EEPROM fail";
  861.             Application->MessageBox( "Execution Timeout : Load WiFi ALC setting from EEPROM", "FAIL", MB_OK );
  862.         }
  863.         break;
  864.         case METAAPP_TIMEOUT:
  865.         {
  866.             m_sbALC->Panels->Items[0]->Text = (AnsiString)"  Load WiFi ALC setting from EEPROM timeout";
  867.             Application->MessageBox( "Execution Timeout : Load WiFi ALC setting from EEPROM", "TIMEOUT", MB_OK );
  868.         }
  869.         break;
  870.         case METAAPP_STOP:
  871.         {
  872.             m_sbALC->Panels->Items[0]->Text = (AnsiString)"  Load WiFi ALC setting from EEPROM stop";
  873.         }
  874.         break;
  875.     }
  876.     CurrentPageReset();
  877. }