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

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_run.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   RF multi slot runtime 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_MOD_H_
  68. #include "rf_mod.h"
  69. #endif
  70. #ifndef _FORM_RFTOOL_H_
  71. #include "form_RFTool.h"
  72. #endif
  73. #ifndef _RF_MULTISLOTTX_RUN_H_
  74. #include "rf_MultiSlotTx_run.h"
  75. #endif
  76. #include "man_timer.h"
  77. #include "man_active.h"
  78. //===========================================================================
  79. static CRFMULTISLOTTXRUN*  rf_multi_slot_tx_run_ptr;
  80. static bool g_bIsRunning;
  81. //===========================================================================
  82. static void  REQ_SelectBand( void )
  83. {   rf_multi_slot_tx_run_ptr->REQ_SelectBand( );
  84. }
  85. //---------------------------------------------------------------------------
  86. static void __stdcall CNF_SelectBand( const unsigned char cnf, const short token, void *usrData )
  87. {
  88.     rf_multi_slot_tx_run_ptr->CNF_SelectBand( cnf, token, usrData );
  89. }
  90. //---------------------------------------------------------------------------
  91. static void  REQ_BBTXCfg2( void )
  92. {   rf_multi_slot_tx_run_ptr->REQ_BBTXCfg2( );
  93. }
  94. //---------------------------------------------------------------------------
  95. static void  REQ_BBTXCfg3( void )
  96. {   rf_multi_slot_tx_run_ptr->REQ_BBTXCfg3( );
  97. }
  98. //---------------------------------------------------------------------------
  99. static void  REQ_MultiSlotTx( void )
  100. {   rf_multi_slot_tx_run_ptr->REQ_MultiSlotTx( );
  101. }
  102. //---------------------------------------------------------------------------
  103. static void __stdcall CNF_MultiSlotTx(const unsigned char cnf, const short token, void *usrData)
  104. {
  105.     rf_multi_slot_tx_run_ptr->CNF_MultiSlotTx( cnf, token, usrData );
  106. }
  107. //---------------------------------------------------------------------------
  108. static void  REQ_TimeOut( void )
  109. {   rf_multi_slot_tx_run_ptr->REQ_TimeOut();
  110. }
  111. //---------------------------------------------------------------------------
  112. static void  REQ_Finish( void )
  113. {   rf_multi_slot_tx_run_ptr->REQ_Finish();
  114. }
  115. //===========================================================================
  116. CRFMULTISLOTTXRUN::CRFMULTISLOTTXRUN( void )
  117. {
  118.     g_bIsRunning = false;
  119.     ConfirmCallback = 0;
  120.      RFReq_BBTXCFG2 = NULL;
  121.     RFReq_MultiSlotTx = NULL;
  122.     RFReq_EPSK_MultiSlotTx = NULL;
  123.     isFirstReq = true;
  124. }
  125. //---------------------------------------------------------------------------
  126. CRFMULTISLOTTXRUN::~CRFMULTISLOTTXRUN( )
  127. {
  128.     g_bIsRunning = false;
  129.     ConfirmCallback = 0;
  130.     if( RFReq_BBTXCFG2 != NULL )
  131.     {
  132.         delete RFReq_BBTXCFG2;
  133.         RFReq_BBTXCFG2 = NULL;
  134.     }
  135.     if( RFCnf_BBTXCFG2 != NULL )
  136.     {
  137.         delete RFCnf_BBTXCFG2;
  138.         RFCnf_BBTXCFG2 = NULL;
  139.     }
  140.     if( RFReq_BBTXCFG3 != NULL )
  141.     {
  142.         delete RFReq_BBTXCFG3;
  143.         RFReq_BBTXCFG3 = NULL;
  144.     }
  145.     if( RFCnf_BBTXCFG3 != NULL )
  146.     {
  147.         delete RFCnf_BBTXCFG3;
  148.         RFCnf_BBTXCFG3 = NULL;
  149.     }
  150.     if( RFReq_MultiSlotTx != NULL)
  151.     {
  152.         delete RFReq_MultiSlotTx;
  153.         RFReq_MultiSlotTx = NULL;
  154.     }
  155.     if( RFReq_EPSK_MultiSlotTx != NULL )
  156.     {
  157.         delete  RFReq_EPSK_MultiSlotTx;
  158.         RFReq_EPSK_MultiSlotTx = NULL;
  159.     }
  160. }
  161. //---------------------------------------------------------------------------
  162. void  CRFMULTISLOTTXRUN::REQ_Finish( void )
  163. {
  164.    if(!g_bIsRunning)  return;
  165.    Confirm(METAAPP_SUCCESS);
  166.    g_bIsRunning = false;
  167. }
  168. //---------------------------------------------------------------------------
  169. void  CRFMULTISLOTTXRUN::REQ_Stop( void )
  170. {
  171.    if(!g_bIsRunning)  return;
  172.    META_Cancel_r( m_META_HANDLE_Obj.Get_MainHandle(), RFID_MULTISLOTTX );
  173.    Confirm( METAAPP_STOP );
  174.    g_bIsRunning = false;
  175. }
  176. //---------------------------------------------------------------------------
  177. void CRFMULTISLOTTXRUN::REQ_TimeOut( void )
  178. {
  179.    if(!g_bIsRunning)  return;
  180.    META_Cancel_r( m_META_HANDLE_Obj.Get_MainHandle(), RFID_MULTISLOTTX );
  181.    Confirm( METAAPP_TIMEOUT );
  182.    g_bIsRunning = false;
  183. }
  184. //---------------------------------------------------------------------------
  185. void  CRFMULTISLOTTXRUN::Confirm( int confirm_state )
  186. {
  187.    if(!g_bIsRunning)  return;
  188.    if(ConfirmCallback==0)  return;
  189.    ConfirmState = confirm_state;
  190.    ActiveMan->SetActiveFunction( ConfirmCallback );
  191. }
  192. //===========================================================================
  193. void  CRFMULTISLOTTXRUN::REQ_Start( int band, int arfcn, int tsc, int *cs, int *pcl,
  194.                                     int frames, int afc_dac, char TimeSlotMask_par,
  195.                                     int ta, bool isEDGEsupport, int pattern, unsigned short pattern_data,
  196.                                     char tx_trim_i, char tx_trim_q, char tx_offset_i,
  197.                                     char tx_offset_q, char tx_cal_bias, char tx_iq_swap,
  198.                                     char tx_cmv, char tx_gain, char tx_calrcsel, char tx_phasesel, bool bb_tx_cfg3_support  )
  199. {
  200.     rf_multi_slot_tx_run_ptr = this;
  201.     g_bIsRunning = true;
  202.     Band = band;
  203.     Arfcn = arfcn;
  204.     TSC = tsc;
  205.     int i;
  206.     for(i=0; i<4; i++)
  207.     {
  208.         CS[i] = *(cs+i);
  209.         PCL[i] = *(pcl+i);
  210.     }
  211.            Frames = frames;
  212.            AFCDac = afc_dac;
  213.      TimeSlotMask = TimeSlotMask_par;
  214.                TA = ta;
  215.     IsEDGESupport = isEDGEsupport;
  216.           Pattern = pattern;
  217.       PatternData = pattern_data;
  218.           TxTrimI = tx_trim_i;
  219.           TxTrimQ = tx_trim_q;
  220.         TxOffsetI = tx_offset_i;
  221.         TxOffsetQ = tx_offset_q;
  222.         TxCalbias = tx_cal_bias;
  223.          TxIQSwap = tx_iq_swap;
  224.             TxCMV = tx_cmv;
  225.            TxGain = tx_gain;
  226.        TxCalrcsel = tx_calrcsel;
  227.        TxPhasesel = tx_phasesel;
  228.   BBTXCfg3Support = bb_tx_cfg3_support;
  229.    ActiveMan->SetActiveFunction( ::REQ_SelectBand );
  230. }
  231. //---------------------------------------------------------------------------
  232. void  CRFMULTISLOTTXRUN::REQ_SelectBand( void )
  233. {
  234.     if(!g_bIsRunning)  return;
  235.     unsigned char select_PCS1900;
  236.     if(Band==BANDSEL_PCS1900)
  237.         select_PCS1900 = 1;
  238.     else
  239.         select_PCS1900 = 0;
  240.     META_RESULT MetaResult = META_Rf_SelectFrequencyBand1900_r(m_META_HANDLE_Obj.Get_MainHandle(), select_PCS1900, ::CNF_SelectBand, &RFID_MULTISLOTTX, NULL );
  241.     if(MetaResult!=META_SUCCESS)
  242.     {  Confirm( METAAPP_FAIL );  return;  }
  243. }
  244. //-------------------------------------
  245. void __stdcall CRFMULTISLOTTXRUN::CNF_SelectBand( const unsigned char cnf, const short token, void *usrData )
  246. {
  247.    if(!g_bIsRunning)  return;
  248.    if(cnf==false)
  249.    {  Confirm( METAAPP_FAIL );  return;  }
  250.     if((TxTrimI==-99)&&(TxTrimQ==-99))
  251.     {  ActiveMan->SetActiveFunction( ::REQ_MultiSlotTx );
  252.     }
  253.     else
  254.     {
  255.         if( ! BBTXCfg3Support )
  256.         {
  257.             ActiveMan->SetActiveFunction( ::REQ_BBTXCfg2 );
  258.         }
  259.         else
  260.         {
  261.             ActiveMan->SetActiveFunction( ::REQ_BBTXCfg3 );
  262.         }
  263.     }
  264. }
  265. //---------------------------------------------------------------------------
  266. void  CRFMULTISLOTTXRUN::REQ_BBTXCfg2( void )
  267. {
  268.    if(!g_bIsRunning)  return;
  269.    if( RFReq_BBTXCFG2 == NULL )
  270.    {
  271.       RFReq_BBTXCFG2 = new RfBBTXCfg2;
  272.    }
  273.    RFReq_BBTXCFG2->TxTrimI   = TxTrimI;
  274.    RFReq_BBTXCFG2->TxTrimQ   = TxTrimQ;
  275.    RFReq_BBTXCFG2->TxOffsetI = TxOffsetI;
  276.    RFReq_BBTXCFG2->TxOffsetQ = TxOffsetQ;
  277.    RFReq_BBTXCFG2->TxCalbias = TxCalbias;
  278.    RFReq_BBTXCFG2->TxIQSwap = TxIQSwap;
  279.    RFReq_BBTXCFG2->TxCMV = TxCMV;
  280.    RFReq_BBTXCFG2->TxGain = TxGain;
  281.    RFReq_BBTXCFG2->TxCalrcsel = TxCalrcsel;
  282.    META_RESULT  MetaResult = META_Rf_SetBBTxCfg2_r( m_META_HANDLE_Obj.Get_MainHandle(), 500, RFReq_BBTXCFG2, RFCnf_BBTXCFG2);
  283.     if(MetaResult!=META_SUCCESS)
  284.     {
  285.         if( MetaResult!=META_TIMEOUT )
  286.         {   Confirm( STATE_MULTI_SLOT_TX_RUN_FAIL );  return;  }
  287.         else
  288.         {   Confirm( STATE_MULTI_SLOT_TX_RUN_TIMEOUT );  return;  }
  289.     }
  290.     ActiveMan->SetActiveFunction( ::REQ_MultiSlotTx );
  291. }
  292. //---------------------------------------------------------------------------
  293. void  CRFMULTISLOTTXRUN::REQ_BBTXCfg3( void )
  294. {
  295.    if(!g_bIsRunning)  return;
  296.    if( RFReq_BBTXCFG3 == NULL )
  297.    {
  298.       RFReq_BBTXCFG3 = new RfBBTXCfg3;
  299.    }
  300.    RFReq_BBTXCFG3->TxTrimI   = TxTrimI;
  301.    RFReq_BBTXCFG3->TxTrimQ   = TxTrimQ;
  302.    RFReq_BBTXCFG3->TxOffsetI = TxOffsetI;
  303.    RFReq_BBTXCFG3->TxOffsetQ = TxOffsetQ;
  304.    RFReq_BBTXCFG3->TxCalbias = TxCalbias;
  305.    RFReq_BBTXCFG3->TxIQSwap = TxIQSwap;
  306.    RFReq_BBTXCFG3->TxCMV = TxCMV;
  307.    RFReq_BBTXCFG3->TxGain = TxGain;
  308.    RFReq_BBTXCFG3->TxCalrcsel = TxCalrcsel;
  309.    RFReq_BBTXCFG3->TxPhasesel = TxPhasesel;
  310.    META_RESULT  MetaResult = META_Rf_SetBBTxCfg3_r( m_META_HANDLE_Obj.Get_MainHandle(), 500, RFReq_BBTXCFG3, RFCnf_BBTXCFG3);
  311.     if(MetaResult!=META_SUCCESS)
  312.     {
  313.         if( MetaResult!=META_TIMEOUT )
  314.         {   Confirm( STATE_MULTI_SLOT_TX_RUN_FAIL );  return;  }
  315.         else
  316.         {   Confirm( STATE_MULTI_SLOT_TX_RUN_TIMEOUT );  return;  }
  317.     }
  318.     ActiveMan->SetActiveFunction( ::REQ_MultiSlotTx );
  319. }
  320. //---------------------------------------------------------------------------
  321. void  CRFMULTISLOTTXRUN::REQ_MultiSlotTx( void )
  322. {
  323.     if(!g_bIsRunning)  return;
  324.     int i;
  325.     if( isFirstReq )
  326.     {
  327.         if( META_QueryIfFunctionSupportedByTarget_r(m_META_HANDLE_Obj.Get_MainHandle(), 500, "META_Rf_MultiSlot_TX_Ex") == META_SUCCESS )
  328.         {
  329.             isMultiSlot_TX_ExSupport = true;
  330.         }
  331.         else
  332.         {
  333.             isMultiSlot_TX_ExSupport = false;
  334.         }
  335.         isFirstReq = false;
  336.     }
  337.     if( isMultiSlot_TX_ExSupport )
  338.     {
  339.         if(RFReq_EPSK_MultiSlotTx == NULL)
  340.         {
  341.             RFReq_EPSK_MultiSlotTx = new Rf_MultiSlotTXEx_Req;
  342.         }
  343.         RFReq_EPSK_MultiSlotTx->arfcn = Arfcn;
  344. RFReq_EPSK_MultiSlotTx->bsic = TSC;
  345. RFReq_EPSK_MultiSlotTx->timeSlotmask = TimeSlotMask;
  346.         for(i=0; i<MAX_SUPPORT_TIMESLOT_NUM; i++)
  347.         {
  348.     RFReq_EPSK_MultiSlotTx->powerLev[i] = PCL[i];
  349.     RFReq_EPSK_MultiSlotTx->cs[i]=CS[i];
  350.         }
  351. RFReq_EPSK_MultiSlotTx->ta = TA;
  352. RFReq_EPSK_MultiSlotTx->frames = Frames;
  353. RFReq_EPSK_MultiSlotTx->dacValue = AFCDac;
  354. RFReq_EPSK_MultiSlotTx->pattern = Pattern;
  355.         RFReq_EPSK_MultiSlotTx->pattern_data = PatternData;
  356.         META_RESULT MetaResult = META_Rf_MultiSlot_TX_Ex_r( m_META_HANDLE_Obj.Get_MainHandle(), 500, RFReq_EPSK_MultiSlotTx);
  357.         if(MetaResult!=META_SUCCESS)
  358.         {
  359.             if( MetaResult!=META_TIMEOUT )
  360.             {   Confirm( METAAPP_FAIL );  return;  }
  361.             else
  362.             {   Confirm( METAAPP_TIMEOUT );  return;  }
  363.         }
  364.         ActiveMan->SetActiveFunction( ::REQ_Finish );
  365.     }
  366.     else
  367.     {
  368.         if(RFReq_MultiSlotTx == NULL)
  369.         {
  370.             RFReq_MultiSlotTx = new RfMultiSlotTX_Req;
  371.         }
  372.         RFReq_MultiSlotTx->arfcn        = Arfcn;
  373.         RFReq_MultiSlotTx->bsic         = TSC;
  374.         RFReq_MultiSlotTx->timeSlotmask = TimeSlotMask;
  375.         for(i=0; i<MAX_SUPPORT_TIMESLOT_NUM; i++)
  376.         {
  377.             RFReq_MultiSlotTx->cs[i]           = CS[i];
  378.             RFReq_MultiSlotTx->powerLev[i]     = PCL[i];
  379.         }
  380.         RFReq_MultiSlotTx->frames       = Frames;
  381.         RFReq_MultiSlotTx->dacValue     = AFCDac;
  382.         RFReq_MultiSlotTx->ta           = TA;
  383.         META_RESULT MetaResult = META_Rf_MultiSlot_TX_r(m_META_HANDLE_Obj.Get_MainHandle(), RFReq_MultiSlotTx, ::CNF_MultiSlotTx, &RFID_MULTISLOTTX, NULL);
  384.         if(MetaResult!=META_SUCCESS)
  385.         {  Confirm( METAAPP_FAIL );  return;  }
  386.     }
  387. }
  388. //-------------------------------------
  389. void __stdcall CRFMULTISLOTTXRUN::CNF_MultiSlotTx(const unsigned char cnf, const short token, void *usrData)
  390. {
  391.    if(!g_bIsRunning)  return;
  392.    if(cnf==false)
  393.    {  Confirm( METAAPP_FAIL );  return;  }
  394.    ActiveMan->SetActiveFunction( ::REQ_Finish );
  395. }