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

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_Convert.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   Convert 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. // form
  69. #include "form_convert.h"
  70. #include "form_RFPathLoss.h"
  71. #include "form_RFTool.h"
  72. #include "form_main.h"
  73. #include "man_fdm.h"
  74. // misc
  75. #ifndef  _MISC_H_
  76. #include "misc.h"
  77. #endif
  78. //------------------------------------------------------------------------------
  79. #define CHICAGO2003_FOUNTAIN2 4
  80. #define CHICAGO2003_AERO      5
  81. #define KLM2003_FOUNTAIN2     6
  82. #define KLM2003_SPRING        7
  83. #define FOUNTAIN              8
  84. #define FOUNTAIN2             9
  85. #define SPRING               10
  86. //---------------------------------------------------------------------------
  87. #pragma package(smart_init)
  88. #pragma resource "*.dfm"
  89. TfrmConvert *frmConvert;
  90. //---------------------------------------------------------------------------
  91. static const int  DEFAULT_TXDELAY[] =
  92. { 32, 29, 40, 58
  93. };
  94. //---------------------------------------------------------------------------
  95. __fastcall TfrmConvert::TfrmConvert(TComponent* Owner)
  96.    : TForm(Owner)
  97. {
  98.     m_bFirstFormShow = true;
  99. }
  100. //---------------------------------------------------------------------------
  101. void TfrmConvert::Init(void)
  102. {
  103.     m_bInit = true;
  104. }
  105. //---------------------------------------------------------------------------
  106. void __fastcall TfrmConvert::FormCreate(TObject *Sender)
  107. {
  108.     Init();
  109. }
  110. //---------------------------------------------------------------------------
  111. void __fastcall TfrmConvert::FormShow(TObject *Sender)
  112. {
  113.    if (m_bFirstFormShow)
  114.    {
  115.       frmConvert->AutoScroll = true;
  116.       cbxRFModule->ItemIndex = RFMODULE_MT6119;
  117.       RF_AGC_Obj = frmRFTool->Get_AgcObject();
  118.       RF_APC_Obj = frmRFTool->Get_ApcObject();
  119.       m_bFirstFormShow = false;
  120.    }
  121. }
  122. //---------------------------------------------------------------------------
  123. void __fastcall TfrmConvert::FormActivate(TObject *Sender)
  124. {
  125.     if (m_bInit)
  126.     {
  127.         m_bInit = false;
  128.         m_uiFinalRFID = frmMainSel->Get_FinalRFID();
  129.     }
  130. }
  131. //---------------------------------------------------------------------------
  132. void __fastcall TfrmConvert::HintTimerTimer(TObject *Sender)
  133. {
  134.    HintTimer->Enabled = false;
  135.    lblHint->Visible = false;
  136.    txtStatus->Caption = "";
  137. }
  138. //---------------------------------------------------------------------------
  139. void  TfrmConvert::ShowHintLabel( TControl *sender, char* hint )
  140. {
  141.    TPoint pt0 = this->ClientOrigin;
  142.    TPoint pt1 = sender->ClientOrigin;
  143.    lblHint->Left = (pt1.x-pt0.x);
  144.    lblHint->Top  = (pt1.y-pt0.y)+sender->Height+3;
  145.    lblHint->Caption = hint;
  146.    lblHint->Visible = true;
  147.    HintTimer->Enabled = true;
  148. }
  149. //---------------------------------------------------------------------------
  150. bool  TfrmConvert::CheckTxDelay( void )
  151. {
  152.    int  i;
  153.    int  data;
  154.    AnsiString  text;
  155.    char  hint[] = " invalid numeric value ";
  156.    text = edtTxDelay->Text;
  157.    if( !IsValidDelay( text, data ) )
  158.    {  ShowHintLabel( edtTxDelay, hint );
  159.       edtTxDelay->SetFocus();
  160.       return(false);
  161.    }
  162.    edtTxDelay->Tag = data;
  163.    return(true);
  164. }
  165. //---------------------------------------------------------------------------
  166. void __fastcall TfrmConvert::edtTxDelayCheck(TObject *Sender)
  167. {
  168.    CheckTxDelay();
  169. }
  170. //---------------------------------------------------------------------------
  171. void __fastcall TfrmConvert::btnConvertClick(TObject *Sender)
  172. {
  173.    bool ok = CheckTxDelay();
  174.    if(!ok)  return;
  175.    if(rbtFromIni->Checked)
  176.    {
  177.       ConverFromINIFile();
  178.    }
  179.    else  if(rbtFromFlash->Checked)
  180.    {
  181.       ConverFromFlash();
  182.    }
  183. }
  184. //===========================================================================
  185. void  TfrmConvert::ConverFromINIFile( void )
  186. {
  187.    bool ok;
  188.    char  filename[2048];
  189.    ok = OpenDialog->Execute();
  190.    if( !ok )   return;
  191.    ok = SaveDialog->Execute();
  192.    if( !ok )   return;
  193.    strcpy( filename, OpenDialog->FileName.c_str() );
  194.    if(ok)
  195.    {  ok = RF_AGC_Obj->REQ_Read_From_File( filename );
  196.    }
  197.    if(ok)
  198.    {  ok = RF_APC_Obj->REQ_Read_APC_From_File(filename, m_uiFinalRFID, m_bTADOSupport);
  199.    }
  200.    if(ok)
  201.    {
  202.       strcpy( filename, SaveDialog->FileName.c_str() );
  203.       ok = Generate_M12193(filename, cbxRFModule->ItemIndex, edtTxDelay->Tag, RF_AGC_Obj, RF_APC_Obj, m_uiFinalRFID);
  204.    }
  205.    if(ok)
  206.    {  txtStatus->Caption = "Generate OK!";
  207.       HintTimer->Enabled = true;
  208.       //Application->MessageBox( "Generate m12193.c ok!", "CONVERT", MB_OK );
  209.    }
  210.    else
  211.    {  txtStatus->Caption = "Generate FAIL!";
  212.       HintTimer->Enabled = true;
  213.       //Application->MessageBox( "Generate m12193.c fail!", "CONVERT", MB_OK );
  214.    }
  215. }
  216. //---------------------------------------------------------------------------
  217. static void  CNF_ConverFromFlash_AGC( void )
  218. {   frmConvert->ConverFromFlashDone_AGC();
  219. }
  220. static void  CNF_ConverFromFlash_APC( void )
  221. {   frmConvert->ConverFromFlashDone_APC();
  222. }
  223. //-----------------------------------------------
  224. void  TfrmConvert::ConverFromFlash( void )
  225. {
  226.     if( ! NVRAMMan->Get_IsInit() )
  227.     {   frmMainSel->mnuFDMDatabaseClick(NULL);
  228.     }
  229.     if( ! NVRAMMan->Get_IsInit() )
  230.     {
  231.         Application->MessageBox( "Execution Failure : NVRAM database file initialize fail", "FAILURE", MB_OK );
  232.         return;
  233.     }
  234.     RF_AGC_Obj->ConfirmCallback = ::CNF_ConverFromFlash_AGC;
  235.     RF_AGC_Obj->REQ_Read_From_NVRAM_Start();
  236. }
  237. //-----------------------------------------------
  238. void  TfrmConvert::ConverFromFlashDone_AGC( void )
  239. {
  240.    E_METAAPP_RESULT_T state = RF_AGC_Obj->Get_ConfirmState();
  241.    if (METAAPP_SUCCESS == state)
  242.    {
  243.       RF_APC_Obj->ConfirmCallback = ::CNF_ConverFromFlash_APC;
  244.       RF_APC_Obj->REQ_Read_APC_From_NVRAM_Start(m_uiFinalRFID, m_bTADOSupport);
  245.    }
  246.    else
  247.    {
  248.       txtStatus->Caption = "Generate FAIL!";
  249.       HintTimer->Enabled = true;
  250.       //   Application->MessageBox( "Read AGC data from flash fail!", "CONVERT", MB_OK );
  251.    }
  252. }
  253. //------------------------------------------------------------------------
  254. void  TfrmConvert::ConverFromFlashDone_APC( void )
  255. {
  256.    E_METAAPP_RESULT_T state = RF_APC_Obj->Get_ConfirmState();
  257.    if (METAAPP_SUCCESS == state )
  258.    {
  259.       bool ok;
  260.       char  filename[2048];
  261.       ok = SaveDialog->Execute();
  262.       if( !ok )   return;
  263.       if(ok)
  264.       {
  265.          strcpy( filename, SaveDialog->FileName.c_str() );
  266.          ok = Generate_M12193( filename, cbxRFModule->ItemIndex, edtTxDelay->Tag, RF_AGC_Obj, RF_APC_Obj, m_uiFinalRFID );
  267.       }
  268.       if(ok)
  269.       {  txtStatus->Caption = "Generate OK!";
  270.          HintTimer->Enabled = true;
  271.          //   Application->MessageBox( "Generate m12193.c ok!", "CONVERT", MB_OK );
  272.       }
  273.       else
  274.       {  txtStatus->Caption = "Generate FAIL!";
  275.          HintTimer->Enabled = true;
  276.          //   Application->MessageBox( "Generate m12193.c fail!", "CONVERT", MB_OK );
  277.       }
  278.    }
  279.    else
  280.    {
  281.       Application->MessageBox( "Read APC data from flash fail!", "CONVERT", MB_OK );
  282.    }
  283. }
  284. //---------------------------------------------------------------------------
  285. //static void  CNF_WriteToFDM( void )
  286. static void  CNF_WriteToNVRAM( void )
  287. {   frmPathLoss->DownloadToFlashDone();
  288. }
  289. //===========================================================================
  290. void __fastcall TfrmConvert::cbxRFModuleChange(TObject *Sender)
  291. {                  
  292.    edtTxDelay->Text = DEFAULT_TXDELAY[ cbxRFModule->ItemIndex ];
  293.    edtTxDelay->Tag  = DEFAULT_TXDELAY[ cbxRFModule->ItemIndex ];
  294. }
  295. //---------------------------------------------------------------------------
  296. //==============================================================================
  297. static const char  RFMODULE_NAME[8][32] =
  298. {  "BRIGHT2",
  299.    "BRIGHT4",
  300.    "MT6119",
  301.    "AERO",
  302.    "CHICAGO2003 FOUNTAN2",
  303.    "CHICAGO2003 AERO",
  304.    "KLM2003 FOUNTAN2",
  305.    "KLM2003 SPRING"
  306. };
  307. //------------------------------------------------------------------------------
  308. bool  TfrmConvert::Generate_M12193(char* filename, int rf_module, int tx_delay, CRFAGC* agc_ptr, CRFAPC* apc_ptr, unsigned int rf_id)
  309. {
  310.     FILE *fs;
  311.     bool ok;
  312.     fs = fopen( filename, "w+t" );
  313.     if(fs==0)  return(false);
  314.     fprintf( fs, "#include "l1d_cid.h"n");
  315.     fprintf( fs, "#include "m12190.h"n");
  316.     fprintf( fs, "n");
  317.     // modified by Andy Ueng
  318.     if(rf_module <= 3) // EVB
  319.     {
  320.         fprintf( fs, "#if  IS_RF_%sn", RFMODULE_NAME[rf_module]);
  321.     }
  322.     else
  323.     {
  324.         switch(rf_module)
  325.         {
  326.             case CHICAGO2003_FOUNTAIN2:
  327.                 fprintf( fs, "%s", "#if !defined(CHICAGO2003_FOUNTAIN2)n");
  328.             break;
  329.             case CHICAGO2003_AERO:
  330.                 fprintf( fs, "%s", "#if !defined(CHICAGO2003_AERO)n");
  331.             break;
  332.             case KLM2003_FOUNTAIN2:
  333.                 fprintf( fs, "%s", "#if !defined(KLM2003_FOUNTAIN2)n");
  334.             break;
  335.             case KLM2003_SPRING:
  336.                 fprintf( fs, "%s", "#if !defined(KLM2003_SPRING)n");
  337.             break;
  338.             case FOUNTAIN:
  339.                 fprintf( fs, "%s", "#if !defined(FOUNTAIN_EVB)n");
  340.             break;
  341.             case FOUNTAIN2:
  342.                 fprintf( fs, "%s", "#if !defined(FOUNTAIN2_EVB)n");
  343.             break;
  344.             case SPRING:
  345.                 fprintf( fs, "%s", "#if !defined(SPRING_EVB)n");
  346.             break;
  347.         }
  348.         fprintf( fs, "%s", "   #error "rf files mismatch with compile option!"n");
  349.         fprintf( fs, "%s", "#endifn");
  350.     }
  351.     fprintf( fs, "/*===============================================================================================*/n");
  352.     fprintf( fs, "n");
  353.     // marked by Andy Ueng
  354.     // fprintf( fs, "/*----------------------------------------*/n");
  355.     // fprintf( fs, "/* Calibration data for round trip delay  */n");
  356.     // fprintf( fs, "/*----------------------------------------*/n");
  357.     // fprintf( fs, "n");
  358.     // fprintf( fs, "const  short  TxPropagationDelay = %d;n", tx_delay);
  359.     // end of marked
  360.     fprintf( fs, "n");
  361.     fclose(fs);
  362.     ok = agc_ptr->REQ_Write_To_M12193( filename );
  363.     if(!ok)  return(false);
  364.     ok = apc_ptr->REQ_Write_To_M12193(filename, rf_id);
  365.     if(!ok)  return(false);
  366.     fs = fopen( filename, "a+t" );
  367.     if(fs==0)  return(false);
  368.     fprintf( fs, "/*===============================================================================================*/n");
  369.     if(rf_module <= 3) // EVB, modified by Andy Ueng
  370.     {
  371.         fprintf( fs, "#endifn");
  372.     }
  373.     fclose(fs);
  374.     return(true);
  375. }