rf_ct.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.  *   rf_ct.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   RF continuous TX 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 <IniFiles.hpp>
  67. #pragma hdrstop
  68. // RF
  69. #ifndef  _RF_CT_H_
  70. #include "rf_ct.h"
  71. #endif
  72. // man
  73. #include "man_active.h"
  74. #include "man_fdm.h"
  75. //------------------------------------------------------------------------------
  76. static CRFCT*  g_rf_ct_ptr;
  77. static bool g_bIsRunning = false;
  78. //===========================================================================
  79. static void REQ_SelectBand(void)
  80. {
  81.     g_rf_ct_ptr->REQ_SelectBand();
  82. }
  83. //------------------------------------------------------------------------------
  84. static void __stdcall CNF_SelectBand(const unsigned char cnf, const short token, void *usrData)
  85. {
  86.     g_rf_ct_ptr->CNF_SelectBand(cnf, token, usrData);
  87. }
  88. //------------------------------------------------------------------------------
  89. static void REQ_BBTXCfg(void)
  90. {
  91.     g_rf_ct_ptr->REQ_BBTXCfg();
  92. }
  93. //------------------------------------------------------------------------------
  94. static void __stdcall CNF_BBTXCfg(const unsigned char cnf, const short token, void *usrData)
  95. {
  96.     g_rf_ct_ptr->CNF_BBTXCfg(cnf, token, usrData);
  97. }
  98. //------------------------------------------------------------------------------
  99. static void REQ_ContinueTX(void)
  100. {
  101.     g_rf_ct_ptr->REQ_ContinueTX();
  102. }
  103. //------------------------------------------------------------------------------
  104. static void __stdcall CNF_ContinueTX(const unsigned char cnf, const short token, void *usrData)
  105. {
  106.     g_rf_ct_ptr->CNF_ContinueTX(cnf, token, usrData);
  107. }
  108. //------------------------------------------------------------------------------
  109. static void REQ_TimeOut(void)
  110. {
  111.     g_rf_ct_ptr->REQ_TimeOut();
  112. }
  113. //------------------------------------------------------------------------------
  114. static void REQ_Finish(void)
  115. {
  116.     g_rf_ct_ptr->REQ_Finish();
  117. }
  118. //===========================================================================
  119. CRFCT::CRFCT(void)
  120. {
  121.     g_bIsRunning = false;
  122.     ConfirmCallback = 0;
  123.     m_psRFReq_CT = NULL;
  124.     m_psRFReq_BBTXCFG = NULL;
  125.     m_psRfCnTxEx = NULL;
  126. }
  127. //---------------------------------------------------------------------------
  128. CRFCT::~CRFCT()
  129. {
  130.     if (m_psRFReq_BBTXCFG != NULL)
  131.     {
  132.         delete m_psRFReq_BBTXCFG;
  133.         m_psRFReq_BBTXCFG = NULL;
  134.     }
  135.     if (m_psRFReq_CT != NULL)
  136.     {
  137.         delete m_psRFReq_CT;
  138.         m_psRFReq_CT = NULL;
  139.     }
  140.     if (m_psRfCnTxEx != NULL)
  141.     {
  142.         delete m_psRfCnTxEx;
  143.         m_psRfCnTxEx = NULL;
  144.     }
  145. }
  146. //---------------------------------------------------------------------------
  147. void CRFCT::REQ_Finish(void)
  148. {
  149.     if (!g_bIsRunning)
  150.     {
  151.         return;
  152.     }
  153.     Confirm(METAAPP_SUCCESS);
  154. }
  155. //---------------------------------------------------------------------------
  156. void CRFCT::REQ_Stop(void)
  157. {
  158.     if (!g_bIsRunning)
  159.     {
  160.         return;
  161.     }
  162.     META_Cancel_r(m_META_HANDLE_Obj.Get_MainHandle(), m_sRFID_CT);
  163.     META_CancelAllBlockingCall_r( m_META_HANDLE_Obj.Get_MainHandle() );
  164.     Confirm(METAAPP_STOP);
  165. }
  166. //---------------------------------------------------------------------------
  167. void CRFCT::REQ_TimeOut(void)
  168. {
  169.    if (!g_bIsRunning)
  170.    {
  171.         return;
  172.    }
  173.    META_Cancel_r(m_META_HANDLE_Obj.Get_MainHandle(), m_sRFID_CT);
  174.    META_CancelAllBlockingCall_r(m_META_HANDLE_Obj.Get_MainHandle());
  175.    Confirm(METAAPP_TIMEOUT);
  176. }
  177. //---------------------------------------------------------------------------
  178. void CRFCT::Confirm(E_METAAPP_RESULT_T confirm_state)
  179. {
  180.    if(!g_bIsRunning)  return;
  181.    g_bIsRunning = false;
  182.    if(ConfirmCallback==0)  return;
  183.    m_eConfirmState = confirm_state;
  184.    ActiveMan->SetActiveFunction( ConfirmCallback );
  185. }
  186. //===========================================================================
  187. void CRFCT::REQ_Start(S_RF_CT rf_ct)
  188. {
  189.     g_rf_ct_ptr = this;
  190.     g_bIsRunning = true;
  191.     m_sRfCt = rf_ct;
  192. //       m_sRFID_CT.e_band = band;
  193. //      Arfcn = arfcn;
  194. //    Pattern = pattern;
  195. //      OnOff = on_off;
  196. //PatternData = pattern_data;
  197. //    ModType = modtype;
  198.     //  TrimI = trim_i;
  199.     //  TrimQ = trim_q;
  200.    // OffsetI = off_i;
  201.    // OffsetQ = off_q;
  202.    ActiveMan->SetActiveFunction( ::REQ_SelectBand );
  203. }
  204. //---------------------------------------------------------------------------
  205. void CRFCT::REQ_SelectBand(void)
  206. {
  207.     if (!g_bIsRunning)
  208.     {
  209.         return;
  210.     }
  211.     unsigned char select_PCS1900;
  212.     if(m_sRfCt.e_band==BANDSEL_PCS1900)
  213.         select_PCS1900 = 1;
  214.     else
  215.         select_PCS1900 = 0;
  216.     META_RESULT MetaResult = META_Rf_SelectFrequencyBand1900_r(m_META_HANDLE_Obj.Get_MainHandle(), select_PCS1900, ::CNF_SelectBand, &m_sRFID_CT, NULL );
  217.     if(MetaResult!=META_SUCCESS)
  218.     {
  219.         Confirm(METAAPP_FAIL);
  220.         return;
  221.     }
  222. }
  223. //-------------------------------------
  224. void __stdcall CRFCT::CNF_SelectBand(const unsigned char cnf, const short token, void *usrData)
  225. {
  226.     if (!g_bIsRunning)
  227.     {
  228.         return;
  229.     }
  230.     if (0 == cnf)
  231.     {
  232.         Confirm(METAAPP_FAIL);
  233.         return;
  234.     }
  235.     ActiveMan->SetActiveFunction(::REQ_ContinueTX);
  236. }
  237. //---------------------------------------------------------------------------
  238. void CRFCT::REQ_BBTXCfg(void)
  239. {
  240.     if (!g_bIsRunning)
  241.     {
  242.         return;
  243.     }
  244.     if (NULL == m_psRFReq_BBTXCFG)
  245.     {
  246.         m_psRFReq_BBTXCFG = new RfSetBBTXCfg_Req;
  247.     }
  248.     // set to default
  249.     m_psRFReq_BBTXCFG->TxTrimI   = 0;
  250.     m_psRFReq_BBTXCFG->TxTrimQ   = 0;
  251.     m_psRFReq_BBTXCFG->TxOffsetI = 0;
  252.     m_psRFReq_BBTXCFG->TxOffsetQ = 0;
  253.     META_RESULT MetaResult = META_Rf_SetBBTXCfg_r( m_META_HANDLE_Obj.Get_MainHandle(), m_psRFReq_BBTXCFG, ::CNF_BBTXCfg, &m_sRFID_CT, NULL );
  254.     if (MetaResult != META_SUCCESS)
  255.     {
  256.         Confirm(METAAPP_FAIL);
  257.         return;
  258.     }
  259. }
  260. //-------------------------------------
  261. void __stdcall CRFCT::CNF_BBTXCfg(const unsigned char cnf, const short token, void *usrData)
  262. {
  263.     if (!g_bIsRunning)
  264.     {
  265.         return;
  266.     }
  267.     if (0 == cnf)
  268.     {
  269.         Confirm(METAAPP_FAIL);
  270.         return;
  271.     }
  272.     ActiveMan->SetActiveFunction(::REQ_ContinueTX);
  273. }
  274. //---------------------------------------------------------------------------
  275. void CRFCT::REQ_ContinueTX(void)
  276. {
  277.     if (!g_bIsRunning)
  278.     {
  279.         return;
  280.     }
  281.     META_RESULT MetaResult;
  282.     if( CT_SUPPORT_0 == m_sRfCt.e_rf_ct_support )
  283.     {
  284.         if( NULL == m_psRFReq_CT )
  285.         {
  286.             m_psRFReq_CT = new RfCnTx_Req;
  287.         }
  288.         m_psRFReq_CT->arfcn   = m_sRfCt.s_arfcn;
  289.         m_psRFReq_CT->pattern = (ContTxPattern)m_sRfCt.i_pattern;
  290.         m_psRFReq_CT->OnOff   = m_sRfCt.i_on_off;
  291.         MetaResult = META_Rf_CONTINUE_TX_r( m_META_HANDLE_Obj.Get_MainHandle(), m_psRFReq_CT, ::CNF_ContinueTX, &m_sRFID_CT, NULL );
  292.         if(MetaResult!=META_SUCCESS)
  293.         {
  294.             if( MetaResult!=META_TIMEOUT )
  295.             {  Confirm( METAAPP_FAIL );  return;   }
  296.             else
  297.             { ActiveMan->SetActiveFunction( ::REQ_TimeOut );  return;  }
  298.         }
  299.     }
  300.     else if( CT_SUPPORT_1 == m_sRfCt.e_rf_ct_support )
  301.     {
  302.         if(  NULL == m_psRfCnTxEx )
  303.         {
  304.             m_psRfCnTxEx = new RfCnTxEx_Req;
  305.         }
  306.         m_psRfCnTxEx->arfcn        = m_sRfCt.s_arfcn;
  307.         m_psRfCnTxEx->pattern      = (ContTxPattern)m_sRfCt.i_pattern;
  308.         m_psRfCnTxEx->OnOff        = m_sRfCt.i_on_off;
  309.         m_psRfCnTxEx->pattern_data = m_sRfCt.us_pattern_data;
  310.         m_psRfCnTxEx->modtype      = m_sRfCt.us_modtype;
  311.         MetaResult = META_Rf_CONTINUE_TX_Ex_r(m_META_HANDLE_Obj.Get_MainHandle(), 500, m_psRfCnTxEx);
  312.         if(MetaResult!=META_SUCCESS)
  313.         {
  314.             if (MetaResult != META_TIMEOUT)
  315.             {
  316.                 Confirm(METAAPP_FAIL);
  317.                 return;
  318.             }
  319.             else
  320.             {
  321.                 ActiveMan->SetActiveFunction(::REQ_TimeOut);
  322.                 return;
  323.             }
  324.         }
  325.     }
  326.     else
  327.     {
  328.         if (NULL == m_psRfCnTxEx2)
  329.         {
  330.             m_psRfCnTxEx2 = new RfCnTxEx2_Req;
  331.         }
  332.         m_psRfCnTxEx2->arfcn        = m_sRfCt.s_arfcn;
  333.         m_psRfCnTxEx2->pattern      = (ContTxPattern)m_sRfCt.i_pattern;
  334.         m_psRfCnTxEx2->OnOff        = m_sRfCt.i_on_off;
  335.         m_psRfCnTxEx2->pattern_data = m_sRfCt.us_pattern_data;
  336.         m_psRfCnTxEx2->modtype      = m_sRfCt.us_modtype;
  337.         m_psRfCnTxEx2->powerLev     = (Power) m_sRfCt.i_pcl;
  338.         MetaResult = META_Rf_CONTINUE_TX_Ex2_r(m_META_HANDLE_Obj.Get_MainHandle(), 500, m_psRfCnTxEx2);
  339.         if (MetaResult != META_SUCCESS)
  340.         {
  341.             if (MetaResult != META_TIMEOUT)
  342.             {
  343.                 Confirm(METAAPP_FAIL);
  344.                 return;
  345.             }
  346.             else
  347.             {
  348.                 ActiveMan->SetActiveFunction(::REQ_TimeOut);
  349.                 return;
  350.             }
  351.         }
  352.     }
  353.     ActiveMan->SetActiveFunction(::REQ_Finish);
  354. }
  355. //-------------------------------------
  356. void __stdcall CRFCT::CNF_ContinueTX(const unsigned char cnf, const short token, void *usrData)
  357. {
  358.     if (!g_bIsRunning)
  359.     {
  360.         return;
  361.     }
  362.     if (0 == cnf)
  363.     {
  364.         Confirm(METAAPP_FAIL);
  365.         return;
  366.     }
  367.     ActiveMan->SetActiveFunction(::REQ_Finish);
  368. }
  369. //===========================================================================
  370. /////////////////////////  Global information  //////////////////////////////
  371. //===========================================================================
  372. E_METAAPP_RESULT_T CRFCT::Get_ConfirmState(void)
  373. {
  374.     return  m_eConfirmState;
  375. }