misc.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.  *   misc.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *  Misc. function 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. #ifndef  _FT_UTILS_H_
  67. #include "ft_utils.h"
  68. #endif
  69. #ifndef META_DLL_H
  70. #include "meta.h"
  71. #endif
  72. #ifndef  _RF_COMMON_H_
  73. #include "rf_common.h"
  74. #endif
  75. #ifndef  _RF_APC_H_
  76. #include "rf_apc.h"
  77. #endif
  78. #ifndef  _RF_APC_8PSK_H_
  79. #include "rf_apc_8psk.h"
  80. #endif
  81. #ifndef  _RF_AFC_H_
  82. #include "rf_afc.h"
  83. #endif
  84. #ifndef  _MAN_ERROR_H_
  85. #include "man_error.h"
  86. #endif
  87. //------------------------------------------------------------------------------
  88. extern bool isBootTarget;
  89. //---------------------------------------------------------------------------
  90. static const short ARFCN_RANGE[][4] =
  91. {
  92.    {   0, 124, 975, 1023 },  /* GSM900  */
  93.    { 512, 885, 512,  885 },  /* DCS1800 */
  94.    { 512, 810, 512,  810 },  /* PCS1900 */
  95.    { 128, 251, 128,  251 },  /* GSM850  */
  96.    { 259, 293, 259,  293 }   /* GSM450  */
  97. };
  98. static const int APC_LOWEST_POWER_RANGE[][2] =
  99. {
  100.    { 0, 36 },  /* GSM900  */
  101.    { 0, 33 },  /* DCS1800 */
  102.    { 0, 33 },  /* PCS1900 */
  103.    { 0, 36 },  /* GSM850  */
  104.    { 0, 36 }   /* GSM450  */
  105. };
  106. // convert
  107. //---------------------------------------------------------------------------
  108. bool IsValidDelay(AnsiString ansi_str, int &delay)
  109. {
  110.    RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, delay), RANGE_ERR_DELAY);
  111.    return true;
  112. }
  113. //---------------------------------------------------------------------------
  114. bool IsValidARFCN(AnsiString ansi_str, E_BANDSEL band, short &arfcn)
  115. {
  116.     bool invalid = true;
  117.     RANGE_CHECK_ERROR(!AnsiString_To_Short(ansi_str, arfcn), RANGE_ERR_ARFCN);
  118.     if (((arfcn>=ARFCN_RANGE[band][0])&&(arfcn<=ARFCN_RANGE[band][1]))||
  119.         ((arfcn>=ARFCN_RANGE[band][2])&&(arfcn<=ARFCN_RANGE[band][3]))  )
  120.     {
  121.         invalid = false;
  122.     }
  123.     RANGE_CHECK_ERROR(invalid, RANGE_ERR_ARFCN);
  124.     return true;
  125. }
  126. //---------------------------------------------------------------------------
  127. bool IsValidARFCN2(AnsiString ansi_str, E_BANDSEL band, short &arfcn)
  128. {
  129.     bool invalid = true;
  130.     RANGE_CHECK_ERROR(!AnsiString_To_Short(ansi_str, arfcn), RANGE_ERR_ARFCN2);
  131.     if ((-1 == arfcn)||
  132.         ((arfcn>=ARFCN_RANGE[band][0])&&(arfcn<=ARFCN_RANGE[band][1]))||
  133.         ((arfcn>=ARFCN_RANGE[band][2])&&(arfcn<=ARFCN_RANGE[band][3]))
  134.        )
  135.     {
  136.         invalid = false;
  137.     }
  138.     RANGE_CHECK_ERROR(invalid, RANGE_ERR_ARFCN);
  139.     return true;
  140. }
  141. //---------------------------------------------------------------------------
  142. bool IsValidARFCNStep(AnsiString ansi_str, short &arfcn_step)
  143. {
  144.     RANGE_CHECK_ERROR(!AnsiString_To_Short(ansi_str, arfcn_step), RANGE_ERR_ARFCN_STEP);
  145.     RANGE_CHECK_ERROR(arfcn_step <= 0                             , RANGE_ERR_ARFCN_STEP);
  146.     return true;
  147. }
  148. //---------------------------------------------------------------------------
  149. bool IsValidApcLowestPower(AnsiString ansi_str, int band, int &apc_lowest_power)
  150. {
  151.     bool invalid = true;
  152.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, apc_lowest_power), RANGE_ERR_APC_LOWEST_POWER);
  153.     if ((apc_lowest_power >= APC_LOWEST_POWER_RANGE[band][0]) && (apc_lowest_power<=APC_LOWEST_POWER_RANGE[band][1]))
  154.     {
  155.         invalid = false;
  156.     }
  157.     RANGE_CHECK_ERROR(invalid, RANGE_ERR_APC_LOWEST_POWER);
  158.     return true;
  159. }
  160. //---------------------------------------------------------------------------
  161. bool IsValidPMCount(AnsiString ansi_str, unsigned int &pmcount)
  162. {
  163.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedInteger(ansi_str, pmcount, 1, 2147483647), RANGE_ERR_PM_COUNT);
  164.     return true;
  165. }
  166. //---------------------------------------------------------------------------
  167. bool IsValidAFCCount(AnsiString ansi_str, short &count)
  168. {
  169.     RANGE_CHECK_ERROR(!AnsiString_To_Short(ansi_str, count, 1, 32767), RANGE_ERR_AFC_COUNT);
  170.     return true;
  171. }
  172. //---------------------------------------------------------------------------
  173. bool IsValidGain(AnsiString ansi_str, int &gain)
  174. {
  175.     float f_gain;
  176.     RANGE_CHECK_ERROR(!AnsiString_To_Float(ansi_str, f_gain), RANGE_ERR_GAIN);
  177.     gain = (int) (f_gain*8);
  178.     return true;
  179. }
  180. //---------------------------------------------------------------------------
  181. bool IsValidPathLoss(AnsiString ansi_str, float &path_loss)
  182. {
  183.     RANGE_CHECK_ERROR(!AnsiString_To_Float(ansi_str, path_loss), RANGE_ERR_PATH_LOSS);
  184.     return true;
  185. }
  186. //----------------------------------------------------------------------------
  187. bool IsValidRegBit(AnsiString ansi_str, unsigned char &bit)
  188. {
  189.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, bit, 0, 1), RANGE_ERR_REG_BIT);
  190.     return true;
  191. }
  192. //---------------------------------------------------------------------------
  193. bool IsValidMeasurementCount(AnsiString ansi_str, unsigned int &measuremnt_count)
  194. {
  195.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedInteger(ansi_str, measuremnt_count, 1, 4294967295), RANGE_ERR_MEASUREMENT_COUNT);
  196.     return true;
  197. }
  198. //---------------------------------------------------------------------------
  199. bool IsValidPeriod(AnsiString ansi_str, unsigned int &period)
  200. {
  201.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedInteger(ansi_str, period, 1000, 4294967295), RANGE_ERR_PERIOD);
  202.     return true;
  203. }
  204. //---------------------------------------------------------------------------
  205. bool IsValidRefDetSlopeSkew(AnsiString ansi_str, unsigned char &skew)
  206. {
  207.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, skew, 0, 255), RANGE_ERR_REFDET_SLOPE_SKEW);
  208.     return true;
  209. }
  210. //---------------------------------------------------------------------------
  211. bool IsValidAmFbDac(AnsiString ansi_str, unsigned char &dac)
  212. {
  213.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, dac, 0, 255), RANGE_ERR_AM_FB_DAC);
  214.     return true;
  215. }
  216. //---------------------------------------------------------------------------
  217. extern bool  IsValidAmFbDac(AnsiString ansi_str, unsigned char &dac);
  218. //---------------------------------------------------------------------------
  219. bool IsValidPCL(AnsiString ansi_str, int band, int &pcl)
  220. {
  221.     static const int PCL_RANGE[][2] =
  222.     {
  223.         {4,  31},  /* GSM900  */
  224.         {0,  28},  /* DCS1800 */
  225.         {0,  15},  /* PCS1900 */
  226.         {4,  31}  /* GSM850 */
  227.     };
  228.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, pcl), RANGE_ERR_PCL);
  229.     if (pcl != -1)
  230.     {
  231.         RANGE_CHECK_ERROR((pcl<PCL_RANGE[band][0])||(pcl>PCL_RANGE[band][1]) , RANGE_ERR_PCL );
  232.     }
  233.     return true;
  234. }
  235. //---------------------------------------------------------------------------
  236. bool IsValidCFGPCL(AnsiString ansi_str, int band, int &pcl)
  237. {
  238.     static const int PCL_RANGE[][2] =
  239.     {
  240.         {4, 31},  /* GSM400 */
  241.         {4, 31},  /* GSM850 */
  242.         {4, 31},  /* GSM900  */
  243.         {0, 28},  /* DCS1800 */
  244.         {0, 15},  /* PCS1900 */
  245.     };
  246.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, pcl)                , RANGE_ERR_CFG_PCL);
  247.     RANGE_CHECK_ERROR((pcl<PCL_RANGE[band][0]) || (pcl>PCL_RANGE[band][1]) , RANGE_ERR_CFG_PCL);
  248.     return true;
  249. }
  250. //---------------------------------------------------------------------------
  251. bool IsValidCFGMAX_P(AnsiString ansi_str, double &d_max_p)
  252. {
  253.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, d_max_p), RANGE_ERR_CFG_MAX_P);
  254.     return true;
  255. }
  256. //---------------------------------------------------------------------------
  257. bool IsValidCFGWANTED_P(AnsiString ansi_str, double &d_wanted_p)
  258. {
  259.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, d_wanted_p), RANGE_ERR_CFG_WANTED_P);
  260.     return true;
  261. }
  262. //---------------------------------------------------------------------------
  263. bool IsValidCFGMIN_P(AnsiString ansi_str, double &d_min_p)
  264. {
  265.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, d_min_p), RANGE_ERR_CFG_MIN_P);
  266.     return true;
  267. }
  268. //---------------------------------------------------------------------------
  269. bool IsValidCFGC(AnsiString ansi_str, double &d_c)
  270. {
  271.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, d_c), RANGE_ERR_CFG_C);
  272.     return true;
  273. }
  274. //---------------------------------------------------------------------------
  275. bool IsValidCFGCORRECTION(AnsiString ansi_str, double &d_correction)
  276. {
  277.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, d_correction), RANGE_ERR_CFG_CORRECTION);
  278.     return true;
  279. }
  280. //---------------------------------------------------------------------------
  281. bool IsValidCFGRecursiveTimes(AnsiString ansi_str, int &i_RecursiveTimes)
  282. {
  283.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, i_RecursiveTimes), RANGE_ERR_RECURSIVE_TIMES);
  284.     RANGE_CHECK_ERROR(i_RecursiveTimes<=-1                              , RANGE_ERR_RECURSIVE_TIMES);
  285.     return true;
  286. }
  287. //---------------------------------------------------------------------------
  288. bool IsValidCFGTSC(AnsiString ansi_str, char &c_TSC)
  289. {
  290.     RANGE_CHECK_ERROR(!AnsiString_To_char(ansi_str, c_TSC, 0, 7), RANGE_ERR_CFG_TSC);
  291.     RANGE_CHECK_ERROR(c_TSC<=-1                                 , RANGE_ERR_CFG_TSC);
  292.     return true;
  293. }
  294. //---------------------------------------------------------------------------
  295. bool IsValidCFGAPCDelta(AnsiString ansi_str, double &d_APCDelta)
  296. {
  297.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, d_APCDelta), RANGE_ERR_CFG_APC_DELTA);
  298.     return true;
  299. }
  300. //---------------------------------------------------------------------------
  301. bool IsValidPCLDac(AnsiString ansi_str, unsigned short &pcl_dac)
  302. {
  303.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedShort(ansi_str, pcl_dac, 0, 1023) , RANGE_ERR_PCL_DAC);
  304.     return true;
  305. }
  306. //---------------------------------------------------------------------------
  307. bool IsValidVbias(unsigned int ui_rf_id, AnsiString ansi_str, unsigned char &vbias)
  308. {
  309.     if (RF_ID_AERO2E != ui_rf_id)
  310.     {
  311.         RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, vbias, MIN_PA_VBIAS, MAX_PA_VBIAS_MT6140), RANGE_ERR_VBIAS);
  312.     }
  313.     else
  314.     {
  315.         RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, vbias, MIN_PA_VBIAS, MAX_PA_VBIAS_AERO2E), RANGE_ERR_VBIAS);
  316.     }
  317.     return true;
  318. }
  319. //---------------------------------------------------------------------------
  320. bool IsValidAFC(AnsiString ansi_str, short &afc)
  321. {
  322.     RANGE_CHECK_ERROR(!AnsiString_To_Short(ansi_str, afc, 0, 8191) , RANGE_ERR_AFC);
  323.     return true;
  324. }
  325. //---------------------------------------------------------------------------
  326. bool IsValidFreqErr(AnsiString ansi_str, double &freq_err)
  327. {
  328.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, freq_err), RANGE_ERR_FREQERR);
  329.     return true;
  330. }
  331. //---------------------------------------------------------------------------
  332. bool IsValidBand(AnsiString &band)
  333. {
  334.     AnsiString BAND_NAME[] =
  335.     {
  336.         "GSM",
  337.         "DCS",
  338.         "PCS",
  339.         "GSM850"
  340.     };
  341.     for (int i=0; i<sizeof(BAND_NAME)/sizeof(BAND_NAME[0]); i++)
  342.     {
  343.         if (BAND_NAME[i].AnsiCompareIC(band) == 0)
  344.         {
  345.             return true;
  346.         }
  347.     }
  348.     return false;
  349. }
  350. //---------------------------------------------------------------------------
  351. bool IsValidCAPID63(AnsiString ansi_str, int &cap_id)
  352. {
  353.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, cap_id, 0, 63) , RANGE_ERR_CAPID);
  354.     return true;
  355. }
  356. //---------------------------------------------------------------------------
  357. bool IsValidCAPID127(AnsiString ansi_str, int &cap_id)
  358. {
  359.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, cap_id, 0, 127), RANGE_ERR_CAPID);
  360.     return true;
  361. }
  362. //---------------------------------------------------------------------------
  363. bool IsValidCAPID511(AnsiString ansi_str, int &cap_id)
  364. {
  365.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, cap_id, 0, 511), RANGE_ERR_CAPID);
  366.     return true;
  367. }
  368. //---------------------------------------------------------------------------
  369. bool IsValidTA(AnsiString ansi_str, int &ta)
  370. {
  371.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, ta, 0, 63), RANGE_ERR_TA);
  372.     return true;
  373. }
  374. //---------------------------------------------------------------------------
  375. //////////////////////////////      IP2      ////////////////////////////////
  376. //---------------------------------------------------------------------------
  377. bool IsValidSky74045Icorrection(AnsiString ansi_str, signed char &i_corr)
  378. {
  379.     RANGE_CHECK_ERROR(!AnsiString_To_signedchar(ansi_str, i_corr, -127, 127), RANGE_ERR_ICORRECTION);
  380.     return true;
  381. }
  382. //---------------------------------------------------------------------------
  383. bool IsValidSky74045Qcorrection(AnsiString ansi_str, signed char &q_corr)
  384. {
  385.     RANGE_CHECK_ERROR(!AnsiString_To_signedchar(ansi_str, q_corr, -127, 127), RANGE_ERR_QCORRECTION);
  386.     return true;
  387. }
  388. //---------------------------------------------------------------------------
  389. bool IsValidSky74117Icorrection(AnsiString ansi_str, signed char &i_corr)
  390. {
  391.     RANGE_CHECK_ERROR(!AnsiString_To_signedchar(ansi_str, i_corr, -63, 63), RANGE_ERR_ICORRECTION);
  392.     return true;
  393. }
  394. //---------------------------------------------------------------------------
  395. bool IsValidSky74117Qcorrection(AnsiString ansi_str, signed char &q_corr)
  396. {
  397.     RANGE_CHECK_ERROR(!AnsiString_To_signedchar(ansi_str, q_corr, -63, 63), RANGE_ERR_QCORRECTION);
  398.     return true;
  399. }
  400. //---------------------------------------------------------------------------
  401. bool IsValidAcode(AnsiString ansi_str, unsigned char &acode)
  402. {
  403.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, acode, 0, 63), RANGE_ERR_ACODE);
  404.     return true;
  405. }
  406. //---------------------------------------------------------------------------
  407. bool IsValidAmcode(AnsiString ansi_str, unsigned char &amcode)
  408. {
  409.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, amcode, 0, 255), RANGE_ERR_AMCODE);
  410.     return true;
  411. }
  412. //---------------------------------------------------------------------------
  413. bool IsValidAmcode127(AnsiString ansi_str, unsigned char &amcode)
  414. {
  415.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, amcode, 0, 127), RANGE_ERR_AMCODE);
  416.     return true;
  417. }
  418. //---------------------------------------------------------------------------
  419. bool IsValidBcode(AnsiString ansi_str, unsigned char &bcode)
  420. {
  421.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, bcode, 0, 127), RANGE_ERR_BCODE);
  422.     return true;
  423. }
  424. //---------------------------------------------------------------------------
  425. bool IsValidCcode(AnsiString ansi_str, unsigned char &ccode)
  426. {
  427.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, ccode, 0, 127), RANGE_ERR_CCODE);
  428.     return true;
  429. }
  430. //---------------------------------------------------------------------------
  431. bool IsValidMultiSlotTxPattern(AnsiString ansi_str, unsigned short &pattern)
  432. {
  433.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedBinary(ansi_str, pattern, 0, 65535), RANGE_ERR_MUTLISLOT_TX_PATTERN);
  434.     return true;
  435. }
  436. //---------------------------------------------------------------------------
  437. bool IsValidCTPattern(AnsiString ansi_str, unsigned short &pattern)
  438. {
  439.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedBinary(ansi_str, pattern, 0, 65535), RANGE_ERR_CT_PATTERN);
  440.     return true;
  441. }
  442. //---------------------------------------------------------------------------
  443. bool IsValidC3TA(AnsiString ansi_str, unsigned char &ta)
  444. {
  445.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, ta, 0, 7), RANGE_ERR_C3TA);
  446.     return true;
  447. }
  448. //---------------------------------------------------------------------------
  449. bool IsValidC3TB(AnsiString ansi_str, unsigned char &tb)
  450. {
  451.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, tb, 0, 3), RANGE_ERR_C3TB);
  452.     return true;
  453. }
  454. //---------------------------------------------------------------------------
  455. bool IsValidC3TC(AnsiString ansi_str, unsigned char &tc)
  456. {
  457.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, tc, 0, 3), RANGE_ERR_C3TC);
  458.     return true;
  459. }
  460. //---------------------------------------------------------------------------
  461. bool IsValidC3TN(AnsiString ansi_str, unsigned char &tn)
  462. {
  463.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, tn, 0, 63), RANGE_ERR_C3TN);
  464.     return true;
  465. }
  466. //---------------------------------------------------------------------------
  467. bool IsValidC3TO(AnsiString ansi_str, unsigned char &to)
  468. {
  469.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, to, 0, 15), RANGE_ERR_C3TO);
  470.     return true;
  471. }
  472. //---------------------------------------------------------------------------
  473. bool IsValidC3PM(AnsiString ansi_str, unsigned char &pm)
  474. {
  475.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, pm, 0, 15), RANGE_ERR_C3PM);
  476.     return true;
  477. }
  478. //---------------------------------------------------------------------------
  479. bool IsValidAFCSlope(AnsiString ansi_str, int &slope)
  480. {
  481.     float f_gain;
  482.     RANGE_CHECK_ERROR(!AnsiString_To_Float(ansi_str, f_gain), RANGE_ERR_AFC_SLOPE);
  483.     if (0.0 == f_gain)
  484.     {
  485.         f_gain=0.00000001;
  486.     }
  487.     slope = (int)(AFC_SLOPE_SCALE/f_gain);
  488.     return true;
  489. }
  490. //---------------------------------------------------------------------------
  491. bool IsValid2GAFCSlope(AnsiString ansi_str, double &slope)
  492. {
  493.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, slope), RANGE_ERR_AFC_SLOPE);
  494.     return true;
  495. }
  496. //---------------------------------------------------------------------------
  497. bool IsValidCFGAFCSlope(AnsiString ansi_str, double &slope)
  498. {
  499.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, slope), RANGE_ERR_CFG_AFC_SLOPE);
  500.     return true;
  501. }
  502. //---------------------------------------------------------------------------
  503. bool IsValidCFGFrequencyErrorPPM(AnsiString ansi_str, double &ppm)
  504. {
  505.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, ppm), RANGE_ERR_CFG_FREQUENCY_ERROR_PPM);
  506.     return true;
  507. }
  508. //---------------------------------------------------------------------------
  509. bool IsValidCFGFrequencyError(AnsiString ansi_str, double &freq_err)
  510. {
  511.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, freq_err), RANGE_ERR_CFG_FREQUENCY_ERROR);
  512.     return true;
  513. }
  514. //==============================================================================
  515. //////////////////////////////  BB TX Parameters  //////////////////////////////
  516. //==============================================================================
  517. //---------------------------------------------------------------------------
  518. bool IsValidTrimIQ(AnsiString ansi_str, signed char &trim_iq)
  519. {
  520.     RANGE_CHECK_ERROR(!AnsiString_To_signedchar(ansi_str, trim_iq, -8, 7) , RANGE_ERR_TRIM_IQ);
  521.     return true;
  522. }
  523. //---------------------------------------------------------------------------
  524. bool  IsValidTrimIQStep(AnsiString ansi_str, char &trim_iq_step)
  525. {
  526.     RANGE_CHECK_ERROR(!AnsiString_To_char(ansi_str, trim_iq_step, 1, 15) , RANGE_ERR_TRIM_IQ_STEP);
  527.     return true;
  528. }
  529. //---------------------------------------------------------------------------
  530. bool IsValidOffsetIQ(E_BBTXCFG_VER_T eBbTxCfgVer, AnsiString ansi_str, signed char &offiq)
  531. {
  532.     if (eBbTxCfgVer < BBTXCFG_VER4)
  533.     {
  534.         RANGE_CHECK_ERROR(!AnsiString_To_signedchar(ansi_str, offiq, MIN_OFFSET_IQ_OLD, MAX_OFFSET_IQ_OLD), RANGE_ERR_OFFSET_IQ);
  535.     }
  536.     else
  537.     {
  538.         RANGE_CHECK_ERROR(!AnsiString_To_signedchar(ansi_str, offiq, MIN_OFFSET_IQ_NEW, MAX_OFFSET_IQ_NEW), RANGE_ERR_OFFSET_IQ);
  539.     }
  540.     return true;
  541. }
  542. //---------------------------------------------------------------------------
  543. bool IsValidBBTXCalibratedFlag(AnsiString ansi_str, unsigned char &cal_flag)
  544. {
  545.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, cal_flag, 0, 255), RANGE_ERR_BB_TX_CAL_FLAG );
  546.     return true;
  547. }
  548. //---------------------------------------------------------------------------
  549. bool IsValidOffsetIQStep(AnsiString ansi_str, char &off_iq_step)
  550. {
  551.     RANGE_CHECK_ERROR(!AnsiString_To_char(ansi_str, off_iq_step, 1, 63), RANGE_ERR_OFFSET_IQ_STEP);
  552.     return true;
  553. }
  554. //---------------------------------------------------------------------------
  555. bool IsValidTxCalbias(E_BBTXCFG_VER_T eBbTxCfgVer, AnsiString ansi_str, signed char &calbias)
  556. {
  557.     if (BBTXCFG_VER2 == eBbTxCfgVer)
  558.     {
  559.         RANGE_CHECK_ERROR(!AnsiString_To_signedchar(ansi_str, calbias, MIN_CALBIAS_OLD, MAX_CALBIAS_OLD), RANGE_ERR_TX_CALBIAS);
  560.     }
  561.     else
  562.     {
  563.         RANGE_CHECK_ERROR(!AnsiString_To_signedchar(ansi_str, calbias, MIN_CALBIAS_NEW, MAX_CALBIAS_NEW), RANGE_ERR_TX_CALBIAS);
  564.     }
  565.     return true;
  566. }
  567. //---------------------------------------------------------------------------
  568. bool IsValidTxIQSwap(AnsiString ansi_str, char &iq_swap)
  569. {
  570.     RANGE_CHECK_ERROR(!AnsiString_To_char(ansi_str, iq_swap, 0, 1), RANGE_ERR_TX_IQSWAP);
  571.     return true;
  572. }
  573. //---------------------------------------------------------------------------
  574. bool IsValidBBTXCommonModeVoltage(AnsiString ansi_str, signed char &voltage)
  575. {
  576.     RANGE_CHECK_ERROR(!AnsiString_To_signedchar(ansi_str, voltage, -4, 3), RANGE_ERR_BB_TX_COMMON_MODE_VOLTAGE);
  577.     return true;
  578. }
  579. //------------------------------------------------------------------------------
  580. bool IsValidBBTXGain(AnsiString ansi_str, signed char &gain)
  581. {
  582.     RANGE_CHECK_ERROR(!AnsiString_To_signedchar(ansi_str, gain, -4, 3), RANGE_ERR_BB_TX_GAIN);
  583.     return true;
  584. }
  585. //------------------------------------------------------------------------------
  586. bool IsValidBBTXCalrcsel(AnsiString ansi_str, signed char &Calrcsel)
  587. {
  588.     RANGE_CHECK_ERROR(!AnsiString_To_signedchar(ansi_str, Calrcsel, -4, 3), RANGE_ERR_CALRCSEL);
  589.     return true;
  590. }
  591. //------------------------------------------------------------------------------
  592. bool IsValidBBTXPhasesel(E_BBTXCFG_VER_T eBbTxCfgVer, AnsiString ansi_str, signed char &Phasesel)
  593. {
  594.     if (eBbTxCfgVer <= BBTXCFG_VER4)
  595.     {
  596.         RANGE_CHECK_ERROR(!AnsiString_To_signedchar(ansi_str, Phasesel, MIN_PHASESEL_OLD, MAX_PHASESEL_OLD), RANGE_ERR_PHASESEL);
  597.     }
  598.     else
  599.     {
  600.         RANGE_CHECK_ERROR(!AnsiString_To_signedchar(ansi_str, Phasesel, MIN_PHASESEL_NEW, MAX_PHASESEL_NEW), RANGE_ERR_PHASESEL);
  601.     }
  602.     return true;
  603. }
  604. //------------------------------------------------------------------------------
  605. bool IsValidBBTXPhaseselStep(AnsiString ansi_str, char &Phasesel_step)
  606. {
  607.     RANGE_CHECK_ERROR(!AnsiString_To_char(ansi_str, Phasesel_step, 1, 11), RANGE_ERR_PHASESEL_STEP);
  608.     return true;
  609. }
  610. //------------------------------------------------------------------------------
  611. bool IsValidAPCBatLowVoltage(AnsiString ansi_str, double &voltage)
  612. {
  613.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, voltage, 0, 10.0), RANGE_ERR_APC_BAT_LOW_VOLTAGE);
  614.     return true;
  615. }
  616. //------------------------------------------------------------------------------
  617. bool IsValidAPCBatHighVoltage(AnsiString ansi_str, double &voltage)
  618. {
  619.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, voltage, 0, 10.0), RANGE_ERR_APC_BAT_HIGH_VOLTAGE);
  620.     return true;
  621. }
  622. //------------------------------------------------------------------------------
  623. bool IsValidAPCBatLowTemperature(AnsiString ansi_str, double &temperature)
  624. {
  625.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, temperature, -50.0, 100.0), RANGE_ERR_APC_BAT_LOW_TEMPERATURE);
  626.     return true;
  627. }
  628. //------------------------------------------------------------------------------
  629. bool IsValidAPCBatHighTemperature(AnsiString ansi_str, double &temperature)
  630. {
  631.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, temperature, -50.0, 100.0), RANGE_ERR_APC_BAT_HIGH_TEMPERATURE);
  632.     return true;
  633. }
  634. //---------------------------------------------------------------------------
  635. bool IsValidRamp(AnsiString ansi_str, unsigned char &ramp)
  636. {
  637.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, ramp, 0, 255), RANGE_ERR_RAMP);
  638.     return true;
  639. }
  640. //---------------------------------------------------------------------------
  641. bool IsValidWeight(AnsiString ansi_str, unsigned int rf_id, unsigned short &weight)
  642. {
  643.     if (RF_ID_A60111A != rf_id)
  644.     {
  645.         float f_weight;
  646.         RANGE_CHECK_ERROR(!AnsiString_To_Float(ansi_str, f_weight, 0.0, 3.99), RANGE_ERR_WEIGHT);
  647.         weight = (unsigned short)(f_weight*WEIGHT_SCALE);
  648.     }
  649.     else
  650.     {
  651.         short s_weight;
  652.         RANGE_CHECK_ERROR(!AnsiString_To_Short(ansi_str, s_weight, -4, 4), RANGE_ERR_WEIGHT);
  653.         weight = (unsigned short) (s_weight + A60111A_WEIGHT_OFFSET);
  654.     }
  655.     return true;
  656. }
  657. //---------------------------------------------------------------------------
  658. bool IsValidADCSlope(AnsiString ansi_str, int &slope)
  659. {
  660.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, slope), RANGE_ERR_ADC_SLOPE);
  661.     return true;
  662. }
  663. //---------------------------------------------------------------------------
  664. bool IsValidADCOffset(AnsiString ansi_str, int &dcoffset)
  665. {
  666.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, dcoffset), RANGE_ERR_ADC_OFFSET);
  667.     return true;
  668. }
  669. //---------------------------------------------------------------------------
  670. bool IsValidADCInput(AnsiString ansi_str, int &adc_input)
  671. {
  672.     float fdata;
  673.     RANGE_CHECK_ERROR(!AnsiString_To_Float(ansi_str, fdata), RANGE_ERR_ADC_INPUT);
  674.     fdata *= 1000;
  675.     fdata += (fdata>=0) ? 0.5 : -0.5 ;
  676.     adc_input = (int)fdata;
  677.     return true;
  678. }
  679. //---------------------------------------------------------------------------
  680. bool IsValidADCVoltage(AnsiString ansi_str, int &adc_voltage)
  681. {
  682.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, adc_voltage), RANGE_ERR_ADC_VOLTAGE);
  683.     return true;
  684. }
  685. //---------------------------------------------------------------------------
  686. bool IsValidCurrentLimit(AnsiString ansi_str, int &current_limit)
  687. {
  688.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, current_limit), RANGE_ERR_CURRENT_LIMIT);
  689.     return true;
  690. }
  691. //---------------------------------------------------------------------------
  692. bool IsValidADCChannel(AnsiString ansi_str, int &adc_channel)
  693. {
  694.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, adc_channel), RANGE_ERR_ADC_CHANNEL);
  695.     RANGE_CHECK_ERROR(adc_channel <= -1                            , RANGE_ERR_ADC_CHANNEL);
  696.     return true;
  697. }
  698. //---------------------------------------------------------------------------
  699. bool IsValidADCResistance(AnsiString ansi_str, double &adc_resistance)
  700. {
  701.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, adc_resistance), RANGE_ERR_ADC_RESISTANCE);
  702.     RANGE_CHECK_ERROR(adc_resistance <= 0                            , RANGE_ERR_ADC_RESISTANCE);
  703.     return true;
  704. }
  705. //---------------------------------------------------------------------------
  706. bool IsValidADCMaxVoltageDifference(AnsiString ansi_str, double &adc_max_voltage_difference)
  707. {
  708.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, adc_max_voltage_difference), RANGE_ERR_ADC_MAX_VOLTAGE_DIFFERENCE);
  709.     RANGE_CHECK_ERROR(adc_max_voltage_difference <= 0                            , RANGE_ERR_ADC_MAX_VOLTAGE_DIFFERENCE);
  710.     return true;
  711. }
  712. //---------------------------------------------------------------------------
  713. bool IsValidADCMaxCurrentDifference(AnsiString ansi_str, double &adc_max_current_difference)
  714. {
  715.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, adc_max_current_difference), RANGE_ERR_ADC_MAX_CURRENT_DIFFERENCE);
  716.     RANGE_CHECK_ERROR(adc_max_current_difference <= 0                             , RANGE_ERR_ADC_MAX_CURRENT_DIFFERENCE);
  717.     return true;
  718. }
  719. //---------------------------------------------------------------------------
  720. bool IsValidADCMeasurementCount(AnsiString ansi_str, int &adc_measurement_count)
  721. {
  722.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, adc_measurement_count), RANGE_ERR_ADC_MEASUREMENT_COUNT);
  723.     RANGE_CHECK_ERROR(adc_measurement_count<=0                               , RANGE_ERR_ADC_MEASUREMENT_COUNT);
  724.     return true;
  725. }
  726. //==============================================================================
  727. bool IsValidGPIBAddr(AnsiString ansi_str, int &GPIB_addr)
  728. {
  729.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, GPIB_addr) , RANGE_ERR_GPIB_ADDR);
  730.     RANGE_CHECK_ERROR(GPIB_addr<=-1                               , RANGE_ERR_GPIB_ADDR);
  731.     return true;
  732. }
  733. //---------------------------------------------------------------------------
  734. bool IsValidTimeout(AnsiString ansi_str, int &timeout )
  735. {
  736.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, timeout), RANGE_ERR_TIMEOUT);
  737.     RANGE_CHECK_ERROR(timeout<=-1                              , RANGE_ERR_TIMEOUT);
  738.     return true;
  739. }
  740. //---------------------------------------------------------------------------
  741. bool IsValidCableLoss(AnsiString ansi_str, double &cable_loss)
  742. {
  743.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, cable_loss), RANGE_ERR_CABLE_LOSS);
  744.     return true;
  745. }
  746. //---------------------------------------------------------------------------
  747. bool IsValidPower(AnsiString ansi_str, double &power)
  748. {
  749.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, power), RANGE_ERR_POWER);
  750.     return true;
  751. }
  752. //==============================================================================
  753. ////////////////////////////// RX path loss CFG  ///////////////////////////////
  754. //==============================================================================
  755. bool IsValidCFGPMCount(AnsiString ansi_str, char m_pm, short &n_pm)
  756. {
  757.     RANGE_CHECK_ERROR(!AnsiString_To_Short(ansi_str, n_pm), RANGE_ERR_CFG_PMCOUNT);
  758.     if (n_pm * m_pm > 2000)
  759.     {
  760.         return false;
  761.     }
  762.     return true;
  763. }
  764. //==============================================================================
  765. //////////////////////////// phase error CFG  //////////////////////////////////
  766. //==============================================================================
  767. bool IsValidPhaseError(AnsiString ansi_str, double &d_ph_err)
  768. {
  769.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, d_ph_err), RANGE_ERR_PHASE_ERROR);
  770.     return true;
  771. }
  772. //===========================================================================
  773. static const int  pcl2power_table[][32] =
  774. {  //  0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5  6  7  8  9  0  1
  775.    {  39,39,39,37,35,33,31,29,27,25,23,21,19,17,15,13,11, 9, 7, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5  },  // GSM900
  776.    {  30,28,26,24,22,20,18,16,14,12,10, 8, 6, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,36,34,32  },  // DCS1800
  777.    {  30,28,26,24,22,20,18,16,14,12,10, 8, 6, 4, 2, 0, 0, 0, 0, 0, 0, 0,33,33,33,33,33,33,33,33,33,32  },  // PCS1900
  778.    {  39,39,39,37,35,33,31,29,27,25,23,21,19,17,15,13,11, 9, 7, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5  },  // GSM850
  779. };
  780. //---------------------------------------------------------------------------
  781. int PCL2POWER(int band, int pcl)
  782. {
  783.     if (pcl<0)  pcl=0;
  784.     if (pcl>31) pcl = 31;
  785.     int  power=pcl2power_table[band][pcl];
  786.     return(power);
  787. }
  788. //---------------------------------------------------------------------------
  789. static const int  power2pcl_table[][32] =
  790. {  //  0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5  6  7  8
  791.    {  19,18,17,16,15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 2  },  // GSM900
  792.    {  15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,31,30,29  },  // DCS1800
  793.    {  15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,31,30,29  },  // PCS1900
  794.    {  19,18,17,16,15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 2  },  // GSM850
  795. };
  796. //---------------------------------------------------------------------------
  797. int POWER2PCL(int band, int power)
  798. {
  799.    if(band == BANDSEL_GSM900 || band==BANDSEL_GSM850)  power -= 5;
  800.    power/=2;
  801.    if(power<0)  power = 0;
  802.    if(power>31)  power = 31;
  803.    int pcl = power2pcl_table[band][power];
  804.    return(pcl);
  805. }
  806. //==============================================================================
  807. bool IsValidRepeats(AnsiString ansi_str, int &repeats)
  808. {
  809.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, repeats, 0, 255), RANGE_ERR_REPEATS);
  810.     return true;
  811. }
  812. //==============================================================================
  813. bool IsValidSpeakerVolume(AnsiString ansi_str, int &SpeakerVolume)
  814. {
  815.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, SpeakerVolume, 0, 6), RANGE_ERR_SPEAKERVOLUME);
  816.     return true;
  817. }
  818. //==============================================================================
  819. bool IsValidBuzzerVolume(AnsiString ansi_str, int &BuzzerVolume)
  820. {
  821.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, BuzzerVolume, 0, 7), RANGE_ERR_BUZZERVOLUME);
  822.     return true;
  823. }
  824. //==============================================================================
  825. bool IsValidVolume(AnsiString ansi_str, int &Volume)
  826. {
  827.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, Volume, 0, 6), RANGE_ERR_VOLUME);
  828.     return true;
  829. }
  830. //==============================================================================
  831. bool IsValidInstrument(AnsiString ansi_str, int &Instrument)
  832. {
  833.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, Instrument, 1, 128), RANGE_ERR_INSTRUMENT);
  834.     return true;
  835. }
  836. //==============================================================================
  837. bool getGPIBAddrNumFromStr(AnsiString as_str, int &i_gpib_addr_num)
  838. {
  839.     AnsiString as_gpib_addr_2;
  840.     int iLD = as_str.AnsiPos("::");
  841.     if (iLD <= 0)
  842.       return false;
  843.     as_gpib_addr_2 = as_str.SubString( iLD+2, as_str.Length() );
  844.     iLD = as_gpib_addr_2.LastDelimiter("::");
  845.     as_gpib_addr_2 =  as_gpib_addr_2.SubString( 1, iLD-2 );
  846.     i_gpib_addr_num = as_gpib_addr_2.ToInt();
  847.     return true;
  848. }
  849. //==============================================================================
  850. bool IsValidBatteryCompensate(AnsiString ansi_str, unsigned short &battery_compensate)
  851. {
  852.     float f_battery_compensate;
  853.     RANGE_CHECK_ERROR( !AnsiString_To_Float( ansi_str, f_battery_compensate, 0.1, 1.9) , RANGE_ERR_BATTERY_COMPENSATE );
  854.     battery_compensate = (unsigned short)(f_battery_compensate*BATTERY_COMPENSATE_SCALE);
  855.     return true;
  856. }
  857. //------------------------------------------------------------------------------
  858. bool IsValidTxAfcOffset(AnsiString ansi_str, short &tx_afc_offset)
  859. {
  860.     RANGE_CHECK_ERROR(!AnsiString_To_Short(ansi_str, tx_afc_offset, -65536, 65535), RANGE_ERR_TX_AFC_OFFSET);
  861.     return true;
  862. }
  863. //------------------------------------------------------------------------------
  864. bool IsValidInterslotLowestDAC(AnsiString ansi_str, unsigned char &dac)
  865. {
  866.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, dac, 0, 255), RANGE_ERR_INTERSLOT_LOWEST_DAC);
  867.     return true;
  868. }
  869. //---------------------------------------------------------------------------
  870. ////////////////////////////     BV        //////////////////////////////////
  871. //---------------------------------------------------------------------------
  872. bool IsValidBVAP(AnsiString ansi_str, int &i_ap)
  873. {
  874.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, i_ap, 0, 7), RANGE_ERR_BV_AP);
  875.     return true;
  876. }
  877. //---------------------------------------------------------------------------
  878. bool IsValidBVAS(AnsiString ansi_str, int &i_as)
  879. {
  880.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, i_as, 0, 7), RANGE_ERR_BV_AS);
  881.     return true;
  882. }
  883. //---------------------------------------------------------------------------
  884. bool IsValidBVAO(AnsiString ansi_str, int &i_ao)
  885. {
  886.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, i_ao, 0, 63), RANGE_ERR_BV_AO);
  887.     return true;
  888. }
  889. //---------------------------------------------------------------------------
  890. bool IsValidBVBD(AnsiString ansi_str, int &i_bd)
  891. {
  892.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, i_bd, 0, 31), RANGE_ERR_BV_BD);
  893.     return true;
  894. }
  895. //---------------------------------------------------------------------------
  896. bool IsValidBVKAG(AnsiString ansi_str, int &i_kag)
  897. {
  898.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, i_kag, 0, 31), RANGE_ERR_BV_KAG);
  899.     return true;
  900. }
  901. //---------------------------------------------------------------------------
  902. bool IsValidBVKSG(AnsiString ansi_str, int &i_ksg)
  903. {
  904.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, i_ksg, 0, 15), RANGE_ERR_BV_KSG);
  905.     return true;
  906. }
  907. //---------------------------------------------------------------------------
  908. bool IsValidBVKAD(AnsiString ansi_str, int &i_kad)
  909. {
  910.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, i_kad, 0, 31), RANGE_ERR_BV_KAD);
  911.     return true;
  912. }
  913. //---------------------------------------------------------------------------
  914. bool IsValidBVKSD(AnsiString ansi_str, int &i_ksd)
  915. {
  916.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, i_ksd, 0, 15), RANGE_ERR_BV_KSD);
  917.     return true;
  918. }
  919. //---------------------------------------------------------------------------
  920. bool IsValidBVVRE(AnsiString ansi_str, int &i_vre)
  921. {
  922.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, i_vre, 0, 1), RANGE_ERR_BV_VRE);
  923.     return true;
  924. }
  925. //---------------------------------------------------------------------------
  926. bool IsValidBVVOF(AnsiString ansi_str, int &i_vof)
  927. {
  928.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, i_vof, 0, 127), RANGE_ERR_BV_VOF);
  929.     return true;
  930. }
  931. //---------------------------------------------------------------------------
  932. bool IsValidBVARE(AnsiString ansi_str, int &i_are)
  933. {
  934.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, i_are, 0, 1), RANGE_ERR_BV_ARE);
  935.     return true;
  936. }
  937. //---------------------------------------------------------------------------
  938. bool IsValidBVAOF(AnsiString ansi_str, int &i_aof)
  939. {
  940.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, i_aof, 0, 127), RANGE_ERR_BV_AOF);
  941.     return true;
  942. }
  943. //==============================================================================
  944. //////////////////////////////////   CTS   /////////////////////////////////////
  945. //==============================================================================
  946. //------------------------------------------------------------------------------
  947. bool IsValidCTSTemperature(AnsiString ansi_str, float &temperature)
  948. {
  949.     RANGE_CHECK_ERROR(!AnsiString_To_Float(ansi_str, temperature, -20.0, 70.0), RANGE_ERR_CTS_TEMPERATURE);
  950.     return true;
  951. }
  952. //------------------------------------------------------------------------------
  953. bool IsValidCTSTemperatureStep(AnsiString ansi_str, float &temperature_step)
  954. {
  955.     RANGE_CHECK_ERROR(!AnsiString_To_Float(ansi_str, temperature_step, 0.1, 90.0), RANGE_ERR_CTS_TEMPERATURE_STEP);
  956.     return true;
  957. }
  958. //==============================================================================
  959. ///////////////////////////////   register   ///////////////////////////////////
  960. //==============================================================================
  961. bool IsValidHexBsiAddr(AnsiString ansi_str, unsigned int &bsi_addr)
  962. {
  963.     RANGE_CHECK_ERROR(!AnsiString_Hex_To_UnsignedInt(ansi_str, bsi_addr), RANGE_ERR_REG_ADDR);
  964.     return true;
  965. }
  966. //------------------------------------------------------------------------------
  967. bool IsValidDecBsiAddr(AnsiString ansi_str, unsigned int &bsi_addr)
  968. {
  969.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedInteger(ansi_str, bsi_addr, 1, 4294967295), RANGE_ERR_REG_ADDR);
  970.     return true;
  971. }
  972. //------------------------------------------------------------------------------
  973. bool IsValidHexBsiData(AnsiString ansi_str, unsigned int &bsi_data)
  974. {
  975.     RANGE_CHECK_ERROR(!AnsiString_Hex_To_UnsignedInt(ansi_str, bsi_data), RANGE_ERR_REG_VALUE);
  976.     return true;
  977. }
  978. //------------------------------------------------------------------------------
  979. bool IsValidDecBsiData(AnsiString ansi_str, unsigned int &bsi_data)
  980. {
  981.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedInteger(ansi_str, bsi_data, 1, 4294967295), RANGE_ERR_REG_VALUE);
  982.     return true;
  983. }