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

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.  *   crystal_afc_sweep.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *  Crystal AFC sweep 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. #include <IniFiles.hpp>
  68. #pragma hdrstop
  69. #include "form_RFTool.h"
  70. #include "crystal_afc.h"
  71. #include "man_fdm.h"
  72. #include "man_active.h"
  73. #include "crystal_afc_sweep.h"
  74. static CCRYSTALAFCSWEEP*  crystal_afc_sweep_ptr;
  75. static bool g_bIsRunning;
  76. //------------------------------------------------------------------------------
  77. static void  REQ_Finish( void )
  78. {
  79.     crystal_afc_sweep_ptr->REQ_Finish();
  80. }
  81. //------------------------------------------------------------------------------
  82. static void  REQ_TimeOut( void )
  83. {
  84.     crystal_afc_sweep_ptr->REQ_TimeOut();
  85. }
  86. //------------------------------------------------------------------------------
  87. static void  REQ_NormalTX( void )
  88. {
  89.     crystal_afc_sweep_ptr->REQ_NormalTX( );
  90. }
  91. //------------------------------------------------------------------------------
  92. static void __stdcall CNF_NormalTX(const unsigned char cnf, const short token, void *usrData)
  93. {
  94.     crystal_afc_sweep_ptr->CNF_NormalTX( cnf, token, usrData );
  95. }
  96. //------------------------------------------------------------------------------
  97. static void  REQ_SelectBand( void )
  98. {
  99.     crystal_afc_sweep_ptr->REQ_SelectBand( );
  100. }
  101. //------------------------------------------------------------------------------
  102. static void __stdcall CNF_SelectBand( const unsigned char cnf, const short token, void *usrData )
  103. {
  104.     crystal_afc_sweep_ptr->CNF_SelectBand( cnf, token, usrData );
  105. }
  106. //===============================================================================================
  107. CCRYSTALAFCSWEEP::CCRYSTALAFCSWEEP( void )
  108. {
  109. }
  110. //------------------------------------------------------------------------------
  111. CCRYSTALAFCSWEEP::~CCRYSTALAFCSWEEP( )
  112. {
  113. }
  114. //------------------------------------------------------------------------------
  115. void  CCRYSTALAFCSWEEP::Confirm( int confirm_state )
  116. {
  117.     if(!g_bIsRunning)  return;
  118.     if(ConfirmCallback==0)  return;
  119.     m_iConfirmState = confirm_state;
  120.     ActiveMan->SetActiveFunction( ConfirmCallback );
  121. }
  122. //---------------------------------------------------------------------------
  123. void  CCRYSTALAFCSWEEP::REQ_Finish( void )
  124. {
  125.     if(!g_bIsRunning)  return;
  126.     Confirm( STATE_CRYSTAL_AFC_SWEEP_OK );
  127.     g_bIsRunning = false;
  128. }
  129. //------------------------------------------------------------------------------
  130. void  CCRYSTALAFCSWEEP::REQ_TimeOut( void )
  131. {
  132.     if(!g_bIsRunning)  return;
  133.     META_Cancel_r( m_META_HANDLE_Obj.Get_MainHandle(), CRYSTA_AFC_SWEEP_LID );
  134.     Confirm( STATE_CRYSTAL_AFC_SWEEP_TIMEOUT );
  135.     g_bIsRunning = false;
  136. }
  137. //==============================================================================
  138. void  CCRYSTALAFCSWEEP::REQ_Start(int band, short arfcn, int tsc, int pcl, int min_afc_dac, int max_afc_dac, int afc_dac_step, int min_CAP_ID, int max_CAP_ID, int CAP_ID_step, APCTxPattern burst_type)
  139. {
  140.     crystal_afc_sweep_ptr = this;
  141.     g_bIsRunning  = true;
  142.     Band = band;
  143.     s_Arfcn = arfcn;
  144.     TSC = tsc;
  145.     PCL = pcl;
  146.     MinAFCDac = min_afc_dac;
  147.     MaxAFCDac = max_afc_dac;
  148.     AFCDacStep = afc_dac_step;
  149.     MinCAPID = min_CAP_ID;
  150.     MaxCAPID = max_CAP_ID;
  151.     CAPIDStep = CAP_ID_step;
  152.     BurstType = burst_type;
  153.    ActiveMan->SetActiveFunction( ::REQ_SelectBand );
  154. }
  155. //---------------------------------------------------------------------------
  156. void  CCRYSTALAFCSWEEP::REQ_Stop( void )
  157. {
  158.     if(!g_bIsRunning)  return;
  159.     META_Cancel_r( m_META_HANDLE_Obj.Get_MainHandle(), CRYSTA_AFC_SWEEP_LID );
  160.     Confirm( STATE_CRYSTAL_AFC_SWEEP_STOP );
  161.     g_bIsRunning = false;
  162. }
  163. //*****************************************************************************
  164. void  CCRYSTALAFCSWEEP::REQ_SelectBand( void )
  165. {
  166.     if(!g_bIsRunning)  return;
  167.     unsigned char select_PCS1900;
  168.     if(Band==BANDSEL_PCS1900)
  169.         select_PCS1900 = 1;
  170.     else
  171.         select_PCS1900 = 0;
  172.     MetaResult = META_Rf_SelectFrequencyBand1900_r(m_META_HANDLE_Obj.Get_MainHandle(), select_PCS1900, ::CNF_SelectBand, &CRYSTA_AFC_SWEEP_LID, NULL );
  173.     if(MetaResult!=META_SUCCESS)
  174.     {  Confirm( METAAPP_FAIL );  return;  }
  175. }
  176. //-------------------------------------
  177. void __stdcall CCRYSTALAFCSWEEP::CNF_SelectBand( const unsigned char cnf, const short token, void *usrData )
  178. {
  179.    if(!g_bIsRunning)  return;
  180.    if(cnf==false)
  181.    {  Confirm( METAAPP_FAIL );  return;  }
  182.     ActiveMan->SetActiveFunction( ::REQ_NormalTX );
  183. }
  184. //******************************************************************************
  185. void  CCRYSTALAFCSWEEP::REQ_NormalTX( void )
  186. {
  187.    if(!g_bIsRunning)  return;
  188.    if(RFReq_TX == NULL)
  189.    {
  190.       RFReq_TX = new RfNbtx_Req;
  191.    }
  192.    RFReq_TX->arfcn       = s_Arfcn;
  193.    RFReq_TX->bsic        = TSC;
  194.    RFReq_TX->power       = PCL;
  195.    RFReq_TX->frames      = -99;
  196.    RFReq_TX->dacValue    = MinAFCDac;
  197.    if(BurstType==0)  RFReq_TX->burstTypeNB = AB_TX_RANDOM_WITH_SYNC_SEQ;
  198.    if(BurstType==1)  RFReq_TX->burstTypeNB = NB_TX_RANDOM_WITH_TSC;
  199.    if(BurstType==2)  RFReq_TX->burstTypeNB = NB_TX_ALL_ONES_WITHOUT_TSC;
  200.   MetaResult = META_Rf_NB_TX_r( m_META_HANDLE_Obj.Get_MainHandle(), RFReq_TX, ::CNF_NormalTX, &CRYSTA_AFC_SWEEP_LID, NULL );
  201.    if(MetaResult!=META_SUCCESS)
  202.    {  Confirm( METAAPP_FAIL );  return;  }
  203. }
  204. //-------------------------------------
  205. void __stdcall CCRYSTALAFCSWEEP::CNF_NormalTX(const unsigned char cnf, const short token, void *usrData)
  206. {
  207.    if(!g_bIsRunning)  return;
  208.    if(cnf==false)
  209.    {  Confirm( METAAPP_FAIL );  return;  }
  210.    ActiveMan->SetActiveFunction( ::REQ_Finish );
  211. }
  212. //===========================================================================
  213. ////////////////////////////  Global information  ///////////////////////////
  214. //===========================================================================
  215. int  CCRYSTALAFCSWEEP::Get_ConfirmState( void )
  216. {
  217.     return  m_iConfirmState;
  218. }