blob: 975bf0f9cd35e5f51135a2f7bbe2d75a8705543e [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) 2005
*
* 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:
* ---------
* L3_INC_STRUCT.H
*
* Project:
* --------
* MAUI
*
* Description:
* ------------
* This file describes the common enums of L3.
*
* Author:
* -------
* -------
*
*============================================================================
* HISTORY
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*------------------------------------------------------------------------------
* removed!
*
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*============================================================================
****************************************************************************/
/********************************************************************************
* Copyright Statement:
* --------------------
*
* This product has been developed using a protocol stack
* developed by Sasken Communication Technologies Limited.
*
********************************************************************************/
#ifndef _L3_INC_LOCAL_H
#define _L3_INC_LOCAL_H
#include "kal_general_types.h"
//#include "kal_non_specific_general_types.h"
#include "l3_inc_enums.h"
#include "mcd_l3_inc_struct.h"
#include "ps_public_struct.h"
#include "ps_public_enum_public.h"
#include "ps_public_enum.h"
#include "irat_common_enums.h"
#include "global_type.h"
#include "l3_inc_enums_public.h"
#include "gmss_public.h"
/*****************************************************************************
* Constant Definitions
*****************************************************************************/
/* RAT capability configuration */
#if defined (__GSM_RAT__)
#define IS_GSM_RAT_SUPPORTED 1
#else
#define IS_GSM_RAT_SUPPORTED 0
#endif
#if defined (__UMTS_RAT__)
#define IS_UMTS_RAT_SUPPORTED 1
#else
#define IS_UMTS_RAT_SUPPORTED 0
#endif
#if defined (__LTE_RAT__)
#define IS_LTE_RAT_SUPPORTED 1
#else
#define IS_LTE_RAT_SUPPORTED 0
#endif
#if defined (__NR_RAT__)
#define IS_NR_RAT_SUPPORTED 1
#else
#define IS_NR_RAT_SUPPORTED 0
#endif
#define MAX_SUPPORTED_RAT (IS_GSM_RAT_SUPPORTED+IS_UMTS_RAT_SUPPORTED+IS_LTE_RAT_SUPPORTED+IS_NR_RAT_SUPPORTED)
#if MAX_SUPPORTED_RAT == 0
#error "Shall at least define 1 valid RAT!"
#endif /* RAT capability configuration */
#define RAC_MAX_NUM_LISTED_PLMNS 16*MAX_SUPPORTED_RAT
#define SYS_MAX_MRU_LIST_NUM 12
#define MAX_FORBIDDEN_NETWORK_NUM 32
#define MAX_REDIRECT_FREQ_NUM 6
#define GMSS_LTE_UNAVAIL_DB_SIZE 128
#define MAX_PLMN_BAND_NUM 48
#define NRRC_KAMF_LENGTH (32)
/*****************************************************************************
* Type Definitions
*****************************************************************************/
#define PACKET_FILTER_CONTENT_LEN 53 /* Poying: 29+(32-8) */
// LOCAL_PARA_HDR + kal_uint8 nsapi (SM code assume nsapi is the first parameter of some primitive)
#define NSAPI_STRUCT_HDR \
LOCAL_PARA_HDR \
kal_uint8 nsapi;
#define MAX_LEN_OF_ALL_ALLOWED_NSSAI 144
typedef struct {
kal_uint8 pfi;
kal_uint8 epi;
kal_uint8 contents_len; /* in bytes*/
kal_uint8 contents[PACKET_FILTER_CONTENT_LEN];
} packet_filter_struct;
typedef struct {
kal_uint8 tft_op_code;
kal_uint8 spare;
kal_uint8 num_packet_filters;
packet_filter_struct packet_list[8];
} tft_struct;
typedef struct {
kal_uint16 req_n201u; //erica 20070112
} pdp_auxinfo_struct;
typedef struct {
kal_uint8 length; /* LENGTH*/
kal_uint8 digit0; /* DIGIT 0*/
kal_uint8 odd_or_even; /* ODD OR EVEN*/
kal_uint8 identity_type; /* IDENTITY TYPE*/
kal_uint8 digit_byte[7];
} imsi_struct;
typedef struct {
kal_uint16 bcch_list[8];
} bcchs_struct;
typedef struct {
kal_uint8 length;
kal_uint8 digit0;
kal_uint8 odd_or_even;
kal_uint8 identity_type;
kal_uint8 digit_byte[7];
} imei_struct;
typedef struct {
plmn_id_struct plmn_id;
kal_uint8 la_code[2];
kal_uint8 ra_code; /* RA CODE*/
kal_uint8 ta_code[3];
kal_uint32 cell_id; /* CELL ID*/
kal_uint16 bandwidth;
kal_bool is_csg_cell;
csg_info_struct csg_info;
#ifdef __VOLTE_SUPPORT__
kal_bool ims_emergency_support;
#endif
#ifdef __NG_ECALL_SUPPORT__
kal_bool ecall_over_ims_support;
#endif
} cell_info_struct;
typedef struct {
kal_bool is_cell_valid;
kal_uint32 cell_id;
kal_bool is_la_valid;
kal_uint8 la_code[2];
plmn_id_struct plmn_id;
} emc_forbidden_nw_list_struct;
typedef struct
{
kal_uint32 cell_id;
kal_uint8 la_code[2];
kal_uint8 ra_code;
/* Defined by IOT spec (reserved) */
kal_uint8 active_time;
kal_uint8 periodic_rau;
} gsm_cell_struct;
typedef struct
{
kal_uint32 cell_id;
kal_uint8 la_code[2];
kal_uint8 ra_code;
/* Defined by IOT spec (reserved) */
kal_uint8 active_time;
kal_uint8 periodic_rau;
} umts_cell_struct;
typedef struct
{
kal_uint32 cell_id;
kal_uint8 ta_code[2];
/* Defined by IOT spec (reserved) */
kal_uint8 active_time;
kal_uint8 periodic_tau;
kal_uint16 bandwidth;
kal_bool ims_emergency_support;
/* ENDC usage for 5G within 4G */
endc_sib_status_enum endc_sib_status;/* "endc_sib_status" will be set to "ENDC_SIB_STATUS_SUPPORT" if the corresponding
* bit of selected PLMN in PLMN-InfoList-r15 from SIB2 is TRUE.
*/
kal_bool endc_available; /* "endc_available" wil be set to TRUE if any bit in PLMN-InfoList-r15 from SIB2 is TRUE */
kal_bool endc_band_ue_supported; /* TRUE: UE support at least 1 ENDC combo with attached LTE cell band */
#ifdef __NG_ECALL_SUPPORT__
kal_bool ecall_over_ims_support;
#endif /* __NG_ECALL_SUPPORT__ */
} lte_cell_struct;
typedef struct
{
/* 5G extends the Cell ID to 36-bit */
kal_uint64 cell_id;
kal_uint8 ta_code[3];
kal_bool ims_emergency_support;
} nr_cell_struct;
typedef union {
gsm_cell_struct gsm_cell;
umts_cell_struct umts_cell;
lte_cell_struct lte_cell;
nr_cell_struct nr_cell;
} cell_info_union;
typedef struct {
rat_enum rat;
cell_info_union cell_info;
kal_bool is_csg_cell;
csg_info_struct csg_info;
rat_duplex_type_enum duplex_type;
plmn_id_struct plmn_id;
kal_bool is_on_hplmn;
kal_bool is_home_country; //AT&T requirement CDR-WiFi-1560: WiFi need to know domestic roaming and international roaming
} cell_info_and_rat_struct;
typedef struct
{
integ_protect_status_enum is_integ_protected;
kal_uint8 invalid_cs_sim_counter;
kal_uint8 invalid_ps_sim_counter;
kal_bool is_dos_enhance_enable;
}dos_enhance_info_struct;
typedef enum
{
MS_NULL_STATE = 0,
MS_READY_STATE,
MS_STANDBY_STATE,
MS_FORCED_TO_STANDBY_STATE
}gmm_ms_state_enum;
typedef enum {
CELL_CONNECTION_NONE = 0, // Cell is not a serving cell.
CELL_CONNECTION_PRIMARY_SERVING, // UE has connection to cell for signalling and possibly data (3GPP 36.331, 25.331).
CELL_CONNECTION_SECONDARY_SERVING, // UE has connection to cell for data (3GPP 36.331, 25.331).
} cell_connection_status_enum;
/*5G Part*/
typedef struct
{
/* Cell Identity NR */
kal_uint16 pci; // PCID
/**
* NR Cell Identity in range [0, 68719476735] (36 bits) described in 3GPP TS 38.331, which
* unambiguously identifies a cell within a PLMN. This value must be valid for registered or
* camped cells; LONG_MAX (2^63-1) means invalid/unreported.
*/
kal_uint8 cell_id[5]; //CI
kal_bool reg_status; // 0 for non-serving cell; 1 for serving cell
cell_connection_status_enum cell_connection_status;
NRARFCN ssb_arfcn;
/* Signal Strength NR */
kal_int16 ss_rsrp_in_qdbm; // RSRP, 0x8000 for invalid
kal_int16 ss_rsrq_in_qdb; // RSRQ, 0x8000 for invalid
kal_int16 ss_sinr_in_qdb; // SINR, 0x8000 for invalid
kal_int16 csi_rsrp_in_qdbm; // not support, 0x8000
kal_int16 csi_rsrq_in_qdb; // not support, 0x8000
kal_int16 csi_sinr_in_qdb; // not support, 0x8000
} cell_info_5g_output_struct;
/*4G Part*/
typedef struct
{
/* Cell Identity LTE */
kal_uint16 pci; // PCID
kal_uint32 cell_id; // CI
kal_bool reg_status; // 0 for non-serving cell; 1 for seving cell
cell_connection_status_enum cell_connection_status;
EARFCN dl_arfcn;
EARFCN ul_arfcn;
/* Signal Strength LTE */
kal_int16 rssi; // RSSI
kal_int16 rsrp; // RSRP
kal_int16 rsrq; // RSRQ
kal_int16 snr; // SNR
} cell_info_4g_output_struct;
/*3G Part*/
typedef struct
{
/* Cell Identity UMTS*/
kal_uint16 psc; // PSC
kal_uint32 cell_id; // CI
kal_bool reg_status; // Registration Status (Serving Cell/Non Serving cell)
cell_connection_status_enum cell_connection_status;
umts_duplex_mode_type umts_duplex_mode; // Duplex mode(UMTS_WCDMA_DUPLEX_MODE)
EARFCN dl_arfcn;
EARFCN ul_arfcn;
/* Signal Strength UMTS*/
kal_int16 rscp; // rscp
kal_int16 ecno; // EcNO
kal_int32 rssi; // RSSI
} cell_info_3g_output_struct;
/* 2G Part*/
typedef struct
{
/* Cell Identity 2G*/
kal_uint16 cell_id; // CI
kal_uint16 gsm_bsic;
kal_uint16 gsm_arfcn;
cell_connection_status_enum cell_connection_status;
/* Signal Strength 2G */
kal_int16 rssi; //RSSI
kal_bool reg_status; // 0: non-Serving cell; 1: Serving cell
} cell_info_2g_output_struct;
typedef union
{
cell_info_2g_output_struct plmn_list_2g_output;
cell_info_3g_output_struct plmn_list_3g_output;
cell_info_4g_output_struct plmn_list_4g_output;
cell_info_5g_output_struct plmn_list_5g_output;
} cell_info_output_union_type;
/* UAS/GAS <-> RATCM begin */
typedef struct {
plmn_id_struct plmn_id;
kal_uint8 la_or_ta_code[3];
kal_int16 power_level;
kal_bool may_suitable_cell_exist;
//TRUE(1) for suitable cell may exist;
//FALSE(0) for no suitable cell exist.
kal_bool may_suitable_cell_exist_higher_pri;
lte_duplex_type_enum lte_type;
#ifdef __VOLTE_SUPPORT__
kal_bool ims_emergency_support;
#endif
#ifdef __NG_ECALL_SUPPORT__
kal_bool ecall_over_ims_support;
#endif /* __NG_ECALL_SUPPORT__ */
kal_bool not_suitable_for_select;
// AS will report this flag according to SBP_DISPLAY_NOT_SELECTABLE_PLMN and cell status
kal_uint32 time_scan_start;
kal_uint32 time_scan_end;
kal_uint16 band_ind;
endc_sib_status_enum endc_sib_status; /* upperLayerIndication-r15 in SIB2 */
cell_info_output_union_type plmn_list_output;
} available_plmn_struct;
typedef struct {
kal_uint8 plmn_count;
plmn_id_rat_struct plmn_id_rat[RAC_MAX_NUM_LISTED_PLMNS];
kal_uint8 la_code[RAC_MAX_NUM_LISTED_PLMNS][3];
nwsel_plmn_list_status_enum status[RAC_MAX_NUM_LISTED_PLMNS];
endc_sib_status_enum endc_sib_status[RAC_MAX_NUM_LISTED_PLMNS]; /* upperLayerIndication-r15 in SIB2 */
kal_bool may_suitable_cell_exist[RAC_MAX_NUM_LISTED_PLMNS];
available_plmn_struct available_list[RAC_MAX_NUM_LISTED_PLMNS];
} rac_plmn_list_struct;
typedef struct {
kal_uint8 plmn_count;
kal_uint8 high_quality_plmn_count;
available_plmn_struct available_plmn[MAX_NUM_PLMN_PER_RAT];
} as_plmn_list_struct;
typedef struct {
plmn_id_rat_struct plmn_id_rat;
kal_uint8 csg_count;
csg_info_struct *csg_info_list;
} available_plmn_csg_struct;
typedef struct {
kal_uint8 plmn_count;
available_plmn_csg_struct available_plmn_csg[MAX_NUM_PLMN_PER_RAT];
} as_csg_list_struct;
typedef struct
{
kal_uint8 plmn_count;
available_plmn_csg_struct available_plmn_csg[MAX_NUM_PLMN_PER_RAT];
kal_uint8 sorted_csg_count;
available_plmn_csg_struct sorted_plmn_csg[MAX_CSG_NUM];
} rac_csg_list_struct;
typedef struct{
kal_uint8 ref_count;
kal_uint16 msg_len;
kal_bool is_cs_cipher_key_info_present; /* if GSM CS cipher key present */
kal_uint8 cs_cipher_key_info[KC_LEN]; /* GSM CS domain cipher key (Kc) */
kal_bool is_cs_cipher_key128_info_present; /* if GSM CS cipher key128 present */
kal_uint8 cs_cipher_key128_info[KC128_LEN]; /* GSM CS domain cipher key128 (Kc128) */
kal_uint8 cksn; /* cipher key sequence number */
}ratcm_gas_security_mode_req_struct;
typedef struct{
domain_id_enum domain_id; //The domain of security context
kal_uint8 umts_ciphering_key[CK_LEN]; //UMTS ciphering key
kal_uint8 umts_integrity_key[IK_LEN]; //UMTS integrity key
}uas_security_context_struct;
/* UAS/GAS <-> RATCM end */
typedef struct {
domain_id_enum pag_resp_rest_ind;
domain_id_enum loc_reg_rest_ind;
kal_uint16 loc_reg_ppacr;
} ppacr_info_struct ;
/* L4C <-> ENAS/EAS begin */
/* Cell restriction related definitions */
#define REST_CELL_ARRAY_SIZE 8
#define REST_FREQ_ARRAY_SIZE 8
typedef enum {
REST_MODE_NULL,
REST_MODE_RESTRICTED_LIST,
REST_MODE_PERMITTED_LIST
} rest_mode_enum;
typedef struct {
EARFCN earfcn; /* EARFCN */
kal_uint16 lower_cell_id; /* Lower Physical Cell Identity */
kal_uint16 higher_cell_id; /* Higher Physical Cell Identity */
} rest_cell_range_struct;
typedef struct{
kal_uint16 lower_earfcn; /* Lower EARFCN */
kal_uint16 higher_earfcn; /* Higher EARFCN */
} rest_freq_range_struct;
typedef struct{
rest_mode_enum mode; /* Restricted list mode */
kal_uint8 rest_cell_range_num; /* Number of restricted cell list */
kal_uint8 rest_freq_range_num; /* Number of restricted frequency list */
rest_cell_range_struct rest_cell_range_list[REST_CELL_ARRAY_SIZE]; /* Restricted cell list */
rest_freq_range_struct rest_freq_range_list[REST_FREQ_ARRAY_SIZE]; /* Restricted frequency list */
kal_bool is_umts_rest; /* If all umts cells are restricted */
kal_bool is_gsm_rest; /* If all gsm cells are restricted */
kal_bool is_c2k_rest; /* If all c2k cells are restricted */
} rest_command_struct;
/* Monitor mode struct */
typedef struct{
kal_bool is_monitor_mode_set; /* Is monitor mode is switched on or off */
} monitor_mode_command_struct;
/* L4C <-> ENAS/EAS end */
/* ETCM <-> ENAS/EAS begin */
#define MIN_APN_LEN 1
typedef struct
{
kal_uint8 length;
kal_uint8 data[MAX_APN_LEN];
} apn_struct;
/* ETCM <-> ENAS/EAS end */
/* NWSEL <-> ENAS/EAS begin */
typedef struct
{
kal_uint8 addr_length;
kal_uint8 addr_bcd[MAX_NW_ECC_NUM_LENGTH];
} l3_addr_bcd_struct;
typedef struct {
kal_uint8 category;
l3_addr_bcd_struct tel_number;
} ecc_number_struct;
/* RATCM -> MM -> NWSEL */
typedef struct {
LOCAL_PARA_HDR
rat_enum rat;
kal_uint32 cell_id;
kal_bool is_la_valid;
kal_uint8 la_code[2];
kal_bool is_ra_valid;
kal_uint8 ra_code;
kal_uint8 multi_plmn_count;
plmn_id_struct multi_plmn_id[MAX_NUM_MULTI_PLMN];
} mm_cell_global_identity_info_ind_struct;
/* RATCM -> MM -> NWSEL */
typedef struct
{
kal_uint16 band;
plmn_id_struct plmn_id; /* chann */
} cell_band_info_struct;
typedef struct {
LOCAL_PARA_HDR
kal_uint16 gibi_tag;
rat_enum rat;
kal_bool is_data_pending;
kal_bool is_sys_info_present;
#if defined(__UMTS_FDD_MODE__) || defined(__TD_NETWORK_SHARING__) || defined (UNIT_TEST)
kal_uint8 multi_plmn_count;
plmn_id_struct multi_plmn_id[MAX_NUM_MULTI_PLMN];
as_cell_type_enum multi_plmn_cell_type[MAX_NUM_MULTI_PLMN];
#endif
plmn_id_struct plmn_id;
kal_uint8 la_code[2];
kal_uint8 ra_code;
kal_uint32 cell_id; //mtk02475: extended cell id in UMTS
kal_bool cell_support_cs;
kal_bool cell_support_ps; /* if FALSE, nmo and ra_code should not refer. */
kal_bool is_acc_class_present;
kal_uint16 acc_class;
kal_uint8 extra_info_bitmask; /* mtk02475: for DSAC/data_speed_support update in connected mode*/
#if defined (__R6_DSAC__) || defined (UNIT_TEST)
kal_uint8 dsac_plmn_bitmask;
kal_uint16 cs_dsac[MAX_NUM_MULTI_PLMN];
kal_uint16 ps_dsac[MAX_NUM_MULTI_PLMN];
#endif
kal_uint8 t3212_timer_val;
network_mode_enum nmo;
as_cell_type_enum cell_type;
att_flag_enum att_flag;
kal_bool mscr;
rr_mm_sgsnr_flag_enum sgsnr;
#if defined (__PS_SERVICE__) || defined (UNIT_TEST)
data_speed_support_enum cell_data_speed_support; /* MAUI_02361221: for egprs and hspa */
#endif
#if defined (__PPACR_SUPPORT__) || defined (UNIT_TEST)
kal_uint8 ppacr_plmn_bitmask;
ppacr_info_struct ppacr_info_plmn_list[MAX_NUM_MULTI_PLMN];
#endif
csg_access_mode_enum csg_access_mode;
csg_info_struct csg_info;
#ifdef __LTE_RAT__
kal_bool is_gprs_info_in_si13_deferred;
#endif
kal_uint8 band;
} mm_sys_info_ind_struct;
typedef struct
{
capability_switch_enum s1_cap;
capability_switch_enum n1_cap;
/* gsm/umts not yet implement, put here for extension. Always set to ENABLE */
capability_switch_enum gsm_cap;
capability_switch_enum umts_cap;
vg_option_enum vg_option;
} ue_capability_struct;
typedef struct
{
ue_capability_struct ue_cap;
kal_bool is_mrs_endc_supported; // query result of "mrs_nras_is_endc_support()"
kal_bool is_nw_endc_disabled; // is EN-DC disabled for specific SIM/network
} nas_sv_ue_capability_struct;
typedef struct
{
kal_bool wait_emc_pdn_status;
plmn_id_struct rplmn;
kal_uint8 eq_plmn_byte_count;
kal_uint8 eq_plmn_id[MAX_NUM_EQ_PLMN*3];
} update_eplmn_struct;
/* NWSEL <-> ENAS/EAS end */
typedef struct
{
vg_ims_3gpp_ind_enum vg_ims_3gpp_ind;
vg_ims_n3gpp_ind_enum vg_ims_n3gpp_ind;
vg_emergency_service_ind_enum vg_emergency_service_ind;
vg_emergency_fallback_ind_enum vg_emergency_fallback_ind;
iwk_n26_enum iwk_n26_ind;
mps_ind_enum mps_ind;
vg_emergency_service_n3gpp_ind_enum vg_emergency_service_n3gpp_ind;
mcs_ind_enum mcs_ind;
} vgmm_nw_feature_support_struct;
typedef struct {
kal_uint8 ie_content[MAX_LEN_OF_OPT_IE_MULTI];
} vgmm_payload_opt_ie_struct;
typedef struct
{
ims_ind_enum ims_ind;
emergency_service_ind_enum emergency_service_ind;
location_service_epc_ind_enum location_service_epc_ind;
location_service_cs_ind_enum location_service_cs_ind;
ext_service_request_for_ps_enum ext_service_request_for_ps_ind;
ext_pco_enum ext_pco_ind;
restrict_dcnr_enum restrict_dcnr_ind;
iwk_n26_enum iwk_n26_ind;
} emm_nw_feature_support_struct;
typedef struct
{
ug_ims_ind_enum ims_voice_over_ps_ind;
ug_emergency_service_ind_enum emergency_service_ind;
} gmm_nw_feature_support_struct;
/* NWSEL <-> ENAS/EAS end */
#ifdef __LTE_RAT__
typedef struct {
LOCAL_PARA_HDR
errc_sim_protect_purpose_enum purpose;
kal_bool need_protect;
} errc_sim_protect_req_struct;
#endif //__LTE_RAT__
typedef struct
{
gmss_rat_enum rat;
plmn_id_struct loc;
prio_class_enum prio_class;
} gmss_mru_info_struct;
typedef struct {
kal_uint32 num_mcc;
plmn_id_struct mcc[MAX_NUM_OF_MCC];
} found_mcc_info_struct;
typedef struct
{
kal_uint32 entry_index;
irat_system_type_enum rat;
kal_uint8 band;
plmn_id_struct plmn_id;
kal_uint16 channel; // There is no PLMN ID in C2K, only channel number
} vzwmru_entry_struct;
typedef struct
{
domain_id_enum updated_domain; /* The domain to be updated */
reg_state_enum cs_state;
reg_state_enum ps_state;
cell_info_and_rat_struct cell_type;
data_speed_support_enum cell_data_speed_support;
kal_uint8 cause_type; /* 0: defined by spec 1: internal cause, defined by manufacture */
mm_cause_enum reject_cause;
/* Combined attach, CS/PS may register with different PLMN in NAS view
Amid TMO network, if CS is in PLMN-A, PS in PLMN-B, and LTE does not support CS, that means
UE cannot perform CSFB but VoLTE */
lai_struct cs_lai;
kal_bool is_skip; /* Network display optimization (reserved) */
kal_bool dcnr_restricted;
kal_uint8 vgmm_allowed_nssai_length; /* Number of bytes in allowed NSSAI */
kal_uint8 vgmm_allowed_nssai[MAX_LEN_OF_ALL_ALLOWED_NSSAI]; /* Allowed NSSAI */
} reg_state_ind_struct;
typedef struct
{
plmn_id_struct plmn_id;
kal_uint16 band;
} plmn_band_struct;
#define INVALID_CAMPING_INFO_ID 0xffff
#define INVALID_CAMPING_INFO_MASK 0x0f
typedef struct
{
ue_capability_struct capability; // new capability
rat_enum rat_mode;
} ue_capability_update_params_struct;
/*
* Structure represents the KAMF key.
*/
typedef struct {
/* KAMF for deriving new KgNB and NH when required by NRRC.
* MSB of key[0] is the first bit of key. */
kal_uint8 key[NRRC_KAMF_LENGTH];
} nrrc_kamf_struct;
#define D_MAX_MMEGID_SIZE 2
#define D_MTMSI_LEN 4
typedef struct
{
kal_uint8 value;
kal_uint8 tsc;
} nas_ksi_struct;
typedef struct {
kal_uint8 length_of_guti;
kal_uint8 type_of_identity;
plmn_id_struct plmn_id;
kal_uint8 mme_gid[D_MAX_MMEGID_SIZE];
kal_uint8 mme_code;
kal_uint8 mtmsi[D_MTMSI_LEN];
} guti_struct;
#define VGNAS_TAC_LEN 3 /* 5G Tracking Area Code size */
#define VGNAS_MAX_TAI_LIST 16 /* Max number of entries in TA list */
#define MAX_LADN_INFO 8
#define MAX_CRLADN_LEN 808
#define MAX_LADN_INFO_LEN 1712
/**
* TA structure to store tracking area identity
*/
typedef struct vgnas_tai_struct {
plmn_id_struct plmn_id;
kal_uint8 ta_code[VGNAS_TAC_LEN];
} vgnas_tai_struct;
/**
* Structure to store different TA lists: registered TAs,
* allowed TA list and non-allowed TA list.
*/
typedef struct vgnas_ta_list_struct {
kal_uint8 number_of_ta;
vgnas_tai_struct ta_list[VGNAS_MAX_TAI_LIST];
} vgnas_ta_list_struct;
/**
* Structure to store LADN information
*/
typedef struct {
apn_struct dnn;
vgnas_ta_list_struct ta_list;
} ladn_info_struct;
/**
* Structure for LADN information primitive forwarding
*/
typedef struct {
LOCAL_PARA_HDR
kal_uint8 num_of_ladn_info;
ladn_info_struct ladn_info[MAX_LADN_INFO];
kal_bool is_ladn_raw_data_valid;
kal_uint16 ladn_raw_data_len;
kal_uint8 ladn_raw_data[MAX_LADN_INFO_LEN];
} ladn_info_update_ind_struct;
/*
* Structure for L4 Context
*/
typedef struct
{
kal_uint8 num_of_ladn_info;
ladn_info_struct ladn_info[MAX_LADN_INFO];
kal_bool is_ladn_raw_data_valid;
kal_uint16 ladn_raw_data_len;
kal_uint8 ladn_raw_data[MAX_LADN_INFO_LEN];
} l4ctcm_ladn_info_list_struct;
#endif