[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/protocol/interface/general/mrs_gas_capability.h b/mcu/protocol/interface/general/mrs_gas_capability.h
new file mode 100644
index 0000000..84a3772
--- /dev/null
+++ b/mcu/protocol/interface/general/mrs_gas_capability.h
@@ -0,0 +1,1024 @@
+/******************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2007
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*******************************************************************************/
+
+/******************************************************************************
+ * Filename:
+ * --------------------------------------------------------
+ *   mrs_gas_capability.h
+ *
+ * Project:
+ * --------------------------------------------------------
+ *   Multimode
+ *
+ * Description:
+ * --------------------------------------------------------
+ *   The GAS capability stored in MRS context.
+ *
+ * Author:
+ * --------------------------------------------------------
+ * -------
+ *
+ * --------------------------------------------------------
+ * $Log$
+ *
+ * 03 25 2022 jiawei.he
+ * [MOLY00785023] [Gen97] NAS_SV disable GSM through capability update
+ * 	
+ * 	.
+ *
+ * 03 22 2022 ot_deeksha.thakre
+ * [MOLY00785023] [Gen97] NAS_SV disable GSM through capability update
+ *
+ * 09 13 2021 ot_deeksha.thakre
+ * [MOLY00682081] md1:(MCU_core0.vpe0.tc0(VPE0)) [Fatal error(buf)] err_code1:0x00000844 err_code2:0x28A1EC34 err_code3:0xCCCCCCCC MD Offender:ERRC
+ *
+ * 05 28 2021 vend_mtb_aritha026
+ * [MOLY00608949] ??band????
+ * 
+ * [CODE SYNC][NR15.R3.MD700.MP][GAS FDD]
+ *
+ * 10 07 2020 jiawei.he
+ * [MOLY00565617] ¡¾CALL¡¿¡¾H+¡¿¹Ø±Õ»ò´ò¿ªGSM¶ÌÐÅÄÜÁ¦½Ó¿Ú
+ * 	
+ * 	.
+ *
+ * 10 07 2020 vend_mtb_aritha019
+ * [MOLY00565617] ?CALL??H+??????GSM??????
+ *
+ * 12 09 2019 tanmoy.chatterjee
+ * [MOLY00458503] [CODE SYNC][MH4P-POS] patch request about ALPS04309026
+ * .
+ *
+ * 12 05 2019 sapna.ks
+ * [MOLY00443892] [CODE SYNC] A5/4 algorithm related
+ * .
+ *
+ * 02 18 2019 nalin.chovatia
+ * [MOLY00384995] [VMOLY] GEMINI 3.0, AFR, Unify Frequency scan, BGSEARCH
+ * .gemini_afr_bg
+ *
+ * 12 06 2018 yenchih.yang
+ * [MOLY00371156] [VMOLY] NRRC-SEARCH check-in.
+ * Fill physical frequency range during Power Scan.
+ *
+ * 08 20 2018 tanmoy.chatterjee
+ * [MOLY00306148] [NAS] pangu giant CR
+ * [GAS_FDD]Capability changes.
+ *
+ * 08 20 2018 rujing.zhao
+ * [MOLY00347128] [Gen97][TDD GAS] feature development check in
+ * .capability update
+ *
+ * 07 02 2018 sapna.ks
+ * [MOLY00336530] [MT3967][Eiger][O1][MP1][Overnight][Shenzhen][4GMM][SWIFT] [Fatal error(buf)] err_code1:0x00000844 err_code2:0x23BEE7E0 err_code3:0xCCCCCCCC
+ * .
+ *
+ * 05 16 2018 sapna.ks
+ * [MOLY00325825] [MT6761][Merlot][O1][MD Static Test][China][Auto]MFBI flags of E-UTRA/UTRA in Mobile station classmark 3 shall be set to True as supported.
+ * .
+ *
+ * 05 10 2018 rujing.zhao
+ * [MOLY00324570] [SMO][UMOLYE][TDD GAS] legacy option cleanup refine
+ * .
+ *
+ * 04 18 2018 nalin.chovatia
+ * [MOLY00320928] [CODE SYNC] ?????ALPS03474129 ???????patch--????P40 android o??
+ * . black list in UMOLYE
+ *
+ * 04 05 2018 sapna.ks
+ * [MOLY00318108] [MT6765][Cervino][O1][MD Static Test][China][Auto]Bit flag of E-UTRA Wideband RSRQ measurements support should be RAT dependent.
+ * .
+ *
+ * 04 03 2018 sapna.ks
+ * [MOLY00315207] [CODE SYNC] [ES2]VAMOS I & II should be off
+ * .
+ *
+ * 03 13 2018 rujing.zhao
+ * [MOLY00312598] [DSBP] patch back "D-SBP enhancment for all modem" to UMOLYE and TC01.R3.DEV
+ * .
+ *
+ * 01 22 2018 sapna.ks
+ * [MOLY00302832] [CODE SYNC] AT command (+ESCELLINFO) to modem to query serving cell band and arfcn info, when needed.
+ * .
+ *
+ * 06 15 2017 nalin.chovatia
+ * [MOLY00253698] [CODE SYNC] GSM - Extended EARFCN support - NVRAM Changes
+ * .b66 gas
+ *
+ * 04 12 2017 sapna.ks
+ * [MOLY00240270] [6293][Gemini][T+W] Phase 1: Common Interface Changes Check in
+ * .
+ *
+ * 11 11 2016 nalin.chovatia
+ * [MOLY00193300] Porting of NW BAND Info from LR9 to LR11 TC01
+ * . NBR Band
+ *
+ * 11 09 2016 nalin.chovatia
+ * [MOLY00198865] [Titan] [PLMN] Wrong "revision level indicator " in ATTACH
+ * . UmolyA - Revision Level
+ *
+ * 10 14 2016 wenxing.yao
+ * [MOLY00153524] [6291] Vivo BlackList feature.
+ *
+ * 06 27 2016 chuangde.zhang
+ * [MOLY00186513] Sync code From UMOLY to UMOLYA
+ * .
+ *
+ * 04 19 2016 chuangde.zhang
+ * [MOLY00174834] TDD GAS UT init optimization
+ * .
+ *
+ * 09 18 2015 qingyu.lai
+ * [MOLY00140707] [GAS][PLMN search enhancement II] Search info reuse
+ * .
+ *
+ * 09 18 2015 ming.lee
+ * [MOLY00140707] [GAS][PLMN search enhancement II] Search info reuse
+ * .
+ *
+ * 06 01 2015 henry.lai
+ * [MOLY00092508] [MT6291][LTE-C2K] AS Inter RAT feature
+ * .
+ *
+ * 05 14 2015 ming.lee
+ * [MOLY00113725] [GAS] Dynamic SBP - L2 random fill bit
+ * dynamic SBP l2 random fill bit.
+ *
+ * 05 06 2015 titi.wu
+ * [MOLY00111201] [UMOLY][MRS] According to NVRAM setting, Some fields in Classmark 3 and MS radio capability should sync with setting
+ * .
+ *
+ * 05 05 2015 titi.wu
+ * [MOLY00111201] [UMOLY][MRS] According to NVRAM setting, Some fields in Classmark 3 and MS radio capability should sync with setting
+ * sync CM3 and RACAP.
+ *
+ * 03 24 2015 wenxing.yao
+ * [MOLY00100228] [FDD2TDD] according to TS 24.008 subclause 10.5.5.12a MS.
+ *
+ * 03 16 2015 tangte.lo
+ * [MOLY00079573] according to TS 24.008 subclause 10.5.5.12a MS -add inject instead of compile option
+ *
+ * 03 09 2015 ming.lee
+ * [MOLY00087470] [Universal Bin] FDD GAS developement
+ * .
+ *
+ * 01 15 2015 qingyu.lai
+ * [MOLY00087571] [Universal Bin] TDD GAS developement
+ * __AMRWB_LINK_SUPPORT__ change to __TDD_AMRWB_LINK_SUPPORT__
+ *
+ * 01 07 2015 qingyu.lai
+ * [MOLY00087571] [Universal Bin] TDD GAS developement
+ * fix build error ra_cap_support_rel
+ *
+ * 01 06 2015 ming.lee
+ * [MOLY00087470] [Universal Bin] FDD GAS developement
+ * .Fix build error
+ *
+ * 01 05 2015 ming.lee
+ * [MOLY00087470] [Universal Bin] FDD GAS developement
+ * mrs_gas_capability.h (power class def)
+ *
+ * 12 31 2014 ming.lee
+ * [MOLY00087470] [Universal Bin] FDD GAS developement
+ * Fix codegen err
+ *
+ * 12 16 2014 qingyu.lai
+ * [MOLY00087571] [Universal Bin] TDD GAS developement
+ * sync fix build error
+ *
+ * 12 15 2014 ming.lee
+ * [MOLY00087470] [Universal Bin] FDD GAS developement
+ * .
+ *
+ * 11 14 2014 tangte.lo
+ * [MOLY00080948] [GAS] MS capability report to R10R11
+ * [GAS] MS capability report to R10R11
+ *
+ * 10 15 2014 tangte.lo
+ * [MOLY00080948] [GAS] MS capability report to R10R11
+ *
+ * 12 11 2013 ming.lee
+ * [MOLY00049166] GAS MRS capability refine
+ * .
+ *
+ * 11 21 2013 ming.lee
+ * [MOLY00047326] [82LTEv1][Pre-SQC]UE can't MO/MT while registered on 2G only
+ * .
+ *
+ * 11 21 2013 ming.lee
+ * [MOLY00047326] [82LTEv1][Pre-SQC]UE can't MO/MT while registered on 2G only
+ * Back out changelist 321857
+ *
+ * 11 14 2013 james.chan
+ * [MOLY00040522] [GAS] RCS IR enhancement
+ * .
+ *
+ * 10 25 2013 katie.tseng
+ * [MOLY00043400] [MRS] add injection to turn off R8R9 capability in MS RA capability IE
+ * 	.
+ *
+ * 10 23 2013 james.chan
+ * [MOLY00040050] [MultiMode] Dynamic band selection
+ *
+ * 10 21 2013 james.chan
+ * [MOLY00040050] [MultiMode] Dynamic band selection
+ * .
+ *
+ * 10 18 2013 rujing.zhao
+ * [MOLY00041595] [MT6290E1][MMDS_DC] MMDC feature patch back to MOLY trunk
+ * .GAS part
+ *
+ * 09 26 2013 ming.lee
+ * [MOLY00039142] [MAUItoMOLY][RR] Switch L2 random fill bit and VAMOS capability via NVRAM settting
+ * .
+ *
+ * 05 09 2013 henry.lai
+ * [MOLY00009222] [GAS][Multi-Mode Development] Merge GAS multi-mode development to MOLY
+ * .
+ *
+ * 03 20 2013 henry.lai
+ * [MOLY00009222] [GAS][Multi-Mode Development] Merge GAS multi-mode development to MOLY
+ * .
+ *
+ * 03 18 2013 peng-an.chen
+ * [MOLY00007881] [2G-PS] Deliver R9 modification
+ * .
+ *
+ * 01 22 2013 david.niu
+ * [MOLY00009205] [MRS] Code checked-in for MOLY branch
+ * .
+ *
+ * 01 11 2013 henry.lai
+ * [Henry][Multi-Mode Development] GAS Development and R8 CR Sync
+ *
+ * 09 25 2012 justin.li
+ * NULL
+ * gas capability.
+ *
+ *****************************************************************************/
+
+#ifndef _MRS_GAS_CAPABILITY_H
+#define _MRS_GAS_CAPABILITY_H
+
+#include "mrs_as_inter_core_enum.h"
+#include "mrs_as_inter_core_struct.h"
+#include "kal_general_types.h"
+#include "kal_public_api.h"
+#include "bitstream.h"
+#include "l3_inc_enums.h"
+#include "mrs_as_enums.h"
+#include "gmss_public.h"
+#include "as2l4c_struct.h"
+#include "mrs_as_struct.h"
+
+/* Common definition for both FDD and TDD */
+#define ADD_CLASSMARK_INFO_IEI         0x20
+#define CLASSMARK_2_IEI                0x33
+
+typedef enum
+{
+    GSM_SMS_CAP_UNKNOWN = 0,
+    GSM_SMS_CAP_ON = 1,
+    GSM_SMS_CAP_OFF = 2 
+}gsm_sms_cap_enum;
+
+
+/* Common function declaration ********************************************************/
+#ifdef __GSM_RAT__
+void mrs_gas_get_classmark3 (MRS_SIM_INDEX sim_index, bit_stream *bs_ptr);
+kal_uint8 mrs_gas_get_classmark3msg_len(MRS_SIM_INDEX sim_index);
+kal_bool mrs_gas_get_ucs2_support(MRS_SIM_INDEX sim_index);
+kal_uint8 mrs_gas_get_gsm_algo_support(MRS_SIM_INDEX sim_index);
+#ifdef __PS_SERVICE__
+kal_uint16 mrs_gas_get_radio_access_cap(MRS_SIM_INDEX sim_index, kal_uint8 support_band, kal_uint8 **ra_cap);
+#endif /* __PS_SERVICE__ */
+kal_bool mrs_gas_get_2g3_ps_ho_cap (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
+kal_bool mrs_gas_get_2g4_ps_ho_cap (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
+kal_bool mrs_gas_band_setting_update(MRS_SIM_INDEX sim_index, kal_uint8 * gsm_band_ptr);
+#endif /* __GSM_RAT__ */
+void mrs_gas_read_nvram_cnf_handler(kal_uint16 nvram_file_id, kal_uint8* data, kal_uint16 len);
+void mrs_gas_decode_ms_capability(MRS_SIM_INDEX sim_index, bit_stream *bit_stream_ptr, kal_bool is_dynmc_cfg);
+kal_uint8 *mrs_gas_get_classmark2 (MRS_SIM_INDEX sim_index, MRS_RAT_MODE_TYPE required_rat, kal_bool get_full_ie);
+void mrs_gas_get_powerclass(MRS_SIM_INDEX sim_index, mrs_gsm_power_class_struct *gsm_pow_class);
+
+extern kal_bool rr_mrs_is_arfcn_band_supported(MRS_SIM_INDEX sim_index, kal_uint16 arfcn);
+extern kal_uint16 rr_mrs_arfcn_PCS_band_tag(kal_uint16 arfcn, kal_uint8 sim_index);
+
+kal_bool mrs_gas_retrieve_arfcn_band(MRS_SIM_INDEX sim_index,kal_uint16 arfcn, kal_uint8 *band_ptr);
+extern kal_bool rr_mrs_get_band_for_arfcn(MRS_SIM_INDEX sim_index, kal_uint16 arfcn,kal_uint8 * gsm_band_ptr);
+
+extern void mrs_gas_add_black_cell_list_notification(MRS_SIM_INDEX sim_index);
+extern void mrs_gas_clear_black_cell_list_notification(MRS_SIM_INDEX sim_index);
+
+extern kal_bool mrs_gas_band_setting_update_by_plmn(MRS_SIM_INDEX sim_index, mrs_plmn_id cplmn);
+extern void mrs_gas_get_gsm_all_supported_band(MRS_SIM_INDEX sim_index, kal_uint8 *gsmbandmask);
+extern kal_bool mrs_gas_mcc_band_setting_update(MRS_SIM_INDEX sim_index, kal_uint8 * gsm_band_ptr);
+extern void mrs_gas_band_setting_update_for_OOS (MRS_SIM_INDEX sim_index, kal_uint8 * gsm_band_ptr);
+
+extern void mrs_gas_set_gsm_sms_capability(MRS_SIM_INDEX sim_index, kal_bool gsm_sms_cap);
+extern void mrs_gas_set_gsm_cap_update (MRS_SIM_INDEX sim_index, capability_switch_enum gsm_cap);
+extern capability_switch_enum mrs_gas_get_gsm_cap_update (MRS_SIM_INDEX sim_index);
+
+/************************************************* Begin of TDD's part *************************************************/
+
+#if defined(__UMTS_TDD128_MODE__) || defined(__TDD_MODEM__) || defined(__TDD_2G_OP01__)
+
+/************************************************* Begin of TDD's part *************************************************/
+
+
+/*****************************************************************************
+ * Macros Without Parameters
+ *****************************************************************************/
+
+
+/*****************************************************************************
+ * Macros With Parameters
+ *****************************************************************************/
+/* Define the needed file size kept in NVRAM */
+#define TDD_RR_NVRAM_CLK2_LEN            3
+/* Peter, 20080804: change the len of classmark3 */
+#define TDD_RR_NVRAM_CLK3_LEN           34
+#define TDD_RR_NVRAM_READ_CLK_LEN       12
+#define TDD_RR_FULL_CLK2_LEN             5
+
+#define TDD_P_GSM_MASK_IN_NVRAM      0x01
+#define TDD_E_GSM_MASK_IN_NVRAM      0x02
+#define TDD_DCS_1800_MASK_IN_NVRAM   0x04
+#define TDD_GSM_480_MASK_IN_NVRAM    0x01
+#define TDD_GSM_450_MASK_IN_NVRAM    0x02
+
+/*****************************************************************************
+ * Enums without tags
+ *****************************************************************************/
+
+
+/*****************************************************************************
+ * Type Definitions
+ *****************************************************************************/
+/* Stucture of supported channel modes */
+typedef struct
+{
+    kal_uint8 is_signalling_supp;
+    kal_uint8 is_speech_full_or_half_ver_1_supp;
+    kal_uint8 is_speech_full_or_half_ver_2_supp;
+    kal_uint8 is_speech_full_or_half_ver_3_supp;
+    /* ZY: add for AMR-WB */
+#ifdef __TDD_AMRWB_LINK_SUPPORT__
+    kal_uint8 is_speech_full_or_half_ver_4_supp;
+    kal_uint8 is_speech_full_or_half_ver_5_supp;
+#endif /* __TDD_AMRWB_LINK_SUPPORT__ */ 
+    kal_uint8 is_data_43_5_dl_or_14_5_ul_supp;
+    kal_uint8 is_data_29_0_dl_or_14_5_ul_supp;
+    kal_uint8 is_data_43_5_dl_or_29_0_ul_supp;
+    kal_uint8 is_data_14_5_dl_or_43_5_ul_supp;
+    kal_uint8 is_data_14_5_dl_or_29_0_ul_supp;
+    kal_uint8 is_data_29_0_dl_or_43_5_ul_supp;
+    kal_uint8 is_data_43_5_radio_intf_rate_supp;
+    kal_uint8 is_data_32_0_radio_intf_rate_supp;
+    kal_uint8 is_data_29_0_radio_intf_rate_supp;
+    kal_uint8 is_data_14_5_radio_intf_rate_supp;
+    kal_uint8 is_data_12_0_radio_intf_rate_supp;
+    kal_uint8 is_data_06_0_radio_intf_rate_supp;
+    kal_uint8 is_data_03_6_radio_intf_rate_supp;
+    kal_uint8 is_half_rate_supp;
+
+}
+tdd_channel_mode_supported_struct;
+
+typedef struct
+{
+    kal_uint8 access_tech[16];
+    kal_uint8 power_cap[16];
+    kal_uint8 hscsd_multi_slot_class;
+    kal_uint8 gprs_multi_slot_class;
+    kal_uint8 pseudo_sync_cap;
+    kal_uint8 vbs;
+    kal_uint8 vgcs;
+    kal_uint8 algo_supported;
+    kal_uint8 hscsd_multi_slot_class_present;
+    kal_uint8 gprs_multi_slot_class_present;
+    kal_uint8 revision_level_indicator;
+    kal_uint8 gprs_ext_dynamic_cap;
+    kal_uint8 gea_supported;
+    kal_uint8 sm_cap_gprs;
+    kal_uint8 pfc_mode;
+
+    kal_bool early_class_mark_support;
+    kal_uint8 mm_non_drx_timer_value;
+    tdd_channel_mode_supported_struct chl_mode_supported;   /* struct of supported channel modes */
+
+    /* Evelyn 20080909 */
+    /* Lanslo 20050215: for selecting GPRS or EGPRS capability */
+#ifdef __EGPRS_MODE__
+    kal_uint8 egprs_multi_slot_class_present;
+    kal_uint8 egprs_multi_slot_class;
+    kal_uint8 egprs_ext_dynamic_cap;
+    //Jelly 20090602 Use __EPSK_TX__
+    /* Evelyn 20090422: set difference power class of 8PSK */
+#ifdef __EPSK_TX__
+    kal_uint8 power_cap_8psk[16];
+#endif /* __EPSK_TX__ */
+#endif /* __EGPRS_MODE__ */ 
+
+    /* Evelyn 20090905: Modify for High multislot class */
+#if defined (__MULTISLOT_CLASS_34__) || defined (__MULTISLOT_CLASS_45__)
+    kal_uint8 high_multi_slot_class_present;
+    kal_uint8 high_multi_slot_class;
+#endif
+    /* eo Lanslo */
+} tdd_ms_capability_from_mrs_struct;
+
+/* The structure is defined here, but the variables are stored in rr_cntx_info.
+   Because they are obtained from RATCM initialization procedure, not MRS .*/
+typedef struct {
+    kal_uint8 non_drx_timer;
+    kal_uint8 split_on_ccch;
+    kal_uint16 split_pg_cycle;
+} tdd_ms_capability_from_nas_struct;
+
+typedef struct {
+    access_technology_type_enum serving_band;
+    kal_uint8 band_indicator;
+    kal_uint16 arfcn;
+    kal_uint8 bsic;
+    kal_uint8 msc_r;
+	rr_mm_sgsnr_flag_enum sgsn_r;
+} tdd_gas_serving_cell_info_struct;
+
+typedef struct{
+    mrs_gsm_power_class_enum  pow_class_band450;
+    mrs_gsm_power_class_enum  pow_class_band480;
+    mrs_gsm_power_class_enum  pow_class_band710;
+    mrs_gsm_power_class_enum  pow_class_band750;
+    mrs_gsm_power_class_enum  pow_class_band810;
+    mrs_gsm_power_class_enum  pow_class_band850;
+    mrs_gsm_power_class_enum  pow_class_band900P;
+    mrs_gsm_power_class_enum  pow_class_band900E;
+    mrs_gsm_power_class_enum  pow_class_band900R;
+    mrs_gsm_power_class_enum  pow_class_band1800;
+    mrs_gsm_power_class_enum  pow_class_band1900;
+}tdd_mrs_gsm_power_class_struct;
+
+
+typedef struct {
+
+    tdd_ms_capability_from_mrs_struct ms_capability;
+    kal_uint8 ms_classmark3_len;    /* The bit length of Classmark3 */
+    kal_uint8 ms_classmark3_R98_len;    /* The bit length of Classmark3 when MS supports Release 98 */
+    kal_uint8 ms_default_classmark2[TDD_RR_NVRAM_CLK2_LEN]; /* read from nvram and has been decoded as power on */    
+    kal_uint8 ms_classmark2[TDD_RR_NVRAM_CLK2_LEN];
+    kal_uint8 ms_full_classmark2[TDD_RR_FULL_CLK2_LEN];
+    kal_uint8 ms_classmark3[TDD_RR_NVRAM_CLK3_LEN];    
+    rat_enum   rat_mode;
+    /* GSM supported band */
+    kal_uint8    gsm_supported_band;
+    kal_bool     is_test_sim;
+    tdd_gas_serving_cell_info_struct  serving_cell_info;
+
+#ifdef __LTE_RAT__
+    capability_switch_enum    eutran_cap;
+#endif /* __LTE_RAT__ */
+
+#ifdef __UMTS_FDD_MODE__   
+    /* record the bit location for UMTS FDD RAT Capibility; this bit 
+     * is set to 1 only when the MS is in GSM+UMTS dual mode 
+     */    
+    kal_uint8 cm3_umts_fdd_bit_location;
+#endif /* __UMTS_FDD_MODE__ */
+
+#ifdef __UMTS_TDD128_MODE__
+    /* record the bit location for UMTS TDD RAT Capibility; 
+     * this bit is set to 1 only when the MS is in GSM+UMTS dual mode 
+     */    
+    kal_uint8 cm3_umts_tdd_bit_location;    
+#endif /* __UMTS_TDD128_MODE__ */
+
+    /* record the bit location for VAMOS level setting. */
+    kal_uint8 cm3_vamos_bit_location;
+    kal_uint8 inject_vamos;
+    kal_uint8 vamos_level_from_nvram;
+
+#ifdef __GERAN_R8__
+    /* record the bit location for R8 Capibility; 
+     * this bit is set to 1 only when the MS is in GSM+LTE 
+     * dual mode or GSM+UMTS+LTE triple mode
+     */    
+    kal_uint8 cm3_r8_bit_location;    
+#endif /* __GERAN_R8__ */
+
+#if defined(__GERAN_R9__)
+    /* record the bit length for R9 Capibility; 
+     * used to change classmark3 len for force r9 feature 
+     */    
+    kal_uint8 ms_classmark3_R9_len; 
+#endif /* defined(__GERAN_R9__) */
+
+#if defined(__EGPRS_MODE__)
+    kal_bool is_epsk_tx_enabled;
+#endif
+
+#ifdef __AGPS_CONTROL_PLANE__
+    kal_bool agps_supported_in_clk;
+#endif /* __AGPS_CONTROL_PLANE__ */ 
+
+#ifdef __PS_SERVICE__
+    kal_bool inject_ra_cap_normal_coding;
+    /* Katie 20130304: add inject to turn off R8R9 capability for CRTUG 44.2.10 */
+    /* TangTe 20140929 change inject_ra_cap_turn_R8R9_off into inject_ra_cap_support_rel, 
+       default value:255, the value will represent the release version*/
+    kal_uint8 inject_ra_cap_support_rel;
+    /* Wenxing FDD2TDD 20150313 add for report 2G capability(Access technology tepe and RF power Capability) when 3G only*/
+    kal_bool inject_2g_cap_in_3gonly;
+#endif /* __PS_SERVICE__ */
+
+    /* store the nvram CLK in context to allow set gas band without reboot */
+    kal_uint8 *ms_classmark_in_nvram_ptr;
+    kal_uint8 ms_classmark_in_nvram_len;
+
+	/* This variable hold enable or disable of MT SMS capability set through AT cmd */  
+    gsm_sms_cap_enum gsm_sms_capability;
+	capability_switch_enum    gsm_cap;
+} tdd_gas_capability_context_struct;
+
+/*****************************************************************************
+ * Declarations Of Exported Globals
+ *****************************************************************************/
+#ifdef __GSM_RAT__ 
+void tdd_mrs_gas_init_contx_default_value(void);
+
+extern void tdd_mrs_gas_reset(void);
+
+extern void tdd_mrs_gas_get_ms_capability(MRS_SIM_INDEX sim_index, tdd_gas_capability_context_struct *gas_ms_cap_ptr);
+
+extern kal_uint8 *tdd_mrs_gas_get_classmark1 (MRS_SIM_INDEX sim_index, MRS_RAT_MODE_TYPE required_rat);
+
+extern void tdd_mrs_gas_get_classmark3 (MRS_SIM_INDEX sim_index, bit_stream *bs_ptr);
+
+extern kal_uint8 tdd_mrs_gas_get_classmark3msg_len(MRS_SIM_INDEX sim_index);
+
+extern kal_bool tdd_mrs_gas_get_ucs2_support(MRS_SIM_INDEX sim_index);
+
+extern void tdd_mrs_gas_set_sim_type(MRS_SIM_INDEX sim_index, kal_bool is_test_sim);
+
+extern kal_uint8 tdd_mrs_gas_get_gsm_algo_support(MRS_SIM_INDEX sim_index);
+
+#ifdef __PS_SERVICE__
+extern kal_uint8 tdd_mrs_gas_get_radio_access_cap (MRS_SIM_INDEX sim_index, kal_uint8 support_band, kal_uint8 **ra_cap);
+extern kal_uint8 tdd_mrs_mac_get_radio_access_cap(MRS_SIM_INDEX sim_index, kal_uint8 support_band, kal_uint8 **ra_cap, kal_bool *is_truncated, const kal_bool is_exclude_A5, const kal_uint8 bit_len_limit);
+#endif /* __PS_SERVICE__ */
+
+extern kal_bool tdd_mrs_gas_get_2g3_ps_ho_cap (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
+
+extern kal_bool tdd_mrs_gas_get_2g4_ps_ho_cap (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
+
+extern kal_bool tdd_mrs_gas_get_ir_srvcc_cap (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
+
+extern void tdd_mrs_gas_update_serving_cell_info(MRS_SIM_INDEX sim_index, tdd_gas_serving_cell_info_struct serving_cell_info);
+
+extern void tdd_mrs_gas_update_current_rat_mode(MRS_SIM_INDEX sim_index, rat_enum rat_mode);
+
+extern kal_bool tdd_mrs_gas_validate_arfcn(MRS_SIM_INDEX sim_index, kal_uint16 arfcn, te_gsm_band_indicator band_indicator);
+
+extern kal_bool tdd_mrs_gas_band_setting_update(MRS_SIM_INDEX sim_index, kal_uint8 * gsm_band_ptr);
+
+#endif /* __GSM_RAT__ */
+
+#ifdef __LTE_RAT__
+
+extern void tdd_mrs_gas_update_disable_eutran_cap(MRS_SIM_INDEX sim_index, capability_switch_enum eutran_cap);
+
+#endif /* __LTE_RAT__ */ 
+
+void tdd_mrs_gas_read_nvram_cnf_handler(kal_uint16 nvram_file_id, kal_uint8* data, kal_uint16 len);
+
+extern void tdd_mrs_gas_decode_mscap_from_nvram(MRS_SIM_INDEX sim_index, kal_uint8 *bit_ptr);
+
+extern void tdd_mrs_gas_decode_ms_capability(MRS_SIM_INDEX sim_index, bit_stream *bit_stream_ptr, kal_bool is_dynmc_cfg);
+
+extern kal_bool tdd_mrs_gas_is_R99_supported_in_CS(MRS_SIM_INDEX sim_index);
+
+extern kal_bool tdd_mrs_gas_is_R99_supported_in_PS(MRS_SIM_INDEX sim_index);
+
+extern kal_uint8 *tdd_mrs_gas_get_classmark2 (MRS_SIM_INDEX sim_index, MRS_RAT_MODE_TYPE required_rat, kal_bool get_full_ie);
+
+extern void tdd_mrs_gas_get_powerclass(MRS_SIM_INDEX sim_index, tdd_mrs_gsm_power_class_struct *gsm_pow_class);
+
+extern void tdd_mrs_gas_add_black_cell_list_notification(void);
+
+extern void tdd_mrs_gas_clear_black_cell_list_notification(void);
+
+extern kal_bool tdd_mrs_gas_retrieve_arfcn_band(MRS_SIM_INDEX sim_index,kal_uint16 arfcn, kal_uint8 *band_ptr);
+#ifndef __MTK_TARGET__
+extern void mrs_init_tdd_gas_ut_capability(MRS_SIM_INDEX sim_index);
+#endif
+
+extern kal_uint8 tdd_mrs_gas_get_vamos_level_setting(MRS_SIM_INDEX sim_index);
+
+extern void tdd_mrs_set_gsm_sms_capability(MRS_SIM_INDEX sim_index, kal_bool gsm_sms_cap);
+extern void tdd_mrs_gas_set_gsm_cap_update(MRS_SIM_INDEX sim_index, capability_switch_enum gsm_cap);
+extern capability_switch_enum tdd_mrs_gas_get_gsm_cap_update(MRS_SIM_INDEX sim_index);
+extern kal_bool tdd_mrs_gas_gsm_enabled (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
+
+
+/************************************************** End of TDD's part **************************************************/
+
+#endif /* defined(__UMTS_TDD128_MODE__) || defined(__TDD_MODEM__) */
+
+/************************************************* Begin of FDD's part *************************************************/
+
+/*****************************************************************************
+ * Macros Without Parameters
+ *****************************************************************************/
+/* Define the needed file size kept in NVRAM */
+#define FDD_RR_NVRAM_CLK2_LEN            3
+/* Peter, 20080804: change the len of classmark3 */
+#define FDD_RR_NVRAM_CLK3_LEN           34
+#define FDD_RR_NVRAM_READ_CLK_LEN       12
+#define FDD_RR_FULL_CLK2_LEN             5
+
+#define FDD_P_GSM_MASK_IN_NVRAM      0x01
+#define FDD_E_GSM_MASK_IN_NVRAM      0x02
+#define FDD_DCS_1800_MASK_IN_NVRAM   0x04
+#define FDD_GSM_480_MASK_IN_NVRAM    0x01
+#define FDD_GSM_450_MASK_IN_NVRAM    0x02
+
+#define DISABLE_A54_CIPHER_ALGO    0xF7
+
+/*
+  mrs_gas_band_setting_update_for_OOS() essentially does same thing as
+  mrs_gas_reset_band_settings(). mrs_gas_band_setting_update_for_OOS()function
+  is retained as this is ported from of MCC based band update feature
+*/
+#define mrs_gas_reset_band_settings mrs_gas_band_setting_update_for_OOS
+#define mrs_gas_update_gsm_band_setting mrs_gas_band_setting_update_for_OOS
+
+/*****************************************************************************
+ * Macros With Parameters
+ *****************************************************************************/
+
+
+/*****************************************************************************
+ * Enums without tags
+ *****************************************************************************/
+#ifdef __A5_3_AND_GEA_WHILTE_LIST__
+
+typedef enum
+{
+   DEFAULT_VALUE = 0,
+   PLMN_MATCHED = 1,
+   PLMN_NOT_MATCHED = 2 
+}plmn_match_enum;
+
+#endif
+
+/*****************************************************************************
+ * Type Definitions
+ *****************************************************************************/
+/* Stucture of supported channel modes */
+typedef struct
+{
+    kal_uint8 is_signalling_supp;
+    kal_uint8 is_speech_full_or_half_ver_1_supp;
+    kal_uint8 is_speech_full_or_half_ver_2_supp;
+    kal_uint8 is_speech_full_or_half_ver_3_supp;
+    /* ZY: add for AMR-WB */
+#ifdef __AMRWB_LINK_SUPPORT__
+    kal_uint8 is_speech_full_or_half_ver_4_supp;
+    kal_uint8 is_speech_full_or_half_ver_5_supp;
+#endif /* __AMRWB_LINK_SUPPORT__ */ 
+    kal_uint8 is_data_43_5_dl_or_14_5_ul_supp;
+    kal_uint8 is_data_29_0_dl_or_14_5_ul_supp;
+    kal_uint8 is_data_43_5_dl_or_29_0_ul_supp;
+    kal_uint8 is_data_14_5_dl_or_43_5_ul_supp;
+    kal_uint8 is_data_14_5_dl_or_29_0_ul_supp;
+    kal_uint8 is_data_29_0_dl_or_43_5_ul_supp;
+    kal_uint8 is_data_43_5_radio_intf_rate_supp;
+    kal_uint8 is_data_32_0_radio_intf_rate_supp;
+    kal_uint8 is_data_29_0_radio_intf_rate_supp;
+    kal_uint8 is_data_14_5_radio_intf_rate_supp;
+    kal_uint8 is_data_12_0_radio_intf_rate_supp;
+    kal_uint8 is_data_06_0_radio_intf_rate_supp;
+    kal_uint8 is_data_03_6_radio_intf_rate_supp;
+    kal_uint8 is_half_rate_supp;
+}fdd_channel_mode_supported_struct;
+
+typedef struct
+{
+    kal_uint8 access_tech[16];
+    kal_uint8 power_cap[16];
+    kal_uint8 hscsd_multi_slot_class;
+    kal_uint8 gprs_multi_slot_class;
+    kal_uint8 pseudo_sync_cap;
+    kal_uint8 vbs;
+    kal_uint8 vgcs;
+    kal_uint8 algo_supported;
+    kal_uint8 hscsd_multi_slot_class_present;
+    kal_uint8 gprs_multi_slot_class_present;
+    kal_uint8 revision_level_indicator;
+    kal_uint8 gprs_ext_dynamic_cap;
+    kal_uint8 gea_supported;
+    kal_uint8 sm_cap_gprs;
+    kal_uint8 pfc_mode;
+
+    kal_bool early_class_mark_support;
+    kal_uint8 mm_non_drx_timer_value;
+    fdd_channel_mode_supported_struct chl_mode_supported;   /* struct of supported channel modes */
+
+    /* Evelyn 20080909 */
+    /* Lanslo 20050215: for selecting GPRS or EGPRS capability */
+#ifdef __EGPRS_MODE__
+    kal_uint8 egprs_multi_slot_class_present;
+    kal_uint8 egprs_multi_slot_class;
+    kal_uint8 egprs_ext_dynamic_cap;
+    //Jelly 20090602 Use __EPSK_TX__
+    /* Evelyn 20090422: set difference power class of 8PSK */
+#ifdef __EPSK_TX__
+    kal_uint8 power_cap_8psk[16];
+#endif /* __EPSK_TX__ */
+#endif /* __EGPRS_MODE__ */ 
+
+    /* Evelyn 20090905: Modify for High multislot class */
+#if defined (__MULTISLOT_CLASS_34__) || defined (__MULTISLOT_CLASS_45__)
+    kal_uint8 high_multi_slot_class_present;
+    kal_uint8 high_multi_slot_class;
+#endif
+    /* eo Lanslo */
+    
+    kal_uint8 gmsk_multislot_power_profile;
+    kal_uint8 eightpsk_multislot_power_profile;
+    kal_uint8 downlink_advanced_receiver_performance;
+	
+#ifdef __GERAN_R11__
+    kal_uint8 extended_earfcn;
+    kal_uint8  eutran_wb_rsrq;
+    kal_uint8 umts_mfbi;
+    kal_uint8 eutra_mfbi;
+#endif /* __GERAN_R11__ */ 
+
+#ifdef __A5_3_AND_GEA_WHILTE_LIST__
+    kal_uint8 a5_default_supported;
+    kal_uint8 gea_default_supported;
+#endif /* __A5_3_AND_GEA_WHILTE_LIST__ */
+#ifdef __VAMOS_CUSTOM_CONFIG__
+    kal_uint8 vamos_level_from_custom_config;
+#endif
+
+} fdd_ms_capability_from_mrs_struct;
+
+/* The structure is defined here, but the variables are stored in rr_cntx_info.
+   Because they are obtained from RATCM initialization procedure, not MRS .*/
+typedef struct {
+    kal_uint8 non_drx_timer;
+    kal_uint8 split_on_ccch;
+    kal_uint16 split_pg_cycle;
+} fdd_ms_capability_from_nas_struct;
+
+typedef struct {
+    access_technology_type_enum serving_band;
+    kal_uint8 band_indicator;
+    kal_uint16 arfcn;
+    kal_uint8 bsic;
+    kal_uint8 msc_r;
+    rr_mm_sgsnr_flag_enum sgsn_r;
+} fdd_gas_serving_cell_info_struct;
+
+typedef struct {
+    mrs_gsm_power_class_enum  pow_class_band450;
+    mrs_gsm_power_class_enum  pow_class_band480;
+    mrs_gsm_power_class_enum  pow_class_band710;
+    mrs_gsm_power_class_enum  pow_class_band750;
+    mrs_gsm_power_class_enum  pow_class_band810;
+    mrs_gsm_power_class_enum  pow_class_band850;
+    mrs_gsm_power_class_enum  pow_class_band900P;
+    mrs_gsm_power_class_enum  pow_class_band900E;
+    mrs_gsm_power_class_enum  pow_class_band900R;
+    mrs_gsm_power_class_enum  pow_class_band1800;
+    mrs_gsm_power_class_enum  pow_class_band1900;
+} fdd_mrs_gsm_power_class_struct;
+
+
+typedef struct {
+    fdd_ms_capability_from_mrs_struct ms_capability;
+    kal_uint8 ms_classmark3_len;    /* The bit length of Classmark3 */
+    kal_uint8 ms_classmark3_R98_len;    /* The bit length of Classmark3 when MS supports Release 98 */
+    kal_uint8 ms_default_classmark2[FDD_RR_NVRAM_CLK2_LEN]; /* read from nvram and has been decoded as power on */    
+    kal_uint8 ms_classmark2[FDD_RR_NVRAM_CLK2_LEN];
+    kal_uint8 ms_full_classmark2[FDD_RR_FULL_CLK2_LEN];
+    kal_uint8 ms_classmark3[FDD_RR_NVRAM_CLK3_LEN];    
+    rat_enum   rat_mode;
+    /* GSM supported band */
+    kal_uint8    gsm_supported_band;
+    kal_bool     is_test_sim;
+    fdd_gas_serving_cell_info_struct  serving_cell_info;
+    capability_switch_enum    gsm_cap;
+
+#ifdef __LTE_RAT__
+    capability_switch_enum   eutran_cap;
+#endif /* __LTE_RAT__ */
+
+#ifdef __UMTS_FDD_MODE__   
+    /* record the bit location for UMTS FDD RAT Capibility; this bit 
+     * is set to 1 only when the MS is in GSM+UMTS dual mode 
+     */    
+    kal_uint8 cm3_umts_fdd_bit_location;
+#endif /* __UMTS_FDD_MODE__ */
+
+    /* record the bit location for VAMOS level setting. */
+    kal_uint8 cm3_vamos_bit_location;
+    kal_uint8 inject_vamos;
+    kal_uint8 vamos_level_from_nvram;
+
+#ifdef __GERAN_R8__
+    /* record the bit location for R8 Capibility; 
+     * this bit is set to 1 only when the MS is in GSM+LTE 
+     * dual mode or GSM+UMTS+LTE triple mode
+     */    
+    kal_uint8 cm3_r8_bit_location;    
+#endif /* __GERAN_R8__ */
+
+#ifdef __GERAN_R9__
+    kal_uint8 cm3_r9_csg_bit_location;    
+#endif /* __GERAN_R9__ */
+
+/* Extended EARFCN is late addition to Rel 11 also 44.018 and 44.060 spec has this feature in REL11, */
+/*So right now keep code change under __GERAN_R11__, if needed in future, change to __GERAN_R12__*/
+#ifdef __GERAN_R11__
+    kal_uint8 cm3_r12_extended_earfcn_bit_location;
+    kal_uint8 cm3_r11_eutra_wb_rsrq_location;
+    kal_uint8 cm3_r12_umts_mfbi_bit_location;
+    kal_uint8 cm3_r12_eutra_mfbi_bit_location;
+#endif /* __GERAN_R11__ */
+
+#if defined(__EGPRS_MODE__)
+    kal_bool is_epsk_tx_enabled;
+#endif
+
+#ifdef __AGPS_CONTROL_PLANE__
+    kal_bool agps_supported_in_clk;
+#endif /* __AGPS_CONTROL_PLANE__ */ 
+
+#ifdef __PS_SERVICE__
+    kal_bool inject_ra_cap_normal_coding;
+    /* Katie 20130304: add inject to turn off R8R9 capability for CRTUG 44.2.10 */
+    /* TangTe 20140929 change inject_ra_cap_turn_R8R9_off into inject_ra_cap_support_rel, 
+       default value:255, the value will represent the release version*/
+    kal_uint8 inject_ra_cap_support_rel;
+    /* TangTe 02150313 add for report 2G capability(Access technology tepe and RF power Capability) when 3G only*/
+    kal_bool inject_2g_cap_in_3gonly;
+#endif /* __PS_SERVICE__ */
+
+    /* store the nvram CLK in context to allow set gas band without reboot */
+    kal_uint8 *ms_classmark_in_nvram_ptr;
+    kal_uint8 ms_classmark_in_nvram_len;
+
+#ifdef __NR_RAT__
+    capability_switch_enum   nr_cap;
+#endif /* __NR_RAT__ */
+
+  /* This Context variable will contain gsm AS and HW supported band */
+    kal_uint8  gsm_all_supported_band;
+
+  /* This variable hold enable or disable of MT SMS capability set through AT cmd */  
+    gsm_sms_cap_enum gsm_sms_capability;
+    
+} fdd_gas_capability_context_struct;
+
+/*****************************************************************************
+ * Declarations Of Exported Globals
+ *****************************************************************************/
+#ifdef __GSM_RAT__ 
+void fdd_mrs_gas_init_contx_default_value(void);
+
+extern void fdd_mrs_gas_reset(void);
+
+extern void fdd_mrs_gas_get_ms_capability(MRS_SIM_INDEX sim_index, fdd_gas_capability_context_struct *gas_ms_cap_ptr);
+
+extern kal_uint8 *fdd_mrs_gas_get_classmark1 (MRS_SIM_INDEX sim_index, MRS_RAT_MODE_TYPE required_rat);
+
+extern void fdd_mrs_gas_get_classmark3 (MRS_SIM_INDEX sim_index, bit_stream *bs_ptr);
+
+extern kal_uint8 fdd_mrs_gas_get_classmark3msg_len(MRS_SIM_INDEX sim_index);
+
+extern kal_bool fdd_mrs_gas_get_ucs2_support(MRS_SIM_INDEX sim_index);
+
+extern void fdd_mrs_gas_set_sim_type(MRS_SIM_INDEX sim_index, kal_bool is_test_sim);
+
+extern kal_uint8 fdd_mrs_gas_get_gsm_algo_support(MRS_SIM_INDEX sim_index);
+
+#ifdef __PS_SERVICE__
+extern kal_uint16 fdd_mrs_gas_get_radio_access_cap (MRS_SIM_INDEX sim_index, kal_uint8 support_band, kal_uint8 **ra_cap);
+extern kal_uint16 fdd_mrs_mac_get_radio_access_cap(MRS_SIM_INDEX sim_index, kal_uint8 support_band, kal_uint8 **ra_cap, kal_bool *is_truncated, const kal_bool is_exclude_A5, const kal_uint8 bit_len_limit);
+#endif /* __PS_SERVICE__ */
+
+extern kal_bool fdd_mrs_gas_get_2g3_ps_ho_cap (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
+
+extern kal_bool fdd_mrs_gas_get_2g4_ps_ho_cap (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
+
+extern kal_bool fdd_mrs_gas_get_ir_srvcc_cap (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
+
+extern void fdd_mrs_gas_update_serving_cell_info(MRS_SIM_INDEX sim_index, fdd_gas_serving_cell_info_struct serving_cell_info);
+
+extern void fdd_mrs_gas_update_current_rat_mode(MRS_SIM_INDEX sim_index, rat_enum rat_mode);
+
+extern kal_bool fdd_mrs_gas_validate_arfcn(MRS_SIM_INDEX sim_index, kal_uint16 arfcn, te_gsm_band_indicator band_indicator);
+
+extern kal_bool fdd_mrs_gas_band_setting_update(MRS_SIM_INDEX sim_index, kal_uint8 * gsm_band_ptr);
+
+extern gsm_nw_band_enum fdd_mrs_gas_get_l4c_band_bitmap_from_arfcn (MRS_SIM_INDEX sim_index, kal_uint16 arfcn, te_gsm_band_indicator band_indicator);
+
+extern gsm_nw_band_enum rr_mrs_get_l4c_gsm_bandbitmap_from_arfcn(MRS_SIM_INDEX sim_index, kal_uint16 arfcn);
+
+#endif /* __GSM_RAT__ */
+
+#ifdef __LTE_RAT__
+
+extern void fdd_mrs_gas_update_disable_eutran_cap(MRS_SIM_INDEX sim_index, capability_switch_enum eutran_cap);
+extern void fdd_mrs_setLTEBand(kal_uint32 lte_band, kal_uint16* lte_nbr_band_list);
+
+#endif /* __LTE_RAT__ */ 
+
+void fdd_mrs_gas_read_nvram_cnf_handler(kal_uint16 nvram_file_id, kal_uint8* data, kal_uint16 len);
+
+extern void fdd_mrs_gas_decode_mscap_from_nvram(MRS_SIM_INDEX sim_index, kal_uint8 *bit_ptr);
+
+extern void fdd_mrs_gas_decode_ms_capability(MRS_SIM_INDEX sim_index, bit_stream *bit_stream_ptr, kal_bool is_dynmc_cfg);
+
+extern kal_bool fdd_mrs_gas_is_R99_supported_in_CS(MRS_SIM_INDEX sim_index);
+
+extern kal_bool fdd_mrs_gas_is_R99_supported_in_PS(MRS_SIM_INDEX sim_index);
+extern kal_uint8 *fdd_mrs_gas_get_classmark2 (MRS_SIM_INDEX sim_index, MRS_RAT_MODE_TYPE required_rat, kal_bool get_full_ie);
+
+
+extern void fdd_mrs_gas_get_powerclass(MRS_SIM_INDEX sim_index, fdd_mrs_gsm_power_class_struct *gsm_pow_class);
+
+extern kal_bool fdd_mrs_gas_retrieve_arfcn_band(MRS_SIM_INDEX sim_index,kal_uint16 arfcn, kal_uint8 *band_ptr);
+#ifdef __A5_3_AND_GEA_WHILTE_LIST__
+extern void fdd_mrs_set_a5_and_gea_algo(MRS_SIM_INDEX sim_index, const kal_uint8 *a5,const  kal_uint8 *gea, plmn_match_enum plmn_match);
+#endif /* __A5_3_AND_GEA_WHILTE_LIST__ */
+
+extern void fdd_mrs_gas_add_black_cell_list_notification(void);
+
+extern void fdd_mrs_gas_clear_black_cell_list_notification(void);
+
+extern void fdd_mrs_set_current_camped_plmn(MRS_SIM_INDEX sim_index,plmn_id_struct plmn_id);
+    
+#ifdef __VAMOS_CUSTOM_CONFIG__
+extern void fdd_mrs_set_custom_vamos(MRS_SIM_INDEX sim_index, kal_uint8 *vamos, kal_bool plmn_match);
+extern kal_uint8 fdd_mrs_get_custom_vamos(MRS_SIM_INDEX sim_index);
+
+#endif /* __VAMOS_CUSTOM_CONFIG__ */
+
+extern void fdd_mrs_print_classmark(kal_uint8 *bs_ptr, kal_uint16 line_num);
+
+extern kal_bool mrs_gas_is_supported_band(MRS_SIM_INDEX sim_index, kal_uint16 lte_band_idx);
+
+#ifdef __NR_RAT__
+extern void fdd_mrs_gas_update_disable_nr_cap(MRS_SIM_INDEX sim_index, capability_switch_enum nr_cap);
+#endif /* __NR_RAT__ */
+
+extern kal_bool fdd_mrs_update_gsm_band_setting(MRS_SIM_INDEX sim_index, kal_uint8 *band_setting);
+extern kal_bool fdd_mrs_gas_band_setting_update_by_plmn(MRS_SIM_INDEX sim_index, mrs_plmn_id cplmn);
+extern void fdd_mrs_gas_get_gsm_all_supported_band(MRS_SIM_INDEX sim_index, kal_uint8 *gsmbandmask);
+extern kal_bool fdd_mrs_gas_mcc_band_setting_update(MRS_SIM_INDEX sim_index, kal_uint8 * gsm_band_ptr);
+
+extern void fdd_mrs_set_gsm_sms_capability(MRS_SIM_INDEX sim_index, kal_bool gsm_sms_cap);
+extern void fdd_mrs_gas_set_gsm_cap_update(MRS_SIM_INDEX sim_index, capability_switch_enum gsm_cap);
+extern capability_switch_enum fdd_mrs_gas_get_gsm_cap_update(MRS_SIM_INDEX sim_index);
+extern kal_bool fdd_mrs_gas_gsm_enabled (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
+
+/************************************************** End of FDD's part **************************************************/
+
+#endif /* _MRS_GAS_CAPABILITY_H */
+