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

MTK

开发平台:

C++ Builder

  1. /*****************************************************************************
  2. *  Copyright Statement:
  3. *  --------------------
  4. *  This software is protected by Copyright and the information contained
  5. *  herein is confidential. The software may not be copied and the information
  6. *  contained herein may not be used or disclosed except with the written
  7. *  permission of MediaTek Inc. (C) 2005
  8. *
  9. *  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  10. *  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  11. *  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
  12. *  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  13. *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  14. *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  15. *  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  16. *  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  17. *  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
  18. *  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
  19. *  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
  20. *  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
  21. *
  22. *  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
  23. *  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  24. *  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  25. *  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
  26. *  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  27. *
  28. *  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
  29. *  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
  30. *  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
  31. *  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
  32. *  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
  33. *
  34. *****************************************************************************/
  35. /*****************************************************************************
  36.  *
  37.  * Filename:
  38.  * ---------
  39.  *   form_UpdateParameter.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   RF and ADC parameter update form source
  48.  *
  49.  * Author:
  50.  * -------
  51.  *  Andy Ueng (mtk00490)
  52.  *
  53.  *============================================================================
  54.  *             HISTORY
  55.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  56.  *------------------------------------------------------------------------------
  57.  * $Revision$
  58.  * $Modtime$
  59.  * $Log$
  60.  * 
  61.  *------------------------------------------------------------------------------
  62.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  63.  *============================================================================
  64.  ****************************************************************************/
  65. //---------------------------------------------------------------------------
  66. #include <vcl.h>
  67. #pragma hdrstop
  68. #include "form_UpdateParameter.h"
  69. #include "form_main.h"
  70. #include "man_fdm.h"
  71. // message
  72. #ifndef _META_LAB_MSG_H_
  73. #include "meta_lab_msg.h"
  74. #endif
  75. // query
  76. #ifndef  _RF_ID_THRD_H_
  77. #include "rf_id_thrd.h"
  78. #endif
  79. #ifndef  _RF_TXIQ_RUN_H_
  80. #include "rf_txiq_run.h"
  81. #endif
  82. //---------------------------------------------------------------------------
  83. #pragma package(smart_init)
  84. #pragma resource "*.dfm"
  85. //---------------------------------------------------------------------------
  86. TfrmUpdateParameter *frmUpdateParameter;
  87. extern bool g_bHideEnable;
  88. // thread
  89. extern T_RFTADO*      pt_rftado;
  90. extern T_RFID*      pt_rfid;
  91. //---------------------------------------------------------------------------
  92. static void CNF_ReadFromNVRAM(void)
  93. {
  94.     frmUpdateParameter->UploadFromFlashDone();
  95. }
  96. //---------------------------------------------------------------------------
  97. static void CNF_WriteToNVRAM(void)
  98. {
  99.     frmUpdateParameter->DownloadToFlashDone();
  100. }
  101. //---------------------------------------------------------------------------
  102. __fastcall TfrmUpdateParameter::TfrmUpdateParameter(TComponent* Owner)
  103.         : TForm(Owner)
  104. {
  105.     WindowProc = SubClassWndProc;
  106. }
  107. //==============================================================================
  108. void __fastcall TfrmUpdateParameter::FormCreate(TObject *Sender)
  109. {
  110.    // m_bDownloadTrigger = false;
  111.     m_bInit  = true;
  112. }
  113. //---------------------------------------------------------------------------
  114. void __fastcall TfrmUpdateParameter::FormActivate(TObject *Sender)
  115. {
  116.     if (m_bInit)
  117.     {
  118.         m_bInit = false;
  119.         // baseband
  120.         m_eBbChip = frmMainSel->Get_FinalBBChip();
  121.         // RF
  122.         m_uiFinalRFID = frmMainSel->Get_FinalRFID();
  123.         DisplayIP2Visible(m_uiFinalRFID);
  124.         if ((RF_ID_A60111A == m_uiFinalRFID) ||
  125.             (RF_ID_AERO2   == m_uiFinalRFID) ||
  126.             (RF_ID_AERO2E  == m_uiFinalRFID) ||
  127.             (RF_ID_AG2550  == m_uiFinalRFID) ||
  128.             (RF_ID_MT6139B == m_uiFinalRFID) ||
  129.             (RF_ID_MT6139C == m_uiFinalRFID) ||
  130.             (RF_ID_MT6139E == m_uiFinalRFID) ||
  131.             (RF_ID_MT6140A == m_uiFinalRFID) ||
  132.             (RF_ID_MT6140B == m_uiFinalRFID) ||
  133.             (RF_ID_MT6140C == m_uiFinalRFID) ||
  134.             (RF_ID_MT6140D == m_uiFinalRFID)
  135.            )
  136.         {
  137.             rbCrystal->Checked = true;
  138.             cbTxIQ->Checked = true;
  139.         }
  140.         if ((RF_ID_A60111A == m_uiFinalRFID) ||
  141.             (RF_ID_AERO2E  == m_uiFinalRFID) ||
  142.             (RF_ID_MT6140A == m_uiFinalRFID) ||
  143.             (RF_ID_MT6140B == m_uiFinalRFID) ||
  144.             (RF_ID_MT6140C == m_uiFinalRFID) ||
  145.             (RF_ID_MT6140D == m_uiFinalRFID)
  146.            )
  147.         {
  148.             cbEpskLevelRamp->Checked = true;
  149.         }
  150.         // EDGE
  151.         RfMsCapabilityEx_S rf_cap = frmMainSel->Get_FinalMSCap();
  152.         cbEpskLevelRamp->Visible = rf_cap.capability.EDGE_8PSK_TX;
  153.         cbEpskLevelRamp->Checked = rf_cap.capability.EDGE_8PSK_TX;
  154.         m_bTADOSupport = frmMainSel->Get_TADO_Support();
  155.         CRFTXIQRUN RF_TXIQRUN_Obj;
  156.         m_eBbTxCfgVer = RF_TXIQRUN_Obj.Query_BBTxCfgVer_Start(m_eBbChip);
  157.         // WiFi
  158.         WiFi_ChipCapability_S sWiFiCap = frmMainSel->Get_FinalWiFiCap();
  159.         if (sWiFiCap.support_802_11b ||
  160.     sWiFiCap.support_802_11a ||
  161.     sWiFiCap.support_802_11g
  162.            )
  163.         {
  164.             cbWiFiTxDcOffset->Visible = true;
  165.             cbWiFiTxDcOffset->Checked = true;
  166.             cbWiFiTxPower->Visible = true;
  167.             cbWiFiTxPower->Checked = true;
  168.             m_bAlcSupport = m_UP_Obj.REQ_Query_ALC_Suppport_Start();
  169.             m_cbWiFiAlc->Visible = m_bAlcSupport;
  170.             m_cbWiFiAlc->Checked = m_bAlcSupport;
  171.         }
  172.         else
  173.         {
  174.             cbWiFiTxDcOffset->Visible = false;
  175.             cbWiFiTxDcOffset->Checked = false;
  176.             cbWiFiTxPower->Visible = false;
  177.             cbWiFiTxPower->Checked = false;
  178.             m_cbWiFiAlc->Visible = false;
  179.             m_cbWiFiAlc->Checked = false;
  180.         }
  181.         // BT
  182.         BT_ModuleID_S* p_bt_id = frmMainSel->Get_BTMoudleID();
  183.         BT_ModuleID_S bt_id = *p_bt_id;
  184.         if ((BTMODULE_MT6601 == bt_id.id) ||
  185.             (BTMODULE_MT6611 == bt_id.id)
  186.            )
  187.         {
  188.             m_cbBtCapId->Visible = true;
  189.             m_cbBtCapId->Checked = true;
  190.         }
  191.         else
  192.         {
  193.             m_cbBtCapId->Visible = false;
  194.             m_cbBtCapId->Checked = false;
  195.         }
  196.     }
  197. }
  198. //---------------------------------------------------------------------------
  199. void __fastcall TfrmUpdateParameter::FormShow(TObject *Sender)
  200. {
  201.     m_uiFinalRFID = frmMainSel->Get_FinalRFID();
  202.     ApplyHideProperty();
  203. }
  204. //==============================================================================
  205. void _fastcall TfrmUpdateParameter::SubClassWndProc(Messages::TMessage &Message)
  206. {
  207.     switch (Message.Msg)
  208.     {
  209.        // case WM_MF_QUERY_RFTWOAPCDOOFFSET_SUCCESS:
  210.        //     m_bTADOSupport = true;
  211.       //  break;
  212.       //
  213.       //  case WM_MF_QUERY_RFTWOAPCDOOFFSET_FAILED:
  214.       //      m_bTADOSupport = false;
  215.       //  break;
  216.       //  case WM_ML_QUERY_RFID_SUCCESS:
  217.       //  {
  218.       //      DisplayIP2Visible( m_t_rf_id.rf_id.RfModId.id );
  219.       //      m_uiFinalRFID = m_t_rf_id.rf_id.RfModId.id;
  220.       //  }
  221.       //  break;
  222.       //
  223.       //  case WM_ML_QUERY_RFID_FAILED:
  224.       //  {
  225.       //      cbIP2->Visible = false;
  226.       //      cbIP2->Checked = false;
  227.       //      m_uiFinalRFID = RF_ID_UNKNOWN;
  228.       //  }
  229.       //  break;
  230.         default:
  231.              this->WndProc( Message );
  232.         break;
  233.     }
  234. }
  235. //---------------------------------------------------------------------------
  236. void __fastcall TfrmUpdateParameter::btnUploadFromFlashClick(TObject *Sender)
  237. {
  238.     if (rbCrystal->Checked && cbAFC->Checked && (!cbGmskLevelRamp->Checked))
  239.     {
  240.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString) "  Please also select GMSK Level, Ramp for TRX offset setting";
  241.         Application->MessageBox( "Execution Warning : Please also select GMSK Level, Ramp for TRX offset setting", "WARNING", MB_OK );
  242.         return;
  243.     }
  244.     if (!NVRAMMan->Get_IsInit())
  245.     {
  246.         frmMainSel->mnuFDMDatabaseClick(Sender);
  247.     }
  248.     if (!NVRAMMan->Get_IsInit())
  249.     {
  250.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialization fail";
  251.         Application->MessageBox( "Execution Failure : NVRAM database file initialization", "FAILURE", MB_OK );
  252.         return;
  253.     }
  254.     CurrentPageLock();
  255.     m_ePar = PARAMETER_RX_PATH_LOSS;
  256.     UploadFromFlash();
  257. }
  258. //--------------------------------------------------------------------------
  259. void TfrmUpdateParameter::UploadFromFlash(void)
  260. {
  261.     m_bAction = false;
  262.     m_UP_Obj.ConfirmCallback = ::CNF_ReadFromNVRAM;
  263.     while ((m_ePar <= PARAMETER_BARCODE) && (!m_bAction))
  264.     {
  265.         switch (m_ePar)
  266.         {
  267.             case PARAMETER_RX_PATH_LOSS:
  268.             {
  269.                 m_bAction = cbRXPathLoss->Checked;
  270.                 if (m_bAction)
  271.                 {
  272.                     m_UP_Obj.REQ_Read_AGC_From_NVRAM();
  273.                 }
  274.             }
  275.             break;
  276.             case PARAMETER_AFC:
  277.             {
  278.                 m_bAction = cbAFC->Checked;
  279.                 if (m_bAction)
  280.                 {
  281.                     if (rbTCVCXO->Checked)
  282.                     {
  283.                         m_UP_Obj.REQ_Read_AFC_From_NVRAM();
  284.                     }
  285.                     else // crystal
  286.                     {
  287.                         m_UP_Obj.REQ_Read_Crystal_AFC_From_NVRAM();
  288.                     }
  289.                 }
  290.             }
  291.             break;
  292.             case PARAMETER_IP2:
  293.             {
  294.                 m_bAction = cbIP2->Checked;
  295.                 if (m_bAction)
  296.                 {
  297.                     m_UP_Obj.REQ_Read_IP2_From_NVRAM(m_uiFinalRFID);
  298.                 }
  299.             }
  300.             break;
  301.             case PARAMETER_TXIQ:
  302.             {
  303.                 m_bAction = cbTxIQ->Checked;
  304.                 if (m_bAction)
  305.                 {
  306.                     m_UP_Obj.REQ_Read_TxIq_From_NVRAM(m_uiFinalRFID, m_eBbTxCfgVer);
  307.                 }
  308.             }
  309.             break;
  310.             case PARAMETER_GMSK_APC:
  311.             {
  312.                 m_bAction = cbGmskLevelRamp->Checked;
  313.                 if (m_bAction)
  314.                 {
  315.                     m_UP_Obj.REQ_Read_GMSK_APC_From_NVRAM(m_uiFinalRFID, m_bTADOSupport);
  316.                 }
  317.             }
  318.             break;
  319.             case PARAMETER_EPSK_APC:
  320.             {
  321.                 m_bAction = cbEpskLevelRamp->Checked;
  322.                 if (m_bAction)
  323.                 {
  324.                     m_UP_Obj.REQ_Read_EPSK_APC_From_NVRAM(m_uiFinalRFID);
  325.                 }
  326.             }
  327.             break;
  328.             case PARAMETER_ADC:
  329.             {
  330.                 m_bAction = cbADC->Checked;
  331.                 if (m_bAction)
  332.                 {
  333.                     m_UP_Obj.REQ_Read_ADC_From_NVRAM();
  334.                 }
  335.             }
  336.             break;
  337.             case PARAMETER_WIFI_TX_DC_OFFSET:
  338.             {
  339.                 m_bAction = cbWiFiTxDcOffset->Checked;
  340.                 if (m_bAction)
  341.                 {
  342.                     m_UP_Obj.REQ_Read_WiFiTxDcOffset_From_NVRAM();
  343.                 }
  344.             }
  345.             break;
  346.             case PARAMETER_WIFI_TX_POWER:
  347.             {
  348.                 m_bAction = cbWiFiTxPower->Checked;
  349.                 if (m_bAction)
  350.                 {
  351.                     m_UP_Obj.REQ_Read_WiFiTxPower_From_NVRAM();
  352.                 }
  353.             }
  354.             break;
  355.             case PARAMETER_WIFI_ALC:
  356.             {
  357.                 m_bAction = m_cbWiFiAlc->Checked;
  358.                 if (m_bAction)
  359.                 {
  360.                     m_UP_Obj.REQ_Read_WiFiAlc_From_NVRAM();
  361.                 }
  362.             }
  363.             break;
  364.             case PARAMETER_BT_CAP_ID:
  365.             {
  366.                 m_bAction = m_cbBtCapId->Checked;
  367.                 if (m_bAction)
  368.                 {
  369.                     m_UP_Obj.REQ_Read_BtCapId_From_NVRAM();
  370.                 }
  371.             }
  372.             break;
  373.             case PARAMETER_IMEI:
  374.             {
  375.                 m_bAction = cbIMEI->Checked;
  376.                 if (m_bAction)
  377.                 {
  378.                     m_UP_Obj.REQ_Read_IMEI_From_NVRAM();
  379.                 }
  380.             }
  381.             break;
  382.             case PARAMETER_BARCODE:
  383.             {
  384.                 m_bAction = cbBarcode->Checked;
  385.                 if (m_bAction)
  386.                 {
  387.                     m_UP_Obj.REQ_Read_Barcode_From_NVRAM();
  388.                 }
  389.             }
  390.             break;
  391.             default:
  392.             {
  393.             }
  394.             break;
  395.         }
  396.         if (!m_bAction)
  397.         {
  398.             m_ePar++;
  399.         }
  400.     }
  401.     if (m_ePar > PARAMETER_BARCODE)
  402.     {
  403.         CurrentPageReset();
  404.     }
  405. }
  406. //---------------------------------------------------
  407. void TfrmUpdateParameter::UploadFromFlashDone(void)
  408. {
  409.     E_METAAPP_RESULT_T state = m_UP_Obj.Get_ConfirmState();
  410.     AnsiString as_msg;
  411.     switch (m_ePar)
  412.     {
  413.         case PARAMETER_RX_PATH_LOSS:
  414.         {
  415.             as_msg = "RX path loss";
  416.         }
  417.         break;
  418.         case PARAMETER_AFC:
  419.         {
  420.             as_msg = "AFC";
  421.         }
  422.         break;
  423.         case PARAMETER_IP2:
  424.         {
  425.             as_msg = "IP2";
  426.         }
  427.         break;
  428.         case PARAMETER_TXIQ:
  429.         {
  430.             as_msg = "TX IQ";
  431.         }
  432.         break;
  433.         case PARAMETER_GMSK_APC:
  434.         {
  435.             as_msg = "GMSK APC";
  436.         }
  437.         break;
  438.         case PARAMETER_EPSK_APC:
  439.         {
  440.             as_msg = "EPSK APC";
  441.         }
  442.         break;
  443.         case PARAMETER_ADC:
  444.         {
  445.             as_msg = "ADC";
  446.         }
  447.         break;
  448.         case PARAMETER_WIFI_TX_DC_OFFSET:
  449.         {
  450.             as_msg = "WiFi TX DC offset";
  451.         }
  452.         break;
  453.         case PARAMETER_WIFI_TX_POWER:
  454.         {
  455.             as_msg = "WiFi TX power";
  456.         }
  457.         break;
  458.         case PARAMETER_BT_CAP_ID:
  459.         {
  460.             as_msg = "BT crystal CAP ID";
  461.         }
  462.         break;
  463.         case PARAMETER_IMEI:
  464.         {
  465.             as_msg = "IMEI";
  466.         }
  467.         break;
  468.         case PARAMETER_BARCODE:
  469.         {
  470.             as_msg = "barcode";
  471.         }
  472.         break;
  473.         default:
  474.         {
  475.         }
  476.         break;
  477.     }
  478.     switch (state)
  479.     {
  480.         case METAAPP_SUCCESS:
  481.         {
  482.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Upload " + as_msg + " setting form flash successfully";
  483.             m_ePar++;
  484.             UploadFromFlash();
  485.         }
  486.         break;
  487.         case METAAPP_FAIL:
  488.         {
  489.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Upload " + as_msg + " setting form flash fail, please check the version of load and NVRAM database are same.";
  490.             AnsiString as_error_msg = "Execution Failure : Upload " + as_msg + " setting form flash";
  491.             Application->MessageBox(as_error_msg.c_str(), "FAILURE", MB_OK );
  492.             CurrentPageReset();
  493.             return;
  494.         }
  495.        // break;
  496.         case METAAPP_TIMEOUT:
  497.         {
  498.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString) "  Upload " + as_msg + " setting form flash timeout";
  499.             AnsiString as_error_msg = "Execution Timeout : Upload " + as_msg + " setting form flash";
  500.             Application->MessageBox(as_error_msg.c_str(), "FAILURE", MB_OK );
  501.             CurrentPageReset();
  502.             return;
  503.         }
  504.        // break;
  505.         case METAAPP_STOP:
  506.         {
  507.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString) "  Upload " + as_msg + " setting form flash stop";
  508.             CurrentPageReset();
  509.             return;
  510.         }
  511.       //  break;
  512.         default:
  513.         {
  514.         }
  515.         break;
  516.     }
  517. }
  518. //==========================================================================
  519. void __fastcall TfrmUpdateParameter::btnDownloadToFlashClick(
  520.       TObject *Sender)
  521. {
  522.     if (rbCrystal->Checked && cbAFC->Checked && (!cbGmskLevelRamp->Checked))
  523.     {
  524.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString) "  Please also select GMSK Level, Ramp for TRX offset setting";
  525.         Application->MessageBox( "Execution Warning : Please also select GMSK Level, Ramp for TRX offset setting", "WARNING", MB_OK );
  526.         return;
  527.     }
  528.     
  529.     if (!NVRAMMan->Get_IsInit())
  530.     {
  531.         frmMainSel->mnuFDMDatabaseClick(Sender);
  532.     }
  533.     if (!NVRAMMan->Get_IsInit())
  534.     {
  535.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialization fail";
  536.         Application->MessageBox("Execution Failure : NVRAM database file initialization fail", "FAILURE", MB_OK);
  537.         return;
  538.     }
  539.     CurrentPageLock();
  540.     m_ePar = PARAMETER_RX_PATH_LOSS;
  541.     DownloadToFlash();
  542. }
  543. //--------------------------------------------------------------------------
  544. void TfrmUpdateParameter::DownloadToFlash(void)
  545. {
  546.     m_bAction = false;
  547.     m_UP_Obj.ConfirmCallback = ::CNF_WriteToNVRAM;
  548.     while ((m_ePar <= PARAMETER_BARCODE) && (!m_bAction))
  549.     {
  550.         switch (m_ePar)
  551.         {
  552.             case PARAMETER_RX_PATH_LOSS:
  553.             {
  554.                 m_bAction = cbRXPathLoss->Checked;
  555.                 if (m_bAction)
  556.                 {
  557.                     m_UP_Obj.REQ_Write_AGC_To_NVRAM();
  558.                 }
  559.             }
  560.             break;
  561.             case PARAMETER_AFC:
  562.             {
  563.                 m_bAction = cbAFC->Checked;
  564.                 if (m_bAction)
  565.                 {
  566.                     if (rbTCVCXO->Checked)
  567.                     {
  568.                         m_UP_Obj.REQ_Write_AFC_To_NVRAM();
  569.                     }
  570.                     else // crystal
  571.                     {
  572.                         m_UP_Obj.REQ_Write_Crystal_AFC_To_NVRAM();
  573.                     }
  574.                 }
  575.             }
  576.             break;
  577.             case PARAMETER_IP2:
  578.             {
  579.                 m_bAction = cbIP2->Checked;
  580.                 if (m_bAction)
  581.                 {
  582.                     m_UP_Obj.REQ_Write_IP2_To_NVRAM(m_uiFinalRFID);
  583.                 }
  584.             }
  585.             break;
  586.             case PARAMETER_TXIQ:
  587.             {
  588.                 m_bAction = cbTxIQ->Checked;
  589.                 if (m_bAction)
  590.                 {
  591.                     m_UP_Obj.REQ_Write_TxIq_To_NVRAM(m_uiFinalRFID, m_eBbTxCfgVer);
  592.                 }
  593.             }
  594.             break;
  595.             case PARAMETER_GMSK_APC:
  596.             {
  597.                 m_bAction = cbGmskLevelRamp->Checked;
  598.                 if (m_bAction)
  599.                 {
  600.                     m_UP_Obj.REQ_Write_GMSK_APC_To_NVRAM(m_uiFinalRFID, m_bTADOSupport);
  601.                 }
  602.             }
  603.             break;
  604.             case PARAMETER_EPSK_APC:
  605.             {
  606.                 m_bAction = cbEpskLevelRamp->Checked;
  607.                 if (m_bAction)
  608.                 {
  609.                     m_UP_Obj.REQ_Write_EPSK_APC_To_NVRAM(m_uiFinalRFID);
  610.                 }
  611.             }
  612.             break;
  613.             case PARAMETER_ADC:
  614.             {
  615.                 m_bAction = cbADC->Checked;
  616.                 if (m_bAction)
  617.                 {
  618.                     m_UP_Obj.REQ_Write_ADC_To_NVRAM();
  619.                 }
  620.             }
  621.             break;
  622.             case PARAMETER_WIFI_TX_DC_OFFSET:
  623.             {
  624.                 m_bAction = cbWiFiTxDcOffset->Checked;
  625.                 if (m_bAction)
  626.                 {
  627.                     m_UP_Obj.REQ_Write_WiFiTxDcOffset_To_NVRAM();
  628.                 }
  629.             }
  630.             break;
  631.             case PARAMETER_WIFI_TX_POWER:
  632.             {
  633.                 m_bAction = cbWiFiTxPower->Checked;
  634.                 if (m_bAction)
  635.                 {
  636.                     m_UP_Obj.REQ_Write_WiFiTxPower_To_NVRAM();
  637.                 }
  638.             }
  639.             break;
  640.             case PARAMETER_WIFI_ALC:
  641.             {
  642.                 m_bAction = m_cbWiFiAlc->Checked;
  643.                 if (m_bAction)
  644.                 {
  645.                     m_UP_Obj.REQ_Write_WiFiAlc_To_NVRAM();
  646.                 }
  647.             }
  648.             break;
  649.             case PARAMETER_BT_CAP_ID:
  650.             {
  651.                 m_bAction = m_cbBtCapId->Checked;
  652.                 if (m_bAction)
  653.                 {
  654.                     m_UP_Obj.REQ_Write_BtCapId_To_NVRAM();
  655.                 }
  656.             }
  657.             break;
  658.             case PARAMETER_IMEI:
  659.             {
  660.                 m_bAction = cbIMEI->Checked;
  661.                 if (m_bAction)
  662.                 {
  663.                     m_UP_Obj.REQ_Write_IMEI_To_NVRAM(cbCheckChecksum->Checked);
  664.                 }
  665.             }
  666.             break;
  667.             case PARAMETER_BARCODE:
  668.             {
  669.                 m_bAction = cbBarcode->Checked;
  670.                 if (m_bAction)
  671.                 {
  672.                     m_UP_Obj.REQ_Write_Barcode_To_NVRAM();
  673.                 }
  674.             }
  675.             break;
  676.             default:
  677.             {
  678.             }
  679.             break;
  680.         }
  681.         if (!m_bAction)
  682.         {
  683.             m_ePar++;
  684.         }
  685.     }
  686.     if (m_ePar > PARAMETER_BARCODE)
  687.     {
  688.         CurrentPageReset();
  689.     }
  690. }
  691. //------------------------------------------------------------------
  692. void  TfrmUpdateParameter::DownloadToFlashDone(void)
  693. {
  694.     E_METAAPP_RESULT_T state = m_UP_Obj.Get_ConfirmState();
  695.     AnsiString as_msg;
  696.     switch (m_ePar)
  697.     {
  698.         case PARAMETER_RX_PATH_LOSS:
  699.         {
  700.             as_msg = "RX path loss";
  701.         }
  702.         break;
  703.         case PARAMETER_AFC:
  704.         {
  705.             as_msg = "AFC";
  706.         }
  707.         break;
  708.         case PARAMETER_IP2:
  709.         {
  710.             as_msg = "IP2";
  711.         }
  712.         break;
  713.         case PARAMETER_TXIQ:
  714.         {
  715.             as_msg = "TX IQ";
  716.         }
  717.         break;
  718.         case PARAMETER_GMSK_APC:
  719.         {
  720.             as_msg = "GMSK APC";
  721.         }
  722.         break;
  723.         case PARAMETER_EPSK_APC:
  724.         {
  725.             as_msg = "EPSK APC";
  726.         }
  727.         break;
  728.         case PARAMETER_ADC:
  729.         {
  730.             as_msg = "ADC";
  731.         }
  732.         break;
  733.         case PARAMETER_WIFI_TX_DC_OFFSET:
  734.         {
  735.             as_msg = "WiFi TX DC offset";
  736.         }
  737.         break;
  738.         case PARAMETER_WIFI_TX_POWER:
  739.         {
  740.             as_msg = "WiFi TX power";
  741.         }
  742.         break;
  743.         case PARAMETER_BT_CAP_ID:
  744.         {
  745.             as_msg = "BT crystal CAP ID";
  746.         }
  747.         break;
  748.         case PARAMETER_IMEI:
  749.         {
  750.             as_msg = "IMEI";
  751.         }
  752.         break;
  753.         case PARAMETER_BARCODE:
  754.         {
  755.             as_msg = "barcode";
  756.         }
  757.         break;
  758.         default:
  759.         {
  760.         }
  761.         break;
  762.     }
  763.     switch (state)
  764.     {
  765.         case METAAPP_SUCCESS:
  766.         {
  767.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Download " + as_msg + " setting to flash successfully";
  768.             m_ePar++;
  769.             DownloadToFlash();
  770.         }
  771.         break;
  772.         case METAAPP_FAIL:
  773.         {
  774.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Download " + as_msg + " setting to flash fail, please check the version of load and NVRAM database are same.";
  775.             AnsiString as_error_msg = "Execution Failure : Download " + as_msg + " setting to flash";
  776.             Application->MessageBox(as_error_msg.c_str(), "FAILURE", MB_OK );
  777.             CurrentPageReset();
  778.             return;
  779.         }
  780.        // break;
  781.         case METAAPP_TIMEOUT:
  782.         {
  783.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString) "  Download " + as_msg + " setting to flash timeout";
  784.             AnsiString as_error_msg = "Execution Timeout : Download " + as_msg + " setting to flash";
  785.             Application->MessageBox(as_error_msg.c_str(), "FAILURE", MB_OK );
  786.             CurrentPageReset();
  787.             return;
  788.         }
  789.        // break;
  790.         case METAAPP_STOP:
  791.         {
  792.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString) "  Download " + as_msg + " setting to flash stop";
  793.             CurrentPageReset();
  794.             return;
  795.         }
  796.       //  break;
  797.         default:
  798.         {
  799.         }
  800.         break;
  801.     }
  802. }
  803. //===================================================================================================
  804. void __fastcall TfrmUpdateParameter::btnSaveToFileClick(TObject *Sender)
  805. {
  806.     if (rbCrystal->Checked && cbAFC->Checked && (!cbGmskLevelRamp->Checked))
  807.     {
  808.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString) "  Please also select GMSK Level, Ramp for TRX offset setting";
  809.         Application->MessageBox( "Execution Warning : Please also select GMSK Level, Ramp for TRX offset setting", "WARNING", MB_OK );
  810.         return;
  811.     }
  812.     
  813.     char str[512];
  814.     bool ok;
  815.     ok = SaveDialog->Execute();
  816.     if (!ok)
  817.     {
  818.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save parameter to file fail";
  819.         Application->MessageBox( "Execution Failure : Save parameter to file", "FAILURE", MB_OK );
  820.         return;
  821.     }
  822.     strcpy(str, SaveDialog->FileName.c_str());
  823.     //-----------------------------------------------------------
  824.     if (cbRXPathLoss->Checked)
  825.     {
  826.         ok = m_UP_Obj.REQ_Write_AGC_To_File(str);
  827.         if (!ok)
  828.         {
  829.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save AGC setting to file fail";
  830.             Application->MessageBox("Execution Failure : Save AGC setting to file", "FAILURE", MB_OK);
  831.             return;
  832.         }
  833.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save AGC setting to file successfully";
  834.     }
  835.     //-----------------------------------------------------------
  836.     if (cbAFC->Checked)
  837.     {
  838.         if (rbTCVCXO->Checked)
  839.         {
  840.             ok = m_UP_Obj.REQ_Write_AFC_To_File(str);
  841.             if (!ok)
  842.             {
  843.                 sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save AFC setting to file fail";
  844.                 Application->MessageBox("Execution Failure : Save AFC setting to file", "FAILURE", MB_OK);
  845.                 return;
  846.             }
  847.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save AFC setting to file successfully";
  848.         }
  849.         else
  850.         {
  851.             ok = m_UP_Obj.REQ_Write_Crystal_AFC_To_File(str);
  852.             if (!ok)
  853.             {
  854.                 sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save crystal AFC setting to file fail";
  855.                 Application->MessageBox("Execution Failure : Save crystal AFC setting to file", "FAILURE", MB_OK);
  856.                 return;
  857.             }
  858.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save crystal AFC setting to file successfully";
  859.         }
  860.     }
  861.     //-----------------------------------------------------------
  862.     if (cbIP2->Checked)
  863.     {
  864.         ok = m_UP_Obj.REQ_Write_IP2_To_File(str, m_uiFinalRFID);
  865.         if (!ok)
  866.         {
  867.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save IP2 setting to file fail";
  868.             Application->MessageBox("Execution Failure : Save IP2 setting to file", "FAILURE", MB_OK);
  869.             return;
  870.         }
  871.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save IP2 setting to file successfully";
  872.     }
  873.     //-----------------------------------------------------------
  874.     if (cbTxIQ->Checked)
  875.     {
  876.         ok = m_UP_Obj.REQ_Write_TxIq_To_File(str, m_uiFinalRFID, m_eBbTxCfgVer);
  877.         if (!ok)
  878.         {
  879.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save TX IQ setting to file fail";
  880.             Application->MessageBox("Execution Failure : Save TX IQ setting to file", "FAILURE", MB_OK);
  881.             return;
  882.         }
  883.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save TX IQ setting to file successfully";
  884.     }
  885.     //-----------------------------------------------------------
  886.     if (cbGmskLevelRamp->Checked)
  887.     {
  888.         ok = m_UP_Obj.REQ_Write_GMSK_APC_To_File(str, m_uiFinalRFID, m_bTADOSupport);
  889.         if (!ok)
  890.         {
  891.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save GMSK level and ramp setting to file fail";
  892.             Application->MessageBox("Execution Failure : Save GMSK level and ramp setting to file", "FAILURE", MB_OK);
  893.             return;
  894.         }
  895.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save GMSK level and ramp setting to file successfully";
  896.     }
  897.     //-----------------------------------------------------------
  898.     if (cbEpskLevelRamp->Checked)
  899.     {
  900.         ok = m_UP_Obj.REQ_Write_EPSK_APC_To_File(str, m_uiFinalRFID);
  901.         if (!ok)
  902.         {
  903.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save EPSK level and ramp setting to file fail";
  904.             Application->MessageBox("Execution Failure : Save EPSK level and ramp setting to file", "FAILURE", MB_OK);
  905.             return;
  906.         }
  907.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save EPSK level and ramp setting to file successfully";
  908.     }
  909.     //-----------------------------------------------------------
  910.     if (cbADC->Checked)
  911.     {
  912.         ok = m_UP_Obj.REQ_Write_ADC_To_File(str);
  913.         if (!ok)
  914.         {
  915.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save ADC setting to file fail";
  916.             Application->MessageBox("Execution Failure : Save ADC setting to file", "FAILURE", MB_OK);
  917.             return;
  918.         }
  919.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save ADC setting to file successfully";
  920.     }
  921.     //-----------------------------------------------------------
  922.     if (cbWiFiTxDcOffset->Checked)
  923.     {
  924.         ok = m_UP_Obj.REQ_Write_WiFiTxDcOffset_To_File(str);
  925.         if (!ok)
  926.         {
  927.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save WiFi TX DC offset setting to file fail";
  928.             Application->MessageBox("Execution Failure : Save WiFi WiFi TX DC offset setting to file", "FAILURE", MB_OK);
  929.             return;
  930.         }
  931.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save WiFi WiFi TX DC offset setting to file successfully";
  932.     }
  933.     //-----------------------------------------------------------
  934.     if (cbWiFiTxPower->Checked)
  935.     {
  936.         ok = m_UP_Obj.REQ_Write_WiFiTxPower_To_File(str);
  937.         if (!ok)
  938.         {
  939.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save WiFi TX power setting to file fail";
  940.             Application->MessageBox("Execution Failure : Save WiFi TX power setting to file", "FAILURE", MB_OK);
  941.             return;
  942.         }
  943.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save WiFi TX power setting to file successfully";
  944.     }
  945.     //-----------------------------------------------------------
  946.     if (m_cbWiFiAlc->Checked && m_cbWiFiAlc->Visible)
  947.     {
  948.         ok = m_UP_Obj.REQ_Write_WiFiAlc_To_File(str);
  949.         if (!ok)
  950.         {
  951.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save WiFi ALC setting to file fail";
  952.             Application->MessageBox("Execution Failure : Save WiFi ALC setting to file", "FAILURE", MB_OK);
  953.             return;
  954.         }
  955.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save WiFi ALC setting to file successfully";
  956.     }
  957.     //-----------------------------------------------------------
  958.     // BT CAP ID
  959.     if (m_cbBtCapId->Checked)
  960.     {
  961.         ok = m_UP_Obj.REQ_Write_BtCapId_To_File(str);
  962.         if( !ok )
  963.         {
  964.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save BT crystal CAP ID setting to file fail";
  965.             Application->MessageBox( "Execution Failure : Save BT crystal CAP ID setting to file", "FAILURE", MB_OK );
  966.             return;
  967.         }
  968.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save BT crystal CAP ID setting to file successfully";
  969.     }
  970.     //-----------------------------------------------------------
  971.     if (cbIMEI->Checked)
  972.     {
  973.         ok = m_UP_Obj.REQ_Write_IMEI_To_File(str);
  974.         if( !ok )
  975.         {
  976.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save IMEI setting to file fail";
  977.             Application->MessageBox( "Execution Failure : Save IMEI setting to file", "FAILURE", MB_OK );
  978.             return;
  979.         }
  980.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save IMEI setting to file successfully";
  981.     }
  982.     //-----------------------------------------------------------
  983.     if(cbBarcode->Checked )
  984.     {
  985.         ok = m_UP_Obj.REQ_Write_Barcode_To_File(str);
  986.         if( !ok )
  987.         {
  988.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save barcode setting to file fail";
  989.             Application->MessageBox( "Execution Failure : Save barcode setting to file", "FAILURE", MB_OK );
  990.             return;
  991.         }
  992.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Save barcode setting to file successfully";
  993.     }
  994. }
  995. //---------------------------------------------------------------------------
  996. void __fastcall TfrmUpdateParameter::btnLoadFromFileClick(TObject *Sender)
  997. {
  998.     if (rbCrystal->Checked && cbAFC->Checked && (!cbGmskLevelRamp->Checked))
  999.     {
  1000.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString) "  Please also select GMSK Level, Ramp for TRX offset setting";
  1001.         Application->MessageBox( "Execution Warning : Please also select GMSK Level, Ramp for TRX offset setting", "WARNING", MB_OK );
  1002.         return;
  1003.     }
  1004.     
  1005.     char str[512];
  1006.     bool ok;
  1007.     float  fdata;
  1008.     ok = OpenDialog->Execute();
  1009.     if (!ok)
  1010.     {
  1011.         return;
  1012.     }
  1013.     strcpy(str, OpenDialog->FileName.c_str());
  1014.     //------------------------------------------------------------
  1015.     if (cbRXPathLoss->Checked)
  1016.     {
  1017.         if (cbCheckSectionExist->Checked)
  1018.         {
  1019.             ok = m_UP_Obj.AnyRxLossSectionExist(str);
  1020.             if (!ok)
  1021.             {
  1022.                 sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  No RX path loss setting in file";
  1023.                 Application->MessageBox("Execution Failure : No RX path loss setting in file", "FAILURE", MB_OK);
  1024.                 return;
  1025.             }
  1026.         }
  1027.         ok = m_UP_Obj.REQ_Read_AGC_From_File(str);
  1028.         if (!ok)
  1029.         {
  1030.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load RX path loss setting from file fail";
  1031.             Application->MessageBox("Execution Failure : Load RX path loss setting from file", "FAILURE", MB_OK);
  1032.             return;
  1033.         }
  1034.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load RX path loss setting from file successfully";
  1035.     }
  1036.     //------------------------------
  1037.     if (cbAFC->Checked)
  1038.     {
  1039.         if (rbTCVCXO->Checked)
  1040.         {
  1041.             if (cbCheckSectionExist->Checked)
  1042.             {
  1043.                 ok = m_UP_Obj.AfcSectionExist(str);
  1044.                 if (!ok)
  1045.                 {
  1046.                     sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  No AFC setting in file";
  1047.                     Application->MessageBox("Execution Failure : No AFC setting in file", "FAILURE", MB_OK);
  1048.                     return;
  1049.                 }
  1050.             }
  1051.             ok = m_UP_Obj.REQ_Read_AFC_From_File(str);
  1052.             if (!ok)
  1053.             {
  1054.                 sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load AFC setting from file fail";
  1055.                 Application->MessageBox("Execution Failure : Load AFC setting from file", "FAILURE", MB_OK);
  1056.                 return;
  1057.             }
  1058.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load AFC setting from file successfully";
  1059.         }
  1060.         else
  1061.         {
  1062.             if (cbCheckSectionExist->Checked)
  1063.             {
  1064.                 ok = m_UP_Obj.CrystalAfcSectionExist(str);
  1065.                 if (!ok)
  1066.                 {
  1067.                     sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  No Crystal AFC setting in file";
  1068.                     Application->MessageBox("Execution Failure : No Crystal AFC setting in file", "FAILURE", MB_OK);
  1069.                     return;
  1070.                 }
  1071.             }
  1072.             ok = m_UP_Obj.REQ_Read_Crystal_AFC_From_File(str);
  1073.             if (!ok)
  1074.             {
  1075.                 sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load crystal AFC setting from file fail";
  1076.                 Application->MessageBox("Execution Failure : Load crystal AFC setting from file", "FAILURE", MB_OK);
  1077.                 return;
  1078.             }
  1079.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load crystal AFC setting from file successfully";
  1080.         }
  1081.     }
  1082.     //------------------------------
  1083.     if (cbIP2->Checked)
  1084.     {
  1085.         if (cbCheckSectionExist->Checked)
  1086.         {
  1087.             ok = m_UP_Obj.AnyIP2SectionExist(str);
  1088.             if (!ok)
  1089.             {
  1090.                 sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  No IP2 setting in file";
  1091.                 Application->MessageBox( "Execution Failure : No IP2 setting in file", "FAILURE", MB_OK );
  1092.                 return;
  1093.             }
  1094.         }
  1095.         ok = m_UP_Obj.REQ_Read_IP2_From_File(str, m_uiFinalRFID);
  1096.         if (!ok)
  1097.         {
  1098.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load IP2 setting from file fail";
  1099.             Application->MessageBox("Execution Failure : Load IP2 setting to file", "FAILURE", MB_OK);
  1100.             return;
  1101.         }
  1102.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load IP2 setting from file successfully";
  1103.     }
  1104.     //------------------------------
  1105.     if (cbTxIQ->Checked)
  1106.     {
  1107.         if (cbCheckSectionExist->Checked)
  1108.         {
  1109.             ok = m_UP_Obj.TxIqSectionExist(str);
  1110.             if (!ok)
  1111.             {
  1112.                 sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  No TX IQ setting in file";
  1113.                 Application->MessageBox( "Execution Failure : No TX IQ setting in file", "FAILURE", MB_OK );
  1114.                 return;
  1115.             }
  1116.         }
  1117.         ok = m_UP_Obj.REQ_Read_TxIq_From_File(str, m_uiFinalRFID, m_eBbTxCfgVer);
  1118.         if (!ok)
  1119.         {
  1120.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load TX IQ setting from file fail";
  1121.             Application->MessageBox( "Execution Failure : Load TX IQ setting to file", "FAILURE", MB_OK );
  1122.             return;
  1123.         }
  1124.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load TX IQ setting from file successfully";
  1125.     }
  1126.     //------------------------------
  1127.     if (cbGmskLevelRamp->Checked)
  1128.     {
  1129.         if (cbCheckSectionExist->Checked)
  1130.         {
  1131.             ok = m_UP_Obj.AnyGmskApcSectionExist(str);
  1132.             if (!ok)
  1133.             {
  1134.                 sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  No GMSK APC setting in file";
  1135.                 Application->MessageBox( "Execution Failure : No GMSK APC setting in file", "FAILURE", MB_OK );
  1136.                 return;
  1137.             }
  1138.         }
  1139.         ok = m_UP_Obj.REQ_Read_GMSK_APC_From_File(str, m_uiFinalRFID, m_bTADOSupport);
  1140.         if (!ok)
  1141.         {
  1142.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load GMSK APC setting from file fail";
  1143.             Application->MessageBox( "Execution Failure : Load GMSK APC setting to file", "FAILURE", MB_OK );
  1144.             return;
  1145.         }
  1146.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load GMSK APC setting from file successfully";
  1147.     }
  1148.     //------------------------------
  1149.     if (cbEpskLevelRamp->Checked)
  1150.     {
  1151.         if (cbCheckSectionExist->Checked)
  1152.         {
  1153.             ok = m_UP_Obj.AnyEpskApcSectionExist(str);
  1154.             if (!ok)
  1155.             {
  1156.                 sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  No EPSK APC setting in file";
  1157.                 Application->MessageBox("Execution Failure : No EPSK APC setting in file", "FAILURE", MB_OK);
  1158.                 return;
  1159.             }
  1160.         }
  1161.         ok = m_UP_Obj.REQ_Read_EPSK_APC_From_File(str, m_uiFinalRFID);
  1162.         if (!ok)
  1163.         {
  1164.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load EPSK APC setting from file fail";
  1165.             Application->MessageBox("Execution Failure : Load EPSK APC setting to file", "FAILURE", MB_OK);
  1166.             return;
  1167.         }
  1168.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load EPSK APC setting from file successfully";
  1169.     }
  1170.     //------------------------------
  1171.     if (cbADC->Checked)
  1172.     {
  1173.         if (cbCheckSectionExist->Checked)
  1174.         {
  1175.             ok = m_UP_Obj.AdcSectionExist(str);
  1176.             if (!ok)
  1177.             {
  1178.                 sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  No ADC setting in file";
  1179.                 Application->MessageBox("Execution Failure : No ADC setting in file", "FAILURE", MB_OK);
  1180.                 return;
  1181.             }
  1182.         }
  1183.         ok = m_UP_Obj.REQ_Read_ADC_From_File(str);
  1184.         if (!ok)
  1185.         {
  1186.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load ADC setting from file fail";
  1187.             Application->MessageBox("Execution Failure : Load ADC setting from file", "FAILURE", MB_OK);
  1188.             return;
  1189.         }
  1190.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load ADC setting from file successfully";
  1191.     }
  1192.     //------------------------------
  1193.     if (cbWiFiTxDcOffset->Checked)
  1194.     {
  1195.         if (cbCheckSectionExist->Checked)
  1196.         {
  1197.             ok = m_UP_Obj.WiFiTxDcOffsetSectionExist(str);
  1198.             if (!ok)
  1199.             {
  1200.                 sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  No WiFi TX DC offset setting in file";
  1201.                 Application->MessageBox("Execution Failure : No WiFi TX DC offset setting in file", "FAILURE", MB_OK);
  1202.                 return;
  1203.             }
  1204.         }
  1205.         ok = m_UP_Obj.REQ_Read_WiFiTxDcOffset_From_File(str);
  1206.         if (!ok)
  1207.         {
  1208.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load WiFi TX DC offset setting from file fail";
  1209.             Application->MessageBox("Execution Failure : Load WiFi TX DC offset setting from file", "FAILURE", MB_OK);
  1210.             return;
  1211.         }
  1212.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load WiFi TX DC offset setting from file successfully";
  1213.     }
  1214.     //------------------------------
  1215.     if (cbWiFiTxPower->Checked)
  1216.     {
  1217.         if (cbCheckSectionExist->Checked)
  1218.         {
  1219.             ok = m_UP_Obj.WiFiTxPowerSectionExist(str);
  1220.             if (!ok)
  1221.             {
  1222.                 sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  No WiFi TX power setting in file";
  1223.                 Application->MessageBox( "Execution Failure : No WiFi TX power setting in file", "FAILURE", MB_OK );
  1224.                 return;
  1225.             }
  1226.         }
  1227.         ok = m_UP_Obj.REQ_Read_WiFiTxPower_From_File(str);
  1228.         if (!ok)
  1229.         {
  1230.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load WiFi TX power setting from file fail";
  1231.             Application->MessageBox("Execution Failure : Load WiFi TX power setting from file", "FAILURE", MB_OK);
  1232.             return;
  1233.         }
  1234.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load WiFi TX power setting from file successfully";
  1235.     }
  1236.     //------------------------------
  1237.     // WiFi ALC
  1238.     if (m_cbWiFiAlc->Checked && m_cbWiFiAlc->Visible)
  1239.     {
  1240.         if (cbCheckSectionExist->Checked)
  1241.         {
  1242.             ok = m_UP_Obj.WiFiAlcSectionExist(str);
  1243.             if (!ok)
  1244.             {
  1245.                 sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  No WiFi ALC setting in file";
  1246.                 Application->MessageBox( "Execution Failure : No WiFi ALC setting in file", "FAILURE", MB_OK );
  1247.                 return;
  1248.             }
  1249.         }
  1250.         ok = m_UP_Obj.REQ_Read_WiFiAlc_From_File(str);
  1251.         if (!ok)
  1252.         {
  1253.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load WiFi ALC setting from file fail";
  1254.             Application->MessageBox("Execution Failure : Load WiFi ALC setting from file", "FAILURE", MB_OK);
  1255.             return;
  1256.         }
  1257.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load WiFi ALC setting from file successfully";
  1258.     }
  1259.     //------------------------------
  1260.     // BT CAP ID
  1261.     if (m_cbBtCapId->Checked)
  1262.     {
  1263.         if (cbCheckSectionExist->Checked)
  1264.         {
  1265.             ok = m_UP_Obj.BtCapIdSectionExist(str);
  1266.             if (!ok)
  1267.             {
  1268.                 sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  No BT crystal CAP ID setting in file";
  1269.                 Application->MessageBox("Execution Failure : No BT crystal CAP ID setting in file", "FAILURE", MB_OK);
  1270.                 return;
  1271.             }
  1272.         }
  1273.         ok = m_UP_Obj.REQ_Read_BtCapId_From_File(str);
  1274.         if (!ok)
  1275.         {
  1276.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load BT crystal CAP ID setting from file fail";
  1277.             Application->MessageBox("Execution Failure : Load BT crystal CAP ID setting from file", "FAILURE", MB_OK);
  1278.             return;
  1279.         }
  1280.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load BT crystal CAP ID setting from file successfully";
  1281.     }
  1282.     //------------------------------
  1283.     if (cbIMEI->Checked)
  1284.     {
  1285.         if (cbCheckSectionExist->Checked)
  1286.         {
  1287.             ok = m_UP_Obj.ImeiSectionExist(str);
  1288.             if (!ok)
  1289.             {
  1290.                 sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  No IMEI setting in file";
  1291.                 Application->MessageBox("Execution Failure : No IMEI setting in file", "FAILURE", MB_OK);
  1292.                 return;
  1293.             }
  1294.         }
  1295.         ok = m_UP_Obj.REQ_Read_IMEI_From_File(str);
  1296.         if (!ok)
  1297.         {
  1298.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load IMEI setting from file fail";
  1299.             Application->MessageBox("Execution Failure : Load IMEI setting from file", "FAILURE", MB_OK);
  1300.             return;
  1301.         }
  1302.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load IMEI setting from file successfully";
  1303.     }
  1304.     //------------------------------
  1305.     if (cbBarcode->Checked)
  1306.     {
  1307.         if (cbCheckSectionExist->Checked)
  1308.         {
  1309.             ok = m_UP_Obj.BarcodeSectionExist(str);
  1310.             if (!ok)
  1311.             {
  1312.                 sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  No barcode setting in file";
  1313.                 Application->MessageBox("Execution Failure : No barcode setting in file", "FAILURE", MB_OK);
  1314.                 return;
  1315.             }
  1316.         }
  1317.         ok = m_UP_Obj.REQ_Read_Barcode_From_File(str);
  1318.         if (!ok)
  1319.         {
  1320.             sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load barcode setting from file fail";
  1321.             Application->MessageBox("Execution Failure : Load barcode setting from file", "FAILURE", MB_OK);
  1322.             return;
  1323.         }
  1324.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString)"  Load barcode setting from file successfully";
  1325.     }
  1326. }
  1327. //---------------------------------------------------------------------------
  1328. void __fastcall TfrmUpdateParameter::btnChangeDBClick(TObject *Sender)
  1329. {
  1330.     frmMainSel->mnuFDMDatabaseClick(Sender);
  1331.     if (!NVRAMMan->Get_IsInit())
  1332.     {
  1333.         sbUpdateParameter->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialization fail";
  1334.         Application->MessageBox( "Execution Failure : NVRAM database file initialization fail", "FAILURE", MB_OK );
  1335.         return;
  1336.     }
  1337.     sbUpdateParameter->Panels->Items[0]->Text = (AnsiString) "  Change NVRAM database file successfully";
  1338. }
  1339. //---------------------------------------------------------------------------
  1340. void __fastcall TfrmUpdateParameter::ToggleHideExecute(TObject *Sender)
  1341. {
  1342.    if( g_bHideEnable )
  1343.     {
  1344.         g_bHideEnable = false;
  1345.         rbTCVCXO->Checked = true;
  1346.     }
  1347.     else
  1348.     {
  1349.         g_bHideEnable = true;
  1350.     }
  1351.     ApplyHideProperty();
  1352. }
  1353. //---------------------------------------------------------------------------
  1354. void TfrmUpdateParameter::ApplyHideProperty( void )
  1355. {
  1356.     if( g_bHideEnable )
  1357.     {
  1358.         // crystal
  1359.         //rbCrystal->Visible = false;
  1360.         //rbTCVCXO->Checked = true;
  1361.     }
  1362.     else
  1363.     {
  1364.         // crystal
  1365.         //rbCrystal->Visible = true;
  1366.     }   
  1367. }
  1368. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1369. void TfrmUpdateParameter::DisplayIP2Visible( int rf_id )
  1370. {
  1371.     switch( rf_id )
  1372.     {
  1373.         case RF_ID_SKY74045:
  1374.         case RF_ID_SKY74117:
  1375.         case RF_ID_SKY74400:
  1376.        // case RF_ID_MT6139B:
  1377.        // case RF_ID_MT6139C:
  1378.      //   case RF_ID_MT6139E:
  1379.       //  case RF_ID_MT6140A:
  1380.       //  case RF_ID_MT6140B:
  1381.       //  case RF_ID_MT6140C:
  1382.         {
  1383.              cbIP2->Visible = true;
  1384.         }
  1385.         break;
  1386.         default:
  1387.         {
  1388.             cbIP2->Visible = false;
  1389.             cbIP2->Enabled = false;
  1390.         }    
  1391.         break;
  1392.     }
  1393. }
  1394. //===========================================================================
  1395. /////////////////////////////        Query       ////////////////////////////
  1396. //===========================================================================
  1397. void __fastcall TfrmUpdateParameter::on_QueryTwoApcDcOffset_Fail(TObject *Sender)
  1398. {
  1399.     QueryRfId();
  1400. }
  1401. //---------------------------------------------------------------------------
  1402. void __fastcall TfrmUpdateParameter::on_QueryTwoApcDcOffset_TerminateSuccess(TObject *Sender)
  1403. {
  1404.     QueryRfId();
  1405. }
  1406. //---------------------------------------------------------------------------
  1407. void  TfrmUpdateParameter::Query_TwoApcDcOffset_Support( void )
  1408. {
  1409.     m_t_RfTado.hPostMsgDestHandle = this->Handle;
  1410.     m_t_RfTado.ne_onTermSuccess   = on_QueryTwoApcDcOffset_TerminateSuccess;
  1411.     pt_rftado = new T_RFTADO(
  1412.                                        true,
  1413.                                        &m_t_RfTado);
  1414.     if(pt_rftado != NULL)
  1415.     {
  1416.         pt_rftado->FreeOnTerminate = true;
  1417.         pt_rftado->OnTerminate = on_QueryTwoApcDcOffset_Fail;
  1418.         pt_rftado->Priority = tpHighest;
  1419.         pt_rftado->Resume();
  1420.     }
  1421. }
  1422. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1423. void __fastcall TfrmUpdateParameter::on_QueryRFID_Fail(TObject *Sender)
  1424. {
  1425. }
  1426. //---------------------------------------------------------------------------
  1427. void __fastcall TfrmUpdateParameter::on_QueryRFID_TerminateSuccess(TObject *Sender)
  1428. {
  1429. }
  1430. //-----------------------------------------------------------------------------
  1431. void TfrmUpdateParameter::QueryRfId( void )
  1432. {
  1433.     m_t_rf_id.hPostMsgDestHandle = this->Handle;
  1434.     m_t_rf_id.ne_onTermSuccess   = on_QueryRFID_TerminateSuccess;
  1435.     pt_rfid = new T_RFID( true, &m_t_rf_id);
  1436.     if(pt_rfid != NULL)
  1437.     {
  1438.         pt_rfid->FreeOnTerminate = true;
  1439.         pt_rfid->OnTerminate = on_QueryRFID_Fail;
  1440.         pt_rfid->Priority = tpHighest;
  1441.         pt_rfid->Resume();
  1442.     }
  1443. }
  1444. //==============================================================================
  1445. void  TfrmUpdateParameter::CurrentPageLock( void )
  1446. {
  1447.     btnUploadFromFlash->Enabled = false;
  1448.     btnDownloadToFlash->Enabled = false;
  1449.     btnChangeDB->Enabled = false;
  1450. }
  1451. //----------------------------------------------------------------------------
  1452. void  TfrmUpdateParameter::CurrentPageReset( void )
  1453. {
  1454.     btnUploadFromFlash->Enabled = true;
  1455.     btnDownloadToFlash->Enabled = true;
  1456.     btnChangeDB->Enabled = true;
  1457. }
  1458. //===========================================================================
  1459. /////////////////////////   Global information   ////////////////////////////
  1460. //===========================================================================
  1461. void TfrmUpdateParameter::Init( void )
  1462. {
  1463.     m_bInit = true;
  1464.     m_bTADOSupport = false;
  1465.     CurrentPageReset();
  1466. }