blob: e3f879b875d026abde8a183a34fa64991ecc6806 [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_emm_capability.h
40 *
41 * Project:
42 * --------------------------------------------------------
43 * Multimode
44 *
45 * Description:
46 * --------------------------------------------------------
47 * The EMM capability stored in MRS context.
48 *
49 * Author:
50 * --------------------------------------------------------
51 * -------
52 *
53 * --------------------------------------------------------
54 * $Log$
55 *
56 * 03 22 2022 ot_samiksha.d
57 * [MOLY00785023] [Gen97] NAS_SV disable GSM through capability update
58 *
59 * - EMM part.
60 *
61 * 05 28 2020 youru.chen
62 * [MOLY00505511] [P200306-03896][A315N][MTK] UE has to set as off IEs for SRVCC with korean operator.
63 *
64 * [MPD][R3.MP][out-of-Vlist]
65 * code sync
66 * 1. MOLY00505511:CL10859074, 10907564 (need to handle specific in TC10.SP branch)
67 *
68 * 09 20 2018 chinte.chen
69 * [MOLY00352532] [EMM][5GS_Ph1] R15 new feature
70 * Set S1 mode & N1 mode & ePCO in ue network capability.
71 *
72 * 08 30 2018 tim.huang
73 * [MOLY00306148] [NAS] pangu giant CR
74 * fix UT for mrs_nras_is_endc_support.
75 *
76 * 08 17 2018 jerry-yh.chang
77 * [MOLY00306148] [NAS] pangu giant CR
78 * [EMM][ Code Sync][GEN97.DEV][OA Domain] Remove NVRAM group header file
79 * CL: 6096555, 6124250
80 *
81 * 08 17 2018 chinte.chen
82 * [MOLY00306148] [NAS] pangu giant CR
83 * patch back 6136963.
84 *
85 * 04 25 2018 zanya.peng
86 * [MOLY00321650] [UMOLYE][MT6765][Cervino][O1][MD Static Test][China][Auto]The UMTS security capability is not correctly set in UE Network Capability from the URRC Dynamic CAP.
87 *
88 * .
89 *
90 * 08 17 2017 zanya.peng
91 * [MOLY00270723] [BIANCO][MT6763][RDIT][L+L][BringUp]mtklogsim2-volte-fail?]Call ?^??2G?^
92 *
93 * .
94 *
95 * 01 28 2016 bob.chiang
96 * [MOLY00159957] AT+CISRVCC implementation
97 * : [MRS][EMM]
98 *
99 * 08 11 2014 tuan-che.chen
100 * [MOLY00075019] [Critical][NS-IOT][CMCC Case][K2 DSDS][CSFB][NS-IOT][anite9000][25.0][band38][5.1.1]fail:PDN decode error
101 * consider RAT mode for EMM MRS
102 *
103 * 01 22 2013 david.niu
104 * [MOLY00009205] [MRS] Code checked-in for MOLY branch
105 * .
106 *
107 *****************************************************************************/
108
109#ifndef _MRS_EMM_CAPABILITY_H
110#define _MRS_EMM_CAPABILITY_H
111
112#include "mrs_as_enums.h"
113#include "errc_nvram_def.h"
114
115/*****************************************************************************
116 * Macros Without Parameters
117 *****************************************************************************/
118
119
120/*****************************************************************************
121 * Macros With Parameters
122 *****************************************************************************/
123
124
125/*****************************************************************************
126 * Enums without tags
127 *****************************************************************************/
128#define UE_NETWORK_CAPABILITY_LEN 7
129#define UE_SECURITY_CAPABILITY_LEN 5
130
131#define UE_ADD_SECURITY_CAPABILITY_LEN 4
132
133/*****************************************************************************
134 * Type Definitions
135 *****************************************************************************/
136typedef struct {
137
138 kal_uint8 ue_network_capability[UE_NETWORK_CAPABILITY_LEN];
139 kal_uint8 ue_security_capability[UE_SECURITY_CAPABILITY_LEN];
140 kal_bool nf;
141 kal_bool srvcc;
142#ifdef __GEMINI_LTE__
143 kal_bool is_lte_needed;
144 kal_uint64 sim_plmn;
145#endif /* __GEMINI_LTE__ */
146 kal_bool s1_mode; /* disable & enable E-UTRAN capability by UE_CAPABILITY_CHANGE_PROCEDURE, clause 4.5 in TS 24.301 */
147} emm_capability_context_struct;
148
149/*****************************************************************************
150 * Declarations Of Exported Globals
151 *****************************************************************************/
152
153void mrs_emm_init_contx_default_value(void);
154
155void mrs_emm_read_nvram_cnf_handler(kal_uint16 nvram_file_id, kal_uint8* data, kal_uint16 len);
156
157void mrs_emm_get_ue_nw_cap(MRS_SIM_INDEX sim_index, rat_enum rat_mode, kal_uint8* data, kal_uint8* len);
158
159void mrs_emm_get_ue_nw_cap_without_rat_mode_modification(MRS_SIM_INDEX sim_index, rat_enum rat_mode, kal_uint8* data, kal_uint8* len);
160
161void mrs_emm_get_ue_sec_cap(MRS_SIM_INDEX sim_index, rat_enum rat_mode, kal_uint8* data, kal_uint8 *len);
162
rjw2b1408e2022-12-19 11:19:29 +0800163void mrs_emm_get_ue_sec_cap_without_rat_mode_modification(MRS_SIM_INDEX sim_index, rat_enum rat_mode, kal_uint8* data, kal_uint8 *len);
164
rjw6c1fd8f2022-11-30 14:33:01 +0800165void mrs_emm_get_ue_add_sec_cap(MRS_SIM_INDEX sim_index, rat_enum rat_mode, kal_uint8* data, kal_uint8 *len);
166
167#if defined(__GSM_RAT__) || defined(__UMTS_RAT__)
168void usime_cap_set_emm_capability(MRS_SIM_INDEX sim_index,emm_capability_context_struct *emm_cap);
169
170void classmark_racap_set_emm_capability(MRS_SIM_INDEX sim_index,emm_capability_context_struct *emm_cap);
171#endif
172
173void lte_cap_set_emm_capability(kal_uint8 *data, emm_capability_context_struct *emm_cap);
174
175/* Used by MM */
176kal_bool mrs_emm_get_srcvv(MRS_SIM_INDEX sim_index, rat_enum rat_mode);
177
178/*Titan requirement to set SRVCC FALSE for some operators*/
179kal_bool mrs_emm_get_srvcc_support_for_select_operators(MRS_SIM_INDEX sim_index);
180
181/* Used by L4C */
182kal_bool mrs_emm_set_srvcc(MRS_SIM_INDEX sim_index, kal_bool is_support);
183
184/* Used by MM */
185kal_bool mrs_emm_get_nf(MRS_SIM_INDEX sim_index);
186
187
188#ifdef __GEMINI_LTE__
189
190/* Used by EMM */
191
192void mrs_emm_set_sim_currplmn(MRS_SIM_INDEX sim_index, kal_uint64 plmnId);
193
194void mrs_emm_set_lte_needed(MRS_SIM_INDEX sim_index, kal_bool is_lte_needed);
195
196/* Used by GAS */
197
198kal_bool mrs_emm_is_sim_currplmn_cmcc(MRS_SIM_INDEX sim_index);
199
200kal_bool mrs_emm_is_lte_needed(MRS_SIM_INDEX sim_index);
201
202#endif /* __GEMINI_LTE__ */
203
204/**
205 * @brief A function that sets epc nas(S1 mode) supported
206 * @param[in] sim_index indicates the protocol which is selected
207 * @param[in] s1_mode is used for setting the configuration.
208 * @return KAL_TRUE if s1_mode set sucessfully.
209 *
210 * the s1 mode is used for 5GMM capability IE and defined in TS 24.501
211 */
212kal_bool mrs_emm_set_cap_epc_nas_support(MRS_SIM_INDEX sim_index, kal_bool s1_mode);
213
214/**
215 * @brief A function that gets epc nas(S1 mode) supported
216 * @param[in] sim_index indicates the protocol which is selected
217 * @param[in] rat_mode is used for checking if we could get the s1_mode configuration.
218 * @return KAL_TRUE if epc nas(s1_mode) is supported.
219 *
220 * the s1 mode is used for 5GMM capability IE and defined in TS 24.501
221 */
222kal_bool mrs_emm_get_cap_epc_nas_support(MRS_SIM_INDEX sim_index, rat_enum rat_mode);
223
224
225#endif /* _MRS_EMM_CAPABILITY_H */
226