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

MTK

开发平台:

C++ Builder

  1. /*****************************************************************************
  2. *  Copyright Statement:
  3. *  --------------------
  4. *  This software is protected by Copyright and the information contained
  5. *  herein is confidential. The software may not be copied and the information
  6. *  contained herein may not be used or disclosed except with the written
  7. *  permission of MediaTek Inc. (C) 2005
  8. *
  9. *  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  10. *  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  11. *  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
  12. *  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  13. *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  14. *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  15. *  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  16. *  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  17. *  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
  18. *  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
  19. *  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
  20. *  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
  21. *
  22. *  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
  23. *  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  24. *  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  25. *  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
  26. *  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  27. *
  28. *  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
  29. *  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
  30. *  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
  31. *  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
  32. *  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
  33. *
  34. *****************************************************************************/
  35. /*****************************************************************************
  36.  *
  37.  * Filename:
  38.  * ---------
  39.  *   rf_apc.h
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   RF APC 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. #ifndef  _RF_APC_H_
  66. #define  _RF_APC_H_
  67. #include <vcl.h>
  68. #include <IniFiles.hpp>
  69. // common
  70. #ifndef  _METAAPP_COMMON_H_
  71. #include "metaapp_common.h"
  72. #endif
  73. #ifndef META_DLL_H
  74. #include "meta.h"
  75. #endif
  76. #ifndef  _MAN_HANDLE_H_
  77. #include "man_handle.h"
  78. #endif
  79. // RF
  80. #ifndef  _RF_COMMON_H_
  81. #include "rf_common.h"
  82. #endif
  83. /*---------------------------------------------------------------------------*/
  84. #define  LOW_VOLTAGE_INDEX     0
  85. #define  MID_VOLTAGE_INDEX     1
  86. #define  HIGH_VOLTAGE_INDEX    2
  87. #define  LOW_TEMPERATURE_INDEX     0
  88. #define  MID_TEMPERATURE_INDEX     1
  89. #define  HIGH_TEMPERATURE_INDEX    2
  90. #define  MAX_RENESAS_BV_WORD_NUM   4
  91. #define  BATTERY_COMPENSATE_SCALE       16384
  92. #define  ADDR_WORD_C3            0x03
  93. #define  ADDR_BV_WORD_6_4_0      0x26
  94. #define  ADDR_BV_WORD_6_5_0      0x2E
  95. #define  ADDR_BV_WORD_6_6_0      0x36
  96. #define  ADDR_BV_WORD_6_7_0      0x3E
  97. #define  RENESAS_W640_INDEX      0
  98. #define  RENESAS_W650_INDEX      1
  99. #define  RENESAS_W660_INDEX      2
  100. #define  RENESAS_W670_INDEX      3
  101. #define  RAMP_UP_INDEX           0
  102. #define  RAMP_DN_INDEX           1
  103. /*---------------------------------------------------------------------------*/
  104. #define  WEIGHT_SCALE            (1<<14)
  105. /*---------------------------------------------------------------------------*/
  106. typedef struct
  107. {
  108.     bool  TadoSupport;
  109.     bool  valid;
  110. }
  111. sRFTADO;
  112. typedef struct
  113. {
  114.     bool  SetRampTableSupport;
  115.     bool  valid;
  116. }
  117. sRFSETRAMP;
  118. //--------------------------------------------------------------------------
  119. class  CRFAPC
  120. {
  121. private:
  122.    // common
  123.    bool  m_bDownloadTrigger;
  124.    CMETAHANDLE m_META_HANDLE_Obj;
  125.    unsigned int  m_uiRfModId;
  126.    E_METAAPP_RESULT_T   m_eConfirmState;
  127.    bool  m_bTADOSupport;
  128.    
  129.    // band
  130.    //RFBandSupport_S  band_support;
  131.    
  132.    // APC
  133.    int   CurWRBand;
  134.    short RampApcLevelToken;
  135.    int          ApcBufSize;
  136.    char        *ApcBuf;
  137.    // Word3
  138.   // int          Word3BufSize;
  139.   // char        *Word3Buf;
  140.    // B5P
  141.    int          B5PBufSize;
  142.    char        *B5PBuf;
  143.    RF_BRIGHT5P_Coef_T        b5p_coef;
  144.    unsigned int W6S;
  145.    unsigned short  m_usHighApcDcOffset[MAX_SUPPORT_BAND_NUM];
  146.    unsigned short  m_usLowApcDcOffset[MAX_SUPPORT_BAND_NUM];
  147.    int  m_iApcLowestPower[MAX_SUPPORT_BAND_NUM];
  148.    l1cal_rampTable_T  m_sApcProfile[MAX_SUPPORT_BAND_NUM];
  149.    bool                   m_bSingleBand;
  150.    RfSetRampApcLevel_Req  RampApcLevelReq;
  151.    // query
  152.    bool  *p_rf_set_ramp_table_support;
  153.    bool  *pb_TwoApcDcOffsetSupport;
  154. protected:
  155. public:
  156.    void  Confirm(E_METAAPP_RESULT_T confirm_state);
  157.    CRFAPC(void);
  158.   ~CRFAPC();
  159.    void  REQ_Finish(void);
  160.    void  REQ_TimeOut(void);
  161.    void  REQ_ReadApcFromNVRAM(void);
  162.    void  CNF_ReadApcFromNVRAM(void);
  163.    void  REQ_WriteApcToNVRAM(void);
  164.    void  CNF_WriteApcToNVRAM(void);
  165.    void  CNF_ReadWord3FromNVRAM(void);
  166.    void  CNF_WriteWord3ToNVRAM(void);
  167.    void  CNF_ReadB5PFromNVRAM(void);
  168.    void  CNF_WriteB5PToNVRAM(void);
  169.    // BV
  170.    void  Compose_word6_4_0(sBVW0 &bvw0, unsigned int &word6_4_0);
  171.    void  Compose_word6_5_0(sBVW0 &bvw0, unsigned int &word6_5_0);
  172.    void  Compose_word6_6_0(sBVW0 &bvw0, unsigned int &word6_6_0);
  173.    void  Compose_word6_7_0(sBVW0 &bvw0, unsigned int &word6_7_0);
  174.    void  DeCompose_word6_x_0(unsigned int &word6_x_0, sBVW0 &bvw6x0);
  175. /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
  176.   // Public member
  177.    void  (*ConfirmCallback)(void);
  178.   // Public interface
  179.    void  REQ_Stop(void);
  180.    void  REQ_Read_APC_From_NVRAM_Start(unsigned int rf_id, bool b_tapo_support);
  181.    void  REQ_Read_APC_From_NVRAM_Single_Band_Start(unsigned int rf_id, int band, bool b_tapo_support);
  182.    void  REQ_Write_APC_To_NVRAM_Start(unsigned int rf_id, bool b_tapo_support);
  183.    void  REQ_Write_APC_To_NVRAM_Single_Band_Start(unsigned int rf_id, int band, bool b_tapo_support);
  184.    void  REQ_Read_B5P_From_NVRAM(void);
  185.    void  REQ_Write_B5P_To_NVRAM(void);
  186.    // ini
  187.    bool  ApcGSM850SectionExist(char *filename);
  188.    bool  ApcGSM900SectionExist(char *filename);
  189.    bool  ApcDCS1800SectionExist(char *filename);
  190.    bool  ApcPCS1900SectionExist(char *filename);
  191.    bool  ApcSectionExist(char *filename, int band);
  192.    bool  AnyApcSectionExist(char *filename);
  193.    bool  RenesasWord3SectionExist(char *filename);
  194.    bool  RenesasWord6sSectionExist(char *filename);
  195.    bool  REQ_Read_APC_From_File_Single_Band(char *filename, unsigned int rf_id, int band, bool b_tapo_support);
  196.    bool  REQ_Read_APC_From_File(char *filename, unsigned int rf_id, bool b_tapo_support);
  197.    bool  REQ_Read_TX_AFC_DAC_offset_From_File(char *filename);
  198.    bool  REQ_Read_TX_AFC_DAC_offset_From_File_Single_Band(char *filename, int band);
  199.    bool  REQ_Read_Word3_From_File(char *filename);
  200.    bool  REQ_Read_Word6s_From_File(char *filename);
  201.    bool  REQ_Read_W64_From_File(TIniFile   *ini_file);
  202.    bool  REQ_Read_W65_From_File(TIniFile   *ini_file);
  203.    bool  REQ_Read_W66_From_File(TIniFile   *ini_file);
  204.    bool  REQ_Read_W67_From_File(TIniFile   *ini_file);
  205.    bool  REQ_Write_APC_To_File_Single_Band(char *filename, unsigned int rf_id, int band, bool b_tapo_support);
  206.    bool  REQ_Write_APC_To_File(char *filename, unsigned int rf_id, bool b_tapo_support);
  207.    bool  REQ_Write_Word3_To_File(char *filename);
  208.    bool  REQ_Write_Word6s_To_File(char *filename);
  209.    bool  REQ_Write_W64_To_File(TIniFile   *ini_file);
  210.    bool  REQ_Write_W65_To_File(TIniFile   *ini_file);
  211.    bool  REQ_Write_W66_To_File(TIniFile   *ini_file);
  212.    bool  REQ_Write_W67_To_File(TIniFile   *ini_file);
  213.    bool  REQ_Write_To_M12193(char *filename, unsigned int rf_id);
  214.    //bool  Req_SetWord3ToReg( RF_BRIGHT5P_Coef_T &rf_mod_coef );
  215.    bool  Req_SetB5PToReg(RF_BRIGHT5P_Coef_T &rf_mod_coef);
  216.    bool  Set_RenesasCoef(RF_BRIGHT5P_Coef_T &rf_mod_coef);
  217.    bool  Get_RenesasCoef(RF_BRIGHT5P_Coef_T &rf_mod_coef);
  218.    void  Set_W6sImmediateBSI(unsigned int w6s);
  219.    bool  Get_BvMode(void);
  220.    void  Set_BvMode(unsigned int bvmode);
  221.    void  Compose_wordC3(sC3Mode c3mode, unsigned int &wordC3);
  222.    void  DeCompose_wordC3(unsigned int wordC3, sC3Mode & c3mode);
  223.    void  REQ_SetW6sImmediateBSI_Start(unsigned int w6s);
  224.    void  REQ_SetW6sImmediateBSI(void);
  225.    void  Req_Rf_SetRampApcLevel(FrequencyBand rf_band, int power_level, int apc_dac);
  226.    // APC calibration
  227.    bool  Get_RealApcDcOffset(bool b_tadosupport, int band_idx, int pcl, int &apc_dc_offset);
  228.    bool  Set_RealApcDcOffset(bool b_tadosupport, int band_idx, int pcl, int apc_dc_offset);
  229.    bool  Get_SubBandWeighting(l1cal_rampTable_T  apc_profile, int arfcn, unsigned short pcl, unsigned short &weight);
  230.    bool  Get_RightTopRampUpValue(l1cal_rampTable_T  apc_profile, E_BANDSEL band_idx, int pcl, unsigned short &ramp_value);
  231.    bool  Get_BatteryCompensate(l1cal_rampTable_T  apc_profile, int voltage_idx, int temp_idx, unsigned short &battery_compensate);
  232.    // callback
  233.    void __stdcall CNF_RfSetRampApcLevl(const unsigned char cnf, const short token, void *usrData);
  234.    // runtime settting
  235.    void  REQ_RfSetRampTable_Start(unsigned int rf_id, bool b_tapo_support, int band_idx);
  236.    bool  REQ_RfSetRampTable(void);
  237.    // query
  238.    void  Query_RfSetRampTable_Start(bool &RfSetRampTableSupport);
  239.    bool  Query_RfSetRampTable(void);
  240.    void  Query_TwoApcDcOffset_Start(bool &b_two_apc_dc_offset_support);
  241.    bool  Query_TwoApcDcOffset(void);
  242.    // Global information
  243.    E_METAAPP_RESULT_T  Get_ConfirmState(void);
  244.    unsigned short Get_HighApcDcOffset(int band_idx);
  245.    void Set_HighApcDcOffset(int band_idx, unsigned short ApcDcOffset);
  246.    unsigned short Get_LowApcDcOffset(int band_idx);
  247.    void Set_LowApcDcOffset(int band_idx, unsigned short ApcDcOffset);
  248.    int  Get_ApcLowestPower(int band_idx);
  249.    void Set_ApcLowestPower(int band_idx, int apc_lowest_power);
  250.    short Get_TxAfcOffset(int band_idx);
  251.    void  Set_TxAfcOffset(int band_idx, short tx_afc_offset);
  252.    l1cal_rampTable_T* Get_ApcProfile(int band_idx);
  253.    void Set_ApcProfile(int band_idx, l1cal_rampTable_T apc_profile);
  254.    unsigned short Get_ApcProfilePower(int band_idx, int pcl_idx);
  255.    void Set_ApcProfilePower(int band_idx, int pcl_idx, unsigned short power);
  256. };
  257. /*---------------------------------------------------------------------------*/
  258. #endif