| /***************************************************************************** |
| * 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 |