[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/protocol/interface/l4misc/l3_inc_local.h b/mcu/protocol/interface/l4misc/l3_inc_local.h
new file mode 100644
index 0000000..fe07b38
--- /dev/null
+++ b/mcu/protocol/interface/l4misc/l3_inc_local.h
@@ -0,0 +1,1226 @@
+/*****************************************************************************
+* 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 */
+#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