[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