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

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_RFTXIQBBTXRun.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *  RF TXIQ BB TX runtime setting 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. #include "form_main.h"
  69. #include "form_RFTool.h"
  70. #ifndef  _FORM_RFTXIQBBTXRUN_H_
  71. #include "form_RFTXIQBBTXRun.h"
  72. #endif
  73. #include "misc.h"
  74. #ifndef _META_LAB_MSG_H_
  75. #include "meta_lab_msg.h"
  76. #endif
  77. //---------------------------------------------------------------------------
  78. #pragma package(smart_init)
  79. #pragma resource "*.dfm"
  80. TfrmTXIQBBTXRunTimeSetting *frmTXIQBBTXRunTimeSetting;
  81. //---------------------------------------------------------------------------
  82. static void ConfirmCallback_GetBBTxCfg(void)
  83. {
  84.     frmTXIQBBTXRunTimeSetting->ConfirmCallback_GetBBTxCfg();
  85. }
  86. //--------------------------------------------------------------------------
  87. static void CNF_SetBBTxCfg(void)
  88. {
  89.     frmTXIQBBTXRunTimeSetting->CNF_SetBBTxCfg();
  90. }
  91. //--------------------------------------------------------------------------
  92. static void ConfirmCallback_TX(void)
  93. {
  94.     frmTXIQBBTXRunTimeSetting->ConfirmCallback_TX();
  95. }
  96. //--------------------------------------------------------------------------
  97. static void  ConfirmCallback_MultiSlotTX( void )
  98. {   frmTXIQBBTXRunTimeSetting->ConfirmCallback_MultiSlotTX();
  99. }
  100. //==============================================================================
  101. void _fastcall TfrmTXIQBBTXRunTimeSetting::SubClassWndProc( Messages::TMessage &Message)
  102. {
  103.     switch ( Message.Msg )
  104.     {
  105.        // case WM_ML_QUERY_BBTXCFG3SUPPPORT_SUCCESS:
  106.        //      m_bBBTXCfg3Support = true;
  107.        //      lblTXBBTXPhasesel->Visible = true;
  108.        //      edtTXBBTXPhasesel->Visible = true;
  109.        // break;
  110.        // case WM_ML_QUERY_BBTXCFG3SUPPPORT_FAILED:
  111.        //      m_bBBTXCfg3Support = false;
  112.       //       lblTXBBTXPhasesel->Visible = false;
  113.        //      edtTXBBTXPhasesel->Visible = false;
  114.        // break;
  115.         default:
  116.              this->WndProc( Message );
  117.         break;
  118.     }
  119. }
  120. //--------------------------------------------------------------------------
  121. void TfrmTXIQBBTXRunTimeSetting::Init( void )
  122. {
  123.     m_bInit = true;
  124. }
  125. //--------------------------------------------------------------------------
  126. void __fastcall TfrmTXIQBBTXRunTimeSetting::FormActivate(TObject *Sender)
  127. {
  128.     if (m_bInit)
  129.     {
  130.         m_bInit = false;
  131.         // modulation
  132.         m_sFinalMSCAP = frmMainSel->Get_FinalMSCap();
  133.         if (m_sFinalMSCAP.capability.EDGE_8PSK_TX)
  134.         {
  135.             lblTXModulation->Visible = true;
  136.             cbTXModulation->Visible = true;
  137.         }
  138.         else
  139.         {
  140.             lblTXModulation->Visible = false;
  141.             cbTXModulation->Visible = false;
  142.         }
  143.         if (MOD_GMSK_INDEX == cbTXModulation->ItemIndex)
  144.         {
  145.             Display_TxGmskUi();
  146.         }
  147.         else
  148.         {
  149.             Display_TxEpskUi();
  150.         }
  151.         // BBTXCfg
  152.         BBCHIP_TYPE bb_chip = frmMainSel->Get_FinalBBChip();
  153.         m_eBbTxCfgVer = m_pcRF_TXIQRUN_Obj->Query_BBTxCfgVer_Start(bb_chip);
  154.         if (m_eBbTxCfgVer >= BBTXCFG_VER3)
  155.         {
  156.             lblTXBBTXPhasesel->Visible = true;
  157.             edtTXBBTXPhasesel->Visible = true;
  158.         }
  159.         else
  160.         {
  161.             lblTXBBTXPhasesel->Visible = false;
  162.             edtTXBBTXPhasesel->Visible = false;
  163.         }
  164.         // multi slot TX
  165.         m_bMultiSlotTxExSupport = frmRFTool->Get_MultiSlotTxExSupport();
  166.     }
  167. }
  168. //===========================================================================
  169. bool TfrmTXIQBBTXRunTimeSetting::CheckBbTxCfgFields(void)
  170. {
  171.     signed char   tx_trim_i;
  172.     signed char   tx_trim_q;
  173.     signed char   tx_offset_i;
  174.     signed char   tx_offset_q;
  175.     signed char   tx_cal_bias;
  176.     char   tx_iq_swap;
  177.     signed char   tx_cmv;
  178.     signed char   tx_gain;
  179.     signed char   tx_calrcsel;
  180.     signed char   tx_phasesel;
  181.     AnsiString  text;
  182.     text = edtTXTrimI->Text;    if (!IsValidTrimIQ(text, tx_trim_i))   {  edtTrimIQCheck(edtTXTrimI);       return false;   }
  183.     m_sBbTxCfg.TxTrimI = tx_trim_i;
  184.     text = edtTXTrimQ->Text;    if (!IsValidTrimIQ(text, tx_trim_q))   {  edtTrimIQCheck(edtTXTrimQ);        return false;   }
  185.     m_sBbTxCfg.TxTrimQ = tx_trim_q;
  186.     text = edtTXOffsetI->Text;    if (!IsValidOffsetIQ(m_eBbTxCfgVer, text, tx_offset_i) )   {  edtOffsetIQCheck(edtTXOffsetI);        return false;   }
  187.     m_sBbTxCfg.TxOffsetI = tx_offset_i;
  188.     text = edtTXOffsetQ->Text;    if (!IsValidOffsetIQ(m_eBbTxCfgVer, text, tx_offset_q) )   {  edtOffsetIQCheck(edtTXOffsetQ);        return false;   }
  189.     m_sBbTxCfg.TxOffsetQ = tx_offset_q;
  190.     text = edtTXTXCalbias->Text;    if (!IsValidTxCalbias(m_eBbTxCfgVer, text, tx_cal_bias))   {  edtBBTXCalbiasCheck(edtTXTXCalbias);        return false;   }
  191.     m_sBbTxCfg.TxCalbias = tx_cal_bias;
  192.     text = edtTXTXIQSwap->Text;    if (!IsValidTxIQSwap(text, tx_iq_swap))   {  edtBBTXIQSwapCheck(edtTXTXIQSwap);        return false;   }
  193.     m_sBbTxCfg.TxIQSwap = tx_iq_swap;
  194.     text = edtTXCMV->Text;    if (!IsValidBBTXCommonModeVoltage(text, tx_cmv))   {  edtBBTXCommonModeVoltageCheck(edtTXCMV);        return false;   }
  195.     m_sBbTxCfg.TxCMV = tx_cmv;
  196.     text = edtTXBBTXGain->Text;    if (!IsValidBBTXGain(text, tx_gain) )   {  edtBBTXGainCheck(edtTXBBTXGain);        return false;  }
  197.     m_sBbTxCfg.TxGain = tx_gain;
  198.     text = edtTXBBTXCalrcsel->Text;    if (!IsValidBBTXCalrcsel(text, tx_calrcsel))   {  edtTXBBTXCalrcselCheck(edtTXBBTXCalrcsel);        return false;   }
  199.     m_sBbTxCfg.TxCalrcsel = tx_calrcsel;
  200.     if (edtTXBBTXPhasesel->Visible)
  201.     {
  202.         text = edtTXBBTXPhasesel->Text;    if (!IsValidBBTXPhasesel(m_eBbTxCfgVer, text, tx_phasesel))   {  edtTXBBTXPhaseselCheck(edtTXBBTXPhasesel);        return false;   }
  203.         m_sBbTxCfg.TxPhasesel = tx_phasesel;
  204.     }
  205.     return true;
  206. }
  207. //---------------------------------------------------------------------------
  208. void TfrmTXIQBBTXRunTimeSetting::ReDrawFields(void)
  209. {
  210.     edtTXTrimI->Text = IntToStr(m_sBbTxCfg.TxTrimI);
  211.     edtTXTrimQ->Text = IntToStr(m_sBbTxCfg.TxTrimQ);
  212.     edtTXOffsetI->Text = IntToStr(m_sBbTxCfg.TxOffsetI);
  213.     edtTXOffsetQ->Text = IntToStr(m_sBbTxCfg.TxOffsetQ);
  214.     edtTXTXCalbias->Text = IntToStr(m_sBbTxCfg.TxCalbias);
  215.     edtTXTXIQSwap->Text = IntToStr(m_sBbTxCfg.TxIQSwap);
  216.     edtTXCMV->Text = IntToStr(m_sBbTxCfg.TxCMV);
  217.     edtTXBBTXGain->Text = IntToStr(m_sBbTxCfg.TxGain);
  218.     edtTXBBTXCalrcsel->Text = IntToStr(m_sBbTxCfg.TxCalrcsel);
  219.     if (m_eBbTxCfgVer >= BBTXCFG_VER3)
  220.     {
  221.         edtTXBBTXPhasesel->Text = IntToStr(m_sBbTxCfg.TxPhasesel);
  222.     }
  223. }
  224. //---------------------------------------------------------------------------
  225. void  TfrmTXIQBBTXRunTimeSetting::CurrentPageReset( void )
  226. {
  227.     cbTXModulation->Enabled = true;
  228.     cbxTXBand->Enabled = true;
  229.     edtTXArfcn->Enabled = true;
  230.     cbxTXTsc->Enabled = true;
  231.     edtTXPcl->Enabled = true;
  232.     edtTXAfc->Enabled = true;
  233.     edtTXTA->Enabled = true;
  234.     cbTXCS->Enabled = true;
  235.     cbTXBurstType->Enabled = true;
  236.     edtTXPattern->Enabled = true;
  237.    // radTXAb->Enabled = true;
  238.    // radTXNb->Enabled = true;
  239.    // radTXNbOne->Enabled = true;
  240.     edtTXTrimI->Enabled = true;
  241.     edtTXTrimQ->Enabled = true;
  242.     edtTXOffsetI->Enabled = true;
  243.     edtTXOffsetQ->Enabled = true;
  244.     edtTXTXCalbias->Enabled = true;
  245.     edtTXTXIQSwap->Enabled = true;
  246.     edtTXCMV->Enabled = true;
  247.     edtTXBBTXGain->Enabled = true;
  248.     edtTXBBTXCalrcsel->Enabled = true;
  249.     edtTXBBTXPhasesel->Enabled = true;
  250.     btnTXStart->Enabled = true;
  251.     btnTXStart->Tag = 0;
  252.     btnLoadFromFile->Enabled = true;
  253.     btnSaveToFile->Enabled = true;
  254.     btnLoadFromReg->Enabled = true;
  255. }
  256. //---------------------------------------------------------------------------
  257. void  TfrmTXIQBBTXRunTimeSetting::CurrentPageLock( void )
  258. {
  259.     cbTXModulation->Enabled = false;
  260.     cbxTXBand->Enabled = false;
  261.     edtTXArfcn->Enabled = false;
  262.     cbxTXTsc->Enabled = false;
  263.     edtTXPcl->Enabled = false;
  264.     edtTXAfc->Enabled = false;
  265.     edtTXTA->Enabled = false;
  266.     cbTXCS->Enabled = false;
  267.     cbTXBurstType->Enabled = false;
  268.     edtTXPattern->Enabled = false;
  269.    // radTXAb->Enabled = false;
  270.    // radTXNb->Enabled = false;
  271.    // radTXNbOne->Enabled = false;
  272.     edtTXTrimI->Enabled = false;
  273.     edtTXTrimQ->Enabled = false;
  274.     edtTXOffsetI->Enabled = false;
  275.     edtTXOffsetQ->Enabled = false;
  276.     edtTXTXCalbias->Enabled = false;
  277.     edtTXTXIQSwap->Enabled = false;
  278.     edtTXCMV->Enabled = false;
  279.     edtTXBBTXGain->Enabled = false;
  280.     edtTXBBTXCalrcsel->Enabled = false;
  281.     edtTXBBTXPhasesel->Enabled = false;
  282.     btnTXStart->Enabled = false;
  283.     btnTXStart->Tag = 1;
  284.     btnLoadFromFile->Enabled = false;
  285.     btnSaveToFile->Enabled = false;
  286.     btnLoadFromReg->Enabled = false;
  287. }
  288. //===========================================================================
  289. //---------------------------------------------------------------------------
  290. __fastcall TfrmTXIQBBTXRunTimeSetting::TfrmTXIQBBTXRunTimeSetting(TComponent* Owner)
  291.         : TForm(Owner)
  292. {
  293. }
  294. //---------------------------------------------------------------------------
  295. //---------------------------------------------------------------------------
  296. void __fastcall TfrmTXIQBBTXRunTimeSetting::btnTXStartClick(
  297.       TObject *Sender)
  298. {
  299.     if (1 == btnTXStart->Tag)
  300.     {
  301.         return;
  302.     }
  303.     if (!CheckBbTxCfgFields())
  304.     {
  305.         return;
  306.     }
  307.     m_eCurBand = (E_BANDSEL) cbxTXBand->ItemIndex;
  308.     CurrentPageLock();
  309.     m_pcRF_TXIQRUN_Obj->ConfirmCallback   = ::CNF_SetBBTxCfg;
  310.     m_pcRF_TXIQRUN_Obj->REQ_SetBBTxCfg_Start(m_eBbTxCfgVer, m_sBbTxCfg);
  311.     sbTXIQ->Panels->Items[0]->Text = (AnsiString)"  Burst TX processing";
  312. }
  313. //---------------------------------------------------------------------------
  314. void TfrmTXIQBBTXRunTimeSetting::CNF_SetBBTxCfg(void)
  315. {
  316.     E_METAAPP_RESULT_T state = m_pcRF_TXIQRUN_Obj->Get_ConfirmState();
  317.     switch (state)
  318.     {
  319.         case METAAPP_SUCCESS:
  320.         {
  321.             AnsiString text;
  322.             short arfcn;
  323.             text = edtTXArfcn->Text;    if (!IsValidARFCN(text, (E_BANDSEL) cbxTXBand->ItemIndex, arfcn))      {  edtArfcnCheck(edtTXArfcn);      return;   }
  324.             if (MOD_GMSK_INDEX == cbTXModulation->ItemIndex)
  325.             {
  326.                 int pcl;
  327.                 APCTxPattern burst_type;
  328.                 S_RFTX rf_tx;
  329.                 rf_tx.e_bandsel = (E_BANDSEL) cbxTXBand->ItemIndex;
  330.                 rf_tx.s_RfNbTxReq.arfcn = arfcn;
  331.         rf_tx.s_RfNbTxReq.bsic  = cbxTXTsc->ItemIndex;
  332.                 text = edtTXPcl->Text;      if (!IsValidPCL(text, rf_tx.e_bandsel, pcl))          {  edtPclCheck(edtTXPcl);          return;   }
  333.         rf_tx.s_RfNbTxReq.power = pcl;
  334.         rf_tx.s_RfNbTxReq.frames = -99;
  335.                 text = edtTXAfc->Text;      if (!IsValidAFC(text, rf_tx.s_RfNbTxReq.dacValue))            {  edtAfcDacCheck(edtTXAfc);       return;   }
  336.         rf_tx.s_RfNbTxReq.burstTypeNB = Get_GmskBurstType();
  337.                 m_pcRF_TX_Obj->ConfirmCallback  = ::ConfirmCallback_TX;
  338.                 m_pcRF_TX_Obj->REQ_Start(rf_tx);
  339.             }
  340.             else
  341.             {
  342.                 int pcl_ms[4];
  343.                 CodingScheme cs_ms[4];
  344.                 unsigned short pattern_data;
  345.                 int ta;
  346.                 char TimeSlotMask;
  347.                 S_MULTI_SLOT_TX_T multi_slot_tx;
  348.                 multi_slot_tx.e_bandsel = (E_BANDSEL) cbxTXBand->ItemIndex;
  349.                 text = edtTXAfc->Text;      if (!IsValidAFC(text, multi_slot_tx.req.dacValue))            {  edtAfcDacCheck(edtTXAfc);       return;   }
  350.                 cs_ms[0]  = (CodingScheme) (cbTXCS->ItemIndex + (int) CodingSchemeMCS5);
  351.                 cs_ms[1]  = (CodingScheme) (cbTXCS->ItemIndex + (int) CodingSchemeMCS5);
  352.                 cs_ms[2]  = (CodingScheme) (cbTXCS->ItemIndex + (int) CodingSchemeMCS5);
  353.                 cs_ms[3]  = (CodingScheme) (cbTXCS->ItemIndex + (int) CodingSchemeMCS5);
  354.                 text = edtTXPcl->Text;              if (!IsValidPCL(text, multi_slot_tx.e_bandsel, pcl_ms[0]))       {  edtPclCheck(edtTXPcl);                  return;   }
  355.                 pcl_ms[1] = pcl_ms[0];
  356.                 pcl_ms[2] = pcl_ms[0];
  357.                 pcl_ms[3] = pcl_ms[0];
  358.                 text = edtTXTA->Text;               if (!IsValidTA(text, ta))                  {  edtTACheck(edtTXTA);            return;   }
  359.                 TimeSlotMask = 0x01;
  360.                 multi_slot_tx.req.pattern = Get_EpskBurstType();
  361.                 if (NB_TX_PATTERN_WITHOUT_TSC == multi_slot_tx.req.pattern)
  362.                 {
  363.                     text = edtTXPattern->Text;       if( !IsValidMultiSlotTxPattern( text, pattern_data ) )                  {  edtPatternCheck(edtTXPattern);            return;   }
  364.                 }
  365.                 multi_slot_tx.b_MultiSlotTXExSupport = m_bMultiSlotTxExSupport;
  366.                 multi_slot_tx.req.arfcn = arfcn;
  367.                 multi_slot_tx.req.bsic  = cbxTXTsc->ItemIndex;
  368.                 multi_slot_tx.req.timeSlotmask = TimeSlotMask;
  369.                 for (int i=0; i<4; i++)
  370.                 {
  371.                     multi_slot_tx.req.powerLev[i] = pcl_ms[i];
  372.             multi_slot_tx.req.cs[i]       = cs_ms[i];
  373.                 }
  374.                 multi_slot_tx.req.ta = ta;
  375.                 multi_slot_tx.req.frames = -99;
  376.                 multi_slot_tx.req.pattern_data = pattern_data;
  377.                 m_pcRF_MULTI_SLOT_TX_Obj->ConfirmCallback   = ::ConfirmCallback_MultiSlotTX;
  378.                 m_pcRF_MULTI_SLOT_TX_Obj->REQ_Start(multi_slot_tx);
  379.             }
  380.         }
  381.         break;
  382.         case METAAPP_FAIL:
  383.         {
  384.             sbTXIQ->Panels->Items[0]->Text = (AnsiString)"  Set BB TX run time setting fail";
  385.             Application->MessageBox( "Execution Failure : Set BB TX run time setting", "FAILURE", MB_OK );
  386.             frmRFTool->Force_RF_Stop();
  387.             CurrentPageReset();
  388.         }
  389.         break;
  390.         case METAAPP_TIMEOUT:
  391.         {
  392.             sbTXIQ->Panels->Items[0]->Text = (AnsiString)"  Set BB TX run time setting timeout";
  393.             Application->MessageBox( "Execution Timeout : Set BB TX run time setting", "TIMEOUT", MB_OK );
  394.             frmRFTool->Force_RF_Stop();
  395.             CurrentPageReset();
  396.         }
  397.         break;
  398.         case METAAPP_STOP:
  399.         {
  400.             sbTXIQ->Panels->Items[0]->Text = (AnsiString)"  Set BB TX run time setting stop";
  401.             CurrentPageReset();
  402.         }
  403.         break;
  404.     }
  405. }
  406. //---------------------------------------------------------------------------
  407. void  TfrmTXIQBBTXRunTimeSetting::ConfirmCallback_TX(void)
  408. {
  409.     E_METAAPP_RESULT_T state = m_pcRF_TXIQRUN_Obj->Get_ConfirmState();
  410.     switch (state)
  411.     {
  412.         case METAAPP_SUCCESS:
  413.         {
  414.             sbTXIQ->Panels->Items[0]->Text = (AnsiString)"  Burst TX successful";
  415.         }
  416.         break;
  417.         case METAAPP_FAIL:
  418.         {
  419.             sbTXIQ->Panels->Items[0]->Text = (AnsiString)"  Burst TX fail";
  420.             Application->MessageBox("Execution Failure : Burst TX", "FAILURE", MB_OK);
  421.             frmRFTool->Force_RF_Stop();
  422.             CurrentPageReset();
  423.         }
  424.         break;
  425.         case METAAPP_TIMEOUT:
  426.         {
  427.             sbTXIQ->Panels->Items[0]->Text = (AnsiString)"  Burst TX timeout";
  428.             Application->MessageBox( "Execution Timout : Burst TX", "TIMEOUT", MB_OK );
  429.             frmRFTool->Force_RF_Stop();
  430.             CurrentPageReset();
  431.         }
  432.         break;
  433.         case METAAPP_STOP:
  434.         {
  435.             sbTXIQ->Panels->Items[0]->Text = (AnsiString)"  Burst TX stop";
  436.         }
  437.         break;
  438.     }
  439. }
  440. //---------------------------------------------------------------------------
  441. void  TfrmTXIQBBTXRunTimeSetting::ConfirmCallback_MultiSlotTX(void)
  442. {
  443.     E_METAAPP_RESULT_T state = m_pcRF_TXIQRUN_Obj->Get_ConfirmState();
  444.     switch (state)
  445.     {
  446.         case METAAPP_SUCCESS:
  447.         {
  448.             sbTXIQ->Panels->Items[0]->Text = (AnsiString)"  Burst TX successful";
  449.         }
  450.         break;
  451.         case METAAPP_FAIL:
  452.         {
  453.             sbTXIQ->Panels->Items[0]->Text = (AnsiString)"  Burst TX fail";
  454.             Application->MessageBox( "Execution Failure : Burst TX", "FAILURE", MB_OK );
  455.             frmRFTool->Force_RF_Stop();
  456.             CurrentPageReset();
  457.         }
  458.         break;
  459.         case METAAPP_TIMEOUT:
  460.         {
  461.             sbTXIQ->Panels->Items[0]->Text = (AnsiString)"  Burst TX timeout";
  462.             Application->MessageBox( "Execution Timout : Burst TX", "TIMEOUT", MB_OK );
  463.             frmRFTool->Force_RF_Stop();
  464.             CurrentPageReset();
  465.         }
  466.         break;
  467.         case METAAPP_STOP:
  468.         {
  469.             sbTXIQ->Panels->Items[0]->Text = (AnsiString)"  Burst TX stop";
  470.         }
  471.         break;
  472.     }
  473. }
  474. //==============================================================================
  475. void __fastcall TfrmTXIQBBTXRunTimeSetting::edtArfcnCheck(TObject *Sender)
  476. {
  477.     short sdata;
  478.     AnsiString  text;
  479.     TEdit *edit = (TEdit*)Sender;
  480.     char hint[][256] =
  481.     {
  482.         " value shall be 0~124 or 975~1023 ",
  483.         " value shall be 512~885 ",
  484.         " value shall be 512~810 ",
  485.         " value shall be 128~251 ",
  486.     };
  487.     text = edit->Text;
  488.     if (!IsValidARFCN(text, m_eCurBand, sdata))
  489.     {
  490.         edit->Text = IntToStr(Default_ARFCN[m_eCurBand]);
  491.         ShowHintLabel(edit, hint[m_eCurBand]);
  492.         edit->SetFocus();
  493.         return;
  494.     }
  495. }
  496. //---------------------------------------------------------------------------
  497. void __fastcall TfrmTXIQBBTXRunTimeSetting::edtPclCheck(TObject *Sender)
  498. {
  499.     int  i;
  500.     int  data;
  501.     AnsiString  text;
  502.     TEdit *edit = (TEdit*)Sender;
  503.     char  hint[][256] =
  504.     {   " value shall be 4~31 ",
  505.        " value shall be 0~28 ",
  506.        " value shall be 0~15 ",
  507.     };
  508.     text = edit->Text;
  509.     if( !IsValidPCL( text, m_eCurBand, data ) )
  510.     {  ShowHintLabel( edit, hint[m_eCurBand] );
  511.        edit->Text = IntToStr( Default_PCL );
  512.        edit->SetFocus();
  513.        return;
  514.     }
  515. }
  516. //---------------------------------------------------------------------------
  517. void __fastcall TfrmTXIQBBTXRunTimeSetting::edtAfcDacCheck(TObject *Sender)
  518. {
  519.     short  sdata;
  520.     AnsiString  text;
  521.     TEdit *edit = (TEdit*)Sender;
  522.     char  hint[] = " value shall be 0~8191 ";
  523.     text = edit->Text;
  524.     if (!IsValidAFC(text, sdata))
  525.     {
  526.         ShowHintLabel(edit, hint);
  527.         edit->Text = IntToStr(Default_AFC);
  528.         edit->SetFocus();
  529.         return;
  530.     }
  531. }
  532. //---------------------------------------------------------------------------
  533. void  TfrmTXIQBBTXRunTimeSetting::ShowHintLabel( TControl *sender, char* hint )
  534. {
  535.     TPoint pt0 = this->ClientOrigin;
  536.     TPoint pt1 = sender->ClientOrigin;
  537.     lblHint->Left = (pt1.x-pt0.x);
  538.     lblHint->Top  = (pt1.y-pt0.y)+sender->Height+3;
  539.     lblHint->Caption = hint;
  540.     lblHint->Visible = true;
  541.     HintTimer->Enabled = true;
  542. }
  543. //--------------------------------------------------------------------------
  544. void __fastcall TfrmTXIQBBTXRunTimeSetting::HintTimerTimer(TObject *Sender)
  545. {
  546.     HintTimer->Enabled = false;
  547.     lblHint->Visible = false;
  548. }
  549. //---------------------------------------------------------------------------
  550. void __fastcall TfrmTXIQBBTXRunTimeSetting::cbxTXBandChange(
  551.       TObject *Sender)
  552. {
  553.     TEdit *edit;
  554.     short sdata;
  555.     if (!frmMainSel->cbGSM850->Checked)
  556.     {
  557.         if( BANDSEL_GSM850 == (E_BANDSEL) ((TComboBox*)Sender)->ItemIndex)
  558.         {
  559.             ((TComboBox*)Sender)->ItemIndex = 0;
  560.             Application->MessageBox( "Please check GSM 850 on main menu", "FAILURE", MB_OK );
  561.         }
  562.     }
  563.     m_eCurBand = (E_BANDSEL) ((TComboBox*)Sender)->ItemIndex;
  564.     edit = edtTXArfcn;
  565.     edtArfcnCheck( edit );
  566.     if (!IsValidARFCN(edit->Text, m_eCurBand, sdata))
  567.     {
  568.         edit->Text = IntToStr(Default_ARFCN[m_eCurBand]);
  569.     }
  570. }
  571. //---------------------------------------------------------------------------
  572. void __fastcall TfrmTXIQBBTXRunTimeSetting::edtBBTXCommonModeVoltageCheck(
  573.       TObject *Sender)
  574. {
  575.     signed char  data;
  576.     AnsiString  text;
  577.     TEdit *edit = (TEdit*)Sender;
  578.     char  hint[256] =
  579.     {   " value shall be -4 ~ 3 "
  580.     };
  581.     text = edit->Text;
  582.     if( !IsValidBBTXCommonModeVoltage( text, data ) )
  583.     {
  584.         edit->Text = IntToStr( Default_BBTXCommonModeVoltage );
  585.         ShowHintLabel( edit, hint );
  586.         edit->SetFocus();
  587.         return;
  588.     }
  589. }
  590. //---------------------------------------------------------------------------
  591. void __fastcall TfrmTXIQBBTXRunTimeSetting::edtBBTXGainCheck(
  592.       TObject *Sender)
  593. {
  594.     signed char  data;
  595.     AnsiString  text;
  596.     TEdit *edit = (TEdit*)Sender;
  597.     char  hint[256] =
  598.     {   " value shall be -4 ~ 3 "
  599.     };
  600.     text = edit->Text;
  601.     if( !IsValidBBTXGain( text, data ) )
  602.     {
  603.         edit->Text = IntToStr( Default_BBTXGain );
  604.         ShowHintLabel( edit, hint );
  605.         edit->SetFocus();
  606.         return;
  607.     }
  608. }
  609. //---------------------------------------------------------------------------
  610. void __fastcall TfrmTXIQBBTXRunTimeSetting::edtTXBBTXCalrcselCheck(
  611.       TObject *Sender)
  612. {
  613.     signed char  data;
  614.     AnsiString  text;
  615.     TEdit *edit = (TEdit*)Sender;
  616.     char  hint[256] =
  617.     {   " value shall be -4 ~ 3 "
  618.     };
  619.     text = edit->Text;
  620.     if( !IsValidBBTXCalrcsel( text, data ) )
  621.     {
  622.         edit->Text = IntToStr( Default_BBTXCalrcsel );
  623.         ShowHintLabel( edit, hint );
  624.         edit->SetFocus();
  625.         return;
  626.     }
  627. }
  628. //---------------------------------------------------------------------------
  629. void __fastcall TfrmTXIQBBTXRunTimeSetting::edtAPCBatLowVoltageCheck(
  630.       TObject *Sender)
  631. {
  632.     double d_data;
  633.     AnsiString  text;
  634.     TEdit *edit = (TEdit*)Sender;
  635.     char  hint[256] =
  636.     {   " value shall be 0 ~ 10 "
  637.     };
  638.     text = edit->Text;
  639.     if( !IsValidAPCBatLowVoltage( text, d_data ) )
  640.     {
  641.         edit->Text = IntToStr( Default_APCBatLowVoltage );
  642.         ShowHintLabel( edit, hint );
  643.         edit->SetFocus();
  644.         return;
  645.     }
  646. }
  647. //---------------------------------------------------------------------------
  648. void __fastcall TfrmTXIQBBTXRunTimeSetting::edtAPCBatHighVoltageCheck(
  649.       TObject *Sender)
  650. {
  651.     double d_data;
  652.     AnsiString  text;
  653.     TEdit *edit = (TEdit*)Sender;
  654.     char  hint[256] =
  655.     {   " value shall be 0 ~ 10 "
  656.     };
  657.     text = edit->Text;
  658.     if( !IsValidAPCBatHighVoltage( text, d_data ) )
  659.     {
  660.         edit->Text = IntToStr( Default_APCBatHighVoltage );
  661.         ShowHintLabel( edit, hint );
  662.         edit->SetFocus();
  663.         return;
  664.     }
  665. }
  666. //---------------------------------------------------------------------------
  667. void __fastcall TfrmTXIQBBTXRunTimeSetting::edtAPCBatLowTemperatureCheck(
  668.       TObject *Sender)
  669. {
  670.     double d_data;
  671.     AnsiString  text;
  672.     TEdit *edit = (TEdit*)Sender;
  673.     char  hint[256] =
  674.     {   " value shall be -50 ~ 100 "
  675.     };
  676.     text = edit->Text;
  677.     if( !IsValidAPCBatLowTemperature( text, d_data ) )
  678.     {
  679.         edit->Text = IntToStr( Default_APCBatLowTemperature );
  680.         ShowHintLabel( edit, hint );
  681.         edit->SetFocus();
  682.         return;
  683.     }
  684. }
  685. //---------------------------------------------------------------------------
  686. void __fastcall TfrmTXIQBBTXRunTimeSetting::edtAPCBatHighTemperatureCheck(
  687.       TObject *Sender)
  688. {
  689.     double d_data;
  690.     AnsiString  text;
  691.     TEdit *edit = (TEdit*)Sender;
  692.     char  hint[256] =
  693.     {   " value shall be -50 ~ 100 "
  694.     };
  695.     text = edit->Text;
  696.     if( !IsValidAPCBatHighTemperature( text, d_data ) )
  697.     {
  698.         edit->Text = IntToStr( Default_APCBatHighTemperature );
  699.         ShowHintLabel( edit, hint );
  700.         edit->SetFocus();
  701.         return;
  702.     }
  703. }
  704. //---------------------------------------------------------------------------
  705. void __fastcall TfrmTXIQBBTXRunTimeSetting::edtTrimIQCheck(TObject *Sender)
  706. {
  707.     signed char  data;
  708.     AnsiString  text;
  709.     TEdit *edit = (TEdit*)Sender;
  710.     char  hint[] = " value shall be -8~7 ";
  711.     text = edit->Text;
  712.     if( !IsValidTrimIQ( text, data ) )
  713.     {
  714.         ShowHintLabel( edit, hint );
  715.         edit->Text = Default_TrimIQ;
  716.         edit->SetFocus();
  717.         return;
  718.     }
  719. }
  720. //---------------------------------------------------------------------------
  721. void __fastcall TfrmTXIQBBTXRunTimeSetting::edtOffsetIQCheck(
  722.       TObject *Sender)
  723. {
  724.     signed char  data;
  725.     AnsiString  text;
  726.     TEdit *edit = (TEdit*)Sender;
  727.     char  hint[2][128] = {" value shall be -32~31 ", " value shall be -64~63 "};
  728.     text = edit->Text;
  729.     if (!IsValidOffsetIQ(m_eBbTxCfgVer, text, data))
  730.     {
  731.         if (m_eBbTxCfgVer < BBTXCFG_VER4)
  732.         {
  733.             ShowHintLabel(edit, hint[0]);
  734.         }
  735.         else
  736.         {
  737.             ShowHintLabel(edit, hint[1]);
  738.         }
  739.         edit->Text = Default_OffsetIQ;
  740.         edit->SetFocus();
  741.         return;
  742.     }
  743. }
  744. //---------------------------------------------------------------------------
  745. void __fastcall TfrmTXIQBBTXRunTimeSetting::edtBBTXCalbiasCheck(
  746.       TObject *Sender)
  747. {
  748.     signed char  data;
  749.     AnsiString  text;
  750.     TEdit *edit = (TEdit*)Sender;
  751.     char  hint[2][256] = {" value shall be -16~15 ", " value shall be -8~7 "};
  752.     text = edit->Text;
  753.     if( !IsValidTxCalbias(m_eBbTxCfgVer, text, data))
  754.     {
  755.         if (BBTXCFG_VER2 == m_eBbTxCfgVer)
  756.         {
  757.             ShowHintLabel(edit, hint[0]);
  758.         }
  759.         else
  760.         {
  761.             ShowHintLabel(edit, hint[1]);
  762.         }
  763.         edit->Text = Default_TxCalbias;
  764.         edit->SetFocus();
  765.         return;
  766.     }       
  767. }
  768. //---------------------------------------------------------------------------
  769. void __fastcall TfrmTXIQBBTXRunTimeSetting::edtBBTXIQSwapCheck(
  770.       TObject *Sender)
  771. {
  772.     char  data;
  773.     AnsiString  text;
  774.     TEdit *edit = (TEdit*)Sender;
  775.     char  hint[] = " value shall be 0~1 ";
  776.     text = edit->Text;
  777.     if( !IsValidTxIQSwap( text, data ) )
  778.     {
  779.         ShowHintLabel( edit, hint );
  780.         edit->Text = Default_TxIQSwap;
  781.         edit->SetFocus();
  782.         return;
  783.     }       
  784. }
  785. //---------------------------------------------------------------------------
  786. void __fastcall TfrmTXIQBBTXRunTimeSetting::btnLoadFromRegClick(
  787.       TObject *Sender)
  788. {
  789.     CurrentPageLock();
  790.     m_pcRF_TXIQRUN_Obj->ConfirmCallback = ::ConfirmCallback_GetBBTxCfg;
  791.     m_pcRF_TXIQRUN_Obj->REQ_GetBBTxCfg_Start(m_eBbTxCfgVer);
  792. }
  793. //---------------------------------------------------------------------------
  794. void  TfrmTXIQBBTXRunTimeSetting::ConfirmCallback_GetBBTxCfg( void )
  795. {
  796.     E_METAAPP_RESULT_T state = m_pcRF_TXIQRUN_Obj->Get_ConfirmState();
  797.     switch (state)
  798.     {
  799.         case METAAPP_SUCCESS:
  800.         {
  801.             RfBBTXCfg4* p_bbtxcfg = m_pcRF_TXIQRUN_Obj->Get_BbTxCfg();
  802.             m_sBbTxCfg = *p_bbtxcfg;
  803.             ReDrawFields();
  804.             sbTXIQ->Panels->Items[0]->Text = (AnsiString)"  Get BB TX run time setting successfully";
  805.         }
  806.         break;
  807.         case METAAPP_FAIL:
  808.         {
  809.             sbTXIQ->Panels->Items[0]->Text = (AnsiString)"  Get BB TX run time setting fail";
  810.             Application->MessageBox( "Execution Failure : Get BB TX run time setting", "FAILURE", MB_OK );
  811.             frmRFTool->Force_RF_Stop();
  812.             CurrentPageReset();
  813.         }
  814.         break;
  815.         case METAAPP_TIMEOUT:
  816.         {
  817.             sbTXIQ->Panels->Items[0]->Text = (AnsiString)"  Get BB TX run time setting timeout";
  818.             Application->MessageBox( "Execution Timeout : Get BB TX run time setting", "TIMEOUT", MB_OK );
  819.             frmRFTool->Force_RF_Stop();
  820.             CurrentPageReset();
  821.         }
  822.         break;
  823.         case METAAPP_STOP:
  824.         {
  825.             sbTXIQ->Panels->Items[0]->Text = (AnsiString)"  Get BB TX run time setting stop";
  826.         }
  827.         break;
  828.     }    
  829.     CurrentPageReset();
  830. }
  831. //---------------------------------------------------------------------------
  832. void __fastcall TfrmTXIQBBTXRunTimeSetting::btnLoadFromFileClick(
  833.       TObject *Sender)
  834. {
  835.     char str[512];
  836.     bool ok;
  837.     float  fdata;
  838.     ok = OpenDialog->Execute();
  839.     if (!ok)
  840.     {
  841.         sbTXIQ->Panels->Items[0]->Text = (AnsiString) "  Load BB TX run time setting from file fail";
  842.         Application->MessageBox("Execution Failure : Load BB TX run time setting from file", "FAILURE", MB_OK);
  843.         return;
  844.     }
  845.    strcpy(str, OpenDialog->FileName.c_str());
  846.    ok = m_pcRF_TXIQRUN_Obj->REQ_Read_From_File(str, m_eBbTxCfgVer);
  847.    if (ok)
  848.    {
  849.        RfBBTXCfg4* p_bbtxcfg = m_pcRF_TXIQRUN_Obj->Get_BbTxCfg();
  850.        m_sBbTxCfg = *p_bbtxcfg;
  851.        ReDrawFields();
  852.        sbTXIQ->Panels->Items[0]->Text = (AnsiString) "  Load BB TX run time setting from file successfully";
  853.    }
  854.    else
  855.    {
  856.        sbTXIQ->Panels->Items[0]->Text = (AnsiString) "  Load BB TX run time setting from file fail";
  857.        Application->MessageBox("Execution Failure : Load BB TX run time setting from file", "FAILURE", MB_OK);
  858.    }
  859. }
  860. //---------------------------------------------------------------------------
  861. void __fastcall TfrmTXIQBBTXRunTimeSetting::btnSaveToFileClick(
  862.       TObject *Sender)
  863. {
  864.     char str[512];
  865.     bool ok;
  866.     if (!CheckBbTxCfgFields())
  867.     {
  868.         return;
  869.     }
  870.     ok = SaveDialog->Execute();
  871.     if( !ok )
  872.     {
  873.         sbTXIQ->Panels->Items[0]->Text = (AnsiString) "  Save BB TX run time setting to file fail";
  874.         Application->MessageBox( "Execution Failure : Save BB TX run time setting to file", "FAILURE", MB_OK );
  875.         return;
  876.     }
  877.     strcpy(str, SaveDialog->FileName.c_str());
  878.     m_pcRF_TXIQRUN_Obj->Set_BbTxCfg(m_sBbTxCfg);
  879.     ok = m_pcRF_TXIQRUN_Obj->REQ_Write_To_File(str, m_eBbTxCfgVer);
  880.     if (!ok)
  881.     {
  882.         sbTXIQ->Panels->Items[0]->Text = (AnsiString) "  Save BB TX run time setting to file fail";
  883.         Application->MessageBox( "Execution Failure : Save BB TX run time setting to file", "FAILURE", MB_OK );
  884.     }
  885.     else
  886.     {
  887.         sbTXIQ->Panels->Items[0]->Text = (AnsiString) "  Save BB TX run time setting to file successfully";
  888.     }
  889. }
  890. //---------------------------------------------------------------------------
  891. void __fastcall TfrmTXIQBBTXRunTimeSetting::btnTXStopClick(TObject *Sender)
  892. {
  893.     if( btnTXStart->Tag==1 )
  894.     {
  895.         sbTXIQ->Panels->Items[0]->Text = (AnsiString)"  Burst TX stop";
  896.        //m_pcRF_TXIQRUN_Obj->REQ_Stop();
  897.         //m_cRF_MSTXRUN_Obj.REQ_Stop();
  898.         frmRFTool->Force_RF_Stop();
  899.         CurrentPageReset();
  900.         return;
  901.     }
  902. }
  903. //---------------------------------------------------------------------------
  904. void __fastcall TfrmTXIQBBTXRunTimeSetting::cbTXModulationChange(
  905.       TObject *Sender)
  906. {
  907.     if( cbTXModulation->ItemIndex == MOD_GMSK_INDEX )
  908.     {
  909.         Display_TxGmskUi();
  910.     }
  911.     else
  912.     {
  913.         Display_TxEpskUi();
  914.     }    
  915. }
  916. //---------------------------------------------------------------------------
  917. void  TfrmTXIQBBTXRunTimeSetting::Display_TxGmskUi( void )
  918. {
  919.     lblTXCS->Visible = false;
  920.     cbTXCS->Visible = false;
  921.     lblTXTA->Visible = false;
  922.     edtTXTA->Visible = false;
  923.     Display_TXGmskBurstType();
  924.     
  925.     m_sFinalMSCAP = frmMainSel->Get_FinalMSCap( );
  926.     Display_TxCS( m_sFinalMSCAP.capability, GMSK );
  927. }
  928. //---------------------------------------------------------------------------
  929. void  TfrmTXIQBBTXRunTimeSetting::Display_TxEpskUi( void )
  930. {
  931.     lblTXCS->Visible = true;
  932.     cbTXCS->Visible = true;
  933.     lblTXTA->Visible = true;
  934.     edtTXTA->Visible = true;
  935.     Display_TXEpskBurstType();
  936.     
  937.     m_sFinalMSCAP = frmMainSel->Get_FinalMSCap( );
  938.     Display_TxCS( m_sFinalMSCAP.capability, EPSK );
  939. }
  940. //--------------------------------------------------------------------------
  941. void TfrmTXIQBBTXRunTimeSetting::Display_TxCS( RfMsCapabilityBits capability, E_MODULATION modulation )
  942. {
  943.     AnsiString CS_GPRS[] =
  944.     {
  945.         "CS1",
  946.         "CS2",
  947.         "CS3",
  948.         "CS4",
  949.         "PRACH8",
  950.         "PRACH11"
  951.     };
  952.     AnsiString CS_EGPRS_GMSK[] =
  953.     {
  954.         "CS1",
  955.         "CS2",
  956.         "CS3",
  957.         "CS4",
  958.         "PRACH8",
  959.         "PRACH11",
  960.         "MCS1",
  961. "MCS2",
  962. "MCS3",
  963. "MCS4"
  964.     };
  965.     AnsiString CS_EGPRS_EPSK[] =
  966.     {
  967.         "MCS5",
  968. "MCS6",
  969. "MCS7",
  970. "MCS8",
  971. "MCS9"
  972.     };
  973.     int i;
  974.     cbTXCS->Clear();
  975.     if( GMSK == modulation )
  976.     {
  977.         if( capability.EDGE_RX || capability.EDGE_8PSK_TX )
  978.         {
  979.             for( i=0; i<sizeof(CS_EGPRS_GMSK)/sizeof(AnsiString); i++ )
  980.             {
  981.                 cbTXCS->Items->Add(CS_EGPRS_GMSK[i]);
  982.             }
  983.         }
  984.         else if( capability.GPRS )
  985.         {
  986.             for( i=0; i<sizeof(CS_GPRS)/sizeof(AnsiString); i++ )
  987.             {
  988.                 cbTXCS->Items->Add(CS_GPRS[i]);
  989.             }
  990.         }
  991.     }
  992.     else // EPSK
  993.     {
  994.         if( capability.EDGE_8PSK_TX )
  995.         {
  996.             for( i=0; i<sizeof(CS_EGPRS_EPSK)/sizeof(AnsiString); i++ )
  997.             {
  998.                 cbTXCS->Items->Add(CS_EGPRS_EPSK[i]);
  999.             }
  1000.         }
  1001.     }
  1002.     cbTXCS->ItemIndex = 0;
  1003. }
  1004. //--------------------------------------------------------------------------
  1005. void TfrmTXIQBBTXRunTimeSetting::Display_TXGmskBurstType( void )
  1006. {
  1007.     int i;
  1008.     AnsiString BT_GMSK[] =
  1009.     {
  1010.             "NB (TSC)",
  1011.             "AB",
  1012.             "All 1"
  1013.     };
  1014.     cbTXBurstType->Items->Clear();
  1015.     for( i=0; i<sizeof(BT_GMSK)/sizeof(BT_GMSK[0]); i++)
  1016.     {
  1017.             cbTXBurstType->Items->Add(BT_GMSK[i]);
  1018.     }
  1019.     cbTXBurstType->ItemIndex = 0;
  1020. }
  1021. //--------------------------------------------------------------------------
  1022. void TfrmTXIQBBTXRunTimeSetting::Display_TXEpskBurstType( void )
  1023. {
  1024.     if( m_sFinalMSCAP.capability.EDGE_8PSK_TX )
  1025.     {
  1026.         AnsiString BT_EPSK[] =
  1027.         {
  1028.             "NB (TSC)",
  1029.             "All 0",
  1030.             "All 1",
  1031.             "Pattern",
  1032.             "Fixed (TSC)",
  1033.             "Fixed All 0 (TSC)",
  1034.             "Fixed Alter Bits (TSC)"
  1035.         };
  1036.         cbTXBurstType->Items->Clear();
  1037.         for(int i=0; i<sizeof(BT_EPSK)/sizeof(BT_EPSK[0]); i++)
  1038.         {
  1039.             cbTXBurstType->Items->Add(BT_EPSK[i]);
  1040.         }
  1041.         cbTXBurstType->ItemIndex = 0;
  1042.         lblTXBurstType->Visible = true;
  1043.         cbTXBurstType->Visible = true;
  1044.     }
  1045.     else
  1046.     {
  1047.         lblTXBurstType->Visible = false;
  1048.         cbTXBurstType->Visible = false;
  1049.     }
  1050. }
  1051. //--------------------------------------------------------------------------
  1052. APCTxPattern TfrmTXIQBBTXRunTimeSetting::Get_EpskBurstType(void)
  1053. {
  1054.     APCTxPattern e_bt;
  1055.     if (cbTXBurstType->Text.AnsiCompareIC("All 0") == 0)
  1056.     {
  1057.         e_bt = NB_TX_ALL_ZEROS_WITHOUT_TSC;
  1058.     }
  1059.     else if (cbTXBurstType->Text.AnsiCompareIC("All 1") == 0)
  1060.     {
  1061.         e_bt = NB_TX_ALL_ONES_WITHOUT_TSC;
  1062.     }
  1063.     else if (cbTXBurstType->Text.AnsiCompareIC("Pattern") == 0)
  1064.     {
  1065.         e_bt = NB_TX_PATTERN_WITHOUT_TSC;
  1066.     }
  1067.     else if (cbTXBurstType->Text.AnsiCompareIC("Fixed (TSC)") == 0)
  1068.     {
  1069.         e_bt = NB_TX_FIXED_RANDOM_WITH_TSC;
  1070.     }
  1071.     else if (cbTXBurstType->Text.AnsiCompareIC("Fixed All 0 (TSC)") == 0)
  1072.     {
  1073.         e_bt = NB_TX_FIXED_ALL_ZEROS_WITH_TSC;
  1074.     }
  1075.     else if (cbTXBurstType->Text.AnsiCompareIC("Fixed Alter Bits (TSC)") == 0)
  1076.     {
  1077.         e_bt = NB_TX_FIXED_ALTER_BITS_WITH_TSC;
  1078.     }
  1079.     else
  1080.     {
  1081.         e_bt = NB_TX_RANDOM_WITH_TSC;
  1082.     }
  1083.     return e_bt;
  1084. }
  1085. //--------------------------------------------------------------------------
  1086. APCTxPattern TfrmTXIQBBTXRunTimeSetting::Get_GmskBurstType(void)
  1087. {
  1088.     APCTxPattern e_bt;
  1089.     if (cbTXBurstType->Text.AnsiCompareIC("AB") == 0)
  1090.     {
  1091.         e_bt = AB_TX_RANDOM_WITH_SYNC_SEQ;
  1092.     }
  1093.     else if (cbTXBurstType->Text.AnsiCompareIC("All 1") == 0)
  1094.     {
  1095.         e_bt = NB_TX_ALL_ONES_WITHOUT_TSC;
  1096.     }
  1097.     else
  1098.     {
  1099.         e_bt = NB_TX_RANDOM_WITH_TSC;
  1100.     }
  1101.     return e_bt;
  1102. }
  1103. //--------------------------------------------------------------------------
  1104. void __fastcall TfrmTXIQBBTXRunTimeSetting::edtPatternCheck(
  1105.       TObject *Sender)
  1106. {
  1107.     int  i;
  1108.     unsigned short  data;
  1109.     AnsiString  text;
  1110.     TEdit *edit = (TEdit*)Sender;
  1111.     char  hint[256] =
  1112.     {   " binary format and length<=16 "
  1113.     };
  1114.     text = edit->Text;
  1115.     if( !IsValidMultiSlotTxPattern( text, data ) )
  1116.     {   ShowHintLabel( edit, hint);
  1117.         edit->SetFocus();
  1118.         return;
  1119.     }
  1120. }
  1121. //---------------------------------------------------------------------------
  1122. void __fastcall TfrmTXIQBBTXRunTimeSetting::cbTXBurstTypeChange(
  1123.       TObject *Sender)
  1124. {
  1125.     if( cbTXBurstType->Text.AnsiCompareIC("Pattern") == 0 )
  1126.     {
  1127.         lblTXPattern->Visible = true;
  1128.         edtTXPattern->Visible = true;
  1129.     }
  1130.     else
  1131.     {
  1132.         lblTXPattern->Visible = false;
  1133.         edtTXPattern->Visible = false;
  1134.     }    
  1135. }
  1136. //---------------------------------------------------------------------------
  1137. void __fastcall TfrmTXIQBBTXRunTimeSetting::FormCreate(TObject *Sender)
  1138. {
  1139.     WindowProc = SubClassWndProc;
  1140.     m_bInit = true;
  1141. }
  1142. //---------------------------------------------------------------------------
  1143. void __fastcall TfrmTXIQBBTXRunTimeSetting::edtTACheck(TObject *Sender)
  1144. {
  1145.     int  data;
  1146.     AnsiString  text;
  1147.     TEdit *edit = (TEdit*)Sender;
  1148.     char  hint[] = " value shall be 0~63 ";
  1149.     text = edit->Text;
  1150.     if( !IsValidTA( text, data ) )
  1151.     {
  1152.         ShowHintLabel( edit, hint );
  1153.         edit->Text = Default_TA;
  1154.         edit->SetFocus();
  1155.         return;
  1156.     }
  1157. }
  1158. //---------------------------------------------------------------------------
  1159. void __fastcall TfrmTXIQBBTXRunTimeSetting::edtTXBBTXPhaseselCheck(
  1160.       TObject *Sender)
  1161. {
  1162.     signed char  data;
  1163.     AnsiString  text;
  1164.     TEdit *edit = (TEdit*)Sender;
  1165.     char  hint[2][256] =
  1166.     {
  1167.         " value shall be -3 ~ 3 ",
  1168.         " value shall be -5 ~ 5 "
  1169.     };
  1170.     text = edit->Text;
  1171.     if (!IsValidBBTXPhasesel(m_eBbTxCfgVer, text, data))
  1172.     {
  1173.         if (m_eBbTxCfgVer <= BBTXCFG_VER4)
  1174.         {
  1175.             ShowHintLabel(edit, hint[0]);
  1176.         }
  1177.         else
  1178.         {
  1179.             ShowHintLabel(edit, hint[1]);
  1180.         }
  1181.         edit->SetFocus();
  1182.         return;
  1183.     }  
  1184. }
  1185. //============================================================================
  1186. /////////////////////////// export information  //////////////////////////////
  1187. //============================================================================
  1188. void TfrmTXIQBBTXRunTimeSetting::Set_RF_TX_Obj(CRFTX* rf_tx_obj)
  1189. {   m_pcRF_TX_Obj = rf_tx_obj;
  1190. }
  1191. //----------------------------------------------------------------------------
  1192. void TfrmTXIQBBTXRunTimeSetting::Set_RF_TXIQRUN_Obj(CRFTXIQRUN* rf_txiqrun_obj)
  1193. {
  1194.     m_pcRF_TXIQRUN_Obj = rf_txiqrun_obj;
  1195. }
  1196. //----------------------------------------------------------------------------
  1197. void TfrmTXIQBBTXRunTimeSetting::Set_RF_MULTI_SLOT_TX_Obj(CRFMULTISLOTTX    *rf_multi_slot_tx_obj)
  1198. {
  1199.     m_pcRF_MULTI_SLOT_TX_Obj = rf_multi_slot_tx_obj;
  1200. }
  1201. //----------------------------------------------------------------------------
  1202. void TfrmTXIQBBTXRunTimeSetting::Set_RF_STOP_Obj(CRFSTOP* rf_stop_obj)
  1203. {   m_pcRF_STOP_Obj = rf_stop_obj;
  1204. }