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

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_MultiSlotTx.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   RF multi slot 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. #pragma hdrstop 
  66. #include "meta.h"
  67. #ifndef  _RF_COMMON_H_
  68. #include "rf_common.h"
  69. #endif
  70. #ifndef  _RF_MOD_H_
  71. #include "rf_mod.h"
  72. #endif
  73. #include "rf_MultiSlotTx.h"
  74. #include "man_active.h"
  75. //===========================================================================
  76. static CRFMULTISLOTTX*  rf_multi_slot_tx_ptr;
  77. static bool g_bIsRunning = false;
  78. //===========================================================================
  79. static void  REQ_SelectBand( void )
  80. {  rf_multi_slot_tx_ptr->REQ_SelectBand( );
  81. }
  82. //---------------------------------------------------------------------------
  83. static void __stdcall CNF_SelectBand( const unsigned char cnf, const short token, void *usrData )
  84. {
  85.   rf_multi_slot_tx_ptr->CNF_SelectBand( cnf, token, usrData );
  86. }
  87. //---------------------------------------------------------------------------
  88. static void  REQ_MultiSlotTx( void )
  89. {  rf_multi_slot_tx_ptr->REQ_MultiSlotTx( );
  90. }
  91. //---------------------------------------------------------------------------
  92. static void __stdcall CNF_MultiSlotTx(const unsigned char cnf, const short token, void *usrData)
  93. {
  94.   rf_multi_slot_tx_ptr->CNF_MultiSlotTx( cnf, token, usrData );
  95. }
  96. //===========================================================================
  97. CRFMULTISLOTTX::CRFMULTISLOTTX( void )
  98. {
  99.     g_bIsRunning = false;
  100.     ConfirmCallback = NULL;
  101. }
  102. //---------------------------------------------------------------------------
  103. CRFMULTISLOTTX::~CRFMULTISLOTTX()
  104. {
  105.     g_bIsRunning = false;
  106.     ConfirmCallback = NULL;
  107. }
  108. //---------------------------------------------------------------------------
  109. void CRFMULTISLOTTX::REQ_Stop(void)
  110. {
  111.    if(!g_bIsRunning)  return;
  112.    META_Cancel_r( m_META_HANDLE_Obj.Get_MainHandle(), m_sRFID_MULTISLOTTX );
  113.    Confirm( METAAPP_STOP );
  114. }
  115. //---------------------------------------------------------------------------
  116. void CRFMULTISLOTTX::Confirm(E_METAAPP_RESULT_T confirm_state)
  117. {
  118.     if (!g_bIsRunning)
  119.     {
  120.         return;
  121.     }
  122.     g_bIsRunning = false;
  123.     if (NULL == ConfirmCallback)
  124.     {
  125.         return;
  126.     }
  127.     if (confirm_state != METAAPP_SUCCESS)
  128.     {
  129.         META_Cancel_r(m_META_HANDLE_Obj.Get_MainHandle(), m_sRFID_MULTISLOTTX);
  130.         META_CancelAllBlockingCall_r(m_META_HANDLE_Obj.Get_MainHandle());
  131.     }
  132.     m_eConfirmState = confirm_state;
  133.     ActiveMan->SetActiveFunction(ConfirmCallback);
  134. }
  135. //===========================================================================
  136. //void CRFMULTISLOTTX::REQ_Start(int band, int arfcn, int tsc, int *cs, int *pcl, int frames, int afc_dac, char TimeSlotMask_par, int ta, bool isEDGEsupport, int pattern, unsigned short pattern_data)
  137. void CRFMULTISLOTTX::REQ_Start(S_MULTI_SLOT_TX_T multi_slot_tx)
  138. {
  139.     rf_multi_slot_tx_ptr = this;
  140.     g_bIsRunning = true;
  141.     m_sMultiSlotTx = multi_slot_tx;
  142.     ActiveMan->SetActiveFunction( ::REQ_SelectBand );
  143. }
  144. //---------------------------------------------------------------------------
  145. void CRFMULTISLOTTX::REQ_SelectBand(void)
  146. {
  147.     if (!g_bIsRunning)
  148.     {
  149.         return;
  150.     }
  151.     unsigned char select_PCS1900;
  152.     if (BANDSEL_PCS1900 == m_sMultiSlotTx.e_bandsel)
  153.     {
  154.         select_PCS1900 = 1;
  155.     }
  156.     else
  157.     {
  158.         select_PCS1900 = 0;
  159.     }
  160.     META_RESULT MetaResult = META_Rf_SelectFrequencyBand1900_r(m_META_HANDLE_Obj.Get_MainHandle(), select_PCS1900, ::CNF_SelectBand, &m_sRFID_MULTISLOTTX, NULL );
  161.     if (MetaResult != META_SUCCESS)
  162.     {
  163.         Confirm( METAAPP_FAIL );
  164.         return;
  165.     }
  166. }
  167. //-------------------------------------
  168. void __stdcall CRFMULTISLOTTX::CNF_SelectBand( const unsigned char cnf, const short token, void *usrData )
  169. {
  170.     if (!g_bIsRunning)
  171.     {
  172.         return;
  173.     }
  174.     if (false == cnf)
  175.     {
  176.         Confirm(METAAPP_FAIL);
  177.         return;
  178.     }
  179.     ActiveMan->SetActiveFunction(::REQ_MultiSlotTx);
  180. }
  181. //---------------------------------------------------------------------------
  182. void CRFMULTISLOTTX::REQ_MultiSlotTx(void)
  183. {
  184.     if (!g_bIsRunning)
  185.     {
  186.         return;
  187.     }
  188.     if (m_sMultiSlotTx.b_MultiSlotTXExSupport)
  189.     {
  190.         META_RESULT MetaResult = META_Rf_MultiSlot_TX_Ex_r(m_META_HANDLE_Obj.Get_MainHandle(), 5000, &m_sMultiSlotTx.req);
  191.         if (MetaResult != META_SUCCESS)
  192.         {
  193.             if (MetaResult != META_TIMEOUT)
  194.             {
  195.                 Confirm(METAAPP_FAIL);
  196.                 return;
  197.             }
  198.             else
  199.             {
  200.                 Confirm(METAAPP_TIMEOUT);
  201.                 return;
  202.             }
  203.         }
  204.         Confirm(METAAPP_SUCCESS);
  205.     }
  206.     else
  207.     {
  208.         RfMultiSlotTX_Req req;
  209.         req.arfcn        = m_sMultiSlotTx.req.arfcn;
  210.         req.bsic         = m_sMultiSlotTx.req.bsic;
  211.         req.timeSlotmask = m_sMultiSlotTx.req.timeSlotmask;
  212.         for (int i=0; i<MAX_SUPPORT_TIMESLOT_NUM; i++)
  213.         {
  214.             req.cs[i]       = m_sMultiSlotTx.req.cs[i];
  215.             req.powerLev[i] = m_sMultiSlotTx.req.powerLev[i];
  216.         }
  217.         req.frames   = m_sMultiSlotTx.req.frames;
  218.         req.dacValue = m_sMultiSlotTx.req.dacValue;
  219.         req.ta       = m_sMultiSlotTx.req.ta;
  220.         META_RESULT MetaResult = META_Rf_MultiSlot_TX_r(m_META_HANDLE_Obj.Get_MainHandle(), &req, ::CNF_MultiSlotTx, &m_sRFID_MULTISLOTTX, NULL);
  221.         if (MetaResult!=META_SUCCESS)
  222.         {
  223.             Confirm(METAAPP_FAIL);
  224.             return;
  225.         }
  226.     }
  227. }
  228. //-------------------------------------
  229. void __stdcall CRFMULTISLOTTX::CNF_MultiSlotTx(const unsigned char cnf, const short token, void *usrData)
  230. {
  231.     if (!g_bIsRunning)
  232.     {
  233.         return;
  234.     }
  235.     if (false == cnf)
  236.     {
  237.         Confirm(METAAPP_FAIL);
  238.         return;
  239.     }
  240.     Confirm(METAAPP_SUCCESS);
  241. }
  242. //===========================================================================
  243. ////////////////////////////         Query        ///////////////////////////
  244. //===========================================================================
  245. bool CRFMULTISLOTTX::Query_MultiSlotTxEx_Start(void)
  246. {
  247.     META_RESULT MetaResult = META_QueryIfFunctionSupportedByTarget_r(m_META_HANDLE_Obj.Get_MainHandle(), 300, "META_Rf_MultiSlot_TX_Ex_r");
  248.     if (META_SUCCESS != MetaResult)
  249.     {
  250.         return false;
  251.     }
  252.     return true;    
  253. }
  254. //===========================================================================
  255. ////////////////////////////  Export information  ///////////////////////////
  256. //===========================================================================
  257. E_METAAPP_RESULT_T CRFMULTISLOTTX::Get_ConfirmState( void )
  258. {
  259.     return  m_eConfirmState;
  260. }