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

MTK

开发平台:

C++ Builder

  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. // form
  5. #include "form_EpskInterSlotRampSetting.h"
  6. #include "form_main.h"
  7. #ifndef  _MISC_H_
  8. #include "misc.h"
  9. #endif
  10. #ifndef _FORM_RFTOOL_H_
  11. #include "form_rftool.h"
  12. #endif
  13. #include "man_fdm.h"
  14. //---------------------------------------------------------------------------
  15. #pragma package(smart_init)
  16. #pragma resource "*.dfm"
  17. #define IDX_GG   0
  18. #define IDX_GE   1
  19. #define IDX_EG   2
  20. #define IDX_EE   3
  21. TfrmEpskInterSlotRampSetting *frmEpskInterSlotRampSetting;
  22. //=============================================================================
  23. static void  CNF_WriteToNVRAM( void )
  24. {   frmEpskInterSlotRampSetting->DownloadToFlashDone();
  25. }
  26. //---------------------------------------------------------------------------
  27. static void  CNF_ReadFromNVRAM( void )
  28. {   frmEpskInterSlotRampSetting->UploadFromFlashDone();
  29. }
  30. //---------------------------------------------------------------------------
  31. static void  ConfirmCallback_MultiSlotTX( void )
  32. {
  33.     frmEpskInterSlotRampSetting->ConfirmCallback_MultiSlotTX();
  34. }
  35. //---------------------------------------------------------------------------
  36. __fastcall TfrmEpskInterSlotRampSetting::TfrmEpskInterSlotRampSetting(TComponent* Owner)
  37.         : TForm(Owner)
  38. {
  39.     m_sTestArfcn[BANDSEL_GSM900 ] = 0;
  40.     m_sTestArfcn[BANDSEL_DCS1800] = 512;
  41.     m_sTestArfcn[BANDSEL_PCS1900] = 512;
  42.     m_sTestArfcn[BANDSEL_GSM850 ] = 128;
  43.     m_iLastTabIndex = BANDSEL_GSM900; // GSM 900
  44.     edtInterRamp[IDX_GG][ 0]=edtGGInterRamp00;
  45.     edtInterRamp[IDX_GG][ 1]=edtGGInterRamp01;
  46.     edtInterRamp[IDX_GG][ 2]=edtGGInterRamp02;
  47.     edtInterRamp[IDX_GG][ 3]=edtGGInterRamp03;
  48.     edtInterRamp[IDX_GG][ 4]=edtGGInterRamp04;
  49.     edtInterRamp[IDX_GG][ 5]=edtGGInterRamp05;
  50.     edtInterRamp[IDX_GG][ 6]=edtGGInterRamp06;
  51.     edtInterRamp[IDX_GG][ 7]=edtGGInterRamp07;
  52.     edtInterRamp[IDX_GG][ 8]=edtGGInterRamp08;
  53.     edtInterRamp[IDX_GG][ 9]=edtGGInterRamp09;
  54.     edtInterRamp[IDX_GG][10]=edtGGInterRamp10;
  55.     edtInterRamp[IDX_GG][11]=edtGGInterRamp11;
  56.     edtInterRamp[IDX_GG][12]=edtGGInterRamp12;
  57.     edtInterRamp[IDX_GG][13]=edtGGInterRamp13;
  58.     edtInterRamp[IDX_GG][14]=edtGGInterRamp14;
  59.     edtInterRamp[IDX_GG][15]=edtGGInterRamp15;
  60.     edtInterRamp[IDX_GE][ 0]=edtGEInterRamp00;
  61.     edtInterRamp[IDX_GE][ 1]=edtGEInterRamp01;
  62.     edtInterRamp[IDX_GE][ 2]=edtGEInterRamp02;
  63.     edtInterRamp[IDX_GE][ 3]=edtGEInterRamp03;
  64.     edtInterRamp[IDX_GE][ 4]=edtGEInterRamp04;
  65.     edtInterRamp[IDX_GE][ 5]=edtGEInterRamp05;
  66.     edtInterRamp[IDX_GE][ 6]=edtGEInterRamp06;
  67.     edtInterRamp[IDX_GE][ 7]=edtGEInterRamp07;
  68.     edtInterRamp[IDX_GE][ 8]=edtGEInterRamp08;
  69.     edtInterRamp[IDX_GE][ 9]=edtGEInterRamp09;
  70.     edtInterRamp[IDX_GE][10]=edtGEInterRamp10;
  71.     edtInterRamp[IDX_GE][11]=edtGEInterRamp11;
  72.     edtInterRamp[IDX_GE][12]=edtGEInterRamp12;
  73.     edtInterRamp[IDX_GE][13]=edtGEInterRamp13;
  74.     edtInterRamp[IDX_GE][14]=edtGEInterRamp14;
  75.     edtInterRamp[IDX_GE][15]=edtGEInterRamp15;
  76.     edtInterRamp[IDX_EG][ 0]=edtEGInterRamp00;
  77.     edtInterRamp[IDX_EG][ 1]=edtEGInterRamp01;
  78.     edtInterRamp[IDX_EG][ 2]=edtEGInterRamp02;
  79.     edtInterRamp[IDX_EG][ 3]=edtEGInterRamp03;
  80.     edtInterRamp[IDX_EG][ 4]=edtEGInterRamp04;
  81.     edtInterRamp[IDX_EG][ 5]=edtEGInterRamp05;
  82.     edtInterRamp[IDX_EG][ 6]=edtEGInterRamp06;
  83.     edtInterRamp[IDX_EG][ 7]=edtEGInterRamp07;
  84.     edtInterRamp[IDX_EG][ 8]=edtEGInterRamp08;
  85.     edtInterRamp[IDX_EG][ 9]=edtEGInterRamp09;
  86.     edtInterRamp[IDX_EG][10]=edtEGInterRamp10;
  87.     edtInterRamp[IDX_EG][11]=edtEGInterRamp11;
  88.     edtInterRamp[IDX_EG][12]=edtEGInterRamp12;
  89.     edtInterRamp[IDX_EG][13]=edtEGInterRamp13;
  90.     edtInterRamp[IDX_EG][14]=edtEGInterRamp14;
  91.     edtInterRamp[IDX_EG][15]=edtEGInterRamp15;
  92.     edtInterRamp[IDX_EE][ 0]=edtEEInterRamp00;
  93.     edtInterRamp[IDX_EE][ 1]=edtEEInterRamp01;
  94.     edtInterRamp[IDX_EE][ 2]=edtEEInterRamp02;
  95.     edtInterRamp[IDX_EE][ 3]=edtEEInterRamp03;
  96.     edtInterRamp[IDX_EE][ 4]=edtEEInterRamp04;
  97.     edtInterRamp[IDX_EE][ 5]=edtEEInterRamp05;
  98.     edtInterRamp[IDX_EE][ 6]=edtEEInterRamp06;
  99.     edtInterRamp[IDX_EE][ 7]=edtEEInterRamp07;
  100.     edtInterRamp[IDX_EE][ 8]=edtEEInterRamp08;
  101.     edtInterRamp[IDX_EE][ 9]=edtEEInterRamp09;
  102.     edtInterRamp[IDX_EE][10]=edtEEInterRamp10;
  103.     edtInterRamp[IDX_EE][11]=edtEEInterRamp11;
  104.     edtInterRamp[IDX_EE][12]=edtEEInterRamp12;
  105.     edtInterRamp[IDX_EE][13]=edtEEInterRamp13;
  106.     edtInterRamp[IDX_EE][14]=edtEEInterRamp14;
  107.     edtInterRamp[IDX_EE][15]=edtEEInterRamp15;
  108. }
  109. //===========================================================================
  110. void TfrmEpskInterSlotRampSetting::Init(void)
  111. {
  112.     m_bInit = true;
  113. }
  114. //----------------------------------------------------------------------------
  115. void __fastcall TfrmEpskInterSlotRampSetting::FormCreate(TObject *Sender)
  116. {
  117.     m_iLastTabIndex = tclEpskInterRamp->TabIndex;
  118.     Init();
  119. }
  120. //----------------------------------------------------------------------------
  121. void __fastcall TfrmEpskInterSlotRampSetting::FormActivate(TObject *Sender)
  122. {
  123.     if (m_bInit)
  124.     {
  125.         m_bInit = false;
  126.         m_bMultiSlotTxExSupport = frmRFTool->Get_MultiSlotTxExSupport();
  127.     }
  128. }
  129. //---------------------------------------------------------------------------
  130. //--------------------------------------------------------------------------
  131. void  TfrmEpskInterSlotRampSetting::ReDrawFields( void )
  132. {
  133.     int  i;
  134.     int  section;
  135.     int  band = m_eCurBand;
  136.     for(i=0; i<16; i++)
  137.     {
  138.         for( section=0; section<EPSK_INTER_RAMP_SECTION_NUM; section++ )
  139.         {   edtInterRamp[section][i]->Text = EPSK_Inter_RamTable[band].EPSK_interRampData[section][i];
  140.         }
  141.     }
  142. }
  143. //--------------------------------------------------------------------------
  144. bool TfrmEpskInterSlotRampSetting::CheckFields( void )
  145. {
  146.     int  i;
  147.     unsigned char  ucdata[16];
  148.     int  band = m_eCurBand;
  149.     AnsiString  text;
  150.     for(i=0; i<16; i++)
  151.     {
  152.         text = edtInterRamp[IDX_GG][i]->Text;  if( !IsValidRamp( text, ucdata[i] ) )           {  edtGGInterRampCheck(edtInterRamp[IDX_GG][i]);   return false;   }
  153.         EPSK_Inter_RamTable[band].EPSK_interRampData[IDX_GG][i] = ucdata[i];
  154.         text = edtInterRamp[IDX_GE][i]->Text;  if( !IsValidRamp( text, ucdata[i] ) )           {  edtGGInterRampCheck(edtInterRamp[IDX_GE][i]);   return false;   }
  155.         EPSK_Inter_RamTable[band].EPSK_interRampData[IDX_GE][i] = ucdata[i];
  156.         text = edtInterRamp[IDX_EG][i]->Text;  if( !IsValidRamp( text, ucdata[i] ) )           {  edtGGInterRampCheck(edtInterRamp[IDX_EG][i]);   return false;   }
  157.         EPSK_Inter_RamTable[band].EPSK_interRampData[IDX_EG][i] = ucdata[i];
  158.         text = edtInterRamp[IDX_EE][i]->Text;  if( !IsValidRamp( text, ucdata[i] ) )           {  edtGGInterRampCheck(edtInterRamp[IDX_EE][i]);   return false;   }
  159.         EPSK_Inter_RamTable[band].EPSK_interRampData[IDX_EE][i] = ucdata[i];
  160.     }
  161.     return(true);
  162. }
  163. //---------------------------------------------------------------------------
  164. void  TfrmEpskInterSlotRampSetting::CurrentPageLock( void )
  165. {
  166.     // button
  167.   //  btnTXStart->Kind = bkNo;
  168.    // btnTXStart->Caption = "Stop";
  169.     btnTXStart->Enabled = false;
  170.     btnTXStart->Tag = 1;
  171.     btnGGLeft->Enabled = false;
  172.     btnGGRight->Enabled = false;
  173.     btnGELeft->Enabled = false;
  174.     btnGERight->Enabled = false;
  175.     btnEGLeft->Enabled = false;
  176.     btnEGRight->Enabled = false;
  177.     btnEELeft->Enabled = false;
  178.     btnEERight->Enabled = false;
  179.     btnUploadFromFlash->Enabled = false;
  180.     btnDownloadToFlash->Enabled = false;
  181.     btnChangeDB->Enabled = false;
  182.     btnLoadFromFile->Enabled = false;
  183.     btnSaveToFile->Enabled = false;
  184. }
  185. //----------------------------------------------------------------------------
  186. void  TfrmEpskInterSlotRampSetting::CurrentPageReset( void )
  187. {
  188.     // button
  189.    // btnTXStart->Kind = bkRetry;
  190.    // btnTXStart->Caption = "Start";
  191.     btnTXStart->Enabled = true;
  192.     btnTXStart->Tag = 0;
  193.     btnGGLeft->Enabled = true;
  194.     btnGGRight->Enabled = true;
  195.     btnGELeft->Enabled = true;
  196.     btnGERight->Enabled = true;
  197.     btnEGLeft->Enabled = true;
  198.     btnEGRight->Enabled = true;
  199.     btnEELeft->Enabled = true;
  200.     btnEERight->Enabled = true;
  201.     btnUploadFromFlash->Enabled = true;
  202.     btnDownloadToFlash->Enabled = true;
  203.     btnChangeDB->Enabled = true;
  204.     btnLoadFromFile->Enabled = true;
  205.     btnSaveToFile->Enabled = true;
  206. }
  207. //---------------------------------------------------------------------------
  208. void  TfrmEpskInterSlotRampSetting::ShowHintLabel( TControl *sender, char* hint )
  209. {
  210.     TPoint pt0 = this->ClientOrigin;
  211.     TPoint pt1 = sender->ClientOrigin;
  212.     lblHint->Left = (pt1.x-pt0.x);
  213.     lblHint->Top  = (pt1.y-pt0.y)+sender->Height+3;
  214.     lblHint->Caption = hint;
  215.     lblHint->Visible = true;
  216.     HintTimer->Enabled = true;
  217. }
  218. //---------------------------------------------------------------------------
  219. void __fastcall TfrmEpskInterSlotRampSetting::HintTimerTimer(
  220.       TObject *Sender)
  221. {
  222.     HintTimer->Enabled = false;
  223.     lblHint->Visible = false;
  224. }
  225. //---------------------------------------------------------------------------
  226. void __fastcall TfrmEpskInterSlotRampSetting::btnGGLeftClick(
  227.       TObject *Sender)
  228. {
  229.     int  i;
  230.     for(i=0; i<15; i++)
  231.     {
  232.         EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_GG][i] =
  233.         EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_GG][i+1];
  234.     }
  235.     ReDrawFields();
  236. }
  237. //---------------------------------------------------------------------------
  238. void __fastcall TfrmEpskInterSlotRampSetting::btnGGRightClick(
  239.       TObject *Sender)
  240. {
  241.     int  i;
  242.     for(i=15; i>=1; i--)
  243.     {
  244.         EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_GG][i] =
  245.         EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_GG][i-1];
  246.     }
  247.     ReDrawFields();
  248. }
  249. //---------------------------------------------------------------------------
  250. void __fastcall TfrmEpskInterSlotRampSetting::btnGELeftClick(
  251.       TObject *Sender)
  252. {
  253.     for(int i=0; i<15; i++)
  254.     {
  255.         EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_GE][i] =
  256.         EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_GE][i+1];
  257.     }
  258.     ReDrawFields();
  259. }
  260. //---------------------------------------------------------------------------
  261. void __fastcall TfrmEpskInterSlotRampSetting::btnGERightClick(
  262.       TObject *Sender)
  263. {
  264.     int  i;
  265.     for(i=15; i>=1; i--)
  266.     {
  267.         EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_GE][i] =
  268.         EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_GE][i-1];
  269.     }
  270.     ReDrawFields();
  271. }
  272. //---------------------------------------------------------------------------
  273. void __fastcall TfrmEpskInterSlotRampSetting::btnEGLeftClick(
  274.       TObject *Sender)
  275. {
  276.     for(int i=0; i<15; i++)
  277.     {
  278.         EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_EG][i] =
  279.         EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_EG][i+1];
  280.     }
  281.     ReDrawFields();
  282. }
  283. //---------------------------------------------------------------------------
  284. void __fastcall TfrmEpskInterSlotRampSetting::btnEGRightClick(
  285.       TObject *Sender)
  286. {
  287.     int  i;
  288.     for(i=15; i>=1; i--)
  289.     {
  290.         EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_EG][i] =
  291.         EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_EG][i-1];
  292.     }
  293.     ReDrawFields();
  294. }
  295. //---------------------------------------------------------------------------
  296. void __fastcall TfrmEpskInterSlotRampSetting::btnEELeftClick(
  297.       TObject *Sender)
  298. {
  299.     for(int i=0; i<15; i++)
  300.     {
  301.         EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_EE][i] =
  302.         EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_EE][i+1];
  303.     }
  304.     ReDrawFields();
  305. }
  306. //---------------------------------------------------------------------------
  307. void __fastcall TfrmEpskInterSlotRampSetting::btnEERightClick(
  308.       TObject *Sender)
  309. {
  310.     int  i;
  311.     for(i=15; i>=1; i--)
  312.     {
  313.         EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_EE][i] =
  314.         EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_EE][i-1];
  315.     }
  316.     ReDrawFields();
  317. }
  318. //---------------------------------------------------------------------------
  319. void __fastcall TfrmEpskInterSlotRampSetting::edtGGInterRampCheck(
  320.       TObject *Sender)
  321. {
  322.     unsigned char  ucdata;
  323.     AnsiString  text;
  324.     TEdit *edit = (TEdit*)Sender;
  325.     char  hint[] = " value shall be 0~255 ";
  326.     text = edit->Text;
  327.     if( !IsValidRamp( text, ucdata ) )
  328.     {
  329.         ShowHintLabel( edit, hint );
  330.         edit->SetFocus();
  331.         return;
  332.     }
  333.     EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_GG][edit->Tag] = ucdata;
  334. }
  335. //---------------------------------------------------------------------------
  336. void __fastcall TfrmEpskInterSlotRampSetting::edtGEInterRampCheck(
  337.       TObject *Sender)
  338. {
  339.     unsigned char  ucdata;
  340.     AnsiString  text;
  341.     TEdit *edit = (TEdit*)Sender;
  342.     char  hint[] = " value shall be 0~255 ";
  343.     text = edit->Text;
  344.     if( !IsValidRamp( text, ucdata ) )
  345.     {
  346.         ShowHintLabel( edit, hint );
  347.         edit->SetFocus();
  348.         return;
  349.     }
  350.     EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_GE][edit->Tag] = ucdata;
  351. }
  352. //---------------------------------------------------------------------------
  353. void __fastcall TfrmEpskInterSlotRampSetting::edtEGInterRampCheck(
  354.       TObject *Sender)
  355. {
  356.     unsigned char  ucdata;
  357.     AnsiString  text;
  358.     TEdit *edit = (TEdit*)Sender;
  359.     char  hint[] = " value shall be 0~255 ";
  360.     text = edit->Text;
  361.     if( !IsValidRamp( text, ucdata ) )
  362.     {
  363.         ShowHintLabel( edit, hint );
  364.         edit->SetFocus();
  365.         return;
  366.     }
  367.     EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_EG][edit->Tag] = ucdata;
  368. }
  369. //---------------------------------------------------------------------------
  370. void __fastcall TfrmEpskInterSlotRampSetting::edtEEInterRampCheck(
  371.       TObject *Sender)
  372. {
  373.     unsigned char  ucdata;
  374.     AnsiString  text;
  375.     TEdit *edit = (TEdit*)Sender;
  376.     char  hint[] = " value shall be 0~255 ";
  377.     text = edit->Text;
  378.     if( !IsValidRamp( text, ucdata ) )
  379.     {
  380.         ShowHintLabel( edit, hint );
  381.         edit->SetFocus();
  382.         return;
  383.     }
  384.     EPSK_Inter_RamTable[m_eCurBand].EPSK_interRampData[IDX_EE][edit->Tag] = ucdata;
  385. }
  386. //---------------------------------------------------------------------------
  387. void __fastcall TfrmEpskInterSlotRampSetting::btnUploadFromFlashClick(
  388.       TObject *Sender)
  389. {
  390.     if( ! NVRAMMan->Get_IsInit() )
  391.     {   frmMainSel->mnuFDMDatabaseClick(Sender);
  392.     }
  393.     if( ! NVRAMMan->Get_IsInit() )
  394.     {
  395.         sbISR->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialize fail";
  396.         Application->MessageBox( "Execution Failure : NVRAM database file initialize fail", "FAILURE", MB_OK );
  397.         return;
  398.     }
  399.     m_RF_EPSK_INTER_SLOT_RAMP_Obj.ConfirmCallback = ::CNF_ReadFromNVRAM;
  400.     m_RF_EPSK_INTER_SLOT_RAMP_Obj.REQ_Read_From_NVRAM();
  401.     CurrentPageLock();
  402. }
  403. //---------------------------------------------------------------------------
  404. //---------------------------------------------------------------------------
  405. void  TfrmEpskInterSlotRampSetting::UploadFromFlashDone( void )
  406. {
  407.     E_METAAPP_RESULT_T state = m_RF_EPSK_INTER_SLOT_RAMP_Obj.Get_ConfirmState();
  408.     int band, i;
  409.     if( METAAPP_SUCCESS == state )
  410.     {
  411.         int total_band_num;
  412.         if(frmMainSel->cbGSM850->Checked)
  413.         {   total_band_num = 4;
  414.         }
  415.         else
  416.         {
  417.             total_band_num = 3;
  418.         }
  419.         for(band=0; band<total_band_num; band++)
  420.         {
  421.             EPSK_Inter_RamTable[band] = m_RF_EPSK_INTER_SLOT_RAMP_Obj.Get_InterSlotRamp(band);
  422.         }
  423.         ReDrawFields();
  424.         sbISR->Panels->Items[0]->Text = (AnsiString) "  Upload inter slot ramp profile from flash successfully";
  425.     }
  426.     else  if( METAAPP_FAIL == state )
  427.     {
  428.         sbISR->Panels->Items[0]->Text = (AnsiString) "  Upload inter slot ramp profile from flash fail, please check the version of load and NVRAM database are same.";
  429.         Application->MessageBox( "Execution Failure : Upload APC profile from flash, please check the version of load and NVRAM database are same.", "FAILURE", MB_OK );
  430.     }
  431.     else  if( METAAPP_TIMEOUT == state )
  432.     {
  433.         sbISR->Panels->Items[0]->Text = (AnsiString) "  Upload inter slot ramp profile from flash timeout";
  434.         Application->MessageBox( "Execution Timeout : Upload APC profile from flash", "TIMEOUT", MB_OK );
  435.     }
  436.     else  if(METAAPP_STOP == state )
  437.     {
  438.         sbISR->Panels->Items[0]->Text = (AnsiString) "  Upload inter slot ramp profile from flash stop";
  439.     }
  440.     CurrentPageReset();
  441. }
  442. //---------------------------------------------------------------------------
  443. void __fastcall TfrmEpskInterSlotRampSetting::btnDownloadToFlashClick(
  444.       TObject *Sender)
  445. {
  446.     int  band, i, section;
  447.     int  total_band_num;
  448.     if( !CheckFields() )  return;
  449.     if( ! NVRAMMan->Get_IsInit() )
  450.     {   frmMainSel->mnuFDMDatabaseClick(Sender);
  451.     }
  452.     if( ! NVRAMMan->Get_IsInit() )
  453.     {
  454.         sbISR->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialize fail";
  455.         Application->MessageBox( "Execution Failure : NVRAM database file initialize fail", "FAILURE", MB_OK );
  456.         return;
  457.     }
  458.     if(frmMainSel->cbGSM850->Checked)
  459.     {   total_band_num = 4;
  460.     }
  461.     else
  462.     {
  463.         total_band_num = 3;
  464.     }
  465.     for( band=0; band<total_band_num; band++ )
  466.     {
  467.         m_RF_EPSK_INTER_SLOT_RAMP_Obj.Set_InterSlotRamp(band, EPSK_Inter_RamTable[band]);
  468.     }
  469.     m_RF_EPSK_INTER_SLOT_RAMP_Obj.ConfirmCallback = ::CNF_WriteToNVRAM;
  470.     m_RF_EPSK_INTER_SLOT_RAMP_Obj.REQ_Write_To_NVRAM();
  471.     CurrentPageLock();
  472. }
  473. //---------------------------------------------------------------------------
  474. void  TfrmEpskInterSlotRampSetting::DownloadToFlashDone( void )
  475. {
  476.     E_METAAPP_RESULT_T state = m_RF_EPSK_INTER_SLOT_RAMP_Obj.Get_ConfirmState();
  477.     switch (state)
  478.     {
  479.         case METAAPP_SUCCESS:
  480.         {
  481.             sbISR->Panels->Items[0]->Text = (AnsiString) "  Download inter slot ramp profile to flash successfully";
  482.         }
  483.         break;
  484.         case METAAPP_FAIL:
  485.         {
  486.             sbISR->Panels->Items[0]->Text = (AnsiString) "  Download inter slot ramp profile to flash fail, please check the version of load and NVRAM database are same.";
  487.             Application->MessageBox( "Execution Failure : Download inter slot ramp profile to flash, please check the version of load and NVRAM database are same.", "FAILURE", MB_OK );
  488.         }
  489.         break;
  490.         case METAAPP_TIMEOUT:
  491.         {
  492.             sbISR->Panels->Items[0]->Text = (AnsiString) "  Download inter slot ramp profile to flash timeout";
  493.             Application->MessageBox( "Execution Timeout : Download inter slot ramp profile to flash", "TIMEOUT", MB_OK );
  494.         }
  495.         break;
  496.         case METAAPP_STOP:
  497.         {
  498.             sbISR->Panels->Items[0]->Text = (AnsiString) "  Download inter slot ramp profile to flash stop";
  499.         }
  500.         break;
  501.         case METAAPP_NVRAM_LID_VER_NOT_SUPPORT:
  502.         {
  503.             sbISR->Panels->Items[0]->Text = (AnsiString) "  NVRAM_EF_L1_EPSK_INTERSLOT_RAMP_xxx_LID version is not support, please update META to latest version";
  504.             Application->MessageBox( "Execution Warning : NVRAM_EF_L1_EPSK_INTERSLOT_RAMP_xxx_LID version is not support, please update META to latest version", "WARNING", MB_OK );
  505.         }
  506.         break;
  507.         default:
  508.         {
  509.         }
  510.         break;
  511.     }
  512.     CurrentPageReset();
  513. }
  514. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  515. void __fastcall TfrmEpskInterSlotRampSetting::btnChangeDBClick(
  516.       TObject *Sender)
  517. {
  518.     frmMainSel->mnuFDMDatabaseClick(Sender);
  519.     if( ! NVRAMMan->Get_IsInit() )
  520.     {
  521.         sbISR->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialization fail";
  522.         Application->MessageBox( "Execution Failure : NVRAM database file initialization fail", "FAILURE", MB_OK );
  523.         return;
  524.     }
  525.     sbISR->Panels->Items[0]->Text = (AnsiString) " Change NVRAM database file successfully";
  526. }
  527. //---------------------------------------------------------------------------
  528. void __fastcall TfrmEpskInterSlotRampSetting::btnLoadFromFileClick(
  529.       TObject *Sender)
  530. {
  531.     char str[512];
  532.     bool ok;
  533.     int  band;
  534.     int  total_band_num;
  535.     ok = OpenDialog->Execute();
  536.     if( !ok )
  537.     {
  538.         sbISR->Panels->Items[0]->Text = (AnsiString) "  Load inter slot ramp profile from file fail";
  539.         return;
  540.     }
  541.     strcpy( str, OpenDialog->FileName.c_str() );
  542.     ok = m_RF_EPSK_INTER_SLOT_RAMP_Obj.REQ_Read_From_File( str );
  543.     if( ok )
  544.     {
  545.         if(frmMainSel->cbGSM850->Checked)
  546.         {   total_band_num = 4;
  547.         }
  548.         else
  549.         {
  550.             total_band_num = 3;
  551.         }
  552.         for(band=0; band<total_band_num; band++)
  553.         {   EPSK_Inter_RamTable[band] = m_RF_EPSK_INTER_SLOT_RAMP_Obj.Get_InterSlotRamp(band);
  554.         }
  555.         ReDrawFields();
  556.         sbISR->Panels->Items[0]->Text = (AnsiString) "  Load inter slot ramp profile from file successfully";
  557.     }
  558.     else
  559.     {   Application->MessageBox( "Execution Failure : Load inter slot ramp profile from file", "FAILURE", MB_OK );
  560.         sbISR->Panels->Items[0]->Text = (AnsiString) "  Load inter slot ramp profile from file fail";
  561.     }
  562. }
  563. //---------------------------------------------------------------------------
  564. void __fastcall TfrmEpskInterSlotRampSetting::btnSaveToFileClick(TObject *Sender)
  565. {
  566.     char str[512];
  567.     bool ok;
  568.     int  band, i;
  569.     int  total_band_num;
  570.     ok = CheckFields();
  571.     if(!ok)
  572.     {
  573.         sbISR->Panels->Items[0]->Text = (AnsiString) "  Save inter slot ramp profile to file fail";
  574.         Application->MessageBox( "Execution Failure : Save inter slot ramp profile to file", "FAILURE", MB_OK );
  575.         return;
  576.     }
  577.     ok = SaveDialog->Execute();
  578.     if( !ok )
  579.     {
  580.         sbISR->Panels->Items[0]->Text = (AnsiString) "  Save inter slot ramp profile to file fail";
  581.         return;
  582.     }
  583.     if(frmMainSel->cbGSM850->Checked)
  584.     {   total_band_num = 4;
  585.     }
  586.     else
  587.     {
  588.         total_band_num = 3;
  589.     }
  590.     
  591.     for(band=0; band<total_band_num; band++)
  592.     {
  593.         m_RF_EPSK_INTER_SLOT_RAMP_Obj.Set_InterSlotRamp(band, EPSK_Inter_RamTable[band]);
  594.     }
  595.     strcpy( str, SaveDialog->FileName.c_str() );
  596.     ok = m_RF_EPSK_INTER_SLOT_RAMP_Obj.REQ_Write_To_File( str );
  597.     if( !ok )
  598.     {
  599.         sbISR->Panels->Items[0]->Text = (AnsiString) "  Save inter slot ramp profile to file fail";
  600.         Application->MessageBox( "Execution Failure : Save Inter slot ramp profile to file", "FAILURE", MB_OK );
  601.         return;
  602.     }
  603.     sbISR->Panels->Items[0]->Text = (AnsiString) "  Save inter slot ramp profile to file successfully";
  604. }
  605. //---------------------------------------------------------------------------
  606. void __fastcall TfrmEpskInterSlotRampSetting::btnTXStartClick(
  607.       TObject *Sender)
  608. {
  609.     E_BANDSEL band;
  610.     short arfcn;
  611.     int   pcl[4];
  612.     int   tsc;
  613.     short   s_afc_dac;
  614.     CodingScheme cs[4];
  615.     int   ta;
  616.     APCTxPattern pattern;
  617.     AnsiString  text;
  618.     //bool  isEDGEsupport;
  619.     char TimeSlotMask;
  620.    // APCTxPattern pattern; // Tx pattern is only valid for EPSK function
  621.     unsigned short pattern_data;
  622.     if (btnTXStart->Tag)
  623.     {
  624.         return;
  625.     }
  626.     frmRFTool->Force_RF_Stop();
  627.     TimeSlotMask = 0; // initial value
  628.     if( frmRFTool->cbTimeSlot0->Checked )
  629.     {
  630.         TimeSlotMask = TimeSlotMask | 0x01;
  631.     }
  632.     if( frmRFTool->cbTimeSlot1->Checked )
  633.     {
  634.         TimeSlotMask = TimeSlotMask | 0x02;
  635.     }
  636.     if( frmRFTool->cbTimeSlot2->Checked )
  637.     {
  638.         TimeSlotMask = TimeSlotMask | 0x04;
  639.     }
  640.     if( frmRFTool->cbTimeSlot3->Checked )
  641.     {
  642.         TimeSlotMask = TimeSlotMask | 0x08;
  643.     }
  644.     band = (E_BANDSEL) frmRFTool->cbxMultiSlotTxBand->ItemIndex;
  645.     tsc = frmRFTool->cbxMultiSlotTxTSC->ItemIndex;
  646.     cs[0]  = (CodingScheme) frmRFTool->cbxCSTS0->ItemIndex + 1;
  647.     cs[1]  = (CodingScheme) frmRFTool->cbxCSTS1->ItemIndex + 1;
  648.     cs[2]  = (CodingScheme) frmRFTool->cbxCSTS2->ItemIndex + 1;
  649.     cs[3]  = (CodingScheme) frmRFTool->cbxCSTS3->ItemIndex + 1;
  650.     text = edtTestArfcn->Text;                      if( !IsValidARFCN( text, band, arfcn ) )      {  edtArfcnCheck(edtTestArfcn);                        return;   }
  651.     text = frmRFTool->edtPCLTS0->Text;              if( !IsValidPCL( text, band, pcl[0] ) )       {  pcl[0]=10;                                          return;   }
  652.     text = frmRFTool->edtPCLTS1->Text;              if( !IsValidPCL( text, band, pcl[1] ) )       {  pcl[1]=10;                                          return;   }
  653.     text = frmRFTool->edtPCLTS2->Text;              if( !IsValidPCL( text, band, pcl[2] ) )       {  pcl[2]=10;                                          return;   }
  654.     text = frmRFTool->edtPCLTS3->Text;              if( !IsValidPCL( text, band, pcl[3] ) )       {  pcl[3]=10;                                          return;   }
  655.     text = frmRFTool->edtMultiSlotTxAFC->Text;      if (!IsValidAFC(text, s_afc_dac))            {  s_afc_dac = 4100;                                      return;   }
  656.     text = frmRFTool->edtMultiSlotTxTA->Text;       if( !IsValidTA( text, ta ) )                  {  ta = 0;                                             return;   }
  657.     if( frmRFTool->gbMultiSlotTxBurstType->Visible )
  658.     {
  659.         //isEDGEsupport = true;
  660.         if( frmRFTool->rbMultiSlotTxNBAll0->Checked )           pattern = NB_TX_ALL_ZEROS_WITHOUT_TSC;
  661.         else if( frmRFTool->rbMultiSlotTxNBAll1->Checked )      pattern = NB_TX_ALL_ONES_WITHOUT_TSC;
  662.         else if( frmRFTool->rbMultiSlotTxNB->Checked )          pattern = NB_TX_RANDOM_WITH_TSC;
  663.         else if( frmRFTool->rbMultiSlotTxFixed->Checked )       pattern = NB_TX_FIXED_RANDOM_WITH_TSC;
  664.         else if( frmRFTool->rbMultiSlotTxFixedAll0->Checked )   pattern = NB_TX_FIXED_ALL_ZEROS_WITH_TSC;
  665.         else if( frmRFTool->rbMultiSlotTxFixedAlter->Checked )  pattern = NB_TX_FIXED_ALTER_BITS_WITH_TSC;
  666.         else                                                    pattern = NB_TX_PATTERN_WITHOUT_TSC;
  667.         if( frmRFTool->rbMultiSlotTxPattern->Checked )
  668.         {
  669.              text = frmRFTool->edtMultiSlotTxPattern->Text;       if( !IsValidMultiSlotTxPattern( text, pattern_data ) )                  {  pattern_data = 0101010101010101;            return;   }
  670.         }
  671.     }
  672.    // else
  673.    // {
  674.    //     isEDGEsupport = false;
  675.    // }
  676.     m_eCurBand  = band;
  677.     CurrentPageLock();
  678.     S_MULTI_SLOT_TX_T multi_slot_tx;
  679.     multi_slot_tx.b_MultiSlotTXExSupport = m_bMultiSlotTxExSupport;
  680.     multi_slot_tx.e_bandsel = band;
  681.     multi_slot_tx.req.arfcn = arfcn;
  682.     multi_slot_tx.req.bsic  = tsc;
  683.     multi_slot_tx.req.timeSlotmask = TimeSlotMask;
  684.     for (int i=0; i<4; i++)
  685.     {
  686.         multi_slot_tx.req.powerLev[i] = pcl[i];
  687. multi_slot_tx.req.cs[i]       = cs[i];
  688.     }
  689.     multi_slot_tx.req.ta = ta;
  690.     multi_slot_tx.req.frames = -99;
  691.     multi_slot_tx.req.dacValue = s_afc_dac;
  692.     multi_slot_tx.req.pattern = pattern;
  693.     multi_slot_tx.req.pattern_data = pattern_data;
  694.     m_RF_MULTI_SLOT_TX_Obj.ConfirmCallback   = ::ConfirmCallback_MultiSlotTX;
  695.     m_RF_MULTI_SLOT_TX_Obj.REQ_Start(multi_slot_tx);
  696.     sbISR->Panels->Items[0]->Text = (AnsiString) "  Multi slot TX progressing";
  697. }
  698. //---------------------------------------------------------------------------
  699. void TfrmEpskInterSlotRampSetting::ConfirmCallback_MultiSlotTX(void)
  700. {
  701.     E_METAAPP_RESULT_T state = m_RF_MULTI_SLOT_TX_Obj.Get_ConfirmState();
  702.     switch (state)
  703.     {
  704.         case METAAPP_SUCCESS:
  705.         {
  706.             sbISR->Panels->Items[0]->Text = (AnsiString) "  Multi slot TX progressing";
  707.         }
  708.         break;
  709.         case METAAPP_FAIL:
  710.         {
  711.             sbISR->Panels->Items[0]->Text = (AnsiString) "  Multi slot TX fail";
  712.             Application->MessageBox( "Execution Failure : Multi slot TX", "FAILURE", MB_OK );
  713.             frmRFTool->Force_RF_Stop();
  714.             CurrentPageReset();
  715.         }
  716.         break;
  717.         case METAAPP_TIMEOUT:
  718.         {
  719.             sbISR->Panels->Items[0]->Text = (AnsiString) "  Multi slot TX timeout";
  720.             Application->MessageBox( "Execution Timeout : Multi slot TX", "TIMEOUT", MB_OK );
  721.             frmRFTool->Force_RF_Stop();
  722.             CurrentPageReset();
  723.         }
  724.         break;
  725.         case METAAPP_STOP:
  726.         {
  727.             sbISR->Panels->Items[0]->Text = (AnsiString) "  Multi slot TX stop";
  728.         }
  729.         break;
  730.         default:
  731.         {
  732.         }
  733.         break;
  734.     }    
  735. }
  736. //--------------------------------------------------------------------------
  737. void __fastcall TfrmEpskInterSlotRampSetting::edtArfcnCheck(
  738.       TObject *Sender)
  739. {
  740.     short sdata;
  741.     AnsiString  text;
  742.     TEdit *edit = (TEdit*)Sender;
  743.     char  hint[][256] =
  744.     {   " value shall be 0~124 or 975~1023 ",
  745.        " value shall be 512~885 ",
  746.        " value shall be 512~810 ",
  747.        " value shall be 128~251 ",
  748.     };
  749.     text = edit->Text;
  750.     if( !IsValidARFCN( text, m_eCurBand, sdata ) )
  751.     {
  752.         ShowHintLabel( edit, hint[m_eCurBand] );
  753.         edit->SetFocus();
  754.         return;
  755.     }
  756.     m_sTestArfcn[m_eCurBand] = sdata;
  757. }
  758. //---------------------------------------------------------------------------
  759. void __fastcall TfrmEpskInterSlotRampSetting::tclEpskInterRampChange(
  760.       TObject *Sender)
  761. {
  762.     if( ! frmMainSel->cbGSM850->Checked )
  763.     {
  764.         if (BANDSEL_GSM850 == (E_BANDSEL) tclEpskInterRamp->TabIndex)
  765.         {
  766.             tclEpskInterRamp->TabIndex = m_iLastTabIndex;
  767.             Application->MessageBox( "Please check GSM 850 on main menu", "FAILURE", MB_OK );
  768.             return;
  769.         }
  770.     }
  771.     if( !CheckFields() )
  772.     {
  773.         tclEpskInterRamp->TabIndex = m_eCurBand;
  774.         return;
  775.     }
  776.     m_eCurBand = (E_BANDSEL) tclEpskInterRamp->TabIndex;
  777.     m_iLastTabIndex =  tclEpskInterRamp->TabIndex;
  778.     if( 1 == btnTXStart->Tag )
  779.     {
  780.         btnTXStopClick(this);
  781.     }
  782.     ReDrawFields();
  783. }
  784. //---------------------------------------------------------------------------
  785. //---------------------------------------------------------------------------
  786. void __fastcall TfrmEpskInterSlotRampSetting::btnTXStopClick(
  787.       TObject *Sender)
  788. {
  789.     if( BTN_TAG_START == btnTXStart->Tag )
  790.     {
  791.         frmRFTool->Force_RF_Stop();
  792.         frmRFTool->pctlToolSel->Enabled = true;
  793.         frmRFTool->btnTXStart->Enabled = true;
  794.         btnTXStart->Tag = 0;
  795.         CurrentPageReset();
  796.         frmRFTool->CurrentPageReset();
  797.         sbISR->Panels->Items[0]->Text = (AnsiString) "  Multi slot TX stop";
  798.     }   
  799. }
  800. //---------------------------------------------------------------------------