blob: 84a37720658561233935e803b9ec6847d218d171 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/******************************************************************************
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) 2007
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 * mrs_gas_capability.h
40 *
41 * Project:
42 * --------------------------------------------------------
43 * Multimode
44 *
45 * Description:
46 * --------------------------------------------------------
47 * The GAS capability stored in MRS context.
48 *
49 * Author:
50 * --------------------------------------------------------
51 * -------
52 *
53 * --------------------------------------------------------
54 * $Log$
55 *
56 * 03 25 2022 jiawei.he
57 * [MOLY00785023] [Gen97] NAS_SV disable GSM through capability update
58 *
59 * .
60 *
61 * 03 22 2022 ot_deeksha.thakre
62 * [MOLY00785023] [Gen97] NAS_SV disable GSM through capability update
63 *
64 * 09 13 2021 ot_deeksha.thakre
65 * [MOLY00682081] md1:(MCU_core0.vpe0.tc0(VPE0)) [Fatal error(buf)] err_code1:0x00000844 err_code2:0x28A1EC34 err_code3:0xCCCCCCCC MD Offender:ERRC
66 *
67 * 05 28 2021 vend_mtb_aritha026
68 * [MOLY00608949] ??band????
69 *
70 * [CODE SYNC][NR15.R3.MD700.MP][GAS FDD]
71 *
72 * 10 07 2020 jiawei.he
73 * [MOLY00565617] ¡¾CALL¡¿¡¾H+¡¿¹Ø±Õ»ò´ò¿ªGSM¶ÌÐÅÄÜÁ¦½Ó¿Ú
74 *
75 * .
76 *
77 * 10 07 2020 vend_mtb_aritha019
78 * [MOLY00565617] ?CALL??H+??????GSM??????
79 *
80 * 12 09 2019 tanmoy.chatterjee
81 * [MOLY00458503] [CODE SYNC][MH4P-POS] patch request about ALPS04309026
82 * .
83 *
84 * 12 05 2019 sapna.ks
85 * [MOLY00443892] [CODE SYNC] A5/4 algorithm related
86 * .
87 *
88 * 02 18 2019 nalin.chovatia
89 * [MOLY00384995] [VMOLY] GEMINI 3.0, AFR, Unify Frequency scan, BGSEARCH
90 * .gemini_afr_bg
91 *
92 * 12 06 2018 yenchih.yang
93 * [MOLY00371156] [VMOLY] NRRC-SEARCH check-in.
94 * Fill physical frequency range during Power Scan.
95 *
96 * 08 20 2018 tanmoy.chatterjee
97 * [MOLY00306148] [NAS] pangu giant CR
98 * [GAS_FDD]Capability changes.
99 *
100 * 08 20 2018 rujing.zhao
101 * [MOLY00347128] [Gen97][TDD GAS] feature development check in
102 * .capability update
103 *
104 * 07 02 2018 sapna.ks
105 * [MOLY00336530] [MT3967][Eiger][O1][MP1][Overnight][Shenzhen][4GMM][SWIFT] [Fatal error(buf)] err_code1:0x00000844 err_code2:0x23BEE7E0 err_code3:0xCCCCCCCC
106 * .
107 *
108 * 05 16 2018 sapna.ks
109 * [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.
110 * .
111 *
112 * 05 10 2018 rujing.zhao
113 * [MOLY00324570] [SMO][UMOLYE][TDD GAS] legacy option cleanup refine
114 * .
115 *
116 * 04 18 2018 nalin.chovatia
117 * [MOLY00320928] [CODE SYNC] ?????ALPS03474129 ???????patch--????P40 android o??
118 * . black list in UMOLYE
119 *
120 * 04 05 2018 sapna.ks
121 * [MOLY00318108] [MT6765][Cervino][O1][MD Static Test][China][Auto]Bit flag of E-UTRA Wideband RSRQ measurements support should be RAT dependent.
122 * .
123 *
124 * 04 03 2018 sapna.ks
125 * [MOLY00315207] [CODE SYNC] [ES2]VAMOS I & II should be off
126 * .
127 *
128 * 03 13 2018 rujing.zhao
129 * [MOLY00312598] [DSBP] patch back "D-SBP enhancment for all modem" to UMOLYE and TC01.R3.DEV
130 * .
131 *
132 * 01 22 2018 sapna.ks
133 * [MOLY00302832] [CODE SYNC] AT command (+ESCELLINFO) to modem to query serving cell band and arfcn info, when needed.
134 * .
135 *
136 * 06 15 2017 nalin.chovatia
137 * [MOLY00253698] [CODE SYNC] GSM - Extended EARFCN support - NVRAM Changes
138 * .b66 gas
139 *
140 * 04 12 2017 sapna.ks
141 * [MOLY00240270] [6293][Gemini][T+W] Phase 1: Common Interface Changes Check in
142 * .
143 *
144 * 11 11 2016 nalin.chovatia
145 * [MOLY00193300] Porting of NW BAND Info from LR9 to LR11 TC01
146 * . NBR Band
147 *
148 * 11 09 2016 nalin.chovatia
149 * [MOLY00198865] [Titan] [PLMN] Wrong "revision level indicator " in ATTACH
150 * . UmolyA - Revision Level
151 *
152 * 10 14 2016 wenxing.yao
153 * [MOLY00153524] [6291] Vivo BlackList feature.
154 *
155 * 06 27 2016 chuangde.zhang
156 * [MOLY00186513] Sync code From UMOLY to UMOLYA
157 * .
158 *
159 * 04 19 2016 chuangde.zhang
160 * [MOLY00174834] TDD GAS UT init optimization
161 * .
162 *
163 * 09 18 2015 qingyu.lai
164 * [MOLY00140707] [GAS][PLMN search enhancement II] Search info reuse
165 * .
166 *
167 * 09 18 2015 ming.lee
168 * [MOLY00140707] [GAS][PLMN search enhancement II] Search info reuse
169 * .
170 *
171 * 06 01 2015 henry.lai
172 * [MOLY00092508] [MT6291][LTE-C2K] AS Inter RAT feature
173 * .
174 *
175 * 05 14 2015 ming.lee
176 * [MOLY00113725] [GAS] Dynamic SBP - L2 random fill bit
177 * dynamic SBP l2 random fill bit.
178 *
179 * 05 06 2015 titi.wu
180 * [MOLY00111201] [UMOLY][MRS] According to NVRAM setting, Some fields in Classmark 3 and MS radio capability should sync with setting
181 * .
182 *
183 * 05 05 2015 titi.wu
184 * [MOLY00111201] [UMOLY][MRS] According to NVRAM setting, Some fields in Classmark 3 and MS radio capability should sync with setting
185 * sync CM3 and RACAP.
186 *
187 * 03 24 2015 wenxing.yao
188 * [MOLY00100228] [FDD2TDD] according to TS 24.008 subclause 10.5.5.12a MS.
189 *
190 * 03 16 2015 tangte.lo
191 * [MOLY00079573] according to TS 24.008 subclause 10.5.5.12a MS -add inject instead of compile option
192 *
193 * 03 09 2015 ming.lee
194 * [MOLY00087470] [Universal Bin] FDD GAS developement
195 * .
196 *
197 * 01 15 2015 qingyu.lai
198 * [MOLY00087571] [Universal Bin] TDD GAS developement
199 * __AMRWB_LINK_SUPPORT__ change to __TDD_AMRWB_LINK_SUPPORT__
200 *
201 * 01 07 2015 qingyu.lai
202 * [MOLY00087571] [Universal Bin] TDD GAS developement
203 * fix build error ra_cap_support_rel
204 *
205 * 01 06 2015 ming.lee
206 * [MOLY00087470] [Universal Bin] FDD GAS developement
207 * .Fix build error
208 *
209 * 01 05 2015 ming.lee
210 * [MOLY00087470] [Universal Bin] FDD GAS developement
211 * mrs_gas_capability.h (power class def)
212 *
213 * 12 31 2014 ming.lee
214 * [MOLY00087470] [Universal Bin] FDD GAS developement
215 * Fix codegen err
216 *
217 * 12 16 2014 qingyu.lai
218 * [MOLY00087571] [Universal Bin] TDD GAS developement
219 * sync fix build error
220 *
221 * 12 15 2014 ming.lee
222 * [MOLY00087470] [Universal Bin] FDD GAS developement
223 * .
224 *
225 * 11 14 2014 tangte.lo
226 * [MOLY00080948] [GAS] MS capability report to R10R11
227 * [GAS] MS capability report to R10R11
228 *
229 * 10 15 2014 tangte.lo
230 * [MOLY00080948] [GAS] MS capability report to R10R11
231 *
232 * 12 11 2013 ming.lee
233 * [MOLY00049166] GAS MRS capability refine
234 * .
235 *
236 * 11 21 2013 ming.lee
237 * [MOLY00047326] [82LTEv1][Pre-SQC]UE can't MO/MT while registered on 2G only
238 * .
239 *
240 * 11 21 2013 ming.lee
241 * [MOLY00047326] [82LTEv1][Pre-SQC]UE can't MO/MT while registered on 2G only
242 * Back out changelist 321857
243 *
244 * 11 14 2013 james.chan
245 * [MOLY00040522] [GAS] RCS IR enhancement
246 * .
247 *
248 * 10 25 2013 katie.tseng
249 * [MOLY00043400] [MRS] add injection to turn off R8R9 capability in MS RA capability IE
250 * .
251 *
252 * 10 23 2013 james.chan
253 * [MOLY00040050] [MultiMode] Dynamic band selection
254 *
255 * 10 21 2013 james.chan
256 * [MOLY00040050] [MultiMode] Dynamic band selection
257 * .
258 *
259 * 10 18 2013 rujing.zhao
260 * [MOLY00041595] [MT6290E1][MMDS_DC] MMDC feature patch back to MOLY trunk
261 * .GAS part
262 *
263 * 09 26 2013 ming.lee
264 * [MOLY00039142] [MAUItoMOLY][RR] Switch L2 random fill bit and VAMOS capability via NVRAM settting
265 * .
266 *
267 * 05 09 2013 henry.lai
268 * [MOLY00009222] [GAS][Multi-Mode Development] Merge GAS multi-mode development to MOLY
269 * .
270 *
271 * 03 20 2013 henry.lai
272 * [MOLY00009222] [GAS][Multi-Mode Development] Merge GAS multi-mode development to MOLY
273 * .
274 *
275 * 03 18 2013 peng-an.chen
276 * [MOLY00007881] [2G-PS] Deliver R9 modification
277 * .
278 *
279 * 01 22 2013 david.niu
280 * [MOLY00009205] [MRS] Code checked-in for MOLY branch
281 * .
282 *
283 * 01 11 2013 henry.lai
284 * [Henry][Multi-Mode Development] GAS Development and R8 CR Sync
285 *
286 * 09 25 2012 justin.li
287 * NULL
288 * gas capability.
289 *
290 *****************************************************************************/
291
292#ifndef _MRS_GAS_CAPABILITY_H
293#define _MRS_GAS_CAPABILITY_H
294
295#include "mrs_as_inter_core_enum.h"
296#include "mrs_as_inter_core_struct.h"
297#include "kal_general_types.h"
298#include "kal_public_api.h"
299#include "bitstream.h"
300#include "l3_inc_enums.h"
301#include "mrs_as_enums.h"
302#include "gmss_public.h"
303#include "as2l4c_struct.h"
304#include "mrs_as_struct.h"
305
306/* Common definition for both FDD and TDD */
307#define ADD_CLASSMARK_INFO_IEI 0x20
308#define CLASSMARK_2_IEI 0x33
309
310typedef enum
311{
312 GSM_SMS_CAP_UNKNOWN = 0,
313 GSM_SMS_CAP_ON = 1,
314 GSM_SMS_CAP_OFF = 2
315}gsm_sms_cap_enum;
316
317
318/* Common function declaration ********************************************************/
319#ifdef __GSM_RAT__
320void mrs_gas_get_classmark3 (MRS_SIM_INDEX sim_index, bit_stream *bs_ptr);
321kal_uint8 mrs_gas_get_classmark3msg_len(MRS_SIM_INDEX sim_index);
322kal_bool mrs_gas_get_ucs2_support(MRS_SIM_INDEX sim_index);
323kal_uint8 mrs_gas_get_gsm_algo_support(MRS_SIM_INDEX sim_index);
324#ifdef __PS_SERVICE__
325kal_uint16 mrs_gas_get_radio_access_cap(MRS_SIM_INDEX sim_index, kal_uint8 support_band, kal_uint8 **ra_cap);
326#endif /* __PS_SERVICE__ */
327kal_bool mrs_gas_get_2g3_ps_ho_cap (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
328kal_bool mrs_gas_get_2g4_ps_ho_cap (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
329kal_bool mrs_gas_band_setting_update(MRS_SIM_INDEX sim_index, kal_uint8 * gsm_band_ptr);
330#endif /* __GSM_RAT__ */
331void mrs_gas_read_nvram_cnf_handler(kal_uint16 nvram_file_id, kal_uint8* data, kal_uint16 len);
332void mrs_gas_decode_ms_capability(MRS_SIM_INDEX sim_index, bit_stream *bit_stream_ptr, kal_bool is_dynmc_cfg);
333kal_uint8 *mrs_gas_get_classmark2 (MRS_SIM_INDEX sim_index, MRS_RAT_MODE_TYPE required_rat, kal_bool get_full_ie);
334void mrs_gas_get_powerclass(MRS_SIM_INDEX sim_index, mrs_gsm_power_class_struct *gsm_pow_class);
335
336extern kal_bool rr_mrs_is_arfcn_band_supported(MRS_SIM_INDEX sim_index, kal_uint16 arfcn);
337extern kal_uint16 rr_mrs_arfcn_PCS_band_tag(kal_uint16 arfcn, kal_uint8 sim_index);
338
339kal_bool mrs_gas_retrieve_arfcn_band(MRS_SIM_INDEX sim_index,kal_uint16 arfcn, kal_uint8 *band_ptr);
340extern kal_bool rr_mrs_get_band_for_arfcn(MRS_SIM_INDEX sim_index, kal_uint16 arfcn,kal_uint8 * gsm_band_ptr);
341
342extern void mrs_gas_add_black_cell_list_notification(MRS_SIM_INDEX sim_index);
343extern void mrs_gas_clear_black_cell_list_notification(MRS_SIM_INDEX sim_index);
344
345extern kal_bool mrs_gas_band_setting_update_by_plmn(MRS_SIM_INDEX sim_index, mrs_plmn_id cplmn);
346extern void mrs_gas_get_gsm_all_supported_band(MRS_SIM_INDEX sim_index, kal_uint8 *gsmbandmask);
347extern kal_bool mrs_gas_mcc_band_setting_update(MRS_SIM_INDEX sim_index, kal_uint8 * gsm_band_ptr);
348extern void mrs_gas_band_setting_update_for_OOS (MRS_SIM_INDEX sim_index, kal_uint8 * gsm_band_ptr);
349
350extern void mrs_gas_set_gsm_sms_capability(MRS_SIM_INDEX sim_index, kal_bool gsm_sms_cap);
351extern void mrs_gas_set_gsm_cap_update (MRS_SIM_INDEX sim_index, capability_switch_enum gsm_cap);
352extern capability_switch_enum mrs_gas_get_gsm_cap_update (MRS_SIM_INDEX sim_index);
353
354/************************************************* Begin of TDD's part *************************************************/
355
356#if defined(__UMTS_TDD128_MODE__) || defined(__TDD_MODEM__) || defined(__TDD_2G_OP01__)
357
358/************************************************* Begin of TDD's part *************************************************/
359
360
361/*****************************************************************************
362 * Macros Without Parameters
363 *****************************************************************************/
364
365
366/*****************************************************************************
367 * Macros With Parameters
368 *****************************************************************************/
369/* Define the needed file size kept in NVRAM */
370#define TDD_RR_NVRAM_CLK2_LEN 3
371/* Peter, 20080804: change the len of classmark3 */
372#define TDD_RR_NVRAM_CLK3_LEN 34
373#define TDD_RR_NVRAM_READ_CLK_LEN 12
374#define TDD_RR_FULL_CLK2_LEN 5
375
376#define TDD_P_GSM_MASK_IN_NVRAM 0x01
377#define TDD_E_GSM_MASK_IN_NVRAM 0x02
378#define TDD_DCS_1800_MASK_IN_NVRAM 0x04
379#define TDD_GSM_480_MASK_IN_NVRAM 0x01
380#define TDD_GSM_450_MASK_IN_NVRAM 0x02
381
382/*****************************************************************************
383 * Enums without tags
384 *****************************************************************************/
385
386
387/*****************************************************************************
388 * Type Definitions
389 *****************************************************************************/
390/* Stucture of supported channel modes */
391typedef struct
392{
393 kal_uint8 is_signalling_supp;
394 kal_uint8 is_speech_full_or_half_ver_1_supp;
395 kal_uint8 is_speech_full_or_half_ver_2_supp;
396 kal_uint8 is_speech_full_or_half_ver_3_supp;
397 /* ZY: add for AMR-WB */
398#ifdef __TDD_AMRWB_LINK_SUPPORT__
399 kal_uint8 is_speech_full_or_half_ver_4_supp;
400 kal_uint8 is_speech_full_or_half_ver_5_supp;
401#endif /* __TDD_AMRWB_LINK_SUPPORT__ */
402 kal_uint8 is_data_43_5_dl_or_14_5_ul_supp;
403 kal_uint8 is_data_29_0_dl_or_14_5_ul_supp;
404 kal_uint8 is_data_43_5_dl_or_29_0_ul_supp;
405 kal_uint8 is_data_14_5_dl_or_43_5_ul_supp;
406 kal_uint8 is_data_14_5_dl_or_29_0_ul_supp;
407 kal_uint8 is_data_29_0_dl_or_43_5_ul_supp;
408 kal_uint8 is_data_43_5_radio_intf_rate_supp;
409 kal_uint8 is_data_32_0_radio_intf_rate_supp;
410 kal_uint8 is_data_29_0_radio_intf_rate_supp;
411 kal_uint8 is_data_14_5_radio_intf_rate_supp;
412 kal_uint8 is_data_12_0_radio_intf_rate_supp;
413 kal_uint8 is_data_06_0_radio_intf_rate_supp;
414 kal_uint8 is_data_03_6_radio_intf_rate_supp;
415 kal_uint8 is_half_rate_supp;
416
417}
418tdd_channel_mode_supported_struct;
419
420typedef struct
421{
422 kal_uint8 access_tech[16];
423 kal_uint8 power_cap[16];
424 kal_uint8 hscsd_multi_slot_class;
425 kal_uint8 gprs_multi_slot_class;
426 kal_uint8 pseudo_sync_cap;
427 kal_uint8 vbs;
428 kal_uint8 vgcs;
429 kal_uint8 algo_supported;
430 kal_uint8 hscsd_multi_slot_class_present;
431 kal_uint8 gprs_multi_slot_class_present;
432 kal_uint8 revision_level_indicator;
433 kal_uint8 gprs_ext_dynamic_cap;
434 kal_uint8 gea_supported;
435 kal_uint8 sm_cap_gprs;
436 kal_uint8 pfc_mode;
437
438 kal_bool early_class_mark_support;
439 kal_uint8 mm_non_drx_timer_value;
440 tdd_channel_mode_supported_struct chl_mode_supported; /* struct of supported channel modes */
441
442 /* Evelyn 20080909 */
443 /* Lanslo 20050215: for selecting GPRS or EGPRS capability */
444#ifdef __EGPRS_MODE__
445 kal_uint8 egprs_multi_slot_class_present;
446 kal_uint8 egprs_multi_slot_class;
447 kal_uint8 egprs_ext_dynamic_cap;
448 //Jelly 20090602 Use __EPSK_TX__
449 /* Evelyn 20090422: set difference power class of 8PSK */
450#ifdef __EPSK_TX__
451 kal_uint8 power_cap_8psk[16];
452#endif /* __EPSK_TX__ */
453#endif /* __EGPRS_MODE__ */
454
455 /* Evelyn 20090905: Modify for High multislot class */
456#if defined (__MULTISLOT_CLASS_34__) || defined (__MULTISLOT_CLASS_45__)
457 kal_uint8 high_multi_slot_class_present;
458 kal_uint8 high_multi_slot_class;
459#endif
460 /* eo Lanslo */
461} tdd_ms_capability_from_mrs_struct;
462
463/* The structure is defined here, but the variables are stored in rr_cntx_info.
464 Because they are obtained from RATCM initialization procedure, not MRS .*/
465typedef struct {
466 kal_uint8 non_drx_timer;
467 kal_uint8 split_on_ccch;
468 kal_uint16 split_pg_cycle;
469} tdd_ms_capability_from_nas_struct;
470
471typedef struct {
472 access_technology_type_enum serving_band;
473 kal_uint8 band_indicator;
474 kal_uint16 arfcn;
475 kal_uint8 bsic;
476 kal_uint8 msc_r;
477 rr_mm_sgsnr_flag_enum sgsn_r;
478} tdd_gas_serving_cell_info_struct;
479
480typedef struct{
481 mrs_gsm_power_class_enum pow_class_band450;
482 mrs_gsm_power_class_enum pow_class_band480;
483 mrs_gsm_power_class_enum pow_class_band710;
484 mrs_gsm_power_class_enum pow_class_band750;
485 mrs_gsm_power_class_enum pow_class_band810;
486 mrs_gsm_power_class_enum pow_class_band850;
487 mrs_gsm_power_class_enum pow_class_band900P;
488 mrs_gsm_power_class_enum pow_class_band900E;
489 mrs_gsm_power_class_enum pow_class_band900R;
490 mrs_gsm_power_class_enum pow_class_band1800;
491 mrs_gsm_power_class_enum pow_class_band1900;
492}tdd_mrs_gsm_power_class_struct;
493
494
495typedef struct {
496
497 tdd_ms_capability_from_mrs_struct ms_capability;
498 kal_uint8 ms_classmark3_len; /* The bit length of Classmark3 */
499 kal_uint8 ms_classmark3_R98_len; /* The bit length of Classmark3 when MS supports Release 98 */
500 kal_uint8 ms_default_classmark2[TDD_RR_NVRAM_CLK2_LEN]; /* read from nvram and has been decoded as power on */
501 kal_uint8 ms_classmark2[TDD_RR_NVRAM_CLK2_LEN];
502 kal_uint8 ms_full_classmark2[TDD_RR_FULL_CLK2_LEN];
503 kal_uint8 ms_classmark3[TDD_RR_NVRAM_CLK3_LEN];
504 rat_enum rat_mode;
505 /* GSM supported band */
506 kal_uint8 gsm_supported_band;
507 kal_bool is_test_sim;
508 tdd_gas_serving_cell_info_struct serving_cell_info;
509
510#ifdef __LTE_RAT__
511 capability_switch_enum eutran_cap;
512#endif /* __LTE_RAT__ */
513
514#ifdef __UMTS_FDD_MODE__
515 /* record the bit location for UMTS FDD RAT Capibility; this bit
516 * is set to 1 only when the MS is in GSM+UMTS dual mode
517 */
518 kal_uint8 cm3_umts_fdd_bit_location;
519#endif /* __UMTS_FDD_MODE__ */
520
521#ifdef __UMTS_TDD128_MODE__
522 /* record the bit location for UMTS TDD RAT Capibility;
523 * this bit is set to 1 only when the MS is in GSM+UMTS dual mode
524 */
525 kal_uint8 cm3_umts_tdd_bit_location;
526#endif /* __UMTS_TDD128_MODE__ */
527
528 /* record the bit location for VAMOS level setting. */
529 kal_uint8 cm3_vamos_bit_location;
530 kal_uint8 inject_vamos;
531 kal_uint8 vamos_level_from_nvram;
532
533#ifdef __GERAN_R8__
534 /* record the bit location for R8 Capibility;
535 * this bit is set to 1 only when the MS is in GSM+LTE
536 * dual mode or GSM+UMTS+LTE triple mode
537 */
538 kal_uint8 cm3_r8_bit_location;
539#endif /* __GERAN_R8__ */
540
541#if defined(__GERAN_R9__)
542 /* record the bit length for R9 Capibility;
543 * used to change classmark3 len for force r9 feature
544 */
545 kal_uint8 ms_classmark3_R9_len;
546#endif /* defined(__GERAN_R9__) */
547
548#if defined(__EGPRS_MODE__)
549 kal_bool is_epsk_tx_enabled;
550#endif
551
552#ifdef __AGPS_CONTROL_PLANE__
553 kal_bool agps_supported_in_clk;
554#endif /* __AGPS_CONTROL_PLANE__ */
555
556#ifdef __PS_SERVICE__
557 kal_bool inject_ra_cap_normal_coding;
558 /* Katie 20130304: add inject to turn off R8R9 capability for CRTUG 44.2.10 */
559 /* TangTe 20140929 change inject_ra_cap_turn_R8R9_off into inject_ra_cap_support_rel,
560 default value:255, the value will represent the release version*/
561 kal_uint8 inject_ra_cap_support_rel;
562 /* Wenxing FDD2TDD 20150313 add for report 2G capability(Access technology tepe and RF power Capability) when 3G only*/
563 kal_bool inject_2g_cap_in_3gonly;
564#endif /* __PS_SERVICE__ */
565
566 /* store the nvram CLK in context to allow set gas band without reboot */
567 kal_uint8 *ms_classmark_in_nvram_ptr;
568 kal_uint8 ms_classmark_in_nvram_len;
569
570 /* This variable hold enable or disable of MT SMS capability set through AT cmd */
571 gsm_sms_cap_enum gsm_sms_capability;
572 capability_switch_enum gsm_cap;
573} tdd_gas_capability_context_struct;
574
575/*****************************************************************************
576 * Declarations Of Exported Globals
577 *****************************************************************************/
578#ifdef __GSM_RAT__
579void tdd_mrs_gas_init_contx_default_value(void);
580
581extern void tdd_mrs_gas_reset(void);
582
583extern void tdd_mrs_gas_get_ms_capability(MRS_SIM_INDEX sim_index, tdd_gas_capability_context_struct *gas_ms_cap_ptr);
584
585extern kal_uint8 *tdd_mrs_gas_get_classmark1 (MRS_SIM_INDEX sim_index, MRS_RAT_MODE_TYPE required_rat);
586
587extern void tdd_mrs_gas_get_classmark3 (MRS_SIM_INDEX sim_index, bit_stream *bs_ptr);
588
589extern kal_uint8 tdd_mrs_gas_get_classmark3msg_len(MRS_SIM_INDEX sim_index);
590
591extern kal_bool tdd_mrs_gas_get_ucs2_support(MRS_SIM_INDEX sim_index);
592
593extern void tdd_mrs_gas_set_sim_type(MRS_SIM_INDEX sim_index, kal_bool is_test_sim);
594
595extern kal_uint8 tdd_mrs_gas_get_gsm_algo_support(MRS_SIM_INDEX sim_index);
596
597#ifdef __PS_SERVICE__
598extern kal_uint8 tdd_mrs_gas_get_radio_access_cap (MRS_SIM_INDEX sim_index, kal_uint8 support_band, kal_uint8 **ra_cap);
599extern 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);
600#endif /* __PS_SERVICE__ */
601
602extern kal_bool tdd_mrs_gas_get_2g3_ps_ho_cap (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
603
604extern kal_bool tdd_mrs_gas_get_2g4_ps_ho_cap (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
605
606extern kal_bool tdd_mrs_gas_get_ir_srvcc_cap (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
607
608extern void tdd_mrs_gas_update_serving_cell_info(MRS_SIM_INDEX sim_index, tdd_gas_serving_cell_info_struct serving_cell_info);
609
610extern void tdd_mrs_gas_update_current_rat_mode(MRS_SIM_INDEX sim_index, rat_enum rat_mode);
611
612extern kal_bool tdd_mrs_gas_validate_arfcn(MRS_SIM_INDEX sim_index, kal_uint16 arfcn, te_gsm_band_indicator band_indicator);
613
614extern kal_bool tdd_mrs_gas_band_setting_update(MRS_SIM_INDEX sim_index, kal_uint8 * gsm_band_ptr);
615
616#endif /* __GSM_RAT__ */
617
618#ifdef __LTE_RAT__
619
620extern void tdd_mrs_gas_update_disable_eutran_cap(MRS_SIM_INDEX sim_index, capability_switch_enum eutran_cap);
621
622#endif /* __LTE_RAT__ */
623
624void tdd_mrs_gas_read_nvram_cnf_handler(kal_uint16 nvram_file_id, kal_uint8* data, kal_uint16 len);
625
626extern void tdd_mrs_gas_decode_mscap_from_nvram(MRS_SIM_INDEX sim_index, kal_uint8 *bit_ptr);
627
628extern void tdd_mrs_gas_decode_ms_capability(MRS_SIM_INDEX sim_index, bit_stream *bit_stream_ptr, kal_bool is_dynmc_cfg);
629
630extern kal_bool tdd_mrs_gas_is_R99_supported_in_CS(MRS_SIM_INDEX sim_index);
631
632extern kal_bool tdd_mrs_gas_is_R99_supported_in_PS(MRS_SIM_INDEX sim_index);
633
634extern kal_uint8 *tdd_mrs_gas_get_classmark2 (MRS_SIM_INDEX sim_index, MRS_RAT_MODE_TYPE required_rat, kal_bool get_full_ie);
635
636extern void tdd_mrs_gas_get_powerclass(MRS_SIM_INDEX sim_index, tdd_mrs_gsm_power_class_struct *gsm_pow_class);
637
638extern void tdd_mrs_gas_add_black_cell_list_notification(void);
639
640extern void tdd_mrs_gas_clear_black_cell_list_notification(void);
641
642extern kal_bool tdd_mrs_gas_retrieve_arfcn_band(MRS_SIM_INDEX sim_index,kal_uint16 arfcn, kal_uint8 *band_ptr);
643#ifndef __MTK_TARGET__
644extern void mrs_init_tdd_gas_ut_capability(MRS_SIM_INDEX sim_index);
645#endif
646
647extern kal_uint8 tdd_mrs_gas_get_vamos_level_setting(MRS_SIM_INDEX sim_index);
648
649extern void tdd_mrs_set_gsm_sms_capability(MRS_SIM_INDEX sim_index, kal_bool gsm_sms_cap);
650extern void tdd_mrs_gas_set_gsm_cap_update(MRS_SIM_INDEX sim_index, capability_switch_enum gsm_cap);
651extern capability_switch_enum tdd_mrs_gas_get_gsm_cap_update(MRS_SIM_INDEX sim_index);
652extern kal_bool tdd_mrs_gas_gsm_enabled (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
653
654
655/************************************************** End of TDD's part **************************************************/
656
657#endif /* defined(__UMTS_TDD128_MODE__) || defined(__TDD_MODEM__) */
658
659/************************************************* Begin of FDD's part *************************************************/
660
661/*****************************************************************************
662 * Macros Without Parameters
663 *****************************************************************************/
664/* Define the needed file size kept in NVRAM */
665#define FDD_RR_NVRAM_CLK2_LEN 3
666/* Peter, 20080804: change the len of classmark3 */
667#define FDD_RR_NVRAM_CLK3_LEN 34
668#define FDD_RR_NVRAM_READ_CLK_LEN 12
669#define FDD_RR_FULL_CLK2_LEN 5
670
671#define FDD_P_GSM_MASK_IN_NVRAM 0x01
672#define FDD_E_GSM_MASK_IN_NVRAM 0x02
673#define FDD_DCS_1800_MASK_IN_NVRAM 0x04
674#define FDD_GSM_480_MASK_IN_NVRAM 0x01
675#define FDD_GSM_450_MASK_IN_NVRAM 0x02
676
677#define DISABLE_A54_CIPHER_ALGO 0xF7
678
679/*
680 mrs_gas_band_setting_update_for_OOS() essentially does same thing as
681 mrs_gas_reset_band_settings(). mrs_gas_band_setting_update_for_OOS()function
682 is retained as this is ported from of MCC based band update feature
683*/
684#define mrs_gas_reset_band_settings mrs_gas_band_setting_update_for_OOS
685#define mrs_gas_update_gsm_band_setting mrs_gas_band_setting_update_for_OOS
686
687/*****************************************************************************
688 * Macros With Parameters
689 *****************************************************************************/
690
691
692/*****************************************************************************
693 * Enums without tags
694 *****************************************************************************/
695#ifdef __A5_3_AND_GEA_WHILTE_LIST__
696
697typedef enum
698{
699 DEFAULT_VALUE = 0,
700 PLMN_MATCHED = 1,
701 PLMN_NOT_MATCHED = 2
702}plmn_match_enum;
703
704#endif
705
706/*****************************************************************************
707 * Type Definitions
708 *****************************************************************************/
709/* Stucture of supported channel modes */
710typedef struct
711{
712 kal_uint8 is_signalling_supp;
713 kal_uint8 is_speech_full_or_half_ver_1_supp;
714 kal_uint8 is_speech_full_or_half_ver_2_supp;
715 kal_uint8 is_speech_full_or_half_ver_3_supp;
716 /* ZY: add for AMR-WB */
717#ifdef __AMRWB_LINK_SUPPORT__
718 kal_uint8 is_speech_full_or_half_ver_4_supp;
719 kal_uint8 is_speech_full_or_half_ver_5_supp;
720#endif /* __AMRWB_LINK_SUPPORT__ */
721 kal_uint8 is_data_43_5_dl_or_14_5_ul_supp;
722 kal_uint8 is_data_29_0_dl_or_14_5_ul_supp;
723 kal_uint8 is_data_43_5_dl_or_29_0_ul_supp;
724 kal_uint8 is_data_14_5_dl_or_43_5_ul_supp;
725 kal_uint8 is_data_14_5_dl_or_29_0_ul_supp;
726 kal_uint8 is_data_29_0_dl_or_43_5_ul_supp;
727 kal_uint8 is_data_43_5_radio_intf_rate_supp;
728 kal_uint8 is_data_32_0_radio_intf_rate_supp;
729 kal_uint8 is_data_29_0_radio_intf_rate_supp;
730 kal_uint8 is_data_14_5_radio_intf_rate_supp;
731 kal_uint8 is_data_12_0_radio_intf_rate_supp;
732 kal_uint8 is_data_06_0_radio_intf_rate_supp;
733 kal_uint8 is_data_03_6_radio_intf_rate_supp;
734 kal_uint8 is_half_rate_supp;
735}fdd_channel_mode_supported_struct;
736
737typedef struct
738{
739 kal_uint8 access_tech[16];
740 kal_uint8 power_cap[16];
741 kal_uint8 hscsd_multi_slot_class;
742 kal_uint8 gprs_multi_slot_class;
743 kal_uint8 pseudo_sync_cap;
744 kal_uint8 vbs;
745 kal_uint8 vgcs;
746 kal_uint8 algo_supported;
747 kal_uint8 hscsd_multi_slot_class_present;
748 kal_uint8 gprs_multi_slot_class_present;
749 kal_uint8 revision_level_indicator;
750 kal_uint8 gprs_ext_dynamic_cap;
751 kal_uint8 gea_supported;
752 kal_uint8 sm_cap_gprs;
753 kal_uint8 pfc_mode;
754
755 kal_bool early_class_mark_support;
756 kal_uint8 mm_non_drx_timer_value;
757 fdd_channel_mode_supported_struct chl_mode_supported; /* struct of supported channel modes */
758
759 /* Evelyn 20080909 */
760 /* Lanslo 20050215: for selecting GPRS or EGPRS capability */
761#ifdef __EGPRS_MODE__
762 kal_uint8 egprs_multi_slot_class_present;
763 kal_uint8 egprs_multi_slot_class;
764 kal_uint8 egprs_ext_dynamic_cap;
765 //Jelly 20090602 Use __EPSK_TX__
766 /* Evelyn 20090422: set difference power class of 8PSK */
767#ifdef __EPSK_TX__
768 kal_uint8 power_cap_8psk[16];
769#endif /* __EPSK_TX__ */
770#endif /* __EGPRS_MODE__ */
771
772 /* Evelyn 20090905: Modify for High multislot class */
773#if defined (__MULTISLOT_CLASS_34__) || defined (__MULTISLOT_CLASS_45__)
774 kal_uint8 high_multi_slot_class_present;
775 kal_uint8 high_multi_slot_class;
776#endif
777 /* eo Lanslo */
778
779 kal_uint8 gmsk_multislot_power_profile;
780 kal_uint8 eightpsk_multislot_power_profile;
781 kal_uint8 downlink_advanced_receiver_performance;
782
783#ifdef __GERAN_R11__
784 kal_uint8 extended_earfcn;
785 kal_uint8 eutran_wb_rsrq;
786 kal_uint8 umts_mfbi;
787 kal_uint8 eutra_mfbi;
788#endif /* __GERAN_R11__ */
789
790#ifdef __A5_3_AND_GEA_WHILTE_LIST__
791 kal_uint8 a5_default_supported;
792 kal_uint8 gea_default_supported;
793#endif /* __A5_3_AND_GEA_WHILTE_LIST__ */
794#ifdef __VAMOS_CUSTOM_CONFIG__
795 kal_uint8 vamos_level_from_custom_config;
796#endif
797
798} fdd_ms_capability_from_mrs_struct;
799
800/* The structure is defined here, but the variables are stored in rr_cntx_info.
801 Because they are obtained from RATCM initialization procedure, not MRS .*/
802typedef struct {
803 kal_uint8 non_drx_timer;
804 kal_uint8 split_on_ccch;
805 kal_uint16 split_pg_cycle;
806} fdd_ms_capability_from_nas_struct;
807
808typedef struct {
809 access_technology_type_enum serving_band;
810 kal_uint8 band_indicator;
811 kal_uint16 arfcn;
812 kal_uint8 bsic;
813 kal_uint8 msc_r;
814 rr_mm_sgsnr_flag_enum sgsn_r;
815} fdd_gas_serving_cell_info_struct;
816
817typedef struct {
818 mrs_gsm_power_class_enum pow_class_band450;
819 mrs_gsm_power_class_enum pow_class_band480;
820 mrs_gsm_power_class_enum pow_class_band710;
821 mrs_gsm_power_class_enum pow_class_band750;
822 mrs_gsm_power_class_enum pow_class_band810;
823 mrs_gsm_power_class_enum pow_class_band850;
824 mrs_gsm_power_class_enum pow_class_band900P;
825 mrs_gsm_power_class_enum pow_class_band900E;
826 mrs_gsm_power_class_enum pow_class_band900R;
827 mrs_gsm_power_class_enum pow_class_band1800;
828 mrs_gsm_power_class_enum pow_class_band1900;
829} fdd_mrs_gsm_power_class_struct;
830
831
832typedef struct {
833 fdd_ms_capability_from_mrs_struct ms_capability;
834 kal_uint8 ms_classmark3_len; /* The bit length of Classmark3 */
835 kal_uint8 ms_classmark3_R98_len; /* The bit length of Classmark3 when MS supports Release 98 */
836 kal_uint8 ms_default_classmark2[FDD_RR_NVRAM_CLK2_LEN]; /* read from nvram and has been decoded as power on */
837 kal_uint8 ms_classmark2[FDD_RR_NVRAM_CLK2_LEN];
838 kal_uint8 ms_full_classmark2[FDD_RR_FULL_CLK2_LEN];
839 kal_uint8 ms_classmark3[FDD_RR_NVRAM_CLK3_LEN];
840 rat_enum rat_mode;
841 /* GSM supported band */
842 kal_uint8 gsm_supported_band;
843 kal_bool is_test_sim;
844 fdd_gas_serving_cell_info_struct serving_cell_info;
845 capability_switch_enum gsm_cap;
846
847#ifdef __LTE_RAT__
848 capability_switch_enum eutran_cap;
849#endif /* __LTE_RAT__ */
850
851#ifdef __UMTS_FDD_MODE__
852 /* record the bit location for UMTS FDD RAT Capibility; this bit
853 * is set to 1 only when the MS is in GSM+UMTS dual mode
854 */
855 kal_uint8 cm3_umts_fdd_bit_location;
856#endif /* __UMTS_FDD_MODE__ */
857
858 /* record the bit location for VAMOS level setting. */
859 kal_uint8 cm3_vamos_bit_location;
860 kal_uint8 inject_vamos;
861 kal_uint8 vamos_level_from_nvram;
862
863#ifdef __GERAN_R8__
864 /* record the bit location for R8 Capibility;
865 * this bit is set to 1 only when the MS is in GSM+LTE
866 * dual mode or GSM+UMTS+LTE triple mode
867 */
868 kal_uint8 cm3_r8_bit_location;
869#endif /* __GERAN_R8__ */
870
871#ifdef __GERAN_R9__
872 kal_uint8 cm3_r9_csg_bit_location;
873#endif /* __GERAN_R9__ */
874
875/* Extended EARFCN is late addition to Rel 11 also 44.018 and 44.060 spec has this feature in REL11, */
876/*So right now keep code change under __GERAN_R11__, if needed in future, change to __GERAN_R12__*/
877#ifdef __GERAN_R11__
878 kal_uint8 cm3_r12_extended_earfcn_bit_location;
879 kal_uint8 cm3_r11_eutra_wb_rsrq_location;
880 kal_uint8 cm3_r12_umts_mfbi_bit_location;
881 kal_uint8 cm3_r12_eutra_mfbi_bit_location;
882#endif /* __GERAN_R11__ */
883
884#if defined(__EGPRS_MODE__)
885 kal_bool is_epsk_tx_enabled;
886#endif
887
888#ifdef __AGPS_CONTROL_PLANE__
889 kal_bool agps_supported_in_clk;
890#endif /* __AGPS_CONTROL_PLANE__ */
891
892#ifdef __PS_SERVICE__
893 kal_bool inject_ra_cap_normal_coding;
894 /* Katie 20130304: add inject to turn off R8R9 capability for CRTUG 44.2.10 */
895 /* TangTe 20140929 change inject_ra_cap_turn_R8R9_off into inject_ra_cap_support_rel,
896 default value:255, the value will represent the release version*/
897 kal_uint8 inject_ra_cap_support_rel;
898 /* TangTe 02150313 add for report 2G capability(Access technology tepe and RF power Capability) when 3G only*/
899 kal_bool inject_2g_cap_in_3gonly;
900#endif /* __PS_SERVICE__ */
901
902 /* store the nvram CLK in context to allow set gas band without reboot */
903 kal_uint8 *ms_classmark_in_nvram_ptr;
904 kal_uint8 ms_classmark_in_nvram_len;
905
906#ifdef __NR_RAT__
907 capability_switch_enum nr_cap;
908#endif /* __NR_RAT__ */
909
910 /* This Context variable will contain gsm AS and HW supported band */
911 kal_uint8 gsm_all_supported_band;
912
913 /* This variable hold enable or disable of MT SMS capability set through AT cmd */
914 gsm_sms_cap_enum gsm_sms_capability;
915
916} fdd_gas_capability_context_struct;
917
918/*****************************************************************************
919 * Declarations Of Exported Globals
920 *****************************************************************************/
921#ifdef __GSM_RAT__
922void fdd_mrs_gas_init_contx_default_value(void);
923
924extern void fdd_mrs_gas_reset(void);
925
926extern void fdd_mrs_gas_get_ms_capability(MRS_SIM_INDEX sim_index, fdd_gas_capability_context_struct *gas_ms_cap_ptr);
927
928extern kal_uint8 *fdd_mrs_gas_get_classmark1 (MRS_SIM_INDEX sim_index, MRS_RAT_MODE_TYPE required_rat);
929
930extern void fdd_mrs_gas_get_classmark3 (MRS_SIM_INDEX sim_index, bit_stream *bs_ptr);
931
932extern kal_uint8 fdd_mrs_gas_get_classmark3msg_len(MRS_SIM_INDEX sim_index);
933
934extern kal_bool fdd_mrs_gas_get_ucs2_support(MRS_SIM_INDEX sim_index);
935
936extern void fdd_mrs_gas_set_sim_type(MRS_SIM_INDEX sim_index, kal_bool is_test_sim);
937
938extern kal_uint8 fdd_mrs_gas_get_gsm_algo_support(MRS_SIM_INDEX sim_index);
939
940#ifdef __PS_SERVICE__
941extern kal_uint16 fdd_mrs_gas_get_radio_access_cap (MRS_SIM_INDEX sim_index, kal_uint8 support_band, kal_uint8 **ra_cap);
942extern 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);
943#endif /* __PS_SERVICE__ */
944
945extern kal_bool fdd_mrs_gas_get_2g3_ps_ho_cap (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
946
947extern kal_bool fdd_mrs_gas_get_2g4_ps_ho_cap (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
948
949extern kal_bool fdd_mrs_gas_get_ir_srvcc_cap (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
950
951extern void fdd_mrs_gas_update_serving_cell_info(MRS_SIM_INDEX sim_index, fdd_gas_serving_cell_info_struct serving_cell_info);
952
953extern void fdd_mrs_gas_update_current_rat_mode(MRS_SIM_INDEX sim_index, rat_enum rat_mode);
954
955extern kal_bool fdd_mrs_gas_validate_arfcn(MRS_SIM_INDEX sim_index, kal_uint16 arfcn, te_gsm_band_indicator band_indicator);
956
957extern kal_bool fdd_mrs_gas_band_setting_update(MRS_SIM_INDEX sim_index, kal_uint8 * gsm_band_ptr);
958
959extern 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);
960
961extern gsm_nw_band_enum rr_mrs_get_l4c_gsm_bandbitmap_from_arfcn(MRS_SIM_INDEX sim_index, kal_uint16 arfcn);
962
963#endif /* __GSM_RAT__ */
964
965#ifdef __LTE_RAT__
966
967extern void fdd_mrs_gas_update_disable_eutran_cap(MRS_SIM_INDEX sim_index, capability_switch_enum eutran_cap);
968extern void fdd_mrs_setLTEBand(kal_uint32 lte_band, kal_uint16* lte_nbr_band_list);
969
970#endif /* __LTE_RAT__ */
971
972void fdd_mrs_gas_read_nvram_cnf_handler(kal_uint16 nvram_file_id, kal_uint8* data, kal_uint16 len);
973
974extern void fdd_mrs_gas_decode_mscap_from_nvram(MRS_SIM_INDEX sim_index, kal_uint8 *bit_ptr);
975
976extern void fdd_mrs_gas_decode_ms_capability(MRS_SIM_INDEX sim_index, bit_stream *bit_stream_ptr, kal_bool is_dynmc_cfg);
977
978extern kal_bool fdd_mrs_gas_is_R99_supported_in_CS(MRS_SIM_INDEX sim_index);
979
980extern kal_bool fdd_mrs_gas_is_R99_supported_in_PS(MRS_SIM_INDEX sim_index);
981extern kal_uint8 *fdd_mrs_gas_get_classmark2 (MRS_SIM_INDEX sim_index, MRS_RAT_MODE_TYPE required_rat, kal_bool get_full_ie);
982
983
984extern void fdd_mrs_gas_get_powerclass(MRS_SIM_INDEX sim_index, fdd_mrs_gsm_power_class_struct *gsm_pow_class);
985
986extern kal_bool fdd_mrs_gas_retrieve_arfcn_band(MRS_SIM_INDEX sim_index,kal_uint16 arfcn, kal_uint8 *band_ptr);
987#ifdef __A5_3_AND_GEA_WHILTE_LIST__
988extern 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);
989#endif /* __A5_3_AND_GEA_WHILTE_LIST__ */
990
991extern void fdd_mrs_gas_add_black_cell_list_notification(void);
992
993extern void fdd_mrs_gas_clear_black_cell_list_notification(void);
994
995extern void fdd_mrs_set_current_camped_plmn(MRS_SIM_INDEX sim_index,plmn_id_struct plmn_id);
996
997#ifdef __VAMOS_CUSTOM_CONFIG__
998extern void fdd_mrs_set_custom_vamos(MRS_SIM_INDEX sim_index, kal_uint8 *vamos, kal_bool plmn_match);
999extern kal_uint8 fdd_mrs_get_custom_vamos(MRS_SIM_INDEX sim_index);
1000
1001#endif /* __VAMOS_CUSTOM_CONFIG__ */
1002
1003extern void fdd_mrs_print_classmark(kal_uint8 *bs_ptr, kal_uint16 line_num);
1004
1005extern kal_bool mrs_gas_is_supported_band(MRS_SIM_INDEX sim_index, kal_uint16 lte_band_idx);
1006
1007#ifdef __NR_RAT__
1008extern void fdd_mrs_gas_update_disable_nr_cap(MRS_SIM_INDEX sim_index, capability_switch_enum nr_cap);
1009#endif /* __NR_RAT__ */
1010
1011extern kal_bool fdd_mrs_update_gsm_band_setting(MRS_SIM_INDEX sim_index, kal_uint8 *band_setting);
1012extern kal_bool fdd_mrs_gas_band_setting_update_by_plmn(MRS_SIM_INDEX sim_index, mrs_plmn_id cplmn);
1013extern void fdd_mrs_gas_get_gsm_all_supported_band(MRS_SIM_INDEX sim_index, kal_uint8 *gsmbandmask);
1014extern kal_bool fdd_mrs_gas_mcc_band_setting_update(MRS_SIM_INDEX sim_index, kal_uint8 * gsm_band_ptr);
1015
1016extern void fdd_mrs_set_gsm_sms_capability(MRS_SIM_INDEX sim_index, kal_bool gsm_sms_cap);
1017extern void fdd_mrs_gas_set_gsm_cap_update(MRS_SIM_INDEX sim_index, capability_switch_enum gsm_cap);
1018extern capability_switch_enum fdd_mrs_gas_get_gsm_cap_update(MRS_SIM_INDEX sim_index);
1019extern kal_bool fdd_mrs_gas_gsm_enabled (MRS_SIM_INDEX sim_index, rat_enum rat_mode);
1020
1021/************************************************** End of FDD's part **************************************************/
1022
1023#endif /* _MRS_GAS_CAPABILITY_H */
1024