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

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_CFGPhErr.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *  Tx Phase error CFG 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. #ifndef  _META_UTILS_H_
  69. #include "meta_utils.h"
  70. #endif
  71. #ifndef  _MISC_H_
  72. #include "misc.h"
  73. #endif
  74. #ifndef  _META_FACTORY_H_
  75. #include "meta_factory.h"
  76. #endif
  77. #include "form_CFGPhErr.h"
  78. //---------------------------------------------------------------------------
  79. #pragma package(smart_init)
  80. #pragma resource "*.dfm"
  81. TfrmCFGPhErr *frmCFGPhErr;
  82. //---------------------------------------------------------------------------
  83. __fastcall TfrmCFGPhErr::TfrmCFGPhErr(TComponent* Owner)
  84.         : TForm(Owner)
  85. {
  86. }
  87. //---------------------------------------------------------------------------
  88. void __fastcall TfrmCFGPhErr::btnLoadFromCFGFileClick(TObject *Sender)
  89. {
  90.     bool ok;
  91.     int i;
  92.     AnsiString asPath, asFileName;
  93.     static bool isFirstOpen = true;
  94.     if( isFirstOpen )
  95.     {
  96.         isFirstOpen = false;
  97.         if( getPathFromStr( Form_META_Factory->stCFGFile->Caption, asPath ) )
  98.         {
  99.             OpenDlg->InitialDir = asPath;
  100.             if( getFilenameFromStr( Form_META_Factory->stCFGFile->Caption, asFileName ) )
  101.             {
  102.                 OpenDlg->FileName = asFileName;
  103.             }
  104.         }
  105.         else
  106.         {
  107.             if( getPathFromStr(Application->ExeName, asPath) )
  108.             {
  109.                 OpenDlg->InitialDir = asPath;
  110.             }
  111.             else
  112.             {
  113.                 OpenDlg->InitialDir = "C:\";
  114.             }
  115.         }
  116.     }
  117.     ok = OpenDlg->Execute();
  118.     if( !ok )
  119.     {
  120.         sbCFGPhErr->Panels->Items[0]->Text = (AnsiString) "  Load ADC setting from file fail";
  121.         Application->MessageBox( "Execution Failure : Load ADC setting from file fail", "FAILURE", MB_OK );
  122.         return;
  123.     }
  124.     if( ! cfg->ReadFromIniFile( OpenDlg->FileName ) )
  125.     {
  126.         sbCFGPhErr->Panels->Items[0]->Text = (AnsiString) "  Read CFG file fail";
  127.         Application->MessageBox( "Execution Failure : Read CFG file", "FAILURE", MB_OK );
  128.         return;
  129.     }
  130.     // PHASE_ERROR_BAND
  131.     cfg->get_PHASE_ERROR_BAND( as_PHASE_ERROR_BAND );
  132.     edtPHASE_ERROR_BAND->Text = as_PHASE_ERROR_BAND;
  133.     // PHASE_ERROR_ARFCN
  134.     cfg->get_PHASE_ERROR_ARFCN( m_sPHASE_ERROR_ARFCN );
  135.     edtPHASE_ERROR_ARFCN->Text = IntToStr( m_sPHASE_ERROR_ARFCN );
  136.     // PHASE_ERROR_PCL
  137.     cfg->get_PHASE_ERROR_PCL( i_PHASE_ERROR_PCL );
  138.     edtPHASE_ERROR_PCL->Text = IntToStr( i_PHASE_ERROR_PCL );
  139.     // PHASE_ERROR_RMS_ERROR
  140.     cfg->get_PHASE_ERROR_RMS_ERROR( d_PHASE_ERROR_RMS_ERROR );
  141.     edtPHASE_ERROR_RMS_ERROR->Text = Double_To_AnsiString( d_PHASE_ERROR_RMS_ERROR );
  142.     
  143. }
  144. //---------------------------------------------------------------------------
  145. void __fastcall TfrmCFGPhErr::btnSaveToCFGFileClick(TObject *Sender)
  146. {
  147.     bool ok;
  148.     int i;
  149.     AnsiString asPath, asFileName;
  150.     static bool isFirstSave = true;
  151.     if( isFirstSave )
  152.     {
  153.         isFirstSave = false;
  154.         if( getPathFromStr( Form_META_Factory->stCFGFile->Caption, asPath ) )
  155.         {
  156.             SaveDlg->InitialDir = asPath;
  157.             if( getFilenameFromStr( Form_META_Factory->stCFGFile->Caption, asFileName ) )
  158.             {
  159.                 SaveDlg->FileName = asFileName;
  160.             }
  161.         }
  162.         else
  163.         {
  164.             if( getPathFromStr(Application->ExeName, asPath) )
  165.             {
  166.                 SaveDlg->InitialDir = asPath;
  167.             }
  168.             else
  169.             {
  170.                 SaveDlg->InitialDir = "C:\";
  171.             }
  172.         }
  173.     }
  174.     if( ! CheckFields() )
  175.     {
  176.         sbCFGPhErr->Panels->Items[0]->Text = (AnsiString) "  Save phase error setting to file fail";
  177.         Application->MessageBox( "Execution Failure : Save phase error setting to file", "FAILURE", MB_OK );
  178.         return;
  179.     }
  180.     ok = SaveDlg->Execute();
  181.     if( !ok )
  182.     {
  183.         sbCFGPhErr->Panels->Items[0]->Text = (AnsiString) "  Save phase error setting to file fail";
  184.         Application->MessageBox( "Execution Failure : Save phase error setting to file", "FAILURE", MB_OK );
  185.         return;
  186.     }
  187.     cfg->SavePhErrToCfgFile( SaveDlg->FileName );
  188. }
  189. //---------------------------------------------------------------------------
  190. void __fastcall TfrmCFGPhErr::edtPHASE_ERROR_ARFCNCheck(TObject *Sender)
  191. {
  192.     short sdata;
  193.     AnsiString  text;
  194.     TEdit *edit = (TEdit*)Sender;
  195.    
  196.     char  hint[][256] =
  197.     {   " value shall be 0~124 or 975~1023 ",
  198.         " value shall be 512~885 ",
  199.         " value shall be 512~810 ",
  200.         " value shall be 128~251 ",
  201.     };
  202.     text = edit->Text;
  203.     E_BANDSEL CurBand = Get_CurrentBand(edtPHASE_ERROR_BAND->Text);
  204.     if (!IsValidARFCN(text, CurBand, sdata))
  205.     {
  206.         edit->Text = IntToStr(Default_ARFCN[CurBand]);
  207.         ShowHintLabel(edit, hint[CurBand]);
  208.         edit->SetFocus();
  209.         return;
  210.     }
  211. }
  212. //---------------------------------------------------------------------------
  213. void __fastcall TfrmCFGPhErr::edtPHASE_ERROR_BANDCheck(TObject *Sender)
  214. {
  215.     int  i;
  216.     //int  data;
  217.     AnsiString  text;
  218.     TEdit *edit = (TEdit*)Sender;
  219.     char  hint[] = " Support band: GSM, DCS, PCS, GSM850 ";
  220.     text = edit->Text;
  221.     if( !IsValidBand( text ) )
  222.     {
  223.         ShowHintLabel( edit, hint );
  224.         edit->Text = "GSM";
  225.         edit->SetFocus();
  226.         return;
  227.     }
  228.     edtPHASE_ERROR_ARFCNCheck( edtPHASE_ERROR_ARFCN );
  229. }
  230. //---------------------------------------------------------------------------
  231. bool  TfrmCFGPhErr::CheckFields( void )
  232. {
  233.     AnsiString  text;
  234.     text = edtPHASE_ERROR_BAND->Text;   if( !IsValidBand( text ) )         {  edtPHASE_ERROR_BANDCheck(edtPHASE_ERROR_BAND);   return false;   }
  235.     as_PHASE_ERROR_BAND = text;
  236.     cfg->set_PHASE_ERROR_BAND( as_PHASE_ERROR_BAND );
  237.     E_BANDSEL CurBand = Get_CurrentBand(edtPHASE_ERROR_BAND->Text);
  238.     text = edtPHASE_ERROR_ARFCN->Text;   if( !IsValidARFCN( text, CurBand, m_sPHASE_ERROR_ARFCN ) )         {  edtPHASE_ERROR_ARFCNCheck(edtPHASE_ERROR_ARFCN);   return false;   }
  239.     cfg->set_PHASE_ERROR_ARFCN( m_sPHASE_ERROR_ARFCN );
  240.     int  CurFreqBand = Get_CurrentFreqBand(edtPHASE_ERROR_BAND->Text);
  241.     text = edtPHASE_ERROR_PCL->Text;   if( !IsValidCFGPCL( text, CurFreqBand, i_PHASE_ERROR_PCL ) )         {  edtPHASE_ERROR_PCLCheck(edtPHASE_ERROR_PCL);   return false;   }
  242.     cfg->set_PHASE_ERROR_PCL( i_PHASE_ERROR_PCL );
  243.     
  244.     return true;
  245. }
  246. //-----------------------------------------------------------------------
  247. void __fastcall TfrmCFGPhErr::edtPHASE_ERROR_PCLCheck(TObject *Sender)
  248. {
  249.     int  data;
  250.     AnsiString  text;
  251.     TEdit *edit = (TEdit*)Sender;
  252.     char  hint[][256] =
  253.     {
  254.         " value shall be 4~31 ", // GSM400
  255.         " value shall be 4~31 ", // GSM850
  256.         " value shall be 4~31 ", // GSM900
  257.         " value shall be 0~28 ", // DCS1800
  258.         " value shall be 0~15 ", // PCS1900
  259.     };
  260.    // int Default_PCL = 10;
  261.     
  262.     text = edit->Text;
  263.     int CurFreqBand = Get_CurrentFreqBand(edtPHASE_ERROR_BAND->Text);
  264.     if( !IsValidCFGPCL( text, CurFreqBand, data ) )
  265.     {  ShowHintLabel( edit, hint[CurFreqBand] );
  266.        edit->Text = IntToStr( Default_PCL );
  267.        edit->SetFocus();
  268.        return;
  269.     }
  270.     i_PHASE_ERROR_PCL = data;
  271. }
  272. //---------------------------------------------------------------------------
  273. E_BANDSEL TfrmCFGPhErr::Get_CurrentBand(AnsiString as_band)
  274. {
  275.     AnsiString BAND_NAME[]=
  276.     {
  277.         "GSM",
  278.         "DCS",
  279.         "PCS",
  280.         "GSM850"
  281.     };
  282.     E_BANDSEL band;
  283.     for (int i=0; i<sizeof(BAND_NAME)/sizeof(BAND_NAME[0]); i++)
  284.     {
  285.         if( BAND_NAME[i].AnsiCompareIC(as_band) == 0 )
  286.         {
  287.             band = (E_BANDSEL) i;
  288.             break;
  289.         }
  290.     }
  291.     return band;
  292. }
  293. //---------------------------------------------------------------------------
  294. int TfrmCFGPhErr::Get_CurrentFreqBand(AnsiString &as_band)
  295. {
  296.     AnsiString BAND_NAME[]=
  297.     {
  298.         "GSM400",
  299.         "GSM850",
  300.         "GSM",
  301.         "DCS",
  302.         "PCS",
  303.     };
  304.     for(int i=0; i<sizeof(BAND_NAME)/sizeof(BAND_NAME[0]); i++)
  305.     {
  306.         if( BAND_NAME[i].AnsiCompareIC(as_band) == 0 )
  307.         {
  308.             return i;
  309.         }
  310.     }
  311. }
  312. //---------------------------------------------------------------------------
  313. void  TfrmCFGPhErr::ShowHintLabel( TControl *sender, char* hint )
  314. {
  315.    TPoint pt0 = this->ClientOrigin;
  316.    TPoint pt1 = sender->ClientOrigin;
  317.    lblHint->Left = (pt1.x-pt0.x);
  318.    lblHint->Top  = (pt1.y-pt0.y)+sender->Height+3;
  319.    lblHint->Caption = hint;
  320.    lblHint->Visible = true;
  321.    HintTimer->Enabled = true;
  322. }
  323. //--------------------------------------------------------------------------
  324. void __fastcall TfrmCFGPhErr::HintTimerTimer(TObject *Sender)
  325. {
  326.     HintTimer->Enabled = false;
  327.     lblHint->Visible = false;
  328. }
  329. //---------------------------------------------------------------------------
  330. void __fastcall TfrmCFGPhErr::edtPHASE_ERROR_RMS_ERRORCheck(
  331.       TObject *Sender)
  332. {
  333.     double  data;
  334.     AnsiString  text;
  335.     TEdit *edit = (TEdit*)Sender;
  336.     char  hint[] = " Phase error is not valid ";
  337.     text = edit->Text;
  338.     if( !IsValidPhaseError( text, data ) )
  339.     {
  340.         ShowHintLabel( edit, hint );
  341.         edit->Text = Double_To_AnsiString( 1.5 );
  342.         edit->SetFocus();
  343.         return;
  344.     }
  345.     d_PHASE_ERROR_RMS_ERROR = data;
  346. }
  347. //---------------------------------------------------------------------------