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

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_RFPathLoss.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   RF RX path loss 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_RFPathLoss.h"
  69. #include "misc.h"
  70. #include "man_fdm.h"
  71. #include "form_main.h"
  72. //---------------------------------------------------------------------------
  73. //#define GSM850_CURRENT_BAND -1
  74. //---------------------------------------------------------------------------
  75. #pragma package(smart_init)
  76. #pragma resource "*.dfm"
  77. //---------------------------------------------------------------------------
  78. TfrmPathLoss *frmPathLoss;
  79. //---------------------------------------------------------------------------
  80. static void  CNF_ResetNVRAMData( void )
  81. {
  82.     frmPathLoss->CNF_ResetNVRAMData();
  83. }
  84. //===========================================================================
  85. __fastcall TfrmPathLoss::TfrmPathLoss(TComponent* Owner)
  86.    : TForm(Owner)
  87. {
  88.     int  i, j;
  89.     for(i=0; i<FrequencyBandCount; i++)
  90.     {
  91.         for(j=0; j<PLTABLE_SIZE; j++)
  92.         {
  93.             RFCal_PathLoss.agcPathLoss[i][j].max_arfcn = -1;
  94.             RFCal_PathLoss.agcPathLoss[i][j].gain_offset = 0;
  95.         }
  96.     }
  97.     m_eCurBand = BANDSEL_GSM900;
  98.     RF_AGC_Obj = 0;
  99.     lastTabIndex = 0; // GSM 900
  100. }
  101. //---------------------------------------------------------------------------
  102. void __fastcall TfrmPathLoss::FormShow(TObject *Sender)
  103. {
  104.    static bool  init=true;
  105.    if(init)
  106.    {
  107.       edtARFCN[ 0]=edtARFCN00;   edtLoss[ 0]=edtLoss00;
  108.       edtARFCN[ 1]=edtARFCN01;   edtLoss[ 1]=edtLoss01;
  109.       edtARFCN[ 2]=edtARFCN02;   edtLoss[ 2]=edtLoss02;
  110.       edtARFCN[ 3]=edtARFCN03;   edtLoss[ 3]=edtLoss03;
  111.       edtARFCN[ 4]=edtARFCN04;   edtLoss[ 4]=edtLoss04;
  112.       edtARFCN[ 5]=edtARFCN05;   edtLoss[ 5]=edtLoss05;
  113.       edtARFCN[ 6]=edtARFCN06;   edtLoss[ 6]=edtLoss06;
  114.       edtARFCN[ 7]=edtARFCN07;   edtLoss[ 7]=edtLoss07;
  115.       edtARFCN[ 8]=edtARFCN08;   edtLoss[ 8]=edtLoss08;
  116.       edtARFCN[ 9]=edtARFCN09;   edtLoss[ 9]=edtLoss09;
  117.       edtARFCN[10]=edtARFCN10;   edtLoss[10]=edtLoss10;
  118.       edtARFCN[11]=edtARFCN11;   edtLoss[11]=edtLoss11;
  119.       frmPathLoss->AutoScroll = true;
  120.       ReDrawFields();
  121.       init = false;
  122.    }
  123. }
  124. //===========================================================================
  125. void  TfrmPathLoss::ReDrawFields( void )
  126. {
  127.    int  i;
  128.    int  band = m_eCurBand+2;
  129.    for(i=0; i<PLTABLE_SIZE-1; i++)
  130.    {  edtARFCN[i]->Text = RFCal_PathLoss.agcPathLoss[band][i].max_arfcn;
  131.       edtLoss[i]->Text = RFCal_PathLoss.agcPathLoss[band][i].gain_offset/8.0;
  132.    }
  133. }
  134. //===========================================================================
  135. void  TfrmPathLoss::ShowHintLabel( TControl *sender, char* hint )
  136. {
  137.    TPoint pt0 = this->ClientOrigin;
  138.    TPoint pt1 = sender->ClientOrigin;
  139.    lblHint->Left = (pt1.x-pt0.x);
  140.    lblHint->Top  = (pt1.y-pt0.y)+sender->Height+3;
  141.    lblHint->Caption = hint;
  142.    lblHint->Visible = true;
  143.    HintTimer->Enabled = true;
  144. }
  145. //---------------------------------------------------------------------------
  146. bool  TfrmPathLoss::CheckFields( void )
  147. {
  148.    int  i;
  149.    short sdata[2][PLTABLE_SIZE];
  150.    int  data[2][PLTABLE_SIZE];
  151.    AnsiString  text;
  152.    E_BANDSEL band;
  153.    //if(m_eCurBand == GSM850_CURRENT_BAND)
  154.    //{   band = BANDSEL_GSM850;  }
  155.    //else
  156.    {   band = m_eCurBand;
  157.    }
  158.    for(i=0; i<PLTABLE_SIZE-1; i++)
  159.    {  text = edtARFCN[i]->Text;    if( !IsValidARFCN2( text, band, sdata[0][i] ) )   {  edtARFCNCheck(edtARFCN[i]);   return(false);   }
  160.       if (sdata[0][i]==-1)  break;
  161.       text = edtLoss[i]->Text;     if( !IsValidGain( text, data[1][i] ) )           {  edtLossCheck(edtLoss[i]);     return(false);   }
  162.    }
  163.    band = m_eCurBand+2;
  164.    for(i=0; i<PLTABLE_SIZE-1; i++)
  165.    {  RFCal_PathLoss.agcPathLoss[band][i].max_arfcn = data[0][i];
  166.       if(data[0][i]==-1)  break;
  167.       RFCal_PathLoss.agcPathLoss[band][i].gain_offset = data[1][i];
  168.    }
  169.    return(true);
  170. }
  171. //---------------------------------------------------------------------------
  172. void __fastcall TfrmPathLoss::edtARFCNCheck(TObject *Sender)
  173. {
  174.     AnsiString  text;
  175.     short sdata;
  176.     E_BANDSEL band;
  177.     TEdit *edit = (TEdit*)Sender;
  178.     char  hint[][256] =
  179.     {
  180.         " value shall be 0~124 or 975~1023 ",
  181.         " value shall be 512~885 ",
  182.         " value shall be 512~810 ",
  183.         " value shall be 128~251 ",
  184.     };
  185.     //if (m_eCurBand == GSM850_CURRENT_BAND) // GSM850
  186.     //{
  187.     //    band = BANDSEL_GSM850;
  188.     //}
  189.     //else
  190.     {
  191.         band = m_eCurBand;
  192.     }
  193.     text = edit->Text;
  194.     if (!IsValidARFCN2(text, band, sdata))
  195.     {
  196.         ShowHintLabel( edit, hint[band] );
  197.         edit->SetFocus();
  198.         return;
  199.     }
  200.     band = m_eCurBand+2;
  201.     RFCal_PathLoss.agcPathLoss[band][edit->Tag].max_arfcn = sdata;
  202. }
  203. //---------------------------------------------------------------------------
  204. void __fastcall TfrmPathLoss::edtLossCheck(TObject *Sender)
  205. {
  206.    AnsiString  text;
  207.    int  data;
  208.    int  band;
  209.    TEdit *edit = (TEdit*)Sender;
  210.    char  hint[] = " character is not valid ";
  211.    text = edit->Text;
  212.    if( !IsValidGain( text, data ) )
  213.    {  ShowHintLabel( edit, hint );
  214.       edit->SetFocus();
  215.       return;
  216.    }
  217.    band = m_eCurBand+2;
  218.    RFCal_PathLoss.agcPathLoss[band][edit->Tag].gain_offset = data;
  219. }
  220. //---------------------------------------------------------------------------
  221. void __fastcall TfrmPathLoss::tctlPathLossChange(TObject *Sender)
  222. {
  223.    if (!frmMainSel->cbGSM850->Checked)
  224.    {
  225.        if (BANDSEL_GSM850 == (E_BANDSEL)tctlPathLoss->TabIndex)
  226.        {
  227.            tctlPathLoss->TabIndex = lastTabIndex;
  228.            sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Please check GSM 850 on main menu";
  229.            Application->MessageBox( "Please check GSM 850 on main menu", "FAILURE", MB_OK );
  230.            return;
  231.        }
  232.    }
  233.     if( ! CheckFields() )
  234.     {
  235.          tctlPathLoss->TabIndex = m_eCurBand;
  236.          return;
  237.     }
  238.     //if (BANDSEL_GSM850 == (E_BANDSEL)tctlPathLoss->TabIndex) // GSM 850
  239.     //{
  240.     //    m_eCurBand = GSM850_CURRENT_BAND;
  241.     //}
  242.     //else
  243.     {
  244.         m_eCurBand = (E_BANDSEL) tctlPathLoss->TabIndex;
  245.         lastTabIndex = tctlPathLoss->TabIndex;
  246.     }
  247.     ReDrawFields();
  248. }
  249. //===========================================================================
  250. static void CNF_ReadFromNVRAM( void )
  251. {   frmPathLoss->UploadFromFlashDone();
  252. }
  253. //-----------------------------------------------
  254. void __fastcall TfrmPathLoss::UploadFromFlashStart(TObject *Sender)
  255. {
  256.     if( ! NVRAMMan->Get_IsInit() )
  257.     {   frmMainSel->mnuFDMDatabaseClick(Sender);
  258.     }
  259.     if( ! NVRAMMan->Get_IsInit() )
  260.     {
  261.         sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialization fail";
  262.         Application->MessageBox( "Execution Failure : NVRAM database file initialization", "FAILURE", MB_OK );
  263.         return;
  264.     }
  265.     RF_AGC_Obj->ConfirmCallback = ::CNF_ReadFromNVRAM;
  266.     RF_AGC_Obj->REQ_Read_From_NVRAM_Start();
  267.     CurrentPageLock();
  268. }
  269. //-----------------------------------------------
  270. void TfrmPathLoss::UploadFromFlashDone(void)
  271. {
  272.     E_METAAPP_RESULT_T state = RF_AGC_Obj->Get_ConfirmState();
  273.     CurrentPageReset();
  274.     switch (state)
  275.     {
  276.         case METAAPP_SUCCESS:
  277.         {
  278.             l1cal_agcPathLoss_T* p_path_loss = RF_AGC_Obj->Get_PathLoss();
  279.             RFCal_PathLoss = *p_path_loss;
  280.             sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Upload AGC path loss setting from flash successfully";
  281.             ReDrawFields();
  282.         }
  283.         break;
  284.         case METAAPP_FAIL:
  285.         {
  286.             sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Upload AGC path loss setting from flash fail, please check the version of load and NVRAM database are same.";
  287.             Application->MessageBox( "Execution Failure : Upload AGC Path Loss form flash, please check the version of load and NVRAM database are same.", "FAILURE", MB_OK );
  288.         }
  289.         break;
  290.         case METAAPP_TIMEOUT:
  291.         {
  292.             sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Upload AGC path loss setting from flash timeout";
  293.             Application->MessageBox( "Execution Timeout : Upload AGC Path Loss form flash", "TIMEOUT", MB_OK );
  294.         }
  295.         break;
  296.         case METAAPP_STOP:
  297.         {
  298.             sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Upload AGC path loss setting from flash stop";
  299.         }
  300.         break;
  301.     }    
  302. }
  303. //---------------------------------------------------------------------------
  304. static void  CNF_WriteToNVRAM( void )
  305. {   frmPathLoss->DownloadToFlashDone();
  306. }
  307. //-----------------------------------------------
  308. void __fastcall TfrmPathLoss::DownloadToFlashStart(TObject *Sender)
  309. {
  310.     if( !CheckFields() )
  311.     {
  312.         sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Download AGC path loss setting to flash fail";
  313.         Application->MessageBox( "Execution Failure : Download AGC Path Loss form flash", "FAILURE", MB_OK );
  314.         return;
  315.     }
  316.     if( ! NVRAMMan->Get_IsInit() )
  317.     {  frmMainSel->mnuFDMDatabaseClick(Sender);
  318.     }
  319.     if( ! NVRAMMan->Get_IsInit() )
  320.     {
  321.         sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialization fail";
  322.         Application->MessageBox( "Execution Failure : NVRAM database file initialization fail", "FAILURE", MB_OK );
  323.         return;
  324.     }
  325.     RF_AGC_Obj->Set_PathLoss(RFCal_PathLoss);
  326.     RF_AGC_Obj->ConfirmCallback = ::CNF_WriteToNVRAM;
  327.     RF_AGC_Obj->REQ_Write_To_NVRAM_Start();
  328.     CurrentPageLock();
  329. }
  330. //-----------------------------------------------
  331. void TfrmPathLoss::DownloadToFlashDone(void)
  332. {
  333.     E_METAAPP_RESULT_T state = RF_AGC_Obj->Get_ConfirmState();
  334.     CurrentPageReset();
  335.     switch (state)
  336.     {
  337.         case METAAPP_SUCCESS:
  338.         {
  339.             sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Download AGC path loss setting to flash successfully";
  340.         }
  341.         break;
  342.         case METAAPP_FAIL:
  343.         {
  344.             sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Download AGC path loss setting to flash fail, please check the version of load and NVRAM database are same.";
  345.             Application->MessageBox( "Execution Failure : Download AGC Path Loss form flash, please check the version of load and NVRAM database are same.", "FAILURE", MB_OK );
  346.         }
  347.         break;
  348.         case METAAPP_TIMEOUT:
  349.         {
  350.             sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Download AGC path loss setting to flash timeout";
  351.             Application->MessageBox( "Execution Timeout : Download AGC Path Loss form flash", "TIMEOUT", MB_OK );
  352.         }
  353.         break;
  354.         case METAAPP_STOP:
  355.         {
  356.             sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Download AGC path loss setting to flash stop";
  357.         }
  358.         break;
  359.         case METAAPP_NVRAM_LID_VER_NOT_SUPPORT:
  360.         {
  361.             sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  NVRAM_EF_L1_AGCPATHLOSS_LID version is not support, please update META to latest version";
  362.             Application->MessageBox("Execution Warning : NVRAM_EF_L1_AGCPATHLOSS_LID version is not support, please update META to latest version", "WARNING", MB_OK);
  363.         }
  364.         break;
  365.         default:
  366.         {
  367.         }
  368.         break;
  369.     }
  370. }
  371. //===========================================================================
  372. void __fastcall TfrmPathLoss::btnLoadFromFileClick(TObject *Sender)
  373. {
  374.     char str[512];
  375.     bool ok;
  376.     FrequencyBand FrequencyBandStart;
  377.     ok = OpenDialog->Execute();
  378.     if( !ok )
  379.     {
  380.         sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Load AGC Path Loss from file fail";
  381.         Application->MessageBox( "Execution Failure : Load AGC Path Loss from file", "FAILURE", MB_OK );
  382.         return;
  383.     }
  384.     strcpy(str, OpenDialog->FileName.c_str());
  385.     if (frmMainSel->cbGSM850->Checked)
  386.     {
  387.         FrequencyBandStart = FrequencyBand850;
  388.     }
  389.     else
  390.     {   FrequencyBandStart = FrequencyBand900;
  391.     }
  392.     for (FrequencyBand freqband = FrequencyBandStart; freqband <= FrequencyBand1900; freqband++)
  393.     {
  394.         if (RF_AGC_Obj->RxLossSectionExist(str, freqband))
  395.         {
  396.             if (!RF_AGC_Obj->REQ_Read_From_File_Single_Band(str, freqband))
  397.             {
  398.                 sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Load AGC Path Loss from file fail";
  399.                 Application->MessageBox( "Execution Failure : Load AGC Path Loss from file", "FAILURE", MB_OK );
  400.                 return;
  401.             }
  402.         }
  403.     }
  404.     l1cal_agcPathLoss_T* p_path_loss = RF_AGC_Obj->Get_PathLoss();
  405.     RFCal_PathLoss = *p_path_loss;
  406.     ReDrawFields();
  407.     sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Load AGC Path Loss from file successfully";
  408. }
  409. //---------------------------------------------------------------------------
  410. void __fastcall TfrmPathLoss::btnSaveToFileClick(TObject *Sender)
  411. {
  412.     char str[512];
  413.     bool ok;
  414.     ok = CheckFields();
  415.     if(!ok)
  416.     {
  417.         sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Save AGC Path Loss to file fail";
  418.         Application->MessageBox( "Execution Failure : Save AGC Path Loss to file", "FAILURE", MB_OK );
  419.         return;
  420.     }
  421.     ok = SaveDialog->Execute();
  422.     if( !ok )
  423.     {
  424.         sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Save AGC Path Loss to file fail";
  425.         Application->MessageBox( "Execution Failure : Save AGC Path Loss to file", "FAILURE", MB_OK );
  426.         return;
  427.     }
  428.     strcpy( str, SaveDialog->FileName.c_str() );
  429.     RF_AGC_Obj->Set_PathLoss(RFCal_PathLoss);
  430.     ok = RF_AGC_Obj->REQ_Write_To_File( str );
  431.     if( !ok )
  432.     {
  433.         sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Save AGC Path Loss to file fail";
  434.         Application->MessageBox( "Execution Failure : Save AGC Path Loss to file", "FAILURE", MB_OK );
  435.     }
  436.     sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Save AGC Path Loss to file successfully";
  437. }
  438. //===========================================================================
  439. void __fastcall TfrmPathLoss::HintTimerTimer(TObject *Sender)
  440. {
  441.     HintTimer->Enabled = false;
  442.     lblHint->Visible = false;
  443. }
  444. //---------------------------------------------------------------------------
  445. void __fastcall TfrmPathLoss::btnChangeDBClick(TObject *Sender)
  446. {
  447.     CurrentPageLock();
  448.     frmMainSel->mnuFDMDatabaseClick(Sender);
  449.     if( ! NVRAMMan->Get_IsInit() )
  450.     {
  451.         sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialization fail";
  452.         Application->MessageBox( "Execution Failure : NVRAM database file initialization fail", "FAILURE", MB_OK );
  453.         return;
  454.     }
  455.     sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Change NVRAM database file successfully";
  456.     CurrentPageReset();
  457. }
  458. //---------------------------------------------------------------------------
  459. void __fastcall TfrmPathLoss::btnResetNVRAMDataClick(TObject *Sender)
  460. {
  461.     if( ! NVRAMMan->Get_IsInit() )
  462.     {   frmMainSel->mnuFDMDatabaseClick(Sender);
  463.     }
  464.     if( ! NVRAMMan->Get_IsInit() )
  465.     {
  466.         sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialization fail";
  467.         Application->MessageBox( "Execution Failure : NVRAM database file initialization", "FAILURE", MB_OK );
  468.         return;
  469.     }
  470.     RF_AGC_Obj->ConfirmCallback = ::CNF_ResetNVRAMData;
  471.     RF_AGC_Obj->REQ_Reset_NVRAM_Data();
  472.     CurrentPageLock();
  473. }
  474. //-----------------------------------------------
  475. void  TfrmPathLoss::CNF_ResetNVRAMData( void )
  476. {
  477.     int state = RF_AGC_Obj->Get_ConfirmState();
  478.     CurrentPageReset();
  479.     if( state==METAAPP_SUCCESS )
  480.     {
  481.         sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Reset AGC path loss setting in flash successfully";
  482.     }
  483.     else  if( state==METAAPP_FAIL )
  484.     {
  485.         sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Reset AGC path loss setting in flash fail, please check the version of load and NVRAM database are same.";
  486.         Application->MessageBox( "Execution Failure : Reset AGC path loss setting in flash, please check the version of load and NVRAM database are same.", "FAILURE", MB_OK );
  487.     }
  488.     else  if( state==METAAPP_TIMEOUT )
  489.     {
  490.         sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Reset AGC path loss setting in flash timeout";
  491.         Application->MessageBox( "Execution Timeout : Reset AGC path loss setting in flash", "TIMEOUT", MB_OK );
  492.     }
  493.     else  if( state==METAAPP_STOP )
  494.     {
  495.          sbAGCPathLoss->Panels->Items[0]->Text = (AnsiString) "  Reset AGC path loss setting in flash stop";
  496.       //  Application->MessageBox( "Execution Stop : Reset AGC path loss setting in flash", "STOP", MB_OK );
  497.     }
  498. }
  499. //---------------------------------------------------------------------------
  500. void  TfrmPathLoss::CurrentPageLock( void )
  501. {
  502.     btnUploadFromFlash->Enabled = false;
  503.     btnDownloadToFlash->Enabled = false;
  504.   //  btnResetNVRAMData->Enabled = false;
  505.     btnChangeDB->Enabled = false;
  506.     btnLoadFromFile->Enabled = false;
  507.     btnSaveToFile->Enabled = false;
  508. }
  509. //----------------------------------------------------------------------------
  510. void  TfrmPathLoss::CurrentPageReset( void )
  511. {
  512.     btnUploadFromFlash->Enabled = true;
  513.     btnDownloadToFlash->Enabled = true;
  514.    // btnResetNVRAMData->Enabled = true;
  515.     btnChangeDB->Enabled = true;
  516.     btnLoadFromFile->Enabled = true;
  517.     btnSaveToFile->Enabled = true;
  518. }