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

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.  *   T_META_factory_calibration.h
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *  Factory calibration thread header
  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. #ifndef  _T_META_FACTORY_CALIBRATION_H_
  67. #define  _T_META_FACTORY_CALIBRATION_H_
  68. //---------------------------------------------------------------------------
  69. #include <Classes.hpp>
  70. #include "meta.h"
  71. #include "meta_msg.h"
  72. #include "rf_common.h"
  73. #include "META_factory_type.h"
  74. #include "META_factory_cfg.h"
  75. #include "meta_const.h"
  76. #include "crystal_afc.h"
  77. #ifndef  _RF_PM_H_
  78. #include "rf_pm.h"
  79. #endif
  80. #ifndef  _RF_APC_8PSK_H_
  81. #include "rf_apc_8psk.h"
  82. #endif
  83. #ifndef  _RF_STOP_H_
  84. #include "rf_stop.h"
  85. #endif
  86. #ifndef _RF_MULTISLOTTX_H_
  87. #include "rf_multislottx.h"
  88. #endif
  89. #ifndef  _RF_A60111A_REG_H_
  90. #include "rf_a60111a_reg.h"
  91. #endif
  92. // equipment
  93. #ifndef  _RCT_CTRL_H_
  94. #include "rct_ctrl.h"
  95. #endif
  96. #ifndef  _BTT_COMMON_H_
  97. #include "btt_common.h"
  98. #endif
  99. #ifndef  _BTT_CTRL_H_
  100. #include "btt_ctrl.h"
  101. #endif
  102. #ifndef  _WFT_CTRL_H_
  103. #include "wft_ctrl.h"
  104. #endif
  105. #ifndef  _DCS_CTRL_H_
  106. #include "dcs_ctrl.h"
  107. #endif
  108. // calibration
  109. #ifndef _CAL_COMMON_H_
  110. #include "cal_common.h"
  111. #endif
  112. // AFC
  113. #ifndef _AFCCAL_COMMON_H_
  114. #include "afccal_common.h"
  115. #endif
  116. // TX IQ
  117. #ifndef  _RF_TXIQ_RUN_H_
  118. #include "rf_txiq_run.h"
  119. #endif
  120. // APC calibration
  121. #ifndef _APCCAL_COMMON_H_
  122. #include "APCCal_common.h"
  123. #endif
  124. #ifndef _T_TXIQ_COMMON_H_
  125. #include "T_TxIq_common.h"
  126. #endif
  127. #ifndef _T_TXPCL_COMMON_H_
  128. #include "t_txpcl_common.h"
  129. #endif
  130. // ADC calibration
  131. #include "META_factory_ADC_type.h"
  132. // CV
  133. #ifndef  _BB_CV_H_
  134. #include "bb_cv.h"
  135. #endif
  136. // WiFi TX power calibration
  137. #ifndef  _WIFI_CPTX_H_
  138. #include "wifi_cptx.h"
  139. #endif
  140. #ifndef  _WIFI_APC_2400M_H_
  141. #include "wifi_apc_2400m.h"
  142. #endif
  143. #ifndef  _WIFI_STOP_H_
  144. #include "wifi_stop.h"
  145. #endif
  146. #ifndef  _WIFI_ALC_H_
  147. #include "wifi_alc.h"
  148. #endif
  149. // BT
  150. #ifndef  _BT_POWER_H_
  151. #include "bt_power.h"
  152. #endif
  153. #ifndef  _BT_RF_H_
  154. #include "bt_rf.h"
  155. #endif
  156. #ifndef  _BT_CON_H_
  157. #include "bt_con.h"
  158. #endif
  159. #ifndef  _BT_INFO_MT6601_H_
  160. #include "bt_info_mt6601.h"
  161. #endif
  162. #ifndef  _BT_INFO_MT6611_H_
  163. #include "bt_info_mt6611.h"
  164. #endif
  165. extern bool is_suspend_cal;
  166. //---------------------------------------------------------------------------
  167. class T_META_factory_calibration : public TThread
  168. {
  169. friend void ccb_write_agc_to_fdm();
  170. friend void ccb_write_afc_to_fdm();
  171. friend void ccb_write_apc_to_fdm();
  172. friend void ccb_rf_stop();
  173. private:
  174.         // common
  175.         
  176.         
  177.         // age1960
  178.         ViInt16      MeasFcnDone;
  179.         
  180.         AnsiString m_asFreqBank;
  181.         AnsiString as_AgeTaModel;
  182.         
  183.         // common
  184.         
  185.         // log
  186.         //AnsiString ResultBuf;
  187.         
  188.         // equiment
  189.         S_RCT *m_pRct;
  190.         S_BTT *m_pBtt;
  191.         S_WFT *m_pWft;
  192.         S_DCS *m_pDcs;
  193.         S_CAL *m_pCal;
  194.         CRCTCTRL  m_rct_ctrl;
  195.         CDCSCTRL  m_dcs_ctrl;
  196.         CWFTCTRL  m_wft_ctrl;
  197.         CBTTCTRL  m_btt_ctrl;
  198.         // stop
  199.         CRFSTOP MF_rf_stop;
  200.         // Agilent power supply
  201.         ViStatus vistat;
  202.         TMETA_factory_cfg *cfg;
  203.         TStringList *res;
  204.         int i_current_band;  // 0 ~ 4
  205.        
  206.         // token
  207.         short MF_SelectBand_token;
  208.         short MF_rf_pm_token;
  209.         short     MF_rf_afc_token;
  210.         FT_NVRAM_WRITE_REQ    MF_rf_pm_write_rec_req;
  211.         FT_NVRAM_WRITE_CNF    MF_rf_pm_write_rec_cnf;
  212.         DWORD           MF_rf_pm_write_rec_token;
  213.         float MF_rf_pm_power[FrequencyBandCount][PLTABLE_SIZE];
  214.         FT_NVRAM_WRITE_REQ   MF_rf_afc_write_rec_req;
  215.         FT_NVRAM_WRITE_CNF    MF_rf_afc_write_rec_cnf;
  216.         short           MF_rf_afc_write_rec_token;
  217.         short     MF_rf_tx_level_token;
  218.         FT_NVRAM_WRITE_REQ    MF_rf_tx_level_write_rec_req;
  219.         FT_NVRAM_WRITE_CNF    MF_rf_tx_level_write_rec_cnf;
  220.         short           MF_rf_tx_level_write_rec_token;
  221.         int i_MF_pm_buf_size, i_MF_AFC_buf_size, i_MF_ramp_table_buf_size;
  222.         char *MF_fdm_write_buf;
  223.         // common
  224.         short m_sARFCN_C0_GSM850;
  225.         short m_sARFCN_C0_GSM;
  226.         short m_sARFCN_C0_DCS;
  227.         short m_sARFCN_C0_PCS;
  228.         // -----------------------------  AFC  --------------------------
  229.         // afc
  230.         AnsiString m_asAFC_BAND;
  231.         short m_sAFC_ARFCN;
  232.         short m_sDAC1;
  233.         short m_sDAC2;
  234.         short m_sCRYSTAL_DAC1;
  235.         short m_sCRYSTAL_DAC2;
  236.         short m_sN_AFC;
  237.         //ViStatus vis;
  238.         //int vi_AFC_BAND;
  239.         //long l_FreqOffset2;
  240.         float f_Slope;
  241.         int i_Slope_inv;
  242.         short m_sDefault_value;
  243.         short m_sMaxInitAfcDac;
  244.         short m_sMinInitAfcDac;
  245.         double d_max_AfcSlope;
  246.         double d_min_AfcSlope;
  247.         // ---------------------------  crystal AFC  ---------------------
  248.         CRFMULTISLOTTX  RF_MULTI_SLOT_TX_Obj;
  249.         AnsiString  as_CRYSTAL_AFC_BAND;
  250.         short m_sCRYSTAL_AFC_ARFCN;
  251.         double d_CRYSTAL_AFC_TCH_P_DL;
  252.         int i_CRYSTAL_AFC_GSM900_PCL;
  253.         int i_CRYSTAL_AFC_DCS1800_PCL;
  254.         int i_CRYSTAL_AFC_PCS1900_PCL;
  255.         int i_CRYSTAL_AFC_GSM850_PCL;
  256.         short m_sCRYSTAL_AFC_CAL_DAC;
  257.         short m_sCHECK_DAC[2];
  258.         RfSetCrystalCfg_Req   CrystalCfg_req;
  259.         //AnsiString as_CRYSTAL_AFC_MIN_FREQ_ERR_PPM;
  260.         //AnsiString as_CRYSTAL_AFC_MIN_FREQ_ERR_PPM;
  261.         double d_CRYSTAL_AFC_MIN_FREQ_ERR_PPM;
  262.         double d_CRYSTAL_AFC_MAX_FREQ_ERR_PPM;
  263.         double m_dCRYSTAL_AFC_MAX_AFC_TRACK_INIT_FREQ_ERR;
  264.         short m_sCRYSTAL_AFC_FREQ_ERR_MEASUSE_COUNT;
  265.         short m_sCRYSTAL_AFC_RECURSIVE_TIMES;
  266.         
  267.        // CCRYSTALAFC CRYSTAL_AFC_Object;
  268.         ViInt32   PFERIntegrity;
  269.         ViReal64  PFERRMSError;
  270.         ViReal64  PFERPeakError;
  271.         ViReal64  PFERFreqError;
  272.         ViReal64  FreqError[CAP_ID_NUM];
  273.         double    d_CAL_Center_Freq;
  274.         double    FreqErrorPPM;
  275.         //int init_cap_id;
  276.         //int first_cap_id;
  277.         //int last_cap_id;
  278.         S_CAPID_FREQ_ERR  min_CapIdFreqErr;
  279.         S_CAPID_FREQ_ERR  cal_CapIdFreqErr;
  280.         S_CAPID_FREQ_ERR  chk_CapIdFreqErr[2];
  281.         bool m_bBypassCapIDCal;
  282.         bool m_bFreqErrIncrease;
  283.         bool m_bFirstAfcTracking;
  284.         // -----------------------  RX path loss  -------------------------
  285.         short iN_PM;
  286.         char cM_PM;
  287.         AnsiString as_gsm850_max_rx_loss_p, as_gsm850_min_rx_loss_p;
  288.         AnsiString as_gsm900_max_rx_loss_p, as_gsm900_min_rx_loss_p;
  289.         AnsiString as_dcs1800_max_rx_loss_p, as_dcs1800_min_rx_loss_p;
  290.         AnsiString as_pcs1900_max_rx_loss_p, as_pcs1900_min_rx_loss_p;
  291.         // ----------------------  IP2  ------------------------------------
  292.         short m_sIP2_arfcn_C0_GSM;
  293.         short m_sIP2_arfcn_C0_DCS;
  294.         short m_sIP2_arfcn_C0_PCS;
  295.         short m_sIP2_arfcn_C0_GSM850;
  296.         //short m_sIP2_arfcn_TCH_GSM;
  297.         //short m_sIP2_arfcn_TCH_DCS;
  298.         //short m_sIP2_arfcn_TCH_PCS;
  299.         //short m_sIP2_arfcn_TCH_GSM850;
  300.         double d_IP2_CAL_P_DL_ON_SKY;
  301.         double d_IP2_CAL_P_DL_ON_MT;
  302.         double d_IP2_CAL_P_DL_OFF_SKY;
  303.         double d_IP2_CAL_P_DL_OFF_MT;
  304.         double d_IP2_CHECK_P_DL_ON;
  305.         double d_IP2_CHECK_P_DL_OFF;
  306.         double d_IP2_GAIN;
  307.         short i_IP2_N_PM;
  308.         char c_IP2_M_PM;
  309.         int m_iIP2_MAX_IDC_SKY74045;
  310.         int m_iIP2_MAX_QDC_SKY74045;
  311.         int m_iIP2_MAX_IDC_SKY74117;
  312.         int m_iIP2_MAX_QDC_SKY74117;
  313.         int m_iIP2_MAX_IDC_MT6139;
  314.         int m_iIP2_MAX_QDC_MT6139;
  315.         // sky
  316.         int i_IP2_ICORRECTION1_SKY74045;
  317.         int i_IP2_QCORRECTION1_SKY74045;
  318.         int i_IP2_ICORRECTION2_SKY74045;
  319.         int i_IP2_QCORRECTION2_SKY74045;
  320.         int i_IP2_ICORRECTION1_SKY74117;
  321.         int i_IP2_QCORRECTION1_SKY74117;
  322.         int i_IP2_ICORRECTION2_SKY74117;
  323.         int i_IP2_QCORRECTION2_SKY74117;
  324.         int i_IP2_ICORRECTION[2];
  325.         int i_IP2_QCORRECTION[2];
  326.         signed char          EvalPmrcx_I_sky[2];
  327.         signed char          EvalPmrcx_Q_sky[2];
  328.         unsigned int  EvalPmcx_I_sky[2];
  329.         unsigned int  EvalPmcx_Q_sky[2];
  330.         int  EvalMDC1_I_sky[2];
  331.         int  EvalMDC2_I_sky[2];
  332.         int  EvalMDC1_Q_sky[2];
  333.         int  EvalMDC2_Q_sky[2];
  334.         unsigned int  Evalcx_I_sky;
  335.         unsigned int  Evalcx_Q_sky;
  336.         c_RFMod_Sky74045_Coef_T   mc_sky74045_coef;
  337.         c_RFMod_Sky74117_Coef_T   mc_sky74117_coef;
  338. //        RF_SKY74045_Coef_T   sky74045_coef;
  339.        // int  final_rfid;
  340.         // MT6139
  341.         uc_RFMod_MT6139_Coef_T     uc_mt6139_coef;
  342.        // RF_MT6139B_Coef_T     mt6139_coef;
  343.         S_MT6139_CW7  m_mt6139_cw7;
  344.         int i_IP2_AMCODEI1;
  345.         int i_IP2_AMCODEQ1;
  346.         int i_IP2_AMCODEI2;
  347.         int i_IP2_AMCODEQ2;
  348.         int i_IP2_AMCODEI[2];
  349.         int i_IP2_AMCODEQ[2];
  350.         int EvalMDC1_I_mt6139[2];
  351.         int EvalMDC2_I_mt6139[2];
  352.         int EvalMDC1_Q_mt6139[2];
  353.         int EvalMDC2_Q_mt6139[2];
  354.         //-----------------------------  phase error  ----------------------
  355.       // AnsiString as_PHASE_ERROR_BAND;
  356.       // int vi_PHASE_ERROR_BAND;
  357.       // short m_sPHASE_ERROR_ARFCN;
  358.       // int i_PHASE_ERROR_PCL;
  359.       // int i_PHASE_ERROR_MEASUSE_COUNT;
  360.       // double d_PHASE_ERROR_RMS_ERROR;
  361.       // short  MF_rf_tx_level_token_TrOff;
  362.       // short  MF_rf_setbbtx_cfg_token_TrOff;
  363.       // ViInt32   IQTIntegrity;
  364.       // ViReal64  IQTSpurFreq;
  365.       // ViReal64  IQTSpurLevel;
  366.       // ViReal64  IQTResultsArray[age1960_IQ_ARRAY_MIN];
  367.       // ViReal64  IQTFreqsArray[age1960_IQ_ARRAY_MIN];
  368.      //  ViInt32   IQTTuningCount;
  369.      //  ViReal64  d_OOS[4];
  370.      //  ViReal64  d_POOS[4];
  371.      //  ViReal64  d_SBS[3];
  372.      //  ViReal64  d_PSBS[3];
  373.      //  ViReal64  CheckPhaseErr;
  374.      //
  375.      //  int  begin_Offset_IQ;
  376.      //  int  end_Offset_IQ;
  377.      //  int  last_Off_IQ[2];
  378.       // sIQ  Offset_IQ;
  379.      //  sOffsetIQPhaseErr  min_OffIPhErr;
  380.      //  sOffsetIQPhaseErr  min_OffQPhErr;
  381.      //  sOffsetIQPhaseErr  cal_OffIQPhErr[2];
  382.        //-----------------------------  TX IQ  ----------------------
  383.        CRFTXIQRUN m_cTXIQ_RUN_Obj;
  384.        unsigned int m_uiTX_IQ_MEASUREMENT_COUNT;
  385.        AnsiString m_asTX_IQ_BAND;
  386.        int m_viTX_IQ_BAND;
  387.        short m_sTX_IQ_ARFCN;
  388.        short m_sTX_IQ_PCL;
  389.        double m_dTX_IQ_DC_OFFSET_MAX;
  390.        double m_dTX_IQ_GAIN_IMBALANCE_MAX;
  391.        AnsiString m_asTX_IQ_BAND_HIGH;
  392.        int m_viTX_IQ_BAND_HIGH;
  393.        short m_sTX_IQ_ARFCN_HIGH;
  394.        short m_sTX_IQ_PCL_HIGH;
  395.        double m_dTX_IQ_DC_OFFSET_MAX_HIGH;
  396.        double m_dTX_IQ_GAIN_IMBALANCE_MAX_HIGH;
  397.       // RfBBTXCfg2   m_sRfBbTxCfg2Req;
  398.       // RfBBTXCfg2   m_sRfBbTxCfg2Cnf;
  399.        //-----------------------------  TX IQ imbalance  ----------------------
  400. //       AnsiString as_TX_IQ_IMBALANCE_BAND;
  401. //       int vi_TX_IQ_IMBALANCE_BAND;
  402. //       short m_sTX_IQ_IMBALANCE_ARFCN;
  403. //       int i_TX_IQ_IMBALANCE_PCL;
  404. //       double d_TX_IQ_IMBALANCE_MAX;
  405.         // -----------------------------------  TX -------------------
  406.         char chTXPowerON[100], chTXPowerOFF[100];
  407.         AnsiString TxdBmStr;
  408.         double d_P_DL;
  409.         int i_TX_level_count;
  410.         int i_TX_level_index_high, i_TX_level_index_mid, i_TX_level_index_low;
  411.         int i_N_TX ; // TX frames
  412.         int i_TXlevelRecusiveTimes;
  413.         int CheckIndex;
  414.         #ifdef _MYDEBUG_
  415.         unsigned short hr,min,sec,ms;
  416.         #endif
  417.        TNotifyEvent neSuccess;
  418.        TNotifyEvent neByUser;
  419.        //------------------------------    APC   -------------------------
  420.        int m_iApcDcOffset;
  421.        AnsiString m_as_gsm400_tx_cal_pcl, m_as_gsm400_tx_2cal_pcl, m_as_gsm400_tx_pcl, m_as_gsm400_tx_check_pcl, m_as_gsm400_max_p, m_as_gsm400_wanted_p, m_as_gsm400_min_p, m_as_gsm400_c, m_as_gsm400_correction;
  422.        AnsiString m_as_gsm850_tx_cal_pcl, m_as_gsm850_tx_2cal_pcl, m_as_gsm850_tx_pcl, m_as_gsm850_tx_check_pcl, m_as_gsm850_max_p, m_as_gsm850_wanted_p, m_as_gsm850_min_p, m_as_gsm850_c, m_as_gsm850_correction;
  423.        AnsiString m_as_gsm900_tx_cal_pcl, m_as_gsm900_tx_2cal_pcl, m_as_gsm900_tx_pcl, m_as_gsm900_tx_check_pcl, m_as_gsm900_max_p, m_as_gsm900_wanted_p, m_as_gsm900_min_p, m_as_gsm900_c, m_as_gsm900_correction;
  424.        AnsiString m_as_dcs1800_tx_cal_pcl, m_as_dcs1800_tx_2cal_pcl, m_as_dcs1800_tx_pcl, m_as_dcs1800_tx_check_pcl, m_as_dcs1800_max_p, m_as_dcs1800_wanted_p, m_as_dcs1800_min_p, m_as_dcs1800_c, m_as_dcs1800_correction;
  425.        AnsiString m_as_pcs1900_tx_cal_pcl, m_as_pcs1900_tx_2cal_pcl, m_as_pcs1900_tx_pcl, m_as_pcs1900_tx_check_pcl, m_as_pcs1900_max_p, m_as_pcs1900_wanted_p, m_as_pcs1900_min_p, m_as_pcs1900_c, m_as_pcs1900_correction;
  426.        AnsiString m_as_gsm850_tx_4cal_pcl;
  427.        AnsiString m_as_gsm900_tx_4cal_pcl;
  428.        AnsiString m_as_dcs1800_tx_4cal_pcl;
  429.        AnsiString m_as_pcs1900_tx_4cal_pcl;
  430.        AnsiString m_as_gsm850_tx_6cal_pcl;
  431.        AnsiString m_as_gsm900_tx_6cal_pcl;
  432.        AnsiString m_as_dcs1800_tx_6cal_pcl;
  433.        AnsiString m_as_pcs1900_tx_6cal_pcl;
  434.        AnsiString m_as_gsm850_tx_6cal_dac;
  435.        AnsiString m_as_gsm900_tx_6cal_dac;
  436.        AnsiString m_as_dcs1800_tx_6cal_dac;
  437.        AnsiString m_as_pcs1900_tx_6cal_dac;
  438.        short m_s_gsm850_epsk_tx_1cal_pcl;
  439.        short m_s_gsm900_epsk_tx_1cal_pcl;
  440.        short m_s_dcs1800_epsk_tx_1cal_pcl;
  441.        short m_s_pcs1900_epsk_tx_1cal_pcl;
  442.        AnsiString m_as_gsm400_epsk_tx_cal_pcl, m_as_gsm400_epsk_tx_2cal_pcl, m_as_gsm400_epsk_tx_pcl, m_as_gsm400_epsk_tx_check_pcl, m_as_gsm400_epsk_max_p, m_as_gsm400_epsk_wanted_p, m_as_gsm400_epsk_min_p, m_as_gsm400_epsk_c, m_as_gsm400_epsk_correction;
  443.        AnsiString m_as_gsm850_epsk_tx_cal_pcl, m_as_gsm850_epsk_tx_2cal_pcl, m_as_gsm850_epsk_tx_pcl, m_as_gsm850_epsk_tx_check_pcl, m_as_gsm850_epsk_max_p, m_as_gsm850_epsk_wanted_p, m_as_gsm850_epsk_min_p, m_as_gsm850_epsk_c, m_as_gsm850_epsk_correction;
  444.        AnsiString m_as_gsm900_epsk_tx_cal_pcl, m_as_gsm900_epsk_tx_2cal_pcl, m_as_gsm900_epsk_tx_pcl, m_as_gsm900_epsk_tx_check_pcl, m_as_gsm900_epsk_max_p, m_as_gsm900_epsk_wanted_p, m_as_gsm900_epsk_min_p, m_as_gsm900_epsk_c, m_as_gsm900_epsk_correction;
  445.        AnsiString m_as_dcs1800_epsk_tx_cal_pcl, m_as_dcs1800_epsk_tx_2cal_pcl, m_as_dcs1800_epsk_tx_pcl, m_as_dcs1800_epsk_tx_check_pcl, m_as_dcs1800_epsk_max_p, m_as_dcs1800_epsk_wanted_p, m_as_dcs1800_epsk_min_p, m_as_dcs1800_epsk_c, m_as_dcs1800_epsk_correction;
  446.        AnsiString m_as_pcs1900_epsk_tx_cal_pcl, m_as_pcs1900_epsk_tx_2cal_pcl, m_as_pcs1900_epsk_tx_pcl, m_as_pcs1900_epsk_tx_check_pcl, m_as_pcs1900_epsk_max_p, m_as_pcs1900_epsk_wanted_p, m_as_pcs1900_epsk_min_p, m_as_pcs1900_epsk_c, m_as_pcs1900_epsk_correction;
  447.        AnsiString m_as_gsm400_epsk_tx_4cal_pcl;
  448.        AnsiString m_as_gsm850_epsk_tx_4cal_pcl;
  449.        AnsiString m_as_gsm900_epsk_tx_4cal_pcl;
  450.        AnsiString m_as_dcs1800_epsk_tx_4cal_pcl;
  451.        AnsiString m_as_pcs1900_epsk_tx_4cal_pcl;
  452.        short m_sMAX_APC_DAC;
  453.        char m_cTSC;
  454.        ViReal64 m_virTX;  // double
  455.        ViInt32  m_viPowerInteg;
  456.        AnsiString m_asTSC;
  457.        AnsiString m_asAPC_Check;
  458.        double m_dAPC_Delta;
  459.        unsigned short real_support_band_num;
  460.        unsigned short m_usPCLDacValue[MAX_SUPPORT_BAND_NUM][RF_TX_LEVEL_6_CAL_COUNT];
  461.        unsigned short m_usPCLDacValue_EPSK[MAX_SUPPORT_BAND_NUM][RF_TX_LEVEL_6_CAL_COUNT];
  462.        unsigned short m_usPCLDacValue_ideal[MAX_SUPPORT_BAND_NUM][RF_RAMP_TABLE_TX_LEVEL_COUNT];
  463.        unsigned short m_usPCLDacValue_ideal_EPSK[MAX_SUPPORT_BAND_NUM][RF_RAMP_TABLE_TX_LEVEL_COUNT];
  464.        double m_dPCL_dBm[MAX_SUPPORT_BAND_NUM][RF_TX_LEVEL_6_CAL_COUNT];
  465.        double m_dPCL_dBm_EPSK[MAX_SUPPORT_BAND_NUM][RF_TX_LEVEL_6_CAL_COUNT];
  466.        double m_dPCL_power[MAX_SUPPORT_BAND_NUM][RF_TX_LEVEL_6_CAL_COUNT];
  467.        double m_dPCL_power_EPSK[MAX_SUPPORT_BAND_NUM][RF_TX_LEVEL_6_CAL_COUNT];
  468.        double m_dPCL_power_ideal[MAX_SUPPORT_BAND_NUM][RF_RAMP_TABLE_TX_LEVEL_COUNT];
  469.        double m_dPCL_dbm_ideal[MAX_SUPPORT_BAND_NUM][RF_RAMP_TABLE_TX_LEVEL_COUNT];
  470.        double m_dV_set[MAX_SUPPORT_BAND_NUM][RF_TX_LEVEL_6_CAL_COUNT];
  471.        double m_dV_set_EPSK[MAX_SUPPORT_BAND_NUM][RF_TX_LEVEL_6_CAL_COUNT];
  472.        double m_dRload_high[MAX_SUPPORT_BAND_NUM], Rload_low[MAX_SUPPORT_BAND_NUM];
  473.        double m_dK1_high[MAX_SUPPORT_BAND_NUM], K1_low[MAX_SUPPORT_BAND_NUM];
  474.        double m_dV_set_ideal[MAX_SUPPORT_BAND_NUM][RF_RAMP_TABLE_TX_LEVEL_COUNT];
  475.       // bool TX_PCL_OUT_OF_RANGE_FLAG;
  476.        // Skyworks 77328
  477.        double m_dSKY77328_GSM850_MAX_HIGH_APC_DC_OFFSET_P;
  478.        double m_dSKY77328_GSM850_WANTED_HIGH_APC_DC_OFFSET_P;
  479.        double m_dSKY77328_GSM850_MIN_HIGH_APC_DC_OFFSET_P;
  480.        double m_dSKY77328_GSM900_MAX_HIGH_APC_DC_OFFSET_P;
  481.        double m_dSKY77328_GSM900_WANTED_HIGH_APC_DC_OFFSET_P;
  482.        double m_dSKY77328_GSM900_MIN_HIGH_APC_DC_OFFSET_P;
  483.        double m_dSKY77328_DCS1800_MAX_HIGH_APC_DC_OFFSET_P;
  484.        double m_dSKY77328_DCS1800_WANTED_HIGH_APC_DC_OFFSET_P;
  485.        double m_dSKY77328_DCS1800_MIN_HIGH_APC_DC_OFFSET_P;
  486.        double m_dSKY77328_PCS1900_MAX_HIGH_APC_DC_OFFSET_P;
  487.        double m_dSKY77328_PCS1900_WANTED_HIGH_APC_DC_OFFSET_P;
  488.        double m_dSKY77328_PCS1900_MIN_HIGH_APC_DC_OFFSET_P;
  489.        double m_dSKY77328_GSM850_MAX_LOW_APC_DC_OFFSET_P;
  490.        double m_dSKY77328_GSM850_WANTED_LOW_APC_DC_OFFSET_P;
  491.        double m_dSKY77328_GSM850_MIN_LOW_APC_DC_OFFSET_P;
  492.        double m_dSKY77328_GSM900_MAX_LOW_APC_DC_OFFSET_P;
  493.        double m_dSKY77328_GSM900_WANTED_LOW_APC_DC_OFFSET_P;
  494.        double m_dSKY77328_GSM900_MIN_LOW_APC_DC_OFFSET_P;
  495.        double m_dSKY77328_DCS1800_MAX_LOW_APC_DC_OFFSET_P;
  496.        double m_dSKY77328_DCS1800_WANTED_LOW_APC_DC_OFFSET_P;
  497.        double m_dSKY77328_DCS1800_MIN_LOW_APC_DC_OFFSET_P;
  498.        double m_dSKY77328_PCS1900_MAX_LOW_APC_DC_OFFSET_P;
  499.        double m_dSKY77328_PCS1900_WANTED_LOW_APC_DC_OFFSET_P;
  500.        double m_dSKY77328_PCS1900_MIN_LOW_APC_DC_OFFSET_P;
  501.        int  i_SKY77328_DAC_Delta;
  502.        double d_SKY77328_GSM850_M;
  503.        double d_SKY77328_GSM900_M;
  504.        double d_SKY77328_DCS1800_M;
  505.        double d_SKY77328_PCS1900_M;
  506.        int    i_SKY77328_GSM850_TARGET_PCL;
  507.        int    i_SKY77328_GSM900_TARGET_PCL;
  508.        int    i_SKY77328_DCS1800_TARGET_PCL;
  509.        int    i_SKY77328_PCS1900_TARGET_PCL;
  510.        AnsiString m_asAXIOM502_GSM850_SWITCH_PCL;
  511.        AnsiString m_asAXIOM502_GSM900_SWITCH_PCL;
  512.        AnsiString m_asAXIOM502_DCS1800_SWITCH_PCL;
  513.        AnsiString m_asAXIOM502_PCS1900_SWITCH_PCL;
  514.        // EPSK APC
  515.        CRFAPC8PSK  RF_APC_8PSK_Obj;
  516.        CRFA60111AREG m_RF_A60111A_REG_Obj;
  517.        //-------------------------  ADC calibration  -----------------------
  518.        int i_ADC_V1;
  519.        int i_ADC_V2;
  520.        int i_ADC_CHECK_VOLTAGE;
  521.        int i_NORMAL_VOLTAGE;
  522.        int i_CURRENT_LIMIT;
  523.        int i_MAX_BATTERY_ADC_SLOPE;
  524.        int i_MIN_BATTERY_ADC_SLOPE;
  525.        int i_MAX_BATTERY_ADC_OFFSET;
  526.        int i_MIN_BATTERY_ADC_OFFSET;
  527.        int i_BATTERY_CHANNEL;
  528.        int i_CHARGER_CHANNEL;
  529.        double d_ADC_RESISTANCE;
  530.        double d_MAX_VOLTAGE_DIFFERENCE;
  531.        double d_MAX_CURRENT_DIFFERENCE;
  532.        int i_ADC_MEASUREMENT_COUNT;
  533.        META_RESULT  MetaResult;
  534.        short BBID_ADC;
  535.        AnsiString as_ID;
  536.        float ADC_Measure_Voltage[3];
  537.        float BATTERY_ADC_Output[3];
  538.        float CHARGER_ADC_Output[3];
  539.        float BATTERY_ADC_Predict_Voltage;
  540.        float CHARGER_ADC_Predict_Voltage;
  541.        // sub-function result
  542.        bool result;
  543.        // CV
  544.        char m_cMAX_CV_STEP;
  545.        char m_cMIN_CV_STEP;
  546.        CBBCV m_cBB_CV_Obj;
  547.        // WiFi common
  548.        AnsiString m_asWiFi_Support;
  549.        //------------------------ WiFi TX power calibration ----------------
  550.        CWIFICPT   m_cWIFI_CPT_Obj;
  551.        CWIFISTOP  m_cWIFI_STOP_Obj;
  552.        
  553.        double m_dCCK_MAX_P;
  554.        double m_dCCK_WANTED_P;
  555.        double m_dCCK_MIN_P;
  556.        double m_dCCK_Delta;
  557.        int    m_iCCK_C;
  558.        AnsiString m_as802_11B_CAL_CHANNEL;
  559.        AnsiString m_as802_11B_CHECK_CHANNEL;
  560.        double m_dCCK_CAL_RATE;
  561.        WiFi_TestRate_E m_eCCK_CAL_RATE;
  562.        double m_dCCK_CHECK_RATE;
  563.        WiFi_TestRate_E m_eCCK_CHECK_RATE;
  564.        double m_dOFDM_MAX_P;
  565.        double m_dOFDM_WANTED_P;
  566.        double m_dOFDM_MIN_P;
  567.        double m_dOFDM_Delta;
  568.        int    m_iOFDM_C;
  569.        AnsiString m_as802_11G_CAL_CHANNEL;
  570.        AnsiString m_as802_11G_CHECK_CHANNEL;
  571.        double m_dOFDM_CAL_RATE;
  572.        WiFi_TestRate_E m_eOFDM_CAL_RATE;
  573.        double m_dOFDM_CHECK_RATE;
  574.        WiFi_TestRate_E m_eOFDM_CHECK_RATE;
  575.        int    m_iWiFiTxPRecursive_Times;
  576.        // BT common
  577.        CBTCT m_cBT_CT_Obj;
  578.        CBTPOWER m_cBT_POWER_Obj;
  579.        CBTRF m_cBT_RF_Obj;
  580.        AnsiString m_asBD_Address;
  581.        AnsiString m_asInquiry_Enable;
  582.        double m_dBT_DOWNLINK_POWER;
  583.        // BT crystal CAP ID
  584.        unsigned char m_ucBT_CRYSTAL_CAP_ID1;
  585.        unsigned char m_ucBT_CRYSTAL_CAP_ID2;
  586.        unsigned short m_usBT_CRYSTAL_CHANNEL;
  587.        double m_dBT_CRYSTAL_MAX_FREQ_ACCURACY;
  588.        unsigned int m_uiMIN_POLL_COUNT;
  589.        unsigned int m_uiMAX_POLL_COUNT;
  590.        
  591. protected:
  592.         void __fastcall Execute();
  593. public:
  594.         TYPE_META_FACTORY_CONTROL ctrl;
  595.         TYPE_META_FACTORY_ADC_CONTROL ADC_ctrl;
  596.         TStringList *log;
  597.         __fastcall T_META_factory_calibration(
  598.                                                bool CreateSuspended,
  599.                                                TYPE_META_FACTORY_CONTROL MF_ctrl,
  600.                                                TYPE_META_FACTORY_ADC_CONTROL MF_ADC_ctrl, // for ADC calibration
  601.                                                TMETA_factory_cfg *MF_cfg,
  602.                                                TStringList *st_Log,
  603.                                                TNotifyEvent ne_onTermSuccess,
  604.                                                TNotifyEvent ne_onTermByUser,
  605.                                                AnsiString as_ID_par,
  606.                                                AnsiString as_TaModel,
  607.                                                S_RCT  *p_Rct,
  608.                                                S_BTT  *p_Btt,
  609.                                                S_WFT  *p_Wft,
  610.                                                S_DCS  *p_Dcs,
  611.                                                S_CAL  *p_Cal
  612.                                              );
  613.       __fastcall ~T_META_factory_calibration();
  614.       bool WriteCalResultFile(void);
  615.       // Agilent power supply
  616.       bool __fastcall SetNormalVoltageAndCloseAgilentPowerSupply(void);
  617.       bool __fastcall SetAgilentPowerSupplyToV1Voltage(void);
  618.       bool __fastcall SetAgilentPowerSupplyToV2Voltage(void);
  619.       bool __fastcall SetAgilentPowerSupplyToCheckVoltage(void);
  620.       bool __fastcall AgilentPowerSupplyMeasureVoltage(ViReal64 *measvoltage_par);
  621.       // timer
  622.       bool __fastcall RestartTimerADCCal(int TimeoutID);
  623.       bool __fastcall RestartTimerCal(int TimeoutID);
  624.       // calibration procedure
  625.       bool __fastcall WriteInitValueToNVRAM(void);
  626.       bool __fastcall AFCCal(void);
  627.       bool __fastcall AFCSlopeCal(int vi_band, short bch, float &slope, unsigned short &init_value);
  628.       bool __fastcall CrystalAFCCapIDCommon(void);
  629.       bool __fastcall CrystalAFCCapIDPreCheck(void);
  630.       bool __fastcall CrystalAFCCapIDCalInc(void);
  631.       bool __fastcall CrystalAFCCapIDCalDec(void);
  632.       bool __fastcall CrystalAFCCapIDCheck_Normal(void);
  633.       bool __fastcall CrystalAFCCapIDCheck_BypassCapIDCal(void);
  634.       bool __fastcall CrystalAFCMeasureRxFreqErr(void);
  635.       bool __fastcall CrystalTXAfcOffsetCal(void);
  636.       int __fastcall  Get_CRYSTAL_AFC_PCL(AnsiString as_band);
  637.       bool __fastcall RxPathLossCal(void);
  638.       bool __fastcall IP2Cal(void);
  639.       bool __fastcall IP2Cal_sky74045_cal(void);
  640.       bool __fastcall IP2Cal_sky74045_check(void);
  641.       bool __fastcall IP2Cal_sky74117_cal(void);
  642.       bool __fastcall IP2Cal_sky74117_check(void);
  643.       bool __fastcall IP2Cal_mt6139b_cal(void);
  644.       bool __fastcall IP2Cal_mt6139c_cal(void);
  645.       bool __fastcall IP2Cal_mt6139_check(void);
  646.       bool __fastcall TXPCLCal(void);
  647.       bool __fastcall TXPCLCal_FullCal(void);
  648.       bool __fastcall TXPCLCal_EPSK_FullCal(void);
  649.       bool __fastcall TXPCLCal_EPSK_FullCal_A60111A(void);
  650.       bool __fastcall TXPCLCal_EPSK_1cal(void);
  651.       bool __fastcall TXPCLCal_2cal(void);
  652.       bool __fastcall TXPCLCal_EPSK_2cal(void);
  653.       bool __fastcall TXPCLCal_3cal(void);
  654.       bool __fastcall TXPCLCal_EPSK_3cal(void);
  655.       bool __fastcall TXPCLCal_4cal(void);
  656.       bool __fastcall TXPCLCal_6cal_DAC(void);
  657.       bool __fastcall TXPCLCal_EPSK_4cal(void);
  658.       bool __fastcall TXPCLCal_RFMD3140_3PCLEvalDac(void);
  659.       bool __fastcall TXPCLCal_EvalDac_RenesasPF08155B(void);
  660.       bool __fastcall TXPCLCal_EvalDac_RenesasPF09016B(void);
  661.       bool __fastcall TXPCLCal_CalApcDcOffset_Skyworks77328(void);
  662.       bool __fastcall TXPCLCal_EvalDac_Skyworks77328(void);
  663.       bool __fastcall TXPCLCal_EPSK_Skyworks77316_cal(void);
  664.       bool __fastcall TXPCLCal_EvalDac_Skyworks77316_GMSK(void);
  665.       bool __fastcall TXPCLCal_EvalDac_Skyworks77316_EPSK(void);
  666.       bool __fastcall TXPCLCal_EvalDac_RFMD3159_FixedPaBias(void);
  667.       bool __fastcall TXPCLCal_Axiom502_3PCLEvalDac(void);
  668.       bool __fastcall TXPCLCal_EvalDac_A60111A_EPSK(void);
  669.       bool __fastcall TXPCLCal_check(void);
  670.       bool __fastcall TXPCLCal_EPSK_check(void);
  671.       bool __fastcall TXIqCal(void);
  672.       bool __fastcall TXIqCal_EPSK(void);
  673.       bool __fastcall TXIqCheck_EPSK(bool low_band, int stage, S_TXIQ iq, S_TXIQ_RESULT &result);
  674.       ViReal64 __fastcall get_TX_Original_Offset(ViReal64  *p_IQTFreqs, ViReal64 *p_IQTResults, ViInt32   IQTTuningCount);
  675.       ViReal64 __fastcall get_TX_IQ_Imbalance(ViReal64  *p_IQTFreqs, ViReal64 *p_IQTResults, ViInt32   IQTTuningCount);
  676.       bool __fastcall EquConfigPFER( void );
  677.       bool __fastcall FetchAverageFreqErr( ViReal64&  AvgFreqErr );
  678.       bool __fastcall FetchSigAverageFreqErr( ViReal64&  AvgFreqErr );
  679.       bool __fastcall FetchRMSPhaseErr( ViReal64*  RMSPhaseErr );
  680.       bool __fastcall ADCCal(void);
  681.       bool __fastcall CVCal_cal(void);
  682.       bool __fastcall CVCal_check(void);
  683.       bool __fastcall WiFiTxPclCal_cal(void);
  684.       bool __fastcall WiFiTxPclCal_check(void);
  685.       bool __fastcall WiFiTxDcOffsetCal(void);
  686.       bool __fastcall BTCrystalCapIDCal_MT6601(void);
  687.       bool __fastcall BTCrystalCapIDCheck_MT6601(void);
  688.       bool __fastcall BTCrystalCapIDCal_MT6611(void);
  689.       bool __fastcall BTCrystalCapIDCheck_MT6611(void);
  690.       //------------------------------- CFG -------------------------------
  691.       // GSM/GPRS/EDGE CFG
  692.       void __fastcall Read_Common_CFG(void);
  693.       void __fastcall Read_AFC_CFG(void);
  694.       void __fastcall Read_CrystalAFC_CFG(void);
  695.       void __fastcall Read_RxPathLoss_CFG(void);
  696.       void __fastcall Read_TXPCL_CFG(void);
  697.       void __fastcall Read_EPSK_TXPCL_CFG(void);
  698.       void __fastcall Read_IP2_CFG(void);
  699.       void __fastcall Read_TxIq_CFG(void);
  700.       void __fastcall Read_ADC_CFG(void);
  701.       void __fastcall Read_CV_CFG(void);
  702.       // WiFi CFG
  703.       void __fastcall Read_WiFi_Common_CFG(void);
  704.       void __fastcall Read_WiFi_IQviewInit_CFG(void);
  705.       void __fastcall Read_WiFi_AgeN4010aInit_CFG(void);
  706.       void __fastcall Read_WiFi_TxPcl_CFG(void);
  707.       // BT CFG
  708.       void __fastcall Read_BT_CMU200_CFG(void);
  709.       void __fastcall Read_BT_CBT_CFG(void);
  710.       void __fastcall Read_BT_Common_CFG(void);
  711.       void __fastcall Read_BT_CrystalCapID_CFG(void);
  712.       //------------------------------ cal file ----------------------------
  713.       bool __fastcall Get_CalFilePathName(AnsiString asCalFile, AnsiString asExeName, bool b_CalResultPath, AnsiString& asPathName);
  714.       bool __fastcall WriteIP2CalResultToFile(AnsiString asCalFile, AnsiString asExeName, bool b_CalResultPath, unsigned int rfmod_id, int band);
  715.       bool __fastcall WriteIP2RxAmCalModeToFile(AnsiString asCalFile, AnsiString asExeName, bool b_CalResultPath, unsigned int rfmod_id);
  716.       bool __fastcall WriteAFCCalResultToFile(AnsiString asCalFile, AnsiString asExeName, bool b_CalResultPath);
  717.       bool __fastcall WriteCrystalAFCCalResultToFile(AnsiString asCalFile, AnsiString asExeName, bool b_CalResultPath);
  718.       bool __fastcall WriteAGCCalResultToFile(AnsiString asCalFile, AnsiString asExeName, bool b_CalResultPath, FrequencyBand freqband);
  719.       bool __fastcall WriteTxDcOffsetCalResultToFile(AnsiString asCalFile, AnsiString asExeName, bool b_CalResultPath);
  720.       bool __fastcall WriteAPCCalResultToFile(AnsiString asCalFile, AnsiString asExeName, bool b_CalResultPath, int band);
  721.       bool __fastcall WriteEpskAPCCalResultToFile(AnsiString asCalFile, AnsiString asExeName, bool b_CalResultPath, int band);
  722.       bool __fastcall WriteTxPhaseErrCalResultToFile(AnsiString asCalFile, AnsiString asExeName, bool b_CalResultPath);
  723.       bool __fastcall WriteADCCalResultToFile(AnsiString asCalFile, AnsiString asExeName, bool b_CalResultPath);
  724.       bool __fastcall WriteBtCapIDCalResultToFile(AnsiString asCalFile, AnsiString asExeName, bool b_CalResultPath, BT_ModuleID_S bt_module);
  725.       bool __fastcall WriteWiFiAPCCalResultToFile(AnsiString asCalFile, AnsiString asExeName, bool b_CalResultPath, E_WIFI_GENERATION e_802_11_idx);
  726.       bool __fastcall WriteWiFiALCCalResultToFile(AnsiString asCalFile, AnsiString asExeName, bool b_CalResultPath);
  727.       bool __fastcall WriteWiFiTxDcOffsetCalResultToFile(AnsiString asCalFile, AnsiString asExeName, bool b_CalResultPath);
  728.       // msg
  729.       void PostErrorMsg( ErrorMsg error_msg );
  730.       void CalErrorHandler( ErrorMsg error_msg );
  731.       //
  732.      
  733. };
  734. //---------------------------------------------------------------------------
  735. #endif