blob: 6323c10e19e0d2140d9048b59093080f1fd90644 [file] [log] [blame]
/******************************************************************************
* 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_emm_capability.h
*
* Project:
* --------------------------------------------------------
* Multimode
*
* Description:
* --------------------------------------------------------
* The EMM capability stored in MRS context.
*
* Author:
* --------------------------------------------------------
* -------
*
* --------------------------------------------------------
* $Log$
*
* 03 22 2022 ot_samiksha.d
* [MOLY00785023] [Gen97] NAS_SV disable GSM through capability update
*
* - EMM part.
*
* 05 28 2020 youru.chen
* [MOLY00505511] [P200306-03896][A315N][MTK] UE has to set as off IEs for SRVCC with korean operator.
*
* [MPD][R3.MP][out-of-Vlist]
* code sync
* 1. MOLY00505511:CL10859074, 10907564 (need to handle specific in TC10.SP branch)
*
* 09 20 2018 chinte.chen
* [MOLY00352532] [EMM][5GS_Ph1] R15 new feature
* Set S1 mode & N1 mode & ePCO in ue network capability.
*
* 08 30 2018 tim.huang
* [MOLY00306148] [NAS] pangu giant CR
* fix UT for mrs_nras_is_endc_support.
*
* 08 17 2018 jerry-yh.chang
* [MOLY00306148] [NAS] pangu giant CR
* [EMM][ Code Sync][GEN97.DEV][OA Domain] Remove NVRAM group header file
* CL: 6096555, 6124250
*
* 08 17 2018 chinte.chen
* [MOLY00306148] [NAS] pangu giant CR
* patch back 6136963.
*
* 04 25 2018 zanya.peng
* [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.
*
* .
*
* 08 17 2017 zanya.peng
* [MOLY00270723] [BIANCO][MT6763][RDIT][L+L][BringUp]mtklogsim2-volte-fail?]Call ?^??2G?^
*
* .
*
* 01 28 2016 bob.chiang
* [MOLY00159957] AT+CISRVCC implementation
* : [MRS][EMM]
*
* 08 11 2014 tuan-che.chen
* [MOLY00075019] [Critical][NS-IOT][CMCC Case][K2 DSDS][CSFB][NS-IOT][anite9000][25.0][band38][5.1.1]fail:PDN decode error
* consider RAT mode for EMM MRS
*
* 01 22 2013 david.niu
* [MOLY00009205] [MRS] Code checked-in for MOLY branch
* .
*
*****************************************************************************/
#ifndef _MRS_EMM_CAPABILITY_H
#define _MRS_EMM_CAPABILITY_H
#include "mrs_as_enums.h"
#include "errc_nvram_def.h"
/*****************************************************************************
* Macros Without Parameters
*****************************************************************************/
/*****************************************************************************
* Macros With Parameters
*****************************************************************************/
/*****************************************************************************
* Enums without tags
*****************************************************************************/
#define UE_NETWORK_CAPABILITY_LEN 7
#define UE_SECURITY_CAPABILITY_LEN 5
#define UE_ADD_SECURITY_CAPABILITY_LEN 4
/*****************************************************************************
* Type Definitions
*****************************************************************************/
typedef struct {
kal_uint8 ue_network_capability[UE_NETWORK_CAPABILITY_LEN];
kal_uint8 ue_security_capability[UE_SECURITY_CAPABILITY_LEN];
kal_bool nf;
kal_bool srvcc;
#ifdef __GEMINI_LTE__
kal_bool is_lte_needed;
kal_uint64 sim_plmn;
#endif /* __GEMINI_LTE__ */
kal_bool s1_mode; /* disable & enable E-UTRAN capability by UE_CAPABILITY_CHANGE_PROCEDURE, clause 4.5 in TS 24.301 */
} emm_capability_context_struct;
/*****************************************************************************
* Declarations Of Exported Globals
*****************************************************************************/
void mrs_emm_init_contx_default_value(void);
void mrs_emm_read_nvram_cnf_handler(kal_uint16 nvram_file_id, kal_uint8* data, kal_uint16 len);
void mrs_emm_get_ue_nw_cap(MRS_SIM_INDEX sim_index, rat_enum rat_mode, kal_uint8* data, kal_uint8* len);
void 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);
void mrs_emm_get_ue_sec_cap(MRS_SIM_INDEX sim_index, rat_enum rat_mode, kal_uint8* data, kal_uint8 *len);
void mrs_emm_get_ue_add_sec_cap(MRS_SIM_INDEX sim_index, rat_enum rat_mode, kal_uint8* data, kal_uint8 *len);
#if defined(__GSM_RAT__) || defined(__UMTS_RAT__)
void usime_cap_set_emm_capability(MRS_SIM_INDEX sim_index,emm_capability_context_struct *emm_cap);
void classmark_racap_set_emm_capability(MRS_SIM_INDEX sim_index,emm_capability_context_struct *emm_cap);
#endif
void lte_cap_set_emm_capability(kal_uint8 *data, emm_capability_context_struct *emm_cap);
/* Used by MM */
kal_bool mrs_emm_get_srcvv(MRS_SIM_INDEX sim_index, rat_enum rat_mode);
/*Titan requirement to set SRVCC FALSE for some operators*/
kal_bool mrs_emm_get_srvcc_support_for_select_operators(MRS_SIM_INDEX sim_index);
/* Used by L4C */
kal_bool mrs_emm_set_srvcc(MRS_SIM_INDEX sim_index, kal_bool is_support);
/* Used by MM */
kal_bool mrs_emm_get_nf(MRS_SIM_INDEX sim_index);
#ifdef __GEMINI_LTE__
/* Used by EMM */
void mrs_emm_set_sim_currplmn(MRS_SIM_INDEX sim_index, kal_uint64 plmnId);
void mrs_emm_set_lte_needed(MRS_SIM_INDEX sim_index, kal_bool is_lte_needed);
/* Used by GAS */
kal_bool mrs_emm_is_sim_currplmn_cmcc(MRS_SIM_INDEX sim_index);
kal_bool mrs_emm_is_lte_needed(MRS_SIM_INDEX sim_index);
#endif /* __GEMINI_LTE__ */
/**
* @brief A function that sets epc nas(S1 mode) supported
* @param[in] sim_index indicates the protocol which is selected
* @param[in] s1_mode is used for setting the configuration.
* @return KAL_TRUE if s1_mode set sucessfully.
*
* the s1 mode is used for 5GMM capability IE and defined in TS 24.501
*/
kal_bool mrs_emm_set_cap_epc_nas_support(MRS_SIM_INDEX sim_index, kal_bool s1_mode);
/**
* @brief A function that gets epc nas(S1 mode) supported
* @param[in] sim_index indicates the protocol which is selected
* @param[in] rat_mode is used for checking if we could get the s1_mode configuration.
* @return KAL_TRUE if epc nas(s1_mode) is supported.
*
* the s1 mode is used for 5GMM capability IE and defined in TS 24.501
*/
kal_bool mrs_emm_get_cap_epc_nas_support(MRS_SIM_INDEX sim_index, rat_enum rat_mode);
#endif /* _MRS_EMM_CAPABILITY_H */