[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/protocol/general/abm2l4c_struct.h b/mcu/interface/protocol/general/abm2l4c_struct.h
new file mode 100644
index 0000000..e27d30d
--- /dev/null
+++ b/mcu/interface/protocol/general/abm2l4c_struct.h
@@ -0,0 +1,357 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * ABM2L4C_STRUCT.H
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file describes the common struct of ABM and L4C.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _ABM2L4C_STRUCT_H
+#define _ABM2L4C_STRUCT_H
+//#include "ps2sat_struct.h"
+#include "l4c2abm_struct.h"
+//#include "kal_non_specific_general_types.h"
+//#include "custom_mmi_default_value.h"
+#include "kal_general_types.h"
+#include "ps_public_struct.h"
+#include "tcm_api.h"
+#include "ps_public_enum.h"
+
+#ifdef __SATCE__
+typedef struct {
+    kal_uint8 ref_count;
+    kal_uint8 msg_len;
+    kal_uint8 nw_acct_id;    
+    kal_bool is_apn_valid;
+    kal_uint8 apn_length;
+    kal_uint8 apn[50];
+    kal_bool is_username_valid;
+    kal_uint8 no_username;
+    kal_uint8 username[16];
+    kal_uint8 dcs_of_username;
+    kal_bool is_passwd_valid;
+    kal_uint8 no_passwd;
+    kal_uint8 passwd[16];
+    kal_uint8 dcs_of_passwd;
+    kal_bool is_local_addr_valid;
+    kal_uint8 no_local_addr;
+    kal_uint8 local_addr[16];
+    kal_bool is_dest_addr_valid;
+    kal_uint8 no_dest_addr;
+    kal_uint8 dest_addr[16];
+    sat_gprs_bearer_para_struct gprs_bearer;
+} abml4c_sate_set_gprs_account_info_req_struct;
+#endif /* __SATCE__ */
+
+// Packet filter content which is necessary for GGSN to enable packet classification and policing for downlink data transfer.
+typedef struct {
+    kal_uint8	pfi;    // Packet filter identifier
+    kal_uint8	epi;	// Packet filter evaluation precedence
+    kal_uint8	src_addr_sb_net_mask_len;
+    kal_uint8	src_addr_sb_net_mask[8];    // IPv4 address and subnet mask
+    kal_bool	prot_number_present;
+    kal_uint8	prot_number_next_hdr;       // Protocol identifier
+    kal_uint8	dst_port_len;
+    kal_uint16	dst_port_range[2];          // Destination port range
+    kal_uint8	src_port_len;
+    kal_uint16	src_port_range[2];          // Source port range
+    kal_bool	ipsec_spi_present;
+    kal_uint32	ipsec_spi;                  // IPSec security parameter index
+    kal_uint8	tos_len;
+    kal_uint8	tos_traffic_class_mask[2];  // Type of Service and mask
+    kal_bool	flow_label_present;
+    kal_uint32	flow_label;                 // IPv6 Flow label
+} l4c_gprs_pf_struct;
+
+typedef struct {
+   kal_uint8 ref_count;
+   kal_uint16 msg_len;  
+   kal_uint8 profile_id;
+   kal_uint8 profile_type;
+   l4c_gprs_account_info_struct gprs_account_info;
+   tcm_ps_qos_profile_struct qos_info; //mtk02285, 20110916
+#ifdef __SATCE__
+   abml4c_sate_set_gprs_account_info_req_struct sate_account_info;
+#endif /* __SATCE__ */
+   /* following are for __APP_SECONDARY_PDP_SUPPORT__ */
+   kal_uint8 qos_id;			// QoS Profile ID
+   kal_uint8 gprs_pf_num;               // Number of gprs_pf_info
+   l4c_gprs_pf_struct gprs_pf_info[8];  // Packet filter content
+} l4c_ps_abm_setup_req_struct;
+
+typedef struct {
+   kal_uint8 ref_count;
+   kal_uint16 msg_len;  
+   kal_uint8 profile_id;
+   /* following are for __APP_SECONDARY_PDP_SUPPORT__ */
+   kal_uint8 qos_id;			// QoS Profile ID
+   kal_uint8 context_id;
+   kal_uint8 profile_type;
+} l4c_ps_abm_disc_req_struct;
+
+typedef struct {
+   kal_uint8                ref_count;
+   kal_uint16               msg_len;
+   kal_uint8	            context_id;
+   kal_bool	                is_qos_present; // indicates if QoS modification
+   nvram_editor_qos_struct	modify_qos;     // modifying QoS value
+   kal_uint8	            tft_opcode;     // tft_opcode_enum: the operation of TFT modification
+   kal_uint8	            gprs_pf_num;    // number of gprs_pf_info
+   l4c_gprs_pf_struct	    gprs_pf_info[8];// packet filter content
+} l4c_ps_abm_qos_tft_modify_req_struct;
+
+//MAUI_02395134
+typedef struct {
+   kal_uint8 authentication_type;
+   kal_uint8 user_name[32];
+   kal_uint8 password[32];
+   kal_uint8 dns[4];
+   kal_uint8 sec_dns[4];
+   kal_uint8 addr_str[41+1]; //MAX_CC_ADDR_LEN +1
+   kal_uint8 csd_ur;
+   kal_uint8 csd_type;
+   kal_uint8 csd_module;
+} l4c_csd_account_info_struct;
+
+typedef struct {
+   kal_uint8 ref_count;
+   kal_uint16 msg_len;  
+   kal_uint8 profile_type;
+   kal_uint8 csd_profile_id;
+   l4c_csd_account_info_struct csd_account_info;
+} l4c_cc_abm_setup_req_struct;
+
+typedef struct {
+   kal_uint8 ref_count;
+   kal_uint16 msg_len;  
+   kal_uint8 csd_profile_id;
+   kal_uint8 profile_type;
+} l4c_cc_abm_disc_req_struct;
+
+typedef struct {
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    kal_uint8 src_id;
+    kal_uint8 result;
+    kal_uint8 error_cause;
+} l4cabm_start_cnf_struct;
+
+typedef l4cabm_start_cnf_struct l4cabm_set_gprs_account_info_cnf_struct;
+
+typedef struct {
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    kal_uint8 src_id;
+    kal_uint8 result;
+    kal_uint8 error_cause;
+    l4c_gprs_account_info_struct gprs_account_info;
+} l4cabm_get_gprs_account_info_cnf_struct;
+
+#ifdef __UCM_SUPPORT__
+typedef struct
+{
+	kal_uint8 ref_count;
+       kal_uint16 msg_len;
+       kal_uint8     prof_id; 
+	kal_uint8	sim_info;
+} abm_l4c_get_csd_call_num_req_struct;
+#endif /* __UCM_SUPPORT__ */
+
+// Karen
+typedef struct {
+   kal_uint8 ref_count;
+   kal_uint16 msg_len;  
+   kal_uint8 profile_id;
+   kal_uint8 qos_id;
+   kal_uint8 context_id;
+} l4c_ps_abm_reactivate_req_struct;
+
+typedef struct  
+{
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    kal_uint8 connect_type;
+    kal_uint8 call_id;
+    kal_uint8 context_id;
+}l4c_abm_dialup_disc_req_struct;
+
+typedef struct  
+{
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    kal_uint8 serial_num;
+    kal_uint8 total_context_id;
+    kal_uint8 context_id[MAX_GPRS_DIALUP_NUM];
+}l4c_ps_abm_get_dialup_info_req_struct;
+
+typedef struct {
+    kal_uint8 context_id;
+    kal_bool reset_tx;
+    kal_bool reset_rx;
+} l4c_ps_dialup_info_reset_cmd_struct;
+
+typedef enum
+{
+    L4C_PS_ABM_DIALUP_RESET_TX_RX = 0,
+    L4C_PS_ABM_DIALUP_RESET_TX,
+    L4C_PS_ABM_DIALUP_RESET_RX,
+    L4C_PS_ABM_DIALUP_RESET_IN_DETAIL,
+    L4C_PS_ABM_DIALUP_RESET_INVALID
+} l4c_reset_dialup_cmd_enum;
+
+typedef struct  
+{
+   kal_uint8 ref_count;
+   kal_uint16 msg_len;
+   kal_uint8 serial_num;
+   kal_uint8 total_reset_num;
+   l4c_reset_dialup_cmd_enum reset_cmd_type; //RESET_TX_RX, RESET_TX, RESET_RX, RESET_IN_DETAIL
+   l4c_ps_dialup_info_reset_cmd_struct reset_cmd[MAX_GPRS_DIALUP_NUM];
+}l4c_ps_abm_reset_dialup_info_req_struct;
+#endif /* ~_ABM2L4C_STRUCT_H */
+
+
diff --git a/mcu/interface/protocol/general/agps_md_interface.h b/mcu/interface/protocol/general/agps_md_interface.h
new file mode 100644
index 0000000..c144f31
--- /dev/null
+++ b/mcu/interface/protocol/general/agps_md_interface.h
@@ -0,0 +1,571 @@
+
+#ifndef __AGPS_MD_INTERFACE_H__
+#define __AGPS_MD_INTERFACE_H__
+
+#include "gps_common.h"
+
+//version history
+// 6  add PositionTect bitmap parameter in MOLR_BEGIN_REQ, add session_id in MTLR_BEGIN_IND and MTLR_BEGIN_RSP
+// 7  change version's type from short to int to avoid unaligned access
+// 8  add 4 Session IND messages
+// 9  extend requestor_id and client_name from 128 bytes to 160 bytes
+// 10 define LPP UP SWIP <-> LPP CP message ID (no struct definition, uses raw data)
+// 11 add AGPS_MD_TYPE_MTLR_BEGIN_2_IND and agps_md_mtlr_begin_2_ind struct
+// 12 add supporting eutran band list in sim_info_rsp
+// 13 add session_id in agps_md_auto_mtlr_response_ind struct
+// 13.2 add AGPS_MD_TYPE_SIM_INFO_IND for MD to report SIM_INFO when it is boot up complete, AP CCCI driver should keep the data sent from MD when AP/AGPS does not open CCCI yet
+// 13.3 add AGPS_MD_TYPE_LPP_PEER_OTDOA_RESET_UE_STORED_POS_REQ for SUPL LPP session to delete OTDOA data in MD side when A-GPS session is finished
+// 13.4 add AGPS_MD_TYPE_MDT_SUPL_DONE_RSP and AGPS_MD_GPS_OPEN_IND_TYPE_MDT for MDT session
+// 13.5 add AGPS_MD_TYPE_LOCATION_NTF to sync the latest location to MD side
+// 13.6 add support_lpp_otdoa_nbr_cell_list in agps_md_sim_info_rsp and agps_md_sim_info_ind for LPP inter-freq (only on LPP, no implementation on LBS)
+// 13.7 add supl flow indication
+// 13.8 add AGPS_MD_TYPE_CP_SERVICE_CONFIG_NTF to do CP on/off in runtime, this should be used in Titan's project only
+// 13.9 add CP service config in agps_md_sim_info_req struct
+// 13.10 add AGPS_MD_TYPE_MODEM_REBOOT_IND when LBS task is initiated or flight mode on/off
+// 13.11 add the huge data transfer
+// 13.12 add support_location_settings and AGPS_MD_TYPE_LOCATION_SETTINGS_NTF
+// 13.13 move agps_md_huge_data_type from huge_data_transfer.h to agps_md_interface.h
+// 13.14 re-name agps_md_huge_data_type to agps_md_huge_data_msg_id
+// 13.15 add reject_non911_nilr_enable for LGE VZW requirement
+// 13.16 add battery_percentage in agps_md_sim_info_req struct to sync the battery percentage per 5% to MD/LBS
+// 13.17 add support_ue_rx_tx_sup_tdd_r13 in agps_md_sim_info_rsp
+// 13.18 add NR positioning
+// 13.19 add location source in AGPS_MD_TYPE_LOCATION_NTF
+// 13.20 add support_md_time_sync and AGPS_MD_HUGE_DATA_TYPE_MD_TIME_XXX
+
+#define AGPS_MD_INTERFACE_VERSION 13
+#define MAX_AGPS_MD_BUFFER_SIZE 4096
+
+typedef int agps_md_reset_data;
+#define AGPS_MD_RESET_EPHEMERIS        0x0001
+#define AGPS_MD_RESET_ALMANAC          0x0002
+#define AGPS_MD_RESET_POSITION         0x0004
+#define AGPS_MD_RESET_TIME             0x0008
+#define AGPS_MD_RESET_IONO             0x0010
+#define AGPS_MD_RESET_UTC              0x0020
+#define AGPS_MD_RESET_HEALTH           0x0040
+#define AGPS_MD_RESET_SVDIR            0x0080
+#define AGPS_MD_RESET_SVSTEER          0x0100
+#define AGPS_MD_RESET_SADATA           0x0200
+#define AGPS_MD_RESET_RTI              0x0400
+#define AGPS_MD_RESET_CELLDB_INFO      0x8000
+#define AGPS_MD_RESET_ALL              0xFFFF
+
+typedef struct {
+    double          latitude;           //Represents latitude in degrees
+    double          longitude;          //Represents longitude in degrees
+    char            altitude_used;      //0=disabled 1=enabled
+    double          altitude;           //Represents altitude in meters above the WGS 84 reference
+    char            speed_used;         //0=disabled 1=enabled
+    float           speed;              //Represents speed in meters per second
+    char            bearing_used;       //0=disabled 1=enabled
+    float           bearing;            //Represents heading in degrees
+    char            accuracy_used;      //0=disabled 1=enabled
+    float           accuracy;           //Represents expected accuracy in meters
+    char            timestamp_used;     //0=disabled 1=enabled
+    long long       timestamp;          //Milliseconds since January 1, 1970
+} agps_md_gps_location;
+
+typedef enum {
+    //PMTK
+    AGPS_MD_TYPE_PMTK = 0,
+    //GPS control
+    AGPS_MD_TYPE_GPS_RESET_IND  = 100,
+    AGPS_MD_TYPE_GPS_RESET_RSP,
+    AGPS_MD_TYPE_GPS_OPEN_IND,
+    AGPS_MD_TYPE_GPS_OPEN_RSP,
+    AGPS_MD_TYPE_GPS_CLOSE_IND,
+    AGPS_MD_TYPE_GPS_CLOSE_RSP,
+    AGPS_MD_TYPE_SESSION_ABORT_REQ,
+    AGPS_MD_TYPE_SESSION_ABORT_RSP,
+    AGPS_MD_TYPE_MDT_SUPL_DONE_RSP,
+    //MOLR
+    AGPS_MD_TYPE_MOLR_BEGIN_REQ = 200,
+    AGPS_MD_TYPE_MOLR_BEGIN_RSP,
+    //MTLR
+    AGPS_MD_TYPE_MTLR_BEGIN_IND = 300,
+    AGPS_MD_TYPE_MTLR_BEGIN_RSP,
+    AGPS_MD_TYPE_MTLR_BEGIN_2_IND,
+    //NBR
+    AGPS_MD_TYPE_NBR_CELL_INFO_REG_REQ  = 400,
+    AGPS_MD_TYPE_NBR_CELL_INFO_REG_CNF,
+    AGPS_MD_TYPE_NBR_CELL_INFO_DEREG_REQ,
+    AGPS_MD_TYPE_NBR_CELL_INFO_DEREG_CNF,
+    AGPS_MD_TYPE_NBR_CELL_INFO_IND,
+    //Automation
+    AGPS_MD_TYPE_AUTO_TEST_IND  = 500,
+    AGPS_MD_TYPE_AUTO_CP_UP_STATUS_IND,
+    AGPS_MD_TYPE_AUTO_MOLR_START_IND,
+    AGPS_MD_TYPE_AUTO_MOLR_STOP_IND,
+    AGPS_MD_TYPE_AUTO_MTLR_RESPONSE_IND,    //not support by MTK AOSP AGPS
+    //SIM info query
+    AGPS_MD_TYPE_EMERGENCY_CALL_IND = 600,
+    AGPS_MD_TYPE_SIM_INFO_REQ,
+    AGPS_MD_TYPE_SIM_INFO_RSP,
+    AGPS_MD_TYPE_SERVICE_STATE_REQ,
+    AGPS_MD_TYPE_SERVICE_STATE_RSP,
+    AGPS_MD_TYPE_ROAMING_STATE_REQ,
+    AGPS_MD_TYPE_ROAMING_STATE_RSP,
+    AGPS_MD_TYPE_DATA_CONNECTION_STATE_REQ,
+    AGPS_MD_TYPE_DATA_CONNECTION_STATE_RSP,
+    AGPS_MD_TYPE_SIM_INFO_IND,
+    AGPS_MD_TYPE_EMERGENCY_TEXT_IND,
+    //Session IND
+    AGPS_MD_TYPE_SESSION_START_IND = 700,
+    AGPS_MD_TYPE_SESSION_END_IND,
+    AGPS_MD_TYPE_LTE_OTDOA_IND,
+    AGPS_MD_TYPE_LTE_ECID_IND,
+    //LPP UP SWIP to LPP CP (raw data)
+    AGPS_MD_TYPE_LPP_PEER_OTDOA_MEAS_REQ = 800,
+    AGPS_MD_TYPE_LPP_PEER_OTDOA_ASSIST_DATA_REQ,
+    AGPS_MD_TYPE_LPP_PEER_OTDOA_MEAS_ABORT_REQ,
+    AGPS_MD_TYPE_LPP_PEER_ECID_MEAS_REQ,
+    AGPS_MD_TYPE_LPP_PEER_ECID_MEAS_ABORT_REQ,
+    AGPS_MD_TYPE_LPP_PEER_EUTRAN_BAND_UPDATE_REQ,
+    AGPS_MD_TYPE_LPP_PEER_OTDOA_RESET_UE_STORED_POS_REQ,
+    //LPP CP to LPP UP SWIP (raw data)
+    AGPS_MD_TYPE_LPP_PEER_OTDOA_MEAS_CNF = 900,
+    AGPS_MD_TYPE_LPP_PEER_OTDOA_ASSIST_DATA_CNF,
+    AGPS_MD_TYPE_LPP_PEER_OTDOA_ADDITIONAL_ASSIST_DATA_REQ,
+    AGPS_MD_TYPE_LPP_PEER_ECID_MEAS_CNF,
+    AGPS_MD_TYPE_LPP_PEER_EUTRAN_BAND_UPDATE_CNF,
+    //AP -> MD notify information
+    AGPS_MD_TYPE_LOCATION_NTF = 1000,
+    AGPS_MD_TYPE_CP_SERVICE_CONFIG_NTF,
+    AGPS_MD_TYPE_LOCATION_SETTINGS_NTF,
+    AGPS_MD_TYPE_GNSS_TIME_NTF,
+    
+    //SUPL Raw data to ELT
+    AGPS_MD_TYPE_SUPL_FLOW_IND = 1100,
+    AGPS_MD_TYPE_SUPL_FLOW_RSP = 1101,
+    //MD -> AP notify information
+    AGPS_MD_TYPE_MODEM_REBOOT_IND = 1200,
+    //Segmented Packet Transfer (Two-way)
+    AGPS_MD_TYPE_SEGMENTED_PACKET_IND = 1300,
+} agps_md_type;
+
+typedef enum {
+    // LPPe WLAN
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_WLAN_REQUEST_CAPABILITIES       = 100,  //MD -> AP  null
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_WLAN_PROVIDE_CAPABILITIES       = 101,  //AP -> MD  LPPeWlan_WlanProvideCapabilities
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_WLAN_START_MEASUREMENT          = 102,  //MD -> AP  LPPeWlan_WlanMeasurements
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_WLAN_STOP_MEASUREMENT           = 103,  //MD -> AP  null  
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_WLAN_QUERY_MEASUREMENT          = 104,  //MD -> AP  null
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_WLAN_REPLY_MEASUREMENT          = 105,  //AP -> MD  lppe_stack_wlan_meas
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_WLAN_REQUEST_ASSIST_DATA         = 106,  //AP -> MD  lppe_stack_wlan_request_assist_data
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_WLAN_PROVIDE_ASSIST_DATA        = 107,  //MD -> AP  lppe_stack_wlan_provide_assist_data
+    // LPPe BT
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_BT_REQUEST_CAPABILITIES         = 200,  //MD -> AP  null
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_BT_PROVIDE_CAPABILITIES         = 201,  //AP -> MD  LPPeBluetooth_BluetoothProvideCapabilities
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_BT_START_MEASUREMENT            = 202,  //MD -> AP  LPPeBluetooth_BluetoothMeasurementRequest
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_BT_STOP_MEASUREMENT             = 203,  //MD -> AP  null
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_BT_QUERY_MEASUREMENT            = 204,  //MD -> AP  null
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_BT_REPLY_MEASUREMENT            = 205,  //AP -> MD  lppe_stack_bt_meas
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_BT_REQUEST_ASSIST_DATA           = 206,  //AP -> MD  lppe_stack_bt_request_assist_data
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_BT_PROVIDE_ASSIST_DATA          = 207,  //MD -> AP  lppe_stack_bt_provide_assist_data
+    // LPPe Sensor
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_SENSOR_REQUEST_CAPABILITIES     = 300,  //MD -> AP  null
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_SENSOR_PROVIDE_CAPABILITIES     = 301,  //AP -> MD  LPPeSensor_SensorProvideCapabilities
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_SENSOR_START_MEASUREMENT        = 302,  //MD -> AP  LPPeSensor_SensorMeasurementRequest
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_SENSOR_STOP_MEASUREMENT         = 303,  //MD -> AP  null
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_SENSOR_QUERY_MEASUREMENT        = 304,  //MD -> AP  null
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_SENSOR_REPLY_MEASUREMENT        = 305,  //AP -> MD  lppe_stack_sensor_meas
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_SENSOR_REQUEST_ASSIST_DATA       = 306,  //AP -> MD  lppe_stack_sensor_request_assist_data
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_SENSOR_PROVIDE_ASSIST_DATA      = 307,  //MD -> AP  lppe_stack_sensor_provide_assist_data
+    // LPPe Network
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_NETWORK_REQUEST_CAPABILITIES    = 400,  //MD -> AP  null
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_NETWORK_PROVIDE_CAPABILITIES    = 401,  //AP -> MD  bool
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_NETWORK_START_MEASUREMENT       = 402,  //MD -> AP  null
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_NETWORK_STOP_MEASUREMENT        = 403,  //MD -> AP  null
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_NETWORK_QUERY_MEASUREMENT       = 404,  //MD -> AP  null
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_NETWORK_REPLY_MEASUREMENT       = 405,  //AP -> MD  lppe_stack_network_meas
+    // LPPe IP Address
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_IPADDRESS_REQUEST_CAPABILITIES  = 500,  //MD -> AP  null
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_IPADDRESS_PROVIDE_CAPABILITIES  = 501,  //AP -> MD  LPPeIpAddress_IpAddressCapabilities
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_IPADDRESS_QUERY_INFORMATION     = 504,  //MD -> AP  null
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_IPADDRESS_REPLY_INFORMATION     = 505,  //AP -> MD  LPPeIpAddress_IpAddressInformation
+    // LPPe AGNSS
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_AGNSS_REQUEST_ASSIST_DATA                   = 600,  //AP -> MD  lpp_lppe_ha_gnss_ad_req_struct
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_AGNSS_PROVIDE_ASSIST_DATA_COMMON_IONO       = 610,  //MD -> AP  gnss_ha_common_ionospheric_model_struct
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_AGNSS_PROVIDE_ASSIST_DATA_COMMON_TROP       = 611,  //MD -> AP  gnss_ha_common_troposphere_model_struct
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_AGNSS_PROVIDE_ASSIST_DATA_COMMON_ALT        = 612,  //MD -> AP  gnss_ha_common_altitude_assist_struct
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_AGNSS_PROVIDE_ASSIST_DATA_COMMON_SOLAR      = 613,  //MD -> AP  gnss_ha_common_solar_radiation_struct
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_AGNSS_PROVIDE_ASSIST_DATA_COMMON_CCP        = 614,  //MD -> AP  gnss_ha_common_ccp_assist_struct
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_AGNSS_PROVIDE_ASSIST_DATA_GENERIC_CCP       = 630,  //MD -> AP  gnss_ha_generic_ccp_assist_struct
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_AGNSS_PROVIDE_ASSIST_DATA_GENERIC_DM        = 631,  //MD -> AP  gnss_ha_generic_degradation_model_struct
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_AGNSS_PROVIDE_ASSIST_DATA_ACK               = 650,  //AP -> MD  lpp_lppe_ha_gnss_ad_ack_st
+    // GPS chip and MD timing sync
+    AGPS_MD_HUGE_DATA_TYPE_TIME_SYNC_REQ                                    = 700,  //AP -> MD  mnl_md_time_sync_req_struct
+    AGPS_MD_HUGE_DATA_TYPE_TIME_SYNC_RSP                                    = 701,  //AP -> MD  mnl_md_time_sync_rsp_struct
+    AGPS_MD_HUGE_DATA_TYPE_TIME_INFO_RSP                                    = 702,  //AP -> MD  mnl_md_time_info_rsp_struct
+    AGPS_MD_HUGE_DATA_TYPE_TIME_SYNC_IND                                    = 703,  //MD -> AP  mnl_md_time_sync_ind_struct
+    AGPS_MD_HUGE_DATA_TYPE_TIME_SYNC_CNF                                    = 704,  //MD -> AP  mnl_md_time_sync_cnf_struct
+    // End
+    AGPS_MD_HUGE_DATA_TYPE_LPPE_END                             = 2147483647,   //make sure this enum is 4 bytes in compile time
+} agps_md_huge_data_msg_id;
+
+typedef struct {
+    int  version; //use AGPS_MD_INTERFACE_VERSION
+    short  type;    //refer to agps_md_type
+    short  len;     //data length, not include header's size
+} agps_md_header;
+
+typedef struct {
+    char  pmtk[256];
+} agps_md_pmtk;
+
+typedef struct {
+    agps_md_reset_data  flags;  //just hardcode 0x3f
+} agps_md_gps_reset_ind;
+/*
+typedef struct {
+    //nothing
+} agps_md_gps_reset_rsp;
+*/
+typedef struct {
+    #define AGPS_MD_GPS_OPEN_IND_TYPE_NILR 0
+    #define AGPS_MD_GPS_OPEN_IND_TYPE_MTLR 1
+    #define AGPS_MD_GPS_OPEN_IND_TYPE_MOLR 2
+    #define AGPS_MD_GPS_OPEN_IND_TYPE_QUERY 3
+    #define AGPS_MD_GPS_OPEN_IND_TYPE_SUPL 4
+    char  type;   //refer to AGPS_MD_GPS_OPEN_IND_TYPE_
+} agps_md_gps_open_ind;
+
+typedef struct {
+    #define AGPS_MD_GPS_OPEN_RSP_RESULT_DENY 0
+    #define AGPS_MD_GPS_OPEN_RSP_RESULT_ACCEPT 1
+    char  result;        //refer to AGPS_MD_GPS_OPEN_RSP_RESULT_
+
+    #define AGPS_MD_GPS_OPEN_RSP_RESULT_CP_AUTO_RESET_DISABLED 0
+    #define AGPS_MD_GPS_OPEN_RSP_RESULT_CP_AUTO_RESET_ENABLED 1
+    char  cp_auto_reset; //refer to AGPS_MD_GPS_OPEN_RSP_RESULT_CP_AUTO_RESET_
+} agps_md_gps_open_rsp;
+
+/*
+typedef struct {
+    //nothing
+} agps_md_gps_close_ind;
+
+typedef struct {
+    //nothing
+} agps_md_gps_close_rsp;
+
+typedef struct {
+    //nothing
+} agps_md_session_abort_req;
+
+typedef struct {
+    //nothing
+} agps_md_session_abort_rsp;
+
+typedef struct {
+    //nothing
+} agps_md_mdt_supl_done_rsp;
+
+*/
+typedef struct {
+   short  length;
+   char  pdu[300];
+} position_protocol_pdu;
+
+typedef struct {
+    #define AGPS_MD_MOLR_BEGIN_POS_TECH_AGNSS   (1 << 0)
+    #define AGPS_MD_MOLR_BEGIN_POS_TECH_ECID    (1 << 1)
+    #define AGPS_MD_MOLR_BEGIN_POS_TECH_OTDOA   (1 << 2)
+    int  pos_tech_bitmap;   //refer to AGPS_MD_MOLR_BEGIN_POS_TECH_
+    #define AGPS_MD_MOLR_BEGIN_REQ_MOLR_TYPE_LOC_ESTIMATE 0
+    #define AGPS_MD_MOLR_BEGIN_REQ_MOLR_TYPE_ASSIST_DATA 1
+    char  molr_type;                //refer to AGPS_MD_MOLR_BEGIN_REQ_MOLR_TYPE_
+    char gps_assist_data_used;    //0=disabled 1=enabled
+    int  gps_assist_data;           //0x6f hardcode
+    char  external_addr_used;     //0=disabled 1=enabled
+    char  external_addr[20];
+    char  mlc_number_used;        //0=disabled 1=enabled
+    char  mlc_number[20];
+    int  pos_protocol_pdu_num;
+    position_protocol_pdu pos_protocol_pdu[3];
+} agps_md_molr_begin_req;
+
+typedef struct {
+    #define AGPS_MD_MOLR_BEGIN_RSP_RESULT_FAIL 0
+    #define AGPS_MD_MOLR_BEGIN_RSP_RESULT_SUCCESS 1
+    char  result;    ///refer to AGPS_MD_MOLR_BEGIN_RSP_RESULT_
+    char  location_used;  //0=disabled 1=enabled
+    agps_md_gps_location location;
+} agps_md_molr_begin_rsp;
+
+typedef struct {
+    #define AGPS_MD_MTLR_BEGIN_IND_NOTIFY_TYPE_NOTIFY_LOCATION_ALLOWED 0
+    #define AGPS_MD_MTLR_BEGIN_IND_NOTIFY_TYPE_NOTIFY_VERIFY_ALLOW_IF_NO_RSP 1
+    #define AGPS_MD_MTLR_BEGIN_IND_NOTIFY_TYPE_NOTIFY_VERIFY_DENY_IF_NO_RSP 2
+    #define AGPS_MD_MTLR_BEGIN_IND_NOTIFY_TYPE_NOTIFY_TO_MS_USER_LOCATION_NOT_ALLOWED 3
+    int session_id;
+    char  notify_type;   //refer to AGPS_MD_MTLR_BEGIN_IND_NOTIFY_TYPE_
+    char  requestor_id[160];    //ASCII string
+    char  client_name[160];     //ASCII string
+} agps_md_mtlr_begin_ind;
+
+typedef struct {
+    #define AGPS_MD_MTLR_BEGIN_2_IND_NOTIFY_TYPE_NOTIFY_LOCATION_ALLOWED 0
+    #define AGPS_MD_MTLR_BEGIN_2_IND_NOTIFY_TYPE_NOTIFY_VERIFY_ALLOW_IF_NO_RSP 1
+    #define AGPS_MD_MTLR_BEGIN_2_IND_NOTIFY_TYPE_NOTIFY_VERIFY_DENY_IF_NO_RSP 2
+    #define AGPS_MD_MTLR_BEGIN_2_IND_NOTIFY_TYPE_NOTIFY_TO_MS_USER_LOCATION_NOT_ALLOWED 3
+    int  session_id;
+    char  notify_type;   //refer to AGPS_MD_MTLR_BEGIN_IND_NOTIFY_TYPE_
+    char  requestor_id[160];
+    int  requestor_id_len;
+    char  client_name[160];
+    int  client_name_len;
+    #define AGPS_MD_MTLR_BEGIN_2_IND_ENCODING_TYPE_GSM7 1
+    #define AGPS_MD_MTLR_BEGIN_2_IND_ENCODING_TYPE_UTF8 2
+    #define AGPS_MD_MTLR_BEGIN_2_IND_ENCODING_TYPE_UCS2 3
+    char  requestor_id_encoding_type;   //refer to AGPS_MD_MTLR_BEGIN_2_IND_ENCODING_TYPE_
+    char  client_name_encoding_type;    //refer to AGPS_MD_MTLR_BEGIN_2_IND_ENCODING_TYPE_
+} agps_md_mtlr_begin_2_ind;
+
+typedef struct {
+    #define AGPS_MD_MTLR_BEGIN_RSP_USER_RESPOND_DENY 0
+    #define AGPS_MD_MTLR_BEGIN_RSP_USER_RESPOND_ACCEPT 1
+    #define AGPS_MD_MTLR_BEGIN_RSP_USER_RESPOND_NO_RESPOND 2
+    int session_id;
+    char user_respond;  //refer to AGPS_MD_MTLR_BEGIN_RSP_USER_RESPOND
+} agps_md_mtlr_begin_rsp;
+/*
+typedef struct {
+    //nothing
+} agps_md_nbr_cell_info_reg_req;
+*/
+typedef struct {
+    #define AGPS_MD_NBR_CELL_INFO_RAT_MODE_GSM 1
+    #define AGPS_MD_NBR_CELL_INFO_RAT_MODE_UMTS 2
+    #define AGPS_MD_NBR_CELL_INFO_RAT_MODE_LTE 4
+    #define AGPS_MD_NBR_CELL_INFO_RAT_MODE_NR 9
+    char  rat_mode;
+    char  is_nbr_info_valid;
+    agps_ps_nbr_cell_info_union_type  ps_nbr_cell_info_union;
+} agps_md_nbr_cell_info_reg_cnf;
+/*
+typedef struct {
+    //nothing
+} agps_md_nbr_cell_info_dereg_req;
+
+typedef struct {
+    //nothing
+} agps_md_nbr_cell_info_dereg_cnf;
+*/
+
+typedef struct {
+    #define AGPS_MD_NBR_CELL_INFO_RAT_MODE_GSM 1
+    #define AGPS_MD_NBR_CELL_INFO_RAT_MODE_UMTS 2
+    #define AGPS_MD_NBR_CELL_INFO_RAT_MODE_LTE 4
+    #define AGPS_MD_NBR_CELL_INFO_RAT_MODE_CDMA 8 // IS801 Over SUPL
+    #define AGPS_MD_NBR_CELL_INFO_RAT_MODE_NR 9
+    char  rat_mode;
+    char  is_nbr_info_valid;
+    agps_ps_nbr_cell_info_union_type  ps_nbr_cell_info_union;
+} agps_md_nbr_cell_info_ind;
+
+typedef struct {
+    char mode;  // 0=off 1=on
+} agps_md_auto_test_ind;
+
+typedef struct {
+    #define AGPS_MD_AUTO_CP_UP_STATUS_MODE_SET_TO_CP 0
+    #define AGPS_MD_AUTO_CP_UP_STATUS_MODE_SET_TO_UP 1
+    #define AGPS_MD_AUTO_CP_UP_STATUS_MODE_CP_SET_TO_LOC_EST 2
+    #define AGPS_MD_AUTO_CP_UP_STATUS_MODE_CP_SET_TO_ASSIT_DATA 3
+    #define AGPS_MD_AUTO_CP_UP_STATUS_MODE_UP_SET_TO_MA 4
+    #define AGPS_MD_AUTO_CP_UP_STATUS_MODE_UP_SET_TO_MB 5
+    char  mode; //refer to AGPS_MD_CP_UP_STATUS_MODE_
+} agps_md_auto_cp_up_status_ind;
+/*
+typedef struct {
+    //nothing
+} agps_md_auto_molr_start_ind;
+
+typedef struct {
+    //nothing
+} agps_md_auto_molr_stop_ind;
+*/
+typedef struct {
+    #define AGPS_MD_AUTO_MTLR_RESPONSE_IND_RESPONSE_REJECT 0
+    #define AGPS_MD_AUTO_MTLR_RESPONSE_IND_RESPONSE_ACCEPT 1
+    char  response; //refer to AGPS_MD_MTLR_RESPONSE_IND_RESPONSE_
+    int session_id;
+} agps_md_auto_mtlr_response_ind;
+
+typedef struct {
+    #define AGPS_MD_EMERGENCY_CALL_IND_SIM_ID_SIM_1 1
+    #define AGPS_MD_EMERGENCY_CALL_IND_SIM_ID_SIM_2 2
+    #define AGPS_MD_EMERGENCY_CALL_IND_SIM_ID_SIM_3 3
+    #define AGPS_MD_EMERGENCY_CALL_IND_SIM_ID_SIM_4 4
+    char  sim_id;   //refer to AGPS_MD_EMERGENCY_CALL_IND_SIM_ID_
+
+    #define AGPS_MD_EMERGENCY_CALL_IND_STATE_DIALED 0
+    #define AGPS_MD_EMERGENCY_CALL_IND_STATE_ENDED 1
+    char  state; //refer to AGPS_MD_EMERGENCY_CALL_IND_STATE_
+} agps_md_emergency_call_ind;
+
+typedef struct {
+    #define AGPS_MD_EMERGENCY_TEXT_IND_SIM_ID_SIM_1 1
+    #define AGPS_MD_EMERGENCY_TEXT_IND_SIM_ID_SIM_2 2
+    #define AGPS_MD_EMERGENCY_TEXT_IND_SIM_ID_SIM_3 3
+    #define AGPS_MD_EMERGENCY_TEXT_IND_SIM_ID_SIM_4 4
+    char  sim_id;   //refer to AGPS_MD_EMERGENCY_TEXT_IND_SIM_ID_
+
+    #define AGPS_MD_EMERGENCY_TEXT_IND_STATE_START 0
+    #define AGPS_MD_EMERGENCY_TEXT_IND_STATE_END 1
+    char  state; //refer to AGPS_MD_EMERGENCY_TEXT_IND_STATE_
+} agps_md_emergency_text_ind;
+
+typedef struct {
+    #define CP_SUPPORT_AGNSS 0x01
+    #define CP_SUPPORT_OTDOA 0x02
+    #define CP_SUPPORT_ECID  0x04
+    #define CP_SUPPORT_CONVENTIONAL_GPS 0x08
+    // #define CP_SUPPORT_LPP_EXTENSION    0x10     // Use cp_lppe_enable instead
+    #define CP_SUPPORT_INTER_FREQ_OTDOA 0x20
+    char cp_gsm_disabled;
+    char cp_umts_disabled;    
+    char cp_lte_disabled;
+    char cp_lppe_enable;
+    char lppe_network_location_disable;    
+    char reject_non911_nilr_enable;
+    char battery_percentage;    // the default value is 100 if AGPS is also not synced from framework layer
+                                // and it will be udpated per 5% of battery level
+    char cp_nr_disabled;
+    char cp_guard_time_enable;
+    char cp_capability_ctrl_valid;
+    char reserved[2];    // Compiler will put 2 bytes here for alignment. We can put other options in the future
+    int cp_guard_time;
+    int cp_capability_ctrl;
+} agps_md_sim_info_req;
+
+typedef struct {
+    #define AGPS_MD_SIM_INFO_RSP_SIM_NUMBER_SINGLE 1
+    #define AGPS_MD_SIM_INFO_RSP_SIM_NUMBER_GEMINI 2
+    #define AGPS_MD_SIM_INFO_RSP_SIM_NUMBER_GEMINI_3 3
+    #define AGPS_MD_SIM_INFO_RSP_SIM_NUMBER_GEMINI_4 4
+    char sim_number; //refer to AGPS_MD_SIM_INFO_RSP_SIM_NUMBER_
+    #define AGPS_MD_SIM_INFO_RSP_MD_TYPE_FDD 0
+    #define AGPS_MD_SIM_INFO_RSP_MD_TYPE_TDD 1
+    char md_type;
+    #define AGPS_MD_SIM_INFO_RSP_SUPPORT_EUTRAN_BAND_MAX 50
+    char support_lpp_ecid;
+    char support_lpp_otdoa;
+    char support_eutran_band_num;
+    short support_eutran_band_list[AGPS_MD_SIM_INFO_RSP_SUPPORT_EUTRAN_BAND_MAX];
+    char support_lpp_otdoa_nbr_cell_list;    
+    char support_supl_flow_ind; 
+    char support_location_settings;
+    char support_cp_lppe;
+    char support_rat_2g;
+    char support_rat_3g;
+    char support_rat_4g;
+    char support_ue_rx_tx_sup_tdd_r13;
+    char support_rat_5g;
+    char support_lpp_inter_rat_otdoa;
+    char support_md_time_sync; // GNSS Time Sync between mnl annd modem via huge data transfer
+    char disable_lpp_inter_freq_otdoa;
+} agps_md_sim_info_rsp, agps_md_sim_info_ind;
+/*
+typedef struct {
+    //nothing
+} agps_md_service_state_req;
+*/
+typedef struct {
+    int state_bitmap;   //0=out of service  1=in service
+} agps_md_service_state_rsp;
+/*
+typedef struct {
+    //nothing
+} agps_md_roaming_state_req;
+*/
+typedef struct {
+    int state_bitmap;   //0=local or unknown  1=roaming
+} agps_md_roaming_state_rsp;
+/*
+typedef struct {
+    //nothing
+} agps_md_data_connection_state_req;
+*/
+typedef struct {
+    int state_bitmap;   //0=disconnected or unknown  1=connected
+} agps_md_data_connection_state_rsp;
+
+typedef struct {
+    #define AGPS_MD_LOC_SOURCE_NONE   0x00
+    #define AGPS_MD_LOC_SOURCE_GNSS   0x01
+    #define AGPS_MD_LOC_SOURCE_NLP    0x02
+    #define AGPS_MD_LOC_SOURCE_SENSOR 0x04
+    double lat;
+    double lng;
+    int acc;    // meter
+    int loc_source; // bitmap of AGPS_MD_LOC_SOURCE_xxx
+    char utc_time_valid;
+    unsigned long long       utc_time;   //the number of UTC seconds in 1ms units since 00:00:00 on Gregorian calendar date 1 January, 1970.
+} agps_md_location_ntf;
+
+typedef struct {
+    unsigned long long       utc_time;   //the number of UTC seconds in 1ms units since 00:00:00 on Gregorian calendar date 1 January, 1970.
+} agps_md_gnss_time_ntf;
+
+typedef struct {
+    #define AGPS_MD_CP_RAT_MODE_GSM 0x01
+    #define AGPS_MD_CP_RAT_MODE_UMTS 0x02
+    #define AGPS_MD_CP_RAT_MODE_LTE 0x04
+    #define AGPS_MD_CP_RAT_MODE_NR  0x08
+    int  rat_mode_flags;
+    
+    char gsm_enabled;
+    char umts_enabled;
+    char lte_enabled;
+    char nr_enabled;
+} agps_md_cp_service_config_ntf;
+
+typedef struct {
+    char enabled; // 0: reject most location except emergency, 1: allow all location request
+    char gnss_visibility_control_status; // 0: gvc reject network-initiated location, 
+                                          // 1: gvc allow network-initiated location
+    char cp_gvc_enable; // 0: do not check gvc, 1: consider gvc status
+} agps_md_location_setting_ntf;
+
+typedef struct {
+    #define AGPS_MD_SUPL_FLOW_IND_DIRECTION_NW_TO_UE 0 // LS to MS in operator's sample excel
+    #define AGPS_MD_SUPL_FLOW_IND_DIRECTION_UE_TO_NW 1 // MS to LS
+    char direction;
+    #define AGPS_MD_SUPL_FLOW_IND_TYPE_UNKNOWN 0
+    #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_INIT 1
+    #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_START 2
+    #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_RESPONSE 3
+    #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_POS_INIT 4
+    #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_POS 5
+    #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_END 6
+    #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_TRIGGERED_START 7
+    #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_TRIGGERED_RESPONSE 8
+    #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_TRIGGERED_STOP 9
+    #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_NOTIFY 10
+    #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_NOTIFY_RESPONSE  11
+    #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_SET_INIT 12
+    #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_REPORT 13
+    char type;
+    int message_size;
+    int session_id;
+    int message_id;
+    int  pdu_id;
+    int  pdu_size;
+    char pdu[3072];
+} agps_md_supl_flow_ind;
+/*
+typedef struct {
+    //nothing
+} agps_md_supl_flow_rsp;
+
+typedef struct {
+    //nothing
+} agps_md_modem_reboot_ind;
+*/
+/* Structure for LBS AP setting query API */
+typedef agps_md_sim_info_req lbs_setting_generic_ap;
+#endif
+
diff --git a/mcu/interface/protocol/general/as2l4c_struct.h b/mcu/interface/protocol/general/as2l4c_struct.h
new file mode 100644
index 0000000..3410205
--- /dev/null
+++ b/mcu/interface/protocol/general/as2l4c_struct.h
@@ -0,0 +1,735 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   as2l4c_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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.
+*
+********************************************************************************/
+
+/*******************************************************************************
+*  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) 2002
+*
+*******************************************************************************
+ *  FILENAME : as2l4c_struct.h
+ *  SYNOPSIS : 
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef _AS2L4C_STRUCT_H
+#define _AS2L4C_STRUCT_H
+
+//#include "kal_non_specific_general_types.h"
+#include "l3_inc_enums.h"
+#include "nbr_public_struct.h"
+#include "kal_general_types.h"
+#include "ps_public_enum.h"
+#include "kal_public_defs.h"
+
+#include "l3_inc_local.h"
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} l4cps_nbr_cell_info_start_req_struct, l4cps_nbr_cell_info_stop_req_struct;
+
+typedef l4c_nbr_cell_info_reg_cnf_struct l4cps_nbr_cell_info_start_cnf_struct;
+typedef l4c_nbr_cell_info_ind_struct l4cps_nbr_cell_info_ind_struct;
+typedef l4c_nw_band_info_ind_struct l4cps_nw_band_info_ind_struct;
+
+//#ifdef __PLMN_LIST_PREF_SUPPORT__
+typedef struct
+{
+    LOCAL_PARA_HDR
+    plmn_list_preference_enum preference;
+} l4cas_set_plmn_list_preference_req_struct;
+//#endif
+
+#ifdef __DYNAMIC_HSPA_PREFERENCE__
+typedef struct
+{
+    LOCAL_PARA_HDR
+	#if defined(__RMMI_UT__) || defined(__L1_STANDALONE__)
+	    kal_uint8 hspa_preference;
+	#else
+	    hspa_preference_enum hspa_preference;
+	#endif
+} l4cas_set_hspa_preference_req_struct;
+#endif /* __DYNAMIC_HSPA_PREFERENCE__ */
+
+/* rx_level revision -------------------------------- */
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8 current_band;
+	kal_int32 rssi_in_qdbm; /* 1 means invalid */
+	kal_uint8 ber;
+    target_module_enum target_module;
+} l4cps_gas_cell_power_level_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8 ber; /* 99 means invalid */
+	kal_int32 rssi_in_qdbm; /* valid range: -101*4 ~ -25*4 */
+	kal_int32 RSCP_in_qdbm; /* valid range: -120*4 ~ -20*4 */
+    kal_int32 EcN0_in_qdbm; /* valid range: - 25*4 ~   0*4 */
+    
+    target_module_enum target_module;
+    kal_uint16 Intra_UARFCN;
+    kal_uint8 band;
+} l4cps_uas_cell_power_level_ind_struct;
+
+/* -------------------------------- rx_level revision */
+#if defined(__AT_RRC_TRACE_SUPPORT__)
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool  trace_on;
+}l4cas_set_rrc_peer_trace_req_struct;
+
+#define RRC_PEER_TRACE_MAX_MESSAGE_LEN 30
+#define RRC_PEER_TRACE_MAX_MESSAGE_TYPE_LEN 50
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 message[RRC_PEER_TRACE_MAX_MESSAGE_LEN];
+    kal_uint8 message_type[RRC_PEER_TRACE_MAX_MESSAGE_TYPE_LEN];
+    
+}l4cas_rrc_peer_trace_ind_struct;
+#endif
+
+typedef enum
+{
+    IQ_CHANNEL_BCCH = 0,
+	IQ_CHANNEL_PCH,
+	IQ_CHANNEL_RACH,
+	IQ_CHANNEL_AGCH,
+	IQ_CHANNEL_NCH,
+	IQ_CHANNEL_SACCH,
+	IQ_CHANNEL_FACCH,
+	IQ_CHANNEL_SDCCH,
+	IQ_CHANNEL_PBCCH,
+	IQ_CHANNEL_PPCH,
+	IQ_CHANNEL_PRACH,
+	IQ_CHANNEL_PAGCH,
+	IQ_CHANNEL_PACCH,
+	IQ_CHANNEL_CCCH_RACH,
+	IQ_CHANNEL_DCCH_RACH,
+	IQ_CHANNEL_DCCH_DCH,    
+	IQ_CHANNEL_DCCH_EDCH,
+	IQ_CHANNEL_BCCH_BCH,
+	IQ_CHANNEL_BCCH_FACH,
+	IQ_CHANNEL_BCCH_HSDSCH,
+	IQ_CHANNEL_PCCH_PCH,
+	IQ_CHANNEL_PCCH_HSDSCH,
+	IQ_CHANNEL_CCCH_FACH,
+	IQ_CHANNEL_CCCH_HSDSCH,
+	IQ_CHANNEL_DCCH_FACH,
+	IQ_CHANNEL_DCCH_HSDSCH,
+	IQ_CHANNEL_NOT_APPLICABLE = 255
+}l4cas_iq_channel_t;
+
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_abort_molr;
+} l4c_lcsp_agps_cp_abort_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_etws_needed;      /* KAL_FALSE = ETWS off, KAL_TRUE = ETWS on */
+    kal_bool is_etws_security_needed;  /* KAL_FALSE = ETWS security off, KAL_TRUE = ETWS security off */
+    kal_bool is_etws_testing_on;  /* KAL_FALSE = don't send test purpose ETWS to MMI, KAL_TRUE= send test purpose ETWS to MMI*/
+} l4cas_etws_setting_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 warning_type;   /*Byte 0 is MSB*, format follows 23.041 9.3.24*/
+    kal_uint16 message_id;     /*Byte 0 is MSB*/
+    kal_uint16 serial_nubmer;  /*Byte 0 is MSB*/
+    kal_bool  is_security_information_valid;
+    kal_uint8 etws_security_information[L4C_MAX_ETWS_SECURITY_INFO_LEN];  /* Only valid when is_security_information_valid = KAL_TRUE, format follows 23.041 9.3.25 */
+} l4cas_etws_information_ind_struct;
+
+//#ifdef __CSG_SUPPORT__
+#if defined(__CSG_SUPPORT__) || defined(__LTE_RAT__)
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_enabled;
+} l4cas_csg_auto_search_req_struct;
+#endif
+
+typedef struct 
+{
+    lai_struct lai;
+    kal_uint16 cell_id;
+    kal_uint32 bar_time;
+} l4cas_bar_cell_control_info_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    bar_cell_control_enum control;
+    kal_uint8 num;
+    l4cas_bar_cell_control_info_struct info[RR_NUM_OF_MAX_BAR_CELL];
+} l4cas_bar_cell_control_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 num;
+    l4cas_bar_cell_control_info_struct info[RR_NUM_OF_MAX_BAR_CELL];
+} l4cas_bar_cell_control_cnf_struct;
+
+
+#if defined(__GEMINI__)    
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_turn_on;
+} rsvas_monitor_peer_pch_switch_req_struct;
+#endif /* __GEMINI__ */
+
+#if defined(__SINGLE_AP_DUAL_MODEM__)
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 sim_config;   /* bitmap */
+} rsvas_sim_status_config_req_struct;
+#endif /* __SINGLE_AP_DUAL_MODEM__ */
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_start_fast_mode_switch;
+} rsvas_fast_mode_switch_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_prefer_rat_enum prefer_rat;
+} l4cas_set_prefer_rat_req_struct;
+
+/* for Thermal begin */
+typedef struct
+{
+    LOCAL_PARA_HDR
+}l4cps_meas_info_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_int8 tx_power; //tx power: -50 ~ 24, -127: invalid
+}l4cps_meas_info_cnf_struct;
+/* for Thermal end */
+
+
+/* INVALID_TX_FREQ represents the invalid value of TX frequency
+   tx_freq list starts from tx_freq[0], and ends at tx_freq[63]
+   or tx_freq[n] where ((n<64) && (tx_freq[n]==INVALID_TX_FREQ))
+*/
+#define INVALID_TX_FREQ 0xFFFF
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 tx_freq[64]; //MAX_NUM_OF_HOPPING_FREQ defined in rr_mpal_interface.h
+}l4cps_rf_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    umts_rrc_state_enum umts_rrc_state;
+    kal_bool dl64qam;
+    ps_conn_status_enum ps_conn_status;
+} l4c_rrce_rrc_state_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_afr_triggered;
+}l4cps_gas_auto_fast_return_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_afr_triggered;
+}l4cps_uas_auto_fast_return_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool ims_support;
+}l4cas_ims_config_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_dedicated;
+    gsm_rrm_state_enum gas_rrm_state;
+}l4c_rrm_rrms_state_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8   hopping_flag;
+    kal_uint8   num_of_hopping_carrier;
+    kal_uint16  arfcn[64];
+    kal_uint8   freq_band[64];
+    kal_uint16  serv_arfcn;
+    kal_uint8   serv_arfcn_band;
+}l4c_rrm_channel_param_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 disc_cause;
+}l4cas_cc_error_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool voice_over_ims_ongoing;/*true:call start,false: call end*/
+}l4cas_ims_call_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool sib19_present; //To notify L4C that SIB19 is present in the serving cell.
+}l4cas_sib19_info_ind_struct;
+#define MAX_NUM_OF_PSEUDO_BS 2 
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8 src_id;
+        kal_uint8 apc_feature_type;
+	kal_bool enable_auto_report;
+	kal_uint16 auto_report_period;
+}l4cas_rr_apc_ctrl_info_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8 src_id;
+    kal_bool set_result; 
+}l4cas_rr_apc_ctrl_info_cnf_struct;
+
+typedef struct
+{
+    kal_bool result; 
+	lai_struct Lai;
+	kal_uint16 Cell_id;
+	kal_uint16 Arfcn;
+	kal_uint8 bsic;
+	kal_uint8 si3_raw_data[23];
+}l4cas_rr_pseudo_bs_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8 src_id;
+	kal_uint8 apc_feature_type;
+        kal_bool fake_cell_auto_report;
+	kal_uint16 auto_report_period;
+	kal_uint8 count;
+	l4cas_rr_pseudo_bs_struct pseudo_bs_list[MAX_NUM_OF_PSEUDO_BS];
+}l4c_rrm_pseudo_bs_detect_ind_struct,l4cas_rr_pseudo_bs_query_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8 src_id;
+}l4cas_rr_pseudo_bs_query_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint32 arfcn;
+}l4c_rrc_cur_freq_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_enabled; /* If enabled then don't check barr criteria for camping */
+} l4cps_gsm_bar_control_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_enabled; 
+} l4cuas_set_rach_test_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint32 src_id;
+    kal_bool integrity_status;      //{0x0: Disable 0x1: Enable}
+    kal_bool ciphering_status;      //{0x0: Disable 0x1: Enable}
+    kal_bool fake_security_status;  //{0x0: Disable 0x1: Enable}
+} l4cas_set_wcdma_security_mode_param_req_struct; 
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint32 src_id; // piggyback src_id in req.
+    kal_bool result;
+} l4cas_set_wcdma_security_mode_param_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint32 src_id; 
+} l4cas_get_wcdma_security_mode_param_req_struct; 
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint32 src_id;       // piggyback src_id in req.
+    kal_bool result;
+    kal_bool integrity_status;                               //{0x0: Disable 0x1: Enable}
+    kal_bool ciphering_status;                               //{0x0: Disable 0x1: Enable}
+    kal_bool fake_security_status;                           //{0x0: Disable 0x1: Enable}
+} l4cas_get_wcdma_security_mode_param_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 mode; /* 0 - Power monitoring disable, 1 - Power monitoring enable */
+    kal_uint8 signal_type; /* 0 - RSCP, 1 - ECNO */
+    kal_int16 tin_threshold; /*Unit - qdbm*/
+    kal_int16 tout_threshold; /*Unit - qdbm*/
+    kal_uint32 timer;
+}l4cas_cell_power_threshold_config_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 signal_type; /* 0 - RSCP, 1 - ECNO, 2 - Both*/
+    kal_int16 rscp_signal_value; /* signal value of RSCP. Applicable only if <signal_type> is 0 or 2*/
+    kal_int16 ecno_signal_value; /* signal value of ECNO. Applicable only if <signal_type> is 1 or 2*/
+}l4cas_cell_power_threshold_ind_struct;
+
+typedef l4cps_gas_cell_power_level_ind_struct l4cps_gas_report_signal_level_ind_struct;
+typedef l4cps_uas_cell_power_level_ind_struct l4cps_uas_report_signal_level_ind_struct;
+
+#endif /* _AS2L4C_STRUCT_H */
diff --git a/mcu/interface/protocol/general/as_inter_core_enum.h b/mcu/interface/protocol/general/as_inter_core_enum.h
new file mode 100644
index 0000000..8bec1a7
--- /dev/null
+++ b/mcu/interface/protocol/general/as_inter_core_enum.h
@@ -0,0 +1,398 @@
+/*****************************************************************************
+*  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) 2014
+*
+*  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:
+ * ---------
+ *   as_inter_core_enum.h
+ *
+ * Project:
+ * --------
+ *   UMOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __AS_INTER_CORE_ENUM_H__
+#define __AS_INTER_CORE_ENUM_H__
+
+/* MACROS ******************************************************************/
+#ifdef __REL6__
+#define MAX_NUM_EQ_PLMN      16
+#else
+#define MAX_NUM_EQ_PLMN       6
+#endif
+
+#define MAX_NUM_LTE_MEAS_CELL (16)  /* Maximum number of reported cells per frequency */
+#define MAX_MEAS_IRAT_FREQ (8)  /* The maximum supported LTE Inter-frequency for measurement.
+                                   4 for TDD + 4 for FDD */
+                                   
+#define MAX_5G4_MEAS_FREQ (16)
+
+#define SIZE_LTE_BAND           8
+#define SIZE_LTE_BAND_MASK_TABLE_EXTENDED (256/8) 
+
+//(CUR_GEN >= MD_GEN97)
+#define SIZE_NR_BAND (1024/8)
+//END (CUR_GEN >= MD_GEN97)
+
+#define LTE_INVALID_RSRP (0x7FFF)
+#define LTE_INVALID_RSRQ (0x7FFF)
+
+#define LTE_MAX_RSRP (-100)
+#define LTE_MIN_RSRP (-660)
+#define LTE_MAX_RSRQ (0)
+#define LTE_MIN_RSRQ (-100)
+
+#define SIZE_UMTS_FDD_BAND      4
+#define SIZE_UMTS_TDD_BAND      2
+
+#define MAX_NR_OF_FDD_CELLS_IN_CELL_LIST (32)
+#define MAX_NR_OF_TDD_CELLS_IN_CELL_LIST (32)
+
+#define MAX_NUM_MEASURED_GSM_CELLS 32 /* The maximum number of GSM cells that can be measured in the standby mode. 
+                                       * This constant is used between UAS/EAS and GAS. 
+                                       */
+
+#define TDD_MAX_NUM_MEASURED_UMTS_CARRIERS (9)
+
+#define FDD_MAX_NUM_MEASURED_UMTS_CARRIERS (6)
+
+#define BLK_LIST_ARRAY_SIZE (63)    /* Size of PCI bitmap array (504/8 = 63) */
+
+/* TYPES DEFINITIONS ********************************************************/
+
+//copied from l3_inc_enums.h
+typedef enum
+{
+    ANY_PLMN                                    = 0,
+    GIVEN_PLMN_EXCLUDE_FORBIDDEN_LA_FOR_ROAMING = 1,
+    GIVEN_PLMN_ALLOW_ALL_LA                     = 2,
+    GIVEN_PLMN_ALLOW_ALL_LA_FOR_LIMITED         = 3,
+    SEARCH_TYPE_NO_CHANGE                       = 0xFF     /* Used in Regn_status_update_req only */
+} plmn_search_type_enum;
+
+//copied from irat_common_enums.h
+typedef enum
+{
+   EUTRAN_DISABLED,
+   EUTRAN_ENABLED
+} eutran_cap_enum; /* E-UTRAN capability */
+
+/* The following should move to interrat interface file */
+typedef enum {
+   GSM_BAND_INDICATOR_DCS1800, /* Default */
+   GSM_BAND_INDICATOR_PCS1900
+} te_gsm_band_indicator;
+
+/* Measured results related: UAS to GAS/EAS */
+typedef enum {
+   IR_BAR_STATUS_NOT_BARRED,
+   IR_BAR_STATUS_BARRED
+} te_ir_bar_status;
+
+typedef enum {
+   IR_RESEL_CRITERIA3_NOT_SATISFIED,
+   IR_RESEL_CRITERIA3_UNKNOWN,
+   IR_RESEL_CRITERIA3_SATISFIED
+} te_ir_resel_criteria3_status;
+
+typedef enum
+{
+    GSM_BAND_START  = 0,
+    GSM_BAND_P = GSM_BAND_START,
+    GSM_BAND_E      = 1,
+    GSM_BAND_R      = 2,
+    GSM_BAND_1800   = 3,
+    GSM_BAND_1900   = 4,
+    GSM_BAND_450    = 5,
+    GSM_BAND_480    = 6,
+    GSM_BAND_850    = 7,
+    MAX_GSM_BANDS   = 8,
+    UMTS_BAND_START = 9,
+    UMTS_BAND       = UMTS_BAND_START,
+    INVALID_BAND    = 0xff
+}access_technology_type_enum;
+
+typedef enum
+{
+   EL1_BANDWIDTH_6_RB,
+   EL1_BANDWIDTH_15_RB,
+   EL1_BANDWIDTH_25_RB,
+   EL1_BANDWIDTH_50_RB,
+   EL1_BANDWIDTH_75_RB,
+   EL1_BANDWIDTH_100_RB,
+   EL1_BANDWIDTH_INVALID
+} eas_bandwidth_enum;
+
+/* This enumeration represents whether evaluation or activation for the target 
+ * E-UTRA is cell is successful, failure, or CCO timer timeout (only used by 
+ * cell change order procedure).
+ */
+typedef enum
+{
+   IR_CELL_RESELECTION_SUCCESS,
+   IR_CELL_RESELECTION_FAILURE,
+   IR_CELL_RESELECTION_TIMEOUT
+} te_ir_cell_reselection_status;
+
+typedef enum {
+   IR_CELL_RESELECTION,
+   IR_CELL_CHANGE_ORDER,
+   IR_REDIRECTION
+#ifdef __CMCC_STD_FR__
+   ,IR_STD_FR
+#endif
+   ,IR_AUTO_FAST_RETURN
+   ,IR_NW_FAST_RETURN
+   ,IR_BG_SRCH
+   ,IR_HSR_CR
+   ,IR_UMTS_FAST_RETURN
+   ,IR_AUTO_FAST_RETURN_STRICT_CONST
+   ,IR_AUTO_FAST_RETURN_WITH_PRIORITY_FREQ // for 4G5 VzW AFR
+} te_ir_cell_change_trigger;
+
+/* Define for Evaluation or Activation Failed Type */
+typedef enum
+{
+   IR_INITIAL_VALUE   = 0x00,
+   NEVER_ALLOWED      = 0x01,  //For Frequency Band Not Support Case.
+   PLMN_ID_MISMATCHED = 0x02,   
+   LA_NOT_ALLOWED     = 0x03,
+   CELL_BARRED        = 0x04,
+   TEMP_FAILURE       = 0x05,
+   CRITERIA3_NOT_SATISFIED = 0x06,
+   TA_NOT_ALLOWED     = 0x07,
+   CELL_BARRED_FREQ   = 0x08,
+   CELL_BARRED_RESV_OPERATOR = 0x09,
+   CELL_BARRED_RESV_OPERATOR_FREQ = 0x0A,
+   CSG_NOT_ALLOWED    = 0x0B,
+   GEMINI_FAILURE     = 0x0C,
+   NAS_REJECT         = 0x0D,
+   SECTOR_VALIDATION_FAILURE = 0x0E,
+   NOT_STABLE = 0x0F,
+   BLACK_CELL = 0x10 
+} te_eval_activate_fail_type;
+
+typedef enum
+{
+    IR_REJECT_NONE,                     //When irat_result != IR_RESULT_REJECT
+    IR_REJECT_SET_RAT,                  //RATCM SET RAT action ongoing
+    IR_REJECT_PLMN_SEARCH,              //RATCM PLMN SEARCH action ongoing
+    IR_REJECT_RF_OFF,                   //RATCM RF OFF action ongoing
+    IR_REJECT_DEACTIVATE,               //RATCM DEACTIVATE for IR search action ongoing
+    IR_REJECT_PS_DETACH,                //MM PS Detach ongoing
+    IR_REJECT_ONGOING_CM_SERVICE,        //MM has ongoing CM service
+    IR_REJECT_SHALL_NOT_IDLE,     // for HO/CCO, shall not be idle
+    IR_REJECT_SHALL_NOT_CONNECTING,  // for IR/Redirect, shall not be connecting
+    IR_REJECT_TO_DISABLED_RAT,  // for capability change, do not IRAT to disabled RAT
+    IR_REJECT_POWER_OFF_DETACH, // Power off detach ongoing
+    IR_REJECT_EMM_REJECT_4G23_RDT, // EMM uses this event to notify NAS_SV to reject the following 4G23 IRRDT
+    IR_REJECT_NAS_CONTEXT_MAC_FAILURE, // 4G5 HO MAC failure. [33.501 2019 Jun] CR#0605
+} irat_reject_cause_enum;
+
+typedef enum {
+   REPORT_CGI_STOP  = 0x00,
+   REPORT_CGI_START = 0x01
+} report_cgi_req_type_enum;
+
+typedef enum {
+   ACQ_CGI_SUCCESS             = 0x00,
+   ACQ_CGI_FAIL_CELL_FOUND     = 0x01,
+   ACQ_CGI_FAIL_CELL_NOT_FOUND = 0x02
+} cgi_info_status_enum;
+
+typedef enum
+{
+    MEAS_SCALE_FACTOR_NOT_AVAILABLE = 0,
+    MEAS_SCALE_FACTOR_CONFIG1 = 1,
+    MEAS_SCALE_FACTOR_CONFIG2 = 2
+} meas_scale_factor_enum;
+
+typedef enum {
+   LCSCE_EUTRA_CELL_NOT_FOUND,                   // LTE info available and triggered meansurements, but no LTE cell found.
+   LCSCE_EUTRA_RESEL_CRIT_NOT_MET,               // UE in idle and LTE measurments are going on, but cell reselection criterin not met.
+   LCSCE_NO_REASON_TO_UPDATE
+}LCSCE_REASON_NOT_MOVING_TO_LTE;
+
+typedef enum
+{
+    CELL_REJ_CAUSE_NONE                                               = 0,  /* None */
+    CELL_REJ_CAUSE_ENPDCP_CUT_CELL                                    = 1,  /* Bar cell from ENPDCP, = ERRC_CELL_REJ_CAUSE_ENPDCP_CUT_CELL (for SMALL_GRANT) */
+    CELL_REJ_CAUSE_ENPDCP_CUT_CELL_POSSIBLE_DCI_IN_MEAS_GAP           = 2,  /* Bar cell from ENPDCP, = ERRC_CELL_REJ_CAUSE_ENPDCP_CUT_CELL_POSSIBLE_DCI_IN_MEAS_GAP */
+    CELL_REJ_CAUSE_SCG_FAILURE                                        = 3,  /* MULTI SCG Failure,    = ERRC_CELL_REJ_CAUSE_SCG_FAILURE */
+    CELL_REJ_CAUSE_VDM_CALL_DROP                                      = 4,  /* CALL DROP with SIP cause 503, = ERRC_CELL_REJ_CAUSE_VDM_CALL_DROP */
+    CELL_REJ_CAUSE_CELL_TEMP_REJ                                      = 5,  /* Reselect fail, = ERRC_CELL_REJ_CAUSE_CELL_TEMP_REJ */
+    CELL_REJ_CAUSE_ERM_CELL_BARRED                                    = 6,  /* ERM Bar Cell,         = ERRC_CELL_REJ_CAUSE_ERM_CELL_BARRED */
+    CELL_REJ_CAUSE_REDIRECT_TACLESS                                   = 7   /* 4G5 redirection failed (TACLESS), = ERRC_CELL_REJ_CAUSE_CELL_REDIRECT_TACLESS */
+} cell_rej_cause_enum;
+#endif /* __AS_INTER_CORE_ENUM_H__ */
diff --git a/mcu/interface/protocol/general/as_inter_core_struct.h b/mcu/interface/protocol/general/as_inter_core_struct.h
new file mode 100644
index 0000000..55dd08a
--- /dev/null
+++ b/mcu/interface/protocol/general/as_inter_core_struct.h
@@ -0,0 +1,339 @@
+/*****************************************************************************
+*  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) 2014
+*
+*  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:
+ * ---------
+ *   as_inter_core_struct.h
+ *
+ * Project:
+ * --------
+ *   UMOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __AS_INTER_CORE_STRUCT_H__
+#define __AS_INTER_CORE_STRUCT_H__
+
+#include "as_inter_core_enum.h"
+#include "global_type.h"
+
+typedef struct meas_UmtsCell
+{
+   kal_uint8 validity;
+
+   #define tstd_valid 0x04
+   #define sctd_valid 0x02
+   #define txDiversity_valid 0x01
+
+   kal_uint16 physCellId; /* MANDATORY */
+//   //AsnNull tstd; /* OPTIONAL */
+//   //AsnNull sctd; /* OPTIONAL */
+   kal_bool txDiversity; /* OPTIONAL */
+}
+meas_UmtsCell;
+
+typedef struct meas_UmtsCellListOnTheCarrier
+{
+   kal_uint8 numElements;
+
+   meas_UmtsCell element[32];
+}
+meas_UmtsCellListOnTheCarrier;
+
+typedef struct meas_UmtsCellListPerCarrier
+{
+   kal_uint16 uarfcn; /* MANDATORY */
+   meas_UmtsCellListOnTheCarrier cellList; /* MANDATORY */
+   kal_bool reduced_meas_perf;
+}
+meas_UmtsCellListPerCarrier;
+
+/* Measured results related: UAS to GAS/EAS */
+
+///#ifdef __UMTS_TDD128_MODE__
+typedef struct {
+    kal_uint16 cell_parameter;
+    kal_int16 pccpch_rscp;  /* RSCP, in qdbm. Range: -500~ -100 (means -125 ~ -25 dBm 0.25 dB step) */
+    te_ir_bar_status resel_status;
+//    te_ir_resel_criteria3_status criteria3_status;//FDD only
+}ts_ir_reported_tdd_cells_meas_info;
+
+typedef struct
+{
+   kal_uint16 uarfcn;
+    kal_int16 uarfcn_rssi;  /* RSSI, in qdbm. Range: -400 ~ -100 (means -100 ~ -25 dBm 0.25 dB step) */
+   kal_uint8  num_reported_cells;
+   ts_ir_reported_tdd_cells_meas_info  ir_reported_tdd_cells_meas_info[MAX_NR_OF_TDD_CELLS_IN_CELL_LIST];
+} ts_ir_umts_carrier_meas_results;
+
+typedef struct
+{
+   kal_uint8 num_carriers;
+   ts_ir_umts_carrier_meas_results  ir_umts_carrier_meas_reults[TDD_MAX_NUM_MEASURED_UMTS_CARRIERS];
+} ts_ir_umts_meas_info;
+///#endif
+
+typedef struct
+{
+   kal_uint32  frame_offset;
+   kal_uint16  quarter_bit_offset;
+} ts_ir_gsm_cell_timing_info;
+
+typedef struct
+{
+   te_gsm_band_indicator gsm_band_indicator;
+   kal_uint16  bcch_arfcn;
+   kal_bool    bsic_verified;
+   kal_uint8   bsic;                                 /* This contains a valid value only if bsic_verified = TRUE */
+   ts_ir_gsm_cell_timing_info  gsm_cell_timing_info; /* This contains a valid value only if bsic_verified = TRUE */
+} ts_ir_gsm_cell_bsic_info;
+
+/* Measured results related: EAS to GAS/UAS */
+typedef struct
+{
+   kal_uint16  pci;
+   kal_int16   rsrp;
+   kal_int16   rsrq;
+   kal_int16   rs_sinr;
+} eas_meas_cell_rslt_struct;
+
+typedef struct
+{
+   EARFCN      earfcn;
+   kal_uint8   cell_num;
+   eas_meas_cell_rslt_struct  cell[MAX_NUM_LTE_MEAS_CELL];
+} eas_meas_freq_rslt_struct;
+
+typedef struct
+{
+   EARFCN      earfcn;
+   kal_uint8   cell_num;
+   kal_uint16  cell[MAX_NUM_LTE_MEAS_CELL];
+} eas_hps_qualify_struct;
+
+typedef struct
+{
+   kal_uint16 scrambling_code;
+   kal_int16  cpich_rscp;    /* RSCP, in qdbm Range: -480 ~ -100 means (-120 ~ -25 )dBm in 0.25 dB step */
+   kal_int16  cpich_ec_n0;   /* Ec/No, in qdb. Range: -100~0 (means -25 ~ 0 dB in 0.25 dB step) */
+   te_ir_bar_status  resel_status;                 /* used when 2G active */
+   te_ir_resel_criteria3_status  criteria3_status; /* used when 2G active */
+} ir_umts_measured_result_per_cell;
+
+typedef struct
+{
+   kal_uint16 uarfcn;
+   kal_int16  uarfcn_rssi;  /* RSSI, in qdbm. Range: -480 ~ -100 (means -120 ~ -25 dBm 0.25 dB step) */
+   kal_uint8  num_reported_cells;
+   ir_umts_measured_result_per_cell  ir_reported_fdd_cells_meas_info[MAX_NR_OF_FDD_CELLS_IN_CELL_LIST];
+} ir_umts_measured_result;
+
+/* Measured results related: GAS to UAS/EAS */
+typedef struct
+{
+   te_gsm_band_indicator  gsm_band_indicator;
+   kal_uint16  bcch_arfcn;
+   kal_int16   rssi_in_quarter_dbm;
+} ts_ir_carrier_rssi_info;
+
+typedef struct
+{
+   kal_uint8  num_carriers;
+   ts_ir_carrier_rssi_info  carrier_rssi_info[MAX_NUM_MEASURED_GSM_CELLS];
+} ts_ir_gsm_cell_rssi_info;
+
+/* Measurement request/confirm related: EAS/UAS to GAS */
+typedef struct
+{
+   te_gsm_band_indicator gsm_band_indicator;
+   kal_uint16 bcchArfcn;
+} ts_ir_gsm_cell;
+
+typedef struct
+{
+   kal_uint8 numElements;
+   ts_ir_gsm_cell element[32];
+} ts_ir_gsm_cell_list;
+
+/* Measured request related: UAS/GAS/CAS/NL1 to EAS */
+typedef struct
+{
+   EARFCN              earfcn;
+   eas_bandwidth_enum  meas_bandwidth;
+   kal_bool            skip_black_list;
+   kal_uint8           black_list[BLK_LIST_ARRAY_SIZE];
+
+//#ifdef __LTE_R11__
+   kal_bool            wideband_rsrq_meas;
+//#endif
+   kal_bool            presence_antenna_port1; /* MOB only reference in NL1_ERRC_LTE_MEASUREMENT_REQ. */
+} eas_meas_freq_info_struct;
+
+typedef struct
+{
+   EARFCN      earfcn;
+   kal_uint16  pci;
+} eas_target_cell_info;
+
+#define AS_NR_SCS_15 15
+#define AS_NR_SCS_30 30
+#define AS_NR_SCS_60 60
+#define AS_NR_SCS_120 120
+#define AS_NR_SCS_240 240
+#define AS_NR_SCS_UNKNOWN 0
+
+typedef struct
+{
+   kal_uint16          dl_frequency_band;
+   NRARFCN             narfcn;
+   kal_uint16          pci;
+   kal_uint8           subcarrier_spacing_ssb; // the vaule setting should align #define AS_NR_SCS_xxx
+} nr_cell_info;
+
+/* Define for Evaluation or Activation Failed Handle */
+typedef struct
+{
+   te_eval_activate_fail_type  eval_activate_fail_type;
+   /* In second, valid only when evalActivateFailType is CELL_BARRED */
+   kal_uint16                  tbarred_val;
+   /* In enum, valid only when evalActivateFailType is NAS_REJECT(only set and used by UAS now) */
+   irat_reject_cause_enum      reject_cause;
+} ts_eval_activate_fail_handle;
+
+/* MSG_ID_ANY_ERRC_CELL_REJ_IND */
+typedef struct
+{
+    kal_bool	                is_bar_pcell;
+    cell_rej_cause_enum         cause;          /* Rejected cause */
+    kal_uint16                  timer_val;      /* Period of timer for rejection unit:second */
+    kal_uint32                  earfcn;         /* earfcn/pci used to identify cell when is_bar_pcell is FALSE */
+    kal_uint16                  pci;
+    kal_uint32                  cell_id;        /* cell_id used to identify cell when is_bar_pcell is TRUE */
+} any_errc_cell_rej_info_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    any_errc_cell_rej_info_struct  rej_info;
+} any_errc_cell_rej_ind_struct;
+
+#endif /* __AS_INTER_CORE_STRUCT_H__ */
diff --git a/mcu/interface/protocol/general/atp_dmf_cmd_def.h b/mcu/interface/protocol/general/atp_dmf_cmd_def.h
new file mode 100644
index 0000000..7a13b9b
--- /dev/null
+++ b/mcu/interface/protocol/general/atp_dmf_cmd_def.h
@@ -0,0 +1,4173 @@
+/*****************************************************************************
+*  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).
+*
+*****************************************************************************/
+
+#ifndef DMF_APP
+#define DMF_APP(APP_ID)
+#endif
+
+#ifndef DMF_APP_END
+#define DMF_APP_END
+#endif
+
+#ifndef DMF_CMD_REQ
+#define DMF_CMD_REQ(STRUCT_NAME, PARA_NAME)
+#endif
+
+#ifndef DMF_CMD_REQ_END
+#define DMF_CMD_REQ_END(STRUCT_NAME)
+#endif
+
+#ifndef DMF_CMD_CNF
+#define DMF_CMD_CNF(CNF_TYPE, STRUCT_NAME, PARA_NAME)
+#endif
+
+#ifndef DMF_CMD_CNF_END
+#define DMF_CMD_CNF_END(STRUCT_NAME)
+#endif
+
+#ifndef DMF_URC_IND
+#define DMF_URC_IND(IND_TYPE, STRUCT_NAME, PARA_NAME)
+#endif
+
+#ifndef DMF_URC_IND_END
+#define DMF_URC_IND_END(STRUCT_NAME)
+#endif
+
+#ifndef DMF_FIELD_VAR
+#define DMF_FIELD_VAR(VAR_TYPE, VAR_NAME, MAX_VAL)
+#endif
+
+#ifndef DMF_FIELD_VAR_LONG
+#define DMF_FIELD_VAR_LONG(VAR_TYPE, VAR_NAME, MAX_VAL)
+#endif
+
+#ifndef DMF_FIELD_VAR_O
+#define DMF_FIELD_VAR_O(VAR_TYPE, VAR_NAME, MAX_VAL)
+#endif
+
+#ifndef DMF_FIELD_VAR_ARRAY
+#define DMF_FIELD_VAR_ARRAY(VAR_TYPE, VAR_NAME, LENGTH)
+#endif
+
+#ifndef DMF_FIELD_VAR_ARRAY_D
+#define DMF_FIELD_VAR_ARRAY_D(VAR_TYPE, VAR_NAME, LENGTH)
+#endif
+
+
+#ifndef DMF_FIELD_STRING
+#define DMF_FIELD_STRING(STR_NAME, LENGTH)
+#endif
+
+#if !defined(DMF_CMD_REQ_SEC) && !defined(DMF_CMD_CNF_SEC) && !defined(DMF_URC_IND_SEC)
+#define DMF_CMD_REQ_SEC
+#define DMF_CMD_CNF_SEC
+#define DMF_URC_IND_SEC
+#endif
+
+#define UNUSED_FIELD    0
+
+#define OTA_MSG_SEGMENT_MAX_LEN 512
+/*Define structures*/
+
+#ifdef __DMF_TC03__
+DMF_APP(1)  
+
+    // Define CMD_REQ structure 
+    #ifdef DMF_CMD_REQ_SEC
+        DMF_CMD_REQ(dmf_app1_cmd_req_struct, app1_cmd)
+            DMF_FIELD_VAR(kal_uint32, cause, 2000)
+            DMF_FIELD_VAR_O(kal_uint32, call_id, 8)
+        DMF_CMD_REQ_END(dmf_app1_cmd_req_struct)
+    #endif 
+
+    // Define CMD_CNF structure 
+    #ifdef DMF_CMD_CNF_SEC
+        // for DMF_MISC_CAUSE_STATISTICS_LTE_ATTACH_AND_PDN_PDP
+        DMF_CMD_CNF(DMF_APP1_STATISTICS_LTE_ATTACH_AND_PDN_PDP_CNF, dmf_app1_statistics_lte_attach_and_pdn_pdp_cnf_struct, app1_statistics_lte_attach_and_pdn_pdp_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_attach_request_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_attach_accept_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_attach_reject_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_attach_3410_expiry_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, non_ims_pdp_request_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, non_ims_pdp_accept_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, non_ims_pdp_reject_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, non_ims_pdp_t3380_expiry_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, ims_pdp_request_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, ims_pdp_accept_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, ims_pdp_reject_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, ims_pdp_t3380_expiry_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, non_ims_pdn_request_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, non_ims_pdn_success_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, non_ims_pdn_reject_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, non_ims_pdn_t3482_expiry_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, ims_pdn_request_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, ims_pdn_success_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, ims_pdn_reject_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, ims_pdn_t3482_expiry_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_tau_request_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_tau_accept_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_tau_reject_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, umts_rau_request_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, umts_rau_accept_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, umts_rau_reject_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, umts_lau_request_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, umts_lau_accept_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, umts_lau_reject_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_rau_request_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_rau_accept_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_rau_reject_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_lau_request_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_lau_accept_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_lau_reject_count, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_statistics_lte_attach_and_pdn_pdp_cnf_struct)
+
+        //DMF_MISC_CAUSE_STATISTICS_PS_PAGING
+        DMF_CMD_CNF(DMF_APP1_STATISTICS_PS_PAGING_CNF, dmf_app1_statistics_ps_paging_cnf_struct, app1_statistics_ps_paging_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, non_data_sim_paging_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, non_data_sim_paging_for_volte_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, non_data_sim_paging_for_sms_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, non_data_sim_paging_for_detach_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, non_data_sim_paging_fail_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, non_data_sim_paging_for_others_count, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_statistics_ps_paging_cnf_struct)
+
+        // for DMF_MISC_CAUSE_STATISTICS_RA_FAIL_INFO
+        DMF_CMD_CNF(DMF_APP1_STATISTICS_RA_FAIL_INFO_CNF, dmf_app1_statistics_ra_fail_info_cnf_struct, app1_statistics_ra_fail_info_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, ra_fail_4g_cnt, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, ra_fail_4g_good_sig_cnt, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, ra_fail_3g_cnt, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, ra_fail_3g_good_sig_cnt, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, ra_fail_2g_cnt, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, ra_fail_2g_good_sig_cnt, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_statistics_ra_fail_info_cnf_struct)
+
+        // DMF_MISC_CAUSE_STATISTICS_MODEM_STATUS - 0 BASEBAND
+        DMF_CMD_CNF(DMF_APP1_STATISTICS_MODEM_STATUS_BASEBAND_CNF, dmf_app1_statistics_modem_status_baseband_cnf_struct, app1_statistics_modem_status_baseband_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8,  type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, ul_grant_number, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16,  dl_grant_number, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16,  cqi, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8,   dlmcs, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8,   ulmcs, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8,  rb_length, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16,  snr, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, ultbsize, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, dltbsize, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16,  ul_ber, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16,  dl_ber, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8,  pathloss, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16,  main_ant_sar, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16,  div_ant_sar, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8,  ant_status, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_statistics_modem_status_baseband_cnf_struct)
+
+        // DMF_MISC_CAUSE_STATISTICS_MODEM_STATUS - 2 RLC
+        DMF_CMD_CNF(DMF_APP1_STATISTICS_MODEM_STATUS_RLC_CNF, dmf_app1_statistics_modem_status_rlc_cnf_struct, app1_statistics_modem_status_rlc_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_nw_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_ue_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, miss_num_by_ue_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, retx_num_by_ue_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, TxDataPdu_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, RxDataPdu_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_nw_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_ue_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, miss_num_by_ue_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, retx_num_by_ue_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, TxDataPdu_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, RxDataPdu_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_nw_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_ue_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, miss_num_by_ue_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, retx_num_by_ue_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, TxDataPdu_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, RxDataPdu_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_nw_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_ue_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, miss_num_by_ue_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, retx_num_by_ue_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, TxDataPdu_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, RxDataPdu_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_nw_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_ue_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, miss_num_by_ue_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, retx_num_by_ue_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, TxDataPdu_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, RxDataPdu_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_nw_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_ue_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, miss_num_by_ue_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, retx_num_by_ue_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, TxDataPdu_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, RxDataPdu_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_nw_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_ue_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, miss_num_by_ue_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, retx_num_by_ue_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, TxDataPdu_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, RxDataPdu_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_nw_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_ue_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, miss_num_by_ue_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, retx_num_by_ue_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, TxDataPdu_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, RxDataPdu_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_nw_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_ue_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, miss_num_by_ue_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, retx_num_by_ue_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, TxDataPdu_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, RxDataPdu_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_nw_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, nack_num_by_ue_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, miss_num_by_ue_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, retx_num_by_ue_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, TxDataPdu_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, RxDataPdu_10, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_statistics_modem_status_rlc_cnf_struct)
+
+        // DMF_MISC_CAUSE_STATISTICS_MODEM_STATUS - 3 PDCP
+        DMF_CMD_CNF(DMF_APP1_STATISTICS_MODEM_STATUS_PDCP_CNF, dmf_app1_statistics_modem_status_pdcp_cnf_struct, app1_statistics_modem_status_pdcp_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, ul_ack_rate, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_packet_num_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_avg_time_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_max_time_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, sent_packet_num_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_packet_num_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_avg_time_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_max_time_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, sent_packet_num_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_packet_num_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_avg_time_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_max_time_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, sent_packet_num_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_packet_num_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_avg_time_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_max_time_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, sent_packet_num_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_packet_num_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_avg_time_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_max_time_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, sent_packet_num_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_packet_num_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_avg_time_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_max_time_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, sent_packet_num_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_packet_num_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_avg_time_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_max_time_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, sent_packet_num_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_packet_num_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_avg_time_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_max_time_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, sent_packet_num_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_packet_num_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_avg_time_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_max_time_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, sent_packet_num_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_packet_num_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_avg_time_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, buffer_max_time_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, sent_packet_num_10, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_statistics_modem_status_pdcp_cnf_struct)
+
+        // DMF_MISC_CAUSE_STATISTICS_MODEM_STATUS - 4 RRC
+        DMF_CMD_CNF(DMF_APP1_STATISTICS_MODEM_STATUS_RRC_CNF, dmf_app1_statistics_modem_status_rrc_cnf_struct, app1_statistics_modem_status_rrc_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, lte_dl_bandwidth, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, lte_ul_bandwidth, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, rsrp_0, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, rsrp_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, rsrq_0, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, rsrq_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_earfcn, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, lte_pci, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_statistics_modem_status_rrc_cnf_struct)
+
+        // DMF_MISC_CAUSE_STATISTICS_PROT_PWR - 0 CONNECTED MODE TIME
+        DMF_CMD_CNF(DMF_APP1_STATISTICS_PROT_PWR_CONNECTED_MODE_TIME_CNF, dmf_app1_statistics_prot_pwr_connected_mode_time_cnf_struct, app1_statistics_prot_pwr_connected_mode_time_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_connected_time, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_connected_time_good_sig, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, wcdma_connected_time, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, wcdma_connected_time_good_sig, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_connected_time, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_connected_time_good_sig, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_statistics_prot_pwr_connected_mode_time_cnf_struct)
+
+        // DMF_MISC_CAUSE_STATISTICS_PROT_PWR - 1 TX PWR STEP
+        DMF_CMD_CNF(DMF_APP1_STATISTICS_PROT_PWR_TX_PWR_STEP_CNF, dmf_app1_statistics_prot_pwr_tx_pwr_step_cnf_struct, app1_statistics_prot_pwr_tx_pwr_step_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_tx_time_step_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_tx_time_step_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_tx_time_step_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_tx_time_step_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_tx_time_step_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_tx_time_step_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_tx_time_step_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, wcdma_tx_time_step_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, wcdma_tx_time_step_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, wcdma_tx_time_step_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, wcdma_tx_time_step_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, wcdma_tx_time_step_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, wcdma_tx_time_step_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, wcdma_tx_time_step_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_tx_time_step_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_tx_time_step_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_tx_time_step_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_tx_time_step_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_tx_time_step_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_tx_time_step_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_tx_time_step_7, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_statistics_prot_pwr_tx_pwr_step_cnf_struct)
+
+        // DMF_MISC_CAUSE_STATISTICS_PROT_PWR - 2 IDLE RESEL CNT
+        DMF_CMD_CNF(DMF_APP1_STATISTICS_PROT_PWR_IDLE_RESEL_CNT_CNF, dmf_app1_statistics_prot_pwr_idle_resel_cnt_cnf_struct, app1_statistics_prot_pwr_idle_resel_cnt_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_idle_resel_cnt, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, wcdma_idle_resel_cnt, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_idle_resel_cnt, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_statistics_prot_pwr_idle_resel_cnt_cnf_struct)
+
+        // DMF_MISC_CAUSE_STATISTICS_PROT_PWR - 3 NW SEARCH TIME
+        DMF_CMD_CNF(DMF_APP1_STATISTICS_PROT_PWR_NW_SEARCH_TIME_CNF, dmf_app1_statistics_prot_pwr_nw_search_time_cnf_struct, app1_statistics_prot_pwr_nw_search_time_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_nw_search_time, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, wcdma_nw_search_time, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_nw_search_time, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_statistics_prot_pwr_nw_search_time_cnf_struct)
+
+        // DMF_MISC_CAUSE_STATISTICS_PROT_PWR - 4 IDLE MEAS TIME
+        DMF_CMD_CNF(DMF_APP1_STATISTICS_PROT_PWR_IDLE_MEAS_TIME_CNF, dmf_app1_statistics_prot_pwr_idle_meas_time_cnf_struct, app1_statistics_prot_pwr_idle_meas_time_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_idle_meas_time, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, wcdma_idle_meas_time, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_idle_meas_time, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_statistics_prot_pwr_idle_meas_time_cnf_struct)
+
+        // DMF_MISC_CAUSE_STATISTICS_PROT_PWR - 5 NO SLEEP TIME
+        DMF_CMD_CNF(DMF_APP1_STATISTICS_PROT_PWR_NO_SLEEP_TIME_CNF, dmf_app1_statistics_prot_pwr_no_sleep_time_cnf_struct, app1_statistics_prot_pwr_no_sleep_time_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, type, UNUSED_FIELD)
+            DMF_FIELD_STRING(lte_no_sleep_timestamp_1, 9)  // HH:MM:SS
+            DMF_FIELD_VAR(kal_uint32, lte_no_sleep_duration_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, no_sleep_cause_1, UNUSED_FIELD)
+            DMF_FIELD_STRING(lte_no_sleep_timestamp_2, 9)
+            DMF_FIELD_VAR(kal_uint32, lte_no_sleep_duration_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, no_sleep_cause_2, UNUSED_FIELD)
+            DMF_FIELD_STRING(lte_no_sleep_timestamp_3, 9)
+            DMF_FIELD_VAR(kal_uint32, lte_no_sleep_duration_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, no_sleep_cause_3, UNUSED_FIELD)
+            DMF_FIELD_STRING(lte_no_sleep_timestamp_4, 9)
+            DMF_FIELD_VAR(kal_uint32, lte_no_sleep_duration_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, no_sleep_cause_4, UNUSED_FIELD)
+            DMF_FIELD_STRING(lte_no_sleep_timestamp_5, 9)
+            DMF_FIELD_VAR(kal_uint32, lte_no_sleep_duration_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, no_sleep_cause_5, UNUSED_FIELD)
+            DMF_FIELD_STRING(lte_no_sleep_timestamp_6, 9)
+            DMF_FIELD_VAR(kal_uint32, lte_no_sleep_duration_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, no_sleep_cause_6, UNUSED_FIELD)
+            DMF_FIELD_STRING(lte_no_sleep_timestamp_7, 9)
+            DMF_FIELD_VAR(kal_uint32, lte_no_sleep_duration_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, no_sleep_cause_7, UNUSED_FIELD)
+            DMF_FIELD_STRING(lte_no_sleep_timestamp_8, 9)
+            DMF_FIELD_VAR(kal_uint32, lte_no_sleep_duration_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, no_sleep_cause_8, UNUSED_FIELD)
+            DMF_FIELD_STRING(lte_no_sleep_timestamp_9, 9)
+            DMF_FIELD_VAR(kal_uint32, lte_no_sleep_duration_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, no_sleep_cause_9, UNUSED_FIELD)
+            DMF_FIELD_STRING(lte_no_sleep_timestamp_10, 9)
+            DMF_FIELD_VAR(kal_uint32, lte_no_sleep_duration_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, no_sleep_cause_10, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_statistics_prot_pwr_no_sleep_time_cnf_struct)
+
+        // DMF_MISC_CAUSE_STATISTICS_PROT_PWR - 6 DRX CYCLE CNT
+        DMF_CMD_CNF(DMF_APP1_STATISTICS_PROT_PWR_DRX_CYCLE_CNT_CNF, dmf_app1_statistics_prot_pwr_drx_cycle_cnt_cnf_struct, app1_statistics_prot_pwr_drx_cycle_cnt_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_drx_factor_cnt_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_drx_factor_cnt_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_drx_factor_cnt_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, lte_drx_factor_cnt_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, wcdma_drx_factor_cnt_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, wcdma_drx_factor_cnt_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, wcdma_drx_factor_cnt_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, wcdma_drx_factor_cnt_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, wcdma_drx_factor_cnt_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_drx_factor_cnt_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_drx_factor_cnt_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_drx_factor_cnt_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_drx_factor_cnt_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_drx_factor_cnt_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_drx_factor_cnt_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_drx_factor_cnt_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, gsm_drx_factor_cnt_9, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_statistics_prot_pwr_drx_cycle_cnt_cnf_struct)
+
+        // for DMF_MISC_CAUSE_ABNORMAL_MT_CSFB
+        DMF_CMD_CNF(DMF_APP1_ABNORMAL_MT_CSFB_CMD_CNF, dmf_app1_abnormal_mt_csfb_cnf_struct, app1_abnormal_mt_csfb_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid, 7)
+            DMF_FIELD_VAR(kal_uint16, lac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, rac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, tac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, active_rat, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, mm_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, csfb_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, cc_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, emm_mm_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, errc_rrc_rr_cause, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_abnormal_mt_csfb_cnf_struct)
+
+        // for DMF_MISC_CAUSE_ABNORMAL_MT_CS
+        DMF_CMD_CNF(DMF_APP1_ABNORMAL_MT_CS_CMD_CNF, dmf_app1_abnormal_mt_cs_cnf_struct, app1_abnormal_mt_cs_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid, 7)
+            DMF_FIELD_VAR(kal_uint16, lac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, rac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, tac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, active_rat, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, mm_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, cc_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, emm_mm_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, errc_rrc_rr_cause, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_abnormal_mt_cs_cnf_struct)
+
+        // for DMF_MISC_CAUSE_ABNORMAL_MO_CSFB_CS
+        DMF_CMD_CNF(DMF_APP1_ABNORMAL_MO_CSFB_CS_CMD_CNF, dmf_app1_abnormal_mo_csfb_cs_cnf_struct, app1_abnormal_mo_csfb_cs_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid, 7)
+            DMF_FIELD_VAR(kal_uint16, lac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, rac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, tac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, active_rat, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, mo_type, UNUSED_FIELD)   
+            DMF_FIELD_VAR(kal_uint16, mm_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, csfb_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, cc_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, attach_tau_type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, emm_mm_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, errc_rrc_rr_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, vdm_cause, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_abnormal_mo_csfb_cs_cnf_struct)
+
+
+        //DMF_MISC_CAUSE_ABNORMAL_CS_CALL_DROP
+        DMF_CMD_CNF(DMF_APP1_ABNORMAL_CS_CALL_DROP_CMD_CNF, dmf_app1_abnormal_cs_call_drop_cnf_struct, app1_abnormal_cs_call_drop_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid, 7)
+            DMF_FIELD_VAR(kal_uint16, lac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, rac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, tac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, active_rat, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, cc_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, mm_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, rrc_rr_cause, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_abnormal_cs_call_drop_cnf_struct)
+
+        // for DMF_MISC_CAUSE_ABNORMAL_MT_C2K
+        DMF_CMD_CNF(DMF_APP1_ABNORMAL_MT_C2K_CMD_CNF, dmf_app1_abnormal_mt_c2k_cnf_struct, app1_abnormal_mt_c2k_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_STRING(mcc, 3)
+            DMF_FIELD_STRING(mnc, 3)
+            DMF_FIELD_VAR(kal_uint16, sid, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, nid, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, pilot_pn_offset, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, band_class, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, channel, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, rx_power, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, pilot_ecio, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, c2k_cause, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_abnormal_mt_c2k_cnf_struct)
+
+        // for DMF_MISC_CAUSE_ABNORMAL_MO_C2K
+        DMF_CMD_CNF(DMF_APP1_ABNORMAL_MO_C2K_CMD_CNF, dmf_app1_abnormal_mo_c2k_cnf_struct, app1_abnormal_mo_c2k_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_STRING(mcc, 4)
+            DMF_FIELD_STRING(mnc, 4)
+            DMF_FIELD_VAR(kal_uint16, sid, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, nid, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, pilot_pn_offset, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, band_class, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, channel, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, rx_power, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, pilot_ecio, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, c2k_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, vdm_cause, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_abnormal_mo_c2k_cnf_struct)
+
+        // for DMF_MISC_CAUSE_ABNORMAL_C2K_CALL_DROP
+        DMF_CMD_CNF(DMF_APP1_ABNORMAL_C2K_CALL_DROP_CMD_CNF, dmf_app1_abnormal_c2k_call_drop_cnf_struct, app1_abnormal_c2k_call_drop_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_STRING(mcc, 3)
+            DMF_FIELD_STRING(mnc, 3)
+            DMF_FIELD_VAR(kal_uint16, sid, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, nid, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, pilot_pn_offset, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, band_class, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, channel, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, rx_power, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, pilot_ecio, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, c2k_cause, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_abnormal_c2k_call_drop_cnf_struct)
+
+        //DMF_MISC_CAUSE_ABNORMAL_MT_VOLTE_CALL
+        DMF_CMD_CNF(DMF_APP1_ABNORMAL_MT_VOLTE_CALL_CMD_CNF, dmf_app1_abnormal_mt_volte_call_cnf_struct, app1_abnormal_mt_volte_call_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, call_id, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid, 7)
+            DMF_FIELD_VAR(kal_uint16, lac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, rac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, tac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, active_rat, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, sip_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, emm_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, errc_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, vops_support, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, voice_bearer_est, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, video_bearer_est, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, is_conference_call, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, normal_reg_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, emergency_reg_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, call_type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, sip_call_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, pdn_state, UNUSED_FIELD)
+            DMF_FIELD_STRING(sip_flow, 512)
+            DMF_FIELD_VAR(kal_uint8, speech_codec, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, precondition, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, speech_on, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, disc_tmr_rpt, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, ul_disc_cnt_rpt, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, dl_disc_cnt_rpt, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, lw_ho_type, UNUSED_FIELD)
+            DMF_FIELD_STRING(bssid, 19)
+            DMF_FIELD_STRING(ip_address, 65)
+            DMF_FIELD_STRING(pcscf_address, 65)
+            DMF_FIELD_STRING(epdg_address, 65)
+            DMF_FIELD_VAR(kal_uint16, volte_vowifi_handover_fail, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, wo_error, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_abnormal_mt_volte_call_cnf_struct)
+
+        //DMF_MISC_CAUSE_ABNORMAL_MO_VOLTE_CALL
+        DMF_CMD_CNF(DMF_APP1_ABNORMAL_MO_VOLTE_CALL_CMD_CNF, dmf_app1_abnormal_mo_volte_call_cnf_struct, app1_abnormal_mo_volte_call_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, call_id, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid, 7)
+            DMF_FIELD_VAR(kal_uint16, lac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, rac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, tac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, active_rat, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, sip_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, emm_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, errc_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, vops_support, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, voice_bearer_est, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, video_bearer_est, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, is_conference_call, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, normal_reg_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, emergency_reg_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, call_type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, sip_call_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, pdn_state, UNUSED_FIELD)
+            DMF_FIELD_STRING(sip_flow, 512)
+            DMF_FIELD_VAR(kal_uint8, speech_codec, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, precondition, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, speech_on, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, disc_tmr_rpt, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, ul_disc_cnt_rpt, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, dl_disc_cnt_rpt, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, lw_ho_type, UNUSED_FIELD)
+            DMF_FIELD_STRING(bssid, 19)
+            DMF_FIELD_STRING(ip_address, 65)
+            DMF_FIELD_STRING(pcscf_address, 65)
+            DMF_FIELD_STRING(epdg_address, 65)
+            DMF_FIELD_VAR(kal_uint16, volte_vowifi_handover_fail, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, wo_error, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, vdm_cause, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_abnormal_mo_volte_call_cnf_struct)
+
+        //DMF_MISC_CAUSE_ABNORMAL_VOLTE_CALL_DROP
+        DMF_CMD_CNF(DMF_APP1_ABNORMAL_VOLTE_CALL_DROP_CMD_CNF, dmf_app1_abnormal_volte_call_drop_cnf_struct, app1_abnormal_volte_call_drop_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, call_id, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid, 7)
+            DMF_FIELD_VAR(kal_uint16, lac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, rac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, tac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, active_rat, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, sip_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, emm_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, errc_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, srvcc_fail_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, video_update_fail, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, volte_vowifi_handover_fail, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, vops_support, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, voice_bearer_est, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, video_bearer_est, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, is_conference_call, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, normal_reg_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, emergency_reg_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, call_type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, sip_call_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, pdn_state, UNUSED_FIELD)
+            DMF_FIELD_STRING(sip_flow, 512)
+            DMF_FIELD_VAR(kal_uint8, speech_codec, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, precondition, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, speech_on, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, disc_tmr_rpt, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, ul_disc_cnt_rpt, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, dl_disc_cnt_rpt, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, lw_ho_type, UNUSED_FIELD)
+            DMF_FIELD_STRING(bssid, 18)
+            DMF_FIELD_STRING(ip_address, 64)
+            DMF_FIELD_STRING(pcscf_address, 64)
+            DMF_FIELD_STRING(epdg_address, 64)
+            DMF_FIELD_VAR(kal_uint16, wo_error, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_abnormal_volte_call_drop_cnf_struct)
+
+        //DMF_MISC_CAUSE_ABNORMAL_MT_VOWIFI_CALL
+        DMF_CMD_CNF(DMF_APP1_ABNORMAL_MT_VOWIFI_CALL_CMD_CNF, dmf_app1_abnormal_mt_vowifi_call_cnf_struct, app1_abnormal_mt_vowifi_call_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, call_id, UNUSED_FIELD)
+            DMF_FIELD_STRING(bssid, 19)
+            DMF_FIELD_VAR(kal_uint16, sip_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, is_conference_call, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, normal_reg_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, emergency_reg_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, call_type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, sip_call_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, pdn_state, UNUSED_FIELD)
+            DMF_FIELD_STRING(sip_flow, 512)
+            DMF_FIELD_VAR(kal_uint8, speech_codec, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, speech_on, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, lw_ho_type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, lte_sig1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, lte_sig2, UNUSED_FIELD)
+            DMF_FIELD_STRING(ip_address, 65)
+            DMF_FIELD_STRING(pcscf_address, 65)
+        DMF_CMD_CNF_END(dmf_app1_abnormal_mt_vowifi_call_cnf_struct)
+
+        //DMF_MISC_CAUSE_ABNORMAL_MO_VOWIFI_CALL
+        DMF_CMD_CNF(DMF_APP1_ABNORMAL_MO_VOWIFI_CALL_CMD_CNF, dmf_app1_abnormal_mo_vowifi_call_cnf_struct, app1_abnormal_mo_vowifi_call_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, call_id, UNUSED_FIELD)
+            DMF_FIELD_STRING(bssid, 19)
+            DMF_FIELD_VAR(kal_uint16, sip_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, is_conference_call, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, normal_reg_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, emergency_reg_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, call_type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, sip_call_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, pdn_state, UNUSED_FIELD)
+            DMF_FIELD_STRING(sip_flow, 512)
+            DMF_FIELD_VAR(kal_uint8, speech_codec, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, speech_on, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, lw_ho_type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, lte_sig1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, lte_sig2, UNUSED_FIELD)
+            DMF_FIELD_STRING(ip_address, 65)
+            DMF_FIELD_STRING(pcscf_address, 65)
+            DMF_FIELD_VAR(kal_uint8, vdm_cause, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_abnormal_mo_vowifi_call_cnf_struct)
+
+        //DMF_MISC_CAUSE_ABNORMAL_VOWIFI_CALL_DROP
+        DMF_CMD_CNF(DMF_APP1_ABNORMAL_VOWIFI_CALL_DROP_CMD_CNF, dmf_app1_abnormal_vowifi_call_drop_cnf_struct, app1_abnormal_vowifi_call_drop_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, call_id, UNUSED_FIELD)
+            DMF_FIELD_STRING(bssid, 19)
+            DMF_FIELD_VAR(kal_uint16, sip_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, video_update_fail, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, volte_vowifi_handover_fail, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, is_conference_call, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, normal_reg_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, emergency_reg_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, call_type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, sip_call_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, pdn_state, UNUSED_FIELD)
+            DMF_FIELD_STRING(sip_flow, 512)
+            DMF_FIELD_VAR(kal_uint8, speech_codec, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, speech_on, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, lw_ho_type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, lte_sig1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, lte_sig2, UNUSED_FIELD)
+            DMF_FIELD_STRING(ip_address, 65)
+            DMF_FIELD_STRING(pcscf_address, 65)
+        DMF_CMD_CNF_END(dmf_app1_abnormal_vowifi_call_drop_cnf_struct)
+
+
+        //DMF_MISC_CAUSE_IMS_REG_FAIL,
+        DMF_CMD_CNF(DMF_APP1_IMS_REG_FAIL_CMD_CNF, dmf_app1_ims_reg_fail_cnf_struct, app1_ims_reg_fail_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_ims_reg_fail_cnf_struct)
+
+        //DMF_MISC_CAUSE_IMS_REG_SLOW,
+        DMF_CMD_CNF(DMF_APP1_IMS_REG_SLOW_CMD_CNF, dmf_app1_ims_reg_slow_cnf_struct, app1_ims_reg_slow_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid, 7)
+            DMF_FIELD_VAR(kal_uint16, lac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, rac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, tac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, active_rat, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, slow_type, UNUSED_FIELD)
+            DMF_FIELD_STRING(sip_flow, 512)
+            DMF_FIELD_VAR(kal_uint8, net_type, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_ims_reg_slow_cnf_struct)
+
+        //DMF_MISC_CAUSE_IMS_REG_DEREG,
+        DMF_CMD_CNF(DMF_APP1_IMS_REG_DEREG_CMD_CNF, dmf_app1_ims_reg_dereg_cnf_struct, app1_ims_reg_dereg_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid, 7)
+            DMF_FIELD_VAR(kal_uint16, lac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, rac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, tac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, active_rat, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, dereg_cause, UNUSED_FIELD)
+            DMF_FIELD_STRING(sip_flow, 512)
+            DMF_FIELD_VAR(kal_uint8, net_type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, report_type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, dereg_count, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_ims_reg_dereg_cnf_struct)
+
+        //DMF_MISC_CAUSE_SIM_DETAILED_ERROR_CAUSE,
+        DMF_CMD_CNF(DMF_APP1_SIM_DETAILED_ERROR_INFO_CNF, dmf_app1_sim_detailed_error_info_cnf_struct, app1_sim_detailed_error_info_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, sim_error_cause, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_sim_detailed_error_info_cnf_struct)
+
+        // for DMF_MISC_CAUSE_CELLULAR_USER_UNAWARE_OOS_REC
+        DMF_CMD_CNF(DMF_APP1_CELLULAR_USER_UNAWARE_OOS_REC_CNF, dmf_app1_cellular_user_unaware_oos_rec_cnf_struct, app1_cellular_user_unaware_oos_rec_cnf)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, lte_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, lte_avg_delay, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, umts_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, umts_avg_delay, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, gsm_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, gsm_avg_delay, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app1_cellular_user_unaware_oos_rec_cnf_struct)
+
+
+    #endif 
+
+    // Define URC structure
+    #ifdef DMF_URC_IND_SEC
+        // for DMF_MISC_CAUSE_ABNORMAL_MT_CSFB
+        DMF_URC_IND(DMF_APP1_ABNORMAL_MT_CSFB_IND, dmf_app1_abnormal_mt_csfb_ind_struct, app1_abnormal_mt_csfb_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_URC_IND_END(dmf_app1_abnormal_mt_csfb_ind_struct)
+
+        // for DMF_MISC_CAUSE_ABNORMAL_MT_CS
+        DMF_URC_IND(DMF_APP1_ABNORMAL_MT_CS_IND, dmf_app1_abnormal_mt_cs_ind_struct, app1_abnormal_mt_cs_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_URC_IND_END(dmf_app1_abnormal_mt_cs_ind_struct)
+
+        // for DMF_MISC_CAUSE_ABNORMAL_MT_C2K
+        DMF_URC_IND(DMF_APP1_ABNORMAL_MT_C2K_IND, dmf_app1_abnormal_mt_c2k_ind_struct, app1_abnormal_mt_c2k_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_URC_IND_END(dmf_app1_abnormal_mt_c2k_ind_struct)
+
+        // for DMF_MISC_CAUSE_ABNORMAL_MT_VOLTE_CALL
+        DMF_URC_IND(DMF_APP1_ABNORMAL_MT_VOLTE_CALL_IND, dmf_app1_abnormal_mt_volte_call_ind_struct, app1_abnormal_mt_volte_call_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_URC_IND_END(dmf_app1_abnormal_mt_volte_call_ind_struct)
+
+        // for DMF_MISC_CAUSE_ABNORMAL_MT_VOWIFI_CALL
+        DMF_URC_IND(DMF_APP1_ABNORMAL_MT_VOWIFI_CALL_IND, dmf_app1_abnormal_mt_vowifi_call_ind_struct, app1_abnormal_mt_vowifi_call_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_URC_IND_END(dmf_app1_abnormal_mt_vowifi_call_ind_struct)
+
+        // for DMF_MISC_CAUSE_IMS_REG_FAIL
+        DMF_URC_IND(DMF_APP1_IMS_REG_FAIL_IND, dmf_app1_ims_reg_fail_ind_struct, app1_ims_reg_fail_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid, 7)
+            DMF_FIELD_VAR(kal_uint16, lac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, rac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, tac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, active_rat, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, reg_type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, rereg_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, fail_state, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, sip_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, pdn_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, is_ho_reg, UNUSED_FIELD)
+            DMF_FIELD_STRING(sip_flow, 512)
+            DMF_FIELD_STRING(apn_string, 100)
+            DMF_FIELD_STRING(ip_address, 65)
+            DMF_FIELD_STRING(pcscf_address, 65)
+            DMF_FIELD_VAR(kal_uint8, net_type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, reg_fail_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, report_type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, reg_fail_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, pdn_fail_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, sip_fail_count, UNUSED_FIELD)
+        DMF_URC_IND_END(dmf_app1_ims_reg_fail_ind_struct)
+
+        // for DMF_MISC_CAUSE_IMS_REG_SLOW
+        DMF_URC_IND(DMF_APP1_IMS_REG_SLOW_IND, dmf_app1_ims_reg_slow_ind_struct, app1_ims_reg_slow_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_URC_IND_END(dmf_app1_ims_reg_slow_ind_struct)
+
+        // for DMF_MISC_CAUSE_IMS_REG_DEREG
+        DMF_URC_IND(DMF_APP1_IMS_DEREG_IND, dmf_app1_ims_dereg_ind_struct, app1_ims_dereg_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_URC_IND_END(dmf_app1_ims_dereg_ind_struct)
+
+        //for DMF_MISC_CAUSE_COMMON_DSBP
+        DMF_URC_IND(DMF_APP1_MCF_INFO_IND, dmf_app1_mcf_info_ind_struct, app1_mcf_info_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)		  
+            DMF_FIELD_VAR(kal_uint8, trigger_type, UNUSED_FIELD)  
+            DMF_FIELD_VAR(kal_uint8, config_type, UNUSED_FIELD)  
+            DMF_FIELD_VAR(kal_uint32, result, UNUSED_FIELD)					   
+            DMF_FIELD_VAR(kal_uint32, start_time, UNUSED_FIELD) 	   
+            DMF_FIELD_VAR(kal_uint32, end_time, UNUSED_FIELD)		 
+            DMF_FIELD_VAR(kal_uint32, time_interval, UNUSED_FIELD)		
+            DMF_FIELD_VAR(kal_uint8, path_type, UNUSED_FIELD)		
+            DMF_FIELD_STRING(file_name, 128)            
+        DMF_URC_IND_END(dmf_app1_mcf_info_ind_struct)
+
+        //for DMF_MISC_CAUSE_COMMON_DSBP
+        DMF_URC_IND(DMF_APP1_DSBP_INFO_IND, dmf_app1_dsbp_info_ind_struct, app1_dsbp_info_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)        
+            DMF_FIELD_VAR(kal_uint8, trigger_type, UNUSED_FIELD)  
+            DMF_FIELD_VAR(kal_uint8, mode, UNUSED_FIELD)  
+            DMF_FIELD_VAR(kal_uint8, result, UNUSED_FIELD)              
+            DMF_FIELD_VAR(kal_uint32, sbp_id, UNUSED_FIELD)  
+            DMF_FIELD_VAR(kal_uint32, sim_sbp_id, UNUSED_FIELD)            
+            DMF_FIELD_VAR(kal_uint32, start_time, UNUSED_FIELD)        
+            DMF_FIELD_VAR(kal_uint32, end_time, UNUSED_FIELD)        
+            DMF_FIELD_VAR(kal_uint32, time_interval, UNUSED_FIELD)              
+        DMF_URC_IND_END(dmf_app1_dsbp_info_ind_struct)
+
+        // for DMF_MISC_CAUSE_CELLULAR_NW_REJECT_CAUSE
+        DMF_URC_IND(DMF_APP1_CELLULAR_NW_REJ_CAUSE_IND, dmf_app1_cellular_nw_rej_cause_ind_struct, app1_cellular_nw_rej_cause_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid, 7)
+            DMF_FIELD_VAR(kal_uint16, lac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, rac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, tac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, active_rat, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, event, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, original_mm_emm_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, converted_mm_emm_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, is_ps_sim_valid, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, is_cs_sim_valid, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, reject_domain, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, is_standalone_pdn, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, esm_fail_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, pdn_type, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, apn_len, UNUSED_FIELD)
+            DMF_FIELD_STRING(apn_string, 100)
+        DMF_URC_IND_END(dmf_app1_cellular_nw_rej_cause_ind_struct)
+
+        // for DMF_MISC_CAUSE_EMERG_CALL_EVENT
+        DMF_URC_IND(DMF_APP1_EMERG_CALL_EVENT_IND, dmf_app1_emerg_call_event_ind_struct, app1_emerg_call_event_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, sim_event, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, srv_status, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid, 7)
+            DMF_FIELD_VAR(kal_bool, nw_emerg_ims_support, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, nw_emerg_volte_support, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, ue_emerg_volte_support, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_bool, ue_emerg_vowifi_support, UNUSED_FIELD)
+        DMF_URC_IND_END(dmf_app1_emerg_call_event_ind_struct)
+
+        // for DMF_MISC_CAUSE_EMERG_CALL_DOMAIN_SELECT_RESULT
+        DMF_URC_IND(DMF_APP1_EMERG_CALL_DOMAIN_SELECT_RESULT_IND, dmf_app1_emerg_call_domain_select_result_ind_struct, app1_emerg_call_domain_select_result_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, domain_attempt_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, domain_attempt_n, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, domain, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, result, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, fail_cause, UNUSED_FIELD)
+        DMF_URC_IND_END(dmf_app1_emerg_call_domain_select_result_ind_struct)
+
+        // for DMF_MISC_CAUSE_EMERG_PLMN_CHANGE_INFO
+        DMF_URC_IND(DMF_APP1_EMERG_PLMN_CHANGE_INFO_IND, dmf_app1_emerg_plmn_change_info_ind_struct, app1_emerg_plmn_change_info_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, plmn_count, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid_1, 7)
+            DMF_FIELD_STRING(plmnid_2, 7)
+            DMF_FIELD_STRING(plmnid_3, 7)
+            DMF_FIELD_STRING(plmnid_4, 7)
+            DMF_FIELD_STRING(plmnid_5, 7)
+            DMF_FIELD_STRING(plmnid_6, 7)
+            DMF_FIELD_STRING(plmnid_7, 7)
+            DMF_FIELD_STRING(plmnid_8, 7)
+            DMF_FIELD_STRING(plmnid_9, 7)
+            DMF_FIELD_STRING(plmnid_10, 7)
+        DMF_URC_IND_END(dmf_app1_emerg_plmn_change_info_ind_struct)
+
+        // for DMF_MISC_CAUSE_EMERG_IMS_380
+        // urn length aligns VOLTE_MAX_URI_LENGTH
+        DMF_URC_IND(DMF_APP1_EMERG_IMS_380_IND, dmf_app1_emerg_ims_380_ind_struct, app1_emerg_ims_380_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_STRING(nw_380_urn, 128)
+        DMF_URC_IND_END(dmf_app1_emerg_ims_380_ind_struct)
+
+        // for DMF_MISC_CAUSE_EMERG_IMS_380_RETRY_DOMAIN_FAIL
+        DMF_URC_IND(DMF_APP1_EMERG_IMS_380_RETRY_DOMAIN_FAIL_IND, dmf_app1_emerg_ims_380_retry_domain_fail_ind_struct, app1_emerg_ims_380_retry_domain_fail_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, call_type, UNUSED_FIELD)
+        DMF_URC_IND_END(dmf_app1_emerg_ims_380_retry_domain_fail_ind_struct)
+
+        // for DMF_MISC_CAUSE_EMERG_IMS_380_URN_UNSYNC
+        // urn length aligns VOLTE_MAX_URI_LENGTH
+        DMF_URC_IND(DMF_APP1_EMERG_IMS_380_URN_UNSYNC_IND, dmf_app1_emerg_ims_380_urn_unsync_ind_struct, app1_emerg_ims_380_urn_unsync_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_STRING(nw_380_urn, 128)
+            DMF_FIELD_STRING(ue_invite_urn, 128)
+        DMF_URC_IND_END(dmf_app1_emerg_ims_380_urn_unsync_ind_struct)
+
+        // for DMF_MISC_CAUSE_EMERG_SRVCC_OCCUR
+        DMF_URC_IND(DMF_APP1_EMERG_SRVCC_OCCUR_IND, dmf_app1_emerg_srvcc_occur_ind_struct, app1_emerg_srvcc_occur_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_URC_IND_END(dmf_app1_emerg_srvcc_occur_ind_struct)
+
+        // for DMF_MISC_CAUSE_EMERG_IMS_CALL_ANONYMOUS
+        DMF_URC_IND(DMF_APP1_EMERG_IMS_CALL_ANONYMOUS_IND, dmf_app1_emerg_ims_call_anonymous_ind_struct, app1_emerg_ims_call_anonymous_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_URC_IND_END(dmf_app1_emerg_ims_call_anonymous_ind_struct)
+
+        // for DMF_MISC_CAUSE_CELLULAR_OOS_DELAY
+        DMF_URC_IND(DMF_APP1_CELLULAR_OOS_DELAY_IND, dmf_app1_cellular_oos_delay_ind_struct, app1_cellular_oos_delay_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid, 7)
+            DMF_FIELD_VAR(kal_uint16, lac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, rac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, tac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, active_rat, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, sig2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, as_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, time_delay, UNUSED_FIELD)
+        DMF_URC_IND_END(dmf_app1_cellular_oos_delay_ind_struct)
+
+        // for DMF_MISC_CAUSE_CALL_VOICE_QUALITY
+        DMF_URC_IND(DMF_APP1_CALL_VOICE_QUALITY_IND, dmf_app1_call_voice_quality_ind_struct, app1_call_voice_quality_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, status_0_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, status_0_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, status_1_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, status_1_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, status_2_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, status_2_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, status_3_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, status_3_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, status_4_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, status_4_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, status_5_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, status_5_cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, status_6_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, status_7_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, awb_frmtype_rx_sph_bad, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, awb_frmtype_rx_sph_prbly_deg, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, amr_frmtype_rx_sph_deg, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, amr_frmtype_rx_sph_onset, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, amr_frmtype_rx_sph_bad, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, eva_rate_erasure, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, evb_rate_erasure, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, fr_bfi, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, efr_bfi, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, hr_bfi, UNUSED_FIELD)
+
+            DMF_FIELD_VAR(kal_uint32, evs_bfi, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, awb_homing, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, amr_homing, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, fr_homing, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, efr_homing, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, hr_homing, UNUSED_FIELD)
+
+            DMF_FIELD_VAR(kal_uint32, packet_loss, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, jitter_loss, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, speech_reset, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, crc_fail, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, speech_ul_mute_posenh, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, enh_robust_status_pre, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, ehn_robust_status_pos, UNUSED_FIELD)
+
+        DMF_URC_IND_END(dmf_app1_call_voice_quality_ind_struct)
+
+        // for DMF_MISC_CAUSE_DATA_PDP_ERROR_OCCUR
+        DMF_URC_IND(DMF_APP1_DATA_PDP_ERROR_OCCUR_IND, dmf_app1_data_pdp_error_occur_ind_struct, app1_data_pdp_error_occur_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, cid, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, pdp_cause, UNUSED_FIELD)
+        DMF_URC_IND_END(dmf_app1_data_pdp_error_occur_ind_struct)
+
+        DMF_URC_IND(DMF_APP1_CELL_INFO_WHETHER_ENDC_SUPPORT_IND, dmf_app1_cell_info_whether_endc_support_ind_struct, app1_cell_info_whether_endc_support_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp_1, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid_1, 7)
+            DMF_FIELD_VAR(kal_uint16, tracking_area_code_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, lte_band_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, lte_rsrp_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, lte_rsrq_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, nr_band_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, nr_rsrp_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, nr_rsrq_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_for_selected_plmn_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_eps_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_activated_1, UNUSED_FIELD)
+
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp_2, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid_2, 7)
+            DMF_FIELD_VAR(kal_uint16, tracking_area_code_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, lte_band_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, lte_rsrp_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, lte_rsrq_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, nr_band_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, nr_rsrp_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, nr_rsrq_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_for_selected_plmn_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_eps_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_activated_2, UNUSED_FIELD)
+
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp_3, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid_3, 7)
+            DMF_FIELD_VAR(kal_uint16, tracking_area_code_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, lte_band_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, lte_rsrp_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, lte_rsrq_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, nr_band_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, nr_rsrp_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, nr_rsrq_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_for_selected_plmn_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_eps_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_activated_3, UNUSED_FIELD)
+
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp_4, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid_4, 7)
+            DMF_FIELD_VAR(kal_uint16, tracking_area_code_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, lte_band_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, lte_rsrp_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, lte_rsrq_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, nr_band_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, nr_rsrp_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, nr_rsrq_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_for_selected_plmn_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_eps_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_activated_4, UNUSED_FIELD)
+
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp_5, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid_5, 7)
+            DMF_FIELD_VAR(kal_uint16, tracking_area_code_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, lte_band_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, lte_rsrp_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, lte_rsrq_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, nr_band_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, nr_rsrp_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, nr_rsrq_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_for_selected_plmn_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_eps_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_activated_5, UNUSED_FIELD)
+
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp_6, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid_6, 7)
+            DMF_FIELD_VAR(kal_uint16, tracking_area_code_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, lte_band_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, lte_rsrp_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, lte_rsrq_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, nr_band_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, nr_rsrp_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, nr_rsrq_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_for_selected_plmn_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_eps_6, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_activated_6, UNUSED_FIELD)
+
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp_7, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid_7, 7)
+            DMF_FIELD_VAR(kal_uint16, tracking_area_code_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, lte_band_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, lte_rsrp_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, lte_rsrq_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, nr_band_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, nr_rsrp_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, nr_rsrq_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_for_selected_plmn_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_eps_7, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_activated_7, UNUSED_FIELD)
+
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp_8, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid_8, 7)
+            DMF_FIELD_VAR(kal_uint16, tracking_area_code_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, lte_band_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, lte_rsrp_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, lte_rsrq_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, nr_band_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, nr_rsrp_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, nr_rsrq_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_for_selected_plmn_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_eps_8, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_activated_8, UNUSED_FIELD)
+
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp_9, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid_9, 7)
+            DMF_FIELD_VAR(kal_uint16, tracking_area_code_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, lte_band_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, lte_rsrp_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, lte_rsrq_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, nr_band_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, nr_rsrp_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, nr_rsrq_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_for_selected_plmn_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_eps_9, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_activated_9, UNUSED_FIELD)
+
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp_10, UNUSED_FIELD)
+            DMF_FIELD_STRING(plmnid_10, 7)
+            DMF_FIELD_VAR(kal_uint16, tracking_area_code_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, lte_band_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, lte_rsrp_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, lte_rsrq_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint16, nr_band_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, nr_rsrp_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, nr_rsrq_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_sib2_for_selected_plmn_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_support_in_eps_10, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int8, endc_activated_10, UNUSED_FIELD)
+        DMF_URC_IND_END(dmf_app1_cell_info_whether_endc_support_ind_struct)
+
+        DMF_URC_IND(DMF_APP1_PDET_DETECTION_IND, dmf_app1_pdet_detection_ind_struct, app1_pdet_detection_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, counter, UNUSED_FIELD)
+        DMF_URC_IND_END(dmf_app1_pdet_detection_ind_struct)
+
+        // dmf_app1_voice_quality_ltecsr_ind_struct
+        DMF_URC_IND(DMF_APP1_VOICE_QUALITY_LTECSR_IND, dmf_app1_voice_quality_ltecsr_ind_struct, app1_voice_quality_ltecsr_ind)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, rat_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, bw_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, earfcn_1, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id_1, UNUSED_FIELD)
+
+            DMF_FIELD_VAR(kal_uint32, rat_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, bw_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, earfcn_2, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id_2, UNUSED_FIELD)
+
+            DMF_FIELD_VAR(kal_uint32, rat_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, bw_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, earfcn_3, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id_3, UNUSED_FIELD)
+
+            DMF_FIELD_VAR(kal_uint32, rat_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, bw_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, earfcn_4, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id_4, UNUSED_FIELD)
+
+            DMF_FIELD_VAR(kal_uint32, rat_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, bw_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, earfcn_5, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cell_id_5, UNUSED_FIELD)
+
+            DMF_FIELD_VAR(kal_uint32, duration, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, pkt_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, pkt_loss, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, byte_count, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, mean_jitter, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, max_jitter, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_uint32, cum_avg_pkt_size, UNUSED_FIELD)
+         DMF_URC_IND_END(dmf_app1_voice_quality_ltecsr_ind_struct)
+
+    #endif
+
+DMF_APP_END
+#endif //for __DMF_TC03__
+
+
+#ifdef __DMF_TC16__
+DMF_APP(2)  
+
+    // Define CMD_REQ structure 
+    #ifdef DMF_CMD_REQ_SEC
+        DMF_CMD_REQ(dmf_app2_cmd_req_struct, app2_cmd)
+            DMF_FIELD_VAR(kal_uint32, cause, 2000)
+            DMF_FIELD_VAR_O(kal_int32, param_1, UNUSED_FIELD)
+            DMF_FIELD_VAR_O(kal_int32, param_2, UNUSED_FIELD)
+            DMF_FIELD_VAR_O(kal_int32, param_3, UNUSED_FIELD)
+            DMF_FIELD_VAR_O(kal_int32, param_4, UNUSED_FIELD)
+            DMF_FIELD_VAR_O(kal_int32, param_5, UNUSED_FIELD)
+            DMF_FIELD_VAR_O(kal_int32, param_6, UNUSED_FIELD)
+            DMF_FIELD_VAR_O(kal_int32, param_7, UNUSED_FIELD)
+            DMF_FIELD_VAR_O(kal_int32, param_8, UNUSED_FIELD)
+            DMF_FIELD_VAR_O(kal_int32, param_9, UNUSED_FIELD)
+            DMF_FIELD_VAR_O(kal_int32, param_10, UNUSED_FIELD)
+            DMF_FIELD_VAR_O(kal_int32, param_11, UNUSED_FIELD)
+            DMF_FIELD_VAR_O(kal_int32, param_12, UNUSED_FIELD)
+            DMF_FIELD_VAR_O(kal_int32, param_13, UNUSED_FIELD)
+            DMF_FIELD_VAR_O(kal_int32, param_14, UNUSED_FIELD)
+            DMF_FIELD_VAR_O(kal_int32, param_15, UNUSED_FIELD)
+            DMF_FIELD_VAR_O(kal_int32, param_16, UNUSED_FIELD)
+            DMF_FIELD_VAR_O(kal_int32, param_17, UNUSED_FIELD)
+            DMF_FIELD_VAR_O(kal_int32, param_18, UNUSED_FIELD)
+            DMF_FIELD_VAR_O(kal_int32, param_19, UNUSED_FIELD)
+            DMF_FIELD_VAR_O(kal_int32, param_20, UNUSED_FIELD)
+            /*DMF_FIELD_VAR_O(kal_uint32, para_0, 2000)
+            DMF_FIELD_VAR_O(kal_uint32, para_1, 2000)
+            DMF_FIELD_VAR_O(kal_uint32, para_2, 2000)
+			DMF_FIELD_VAR_O(kal_uint32, para_3, 2000)
+            DMF_FIELD_VAR_O(kal_uint32, para_4, 2000)
+            DMF_FIELD_VAR_O(kal_uint32, para_5, 2000)
+            DMF_FIELD_VAR_O(kal_uint32, para_6, 2000)
+            DMF_FIELD_VAR_O(kal_uint32, para_7, 2000)
+            DMF_FIELD_VAR_O(kal_uint32, para_8, 2000)
+            DMF_FIELD_VAR_O(kal_uint32, para_9, 2000)
+            DMF_FIELD_VAR_O(kal_uint32, para_10, 2000)
+            DMF_FIELD_VAR_O(kal_uint32, para_11, 2000)*/
+        DMF_CMD_REQ_END(dmf_app2_cmd_req_struct)
+    #endif 
+
+    // Define CMD_CNF structure 
+    #ifdef DMF_CMD_CNF_SEC
+    //for DMF_MISC16_CAUSE_REQ_QUERY_MODULE MODULE_ID_COMMONINFO
+    DMF_CMD_CNF(DMF_APP2_KPI_COMMONINFO_CNF, dmf_app2_kpi_commoninfo_cnf_struct, dmf_app2_kpi_commoninfo_cnf)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, module_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mGSig_1T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mGSig_2T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mGSig_3T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mGSig_4T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mWSig_0T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mWSig_1T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mWSig_2T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mWSig_3T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mWSig_4T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mCSig_1T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mCSig_2T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mCSig_3T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mCSig_4T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mHSig_1T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mHSig_2T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mHSig_3T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mHSig_4T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mLSig_0T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mLSig_1T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mLSig_2T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mLSig_3T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mLSig_4T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mNrSig_0T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mNrSig_1T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mNrSig_2T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mNrSig_3T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mNrSig_4T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Cs_cT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Ps_cT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Cs_gT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Ps_gT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Cs_uT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Ps_uT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Cs_tT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Ps_tT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Cs_lT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Ps_lT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Ps_enT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Cs_nrT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Ps_nrT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Cs_oosT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Ps_oosT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, TauSucC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, TauC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LAttachC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LAttachSucC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, RauC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, RauSucC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LuC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LuSucC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, GuC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, GuSucC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Srch_10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Srch_30sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Srch_60sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Srch_120sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Srch_Over120sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, RmSrch_10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, RmSrch_30sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, RmSrch_60sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, RmSrch_120sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, RmSrch_Over120sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, PdnConSucC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, PdnConC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NR_searching_times, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NR_searching_duration, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NR_searching_success_rate, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NR_SA_service_duration, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NR_SA_service_rate, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Count_of_initial_reg_succ, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Count_of_initial_reg_fail, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Count_of_mobility_reg_succ, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Count_of_mobility_reg_fail, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Count_of_NR_RACH_succ, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Count_of_NR_RACH_fail, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Count_of_NR_RLF, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Count_of_NR_Reest, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LTE_to_NR_Resel, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NR_to_LTE_Resel, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LTE_to_NR_HO, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NR_to_LTE_HO, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LTE_to_NR_Redir, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NR_to_LTE_Redir, UNUSED_FIELD)
+    DMF_CMD_CNF_END(dmf_app2_kpi_commoninfo_cnf_struct)
+
+    // for DMF_MISC16_CAUSE_REQ_QUERY_MODULE MODULE_ID_CALL
+    DMF_CMD_CNF(DMF_APP2_KPI_CALL_CNF, dmf_app2_kpi_call_cnf_struct, dmf_app2_kpi_call_cnf)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, module_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, _1xCsPgC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, GtwCsPgC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, _1xCsMtSetupC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, GtwCsMtSetupC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, _1xCsMtMissC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, GtwCsMtMissC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, _1xCsMtSetup3sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, _1xCsMtSetup10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, _1xCsMtSetupOver10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, GtwCsMtSetup3sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, GtwCsMtSetup10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, GtwCsMtSetupOver10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LIpMtInvC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, WIpMtInvC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NrIpMtInvC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LImsMtRigCnfC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, WImsMtRigCnfC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NrImsMtRigCnfC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LImsMtMissC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, WImsMtMissC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NrImsMtMissC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LImsMtToRig3sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LImsMtToRig10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LImsMtToRigOver10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, WImsMtToRig3sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, WImsMtToRig10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, WImsMtToRigOver10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NrImsMtToRig3sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NrImsMtToRig10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NrImsMtToRigOver10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LteMtPgC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LteMtPgSucC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LteMtPg1sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LteMtPg3sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LteMtPgOver3sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, _1xCsMtP2ST, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, GtwCsMtP2ST, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LImsTmsMtI2RT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, WImsTmsMtI2RT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NrImsTmsMtI2RT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, ImsMtPageT, UNUSED_FIELD)
+    DMF_CMD_CNF_END(dmf_app2_kpi_call_cnf_struct)
+
+    // for DMF_MISC16_CAUSE_REQ_QUERY_MODULE MODULE_ID_PWR
+    DMF_CMD_CNF(DMF_APP2_KPI_PWR_CNF, dmf_app2_kpi_pwr_cnf_struct, dmf_app2_kpi_pwr_cnf)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, module_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_rrcConn10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_rrcConn20sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_rrcConnMore20sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_rrcConnC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_csChangedC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_psChangedC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_iRatC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_cellUpdateC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_nwSrchC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_nwSrchT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_lteRrcConnT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_psRegT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_csRegT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_psNoRegT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_csNoRegT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_sigGrid0T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_EndcActT, UNUSED_FIELD)
+    DMF_CMD_CNF_END(dmf_app2_kpi_pwr_cnf_struct)
+
+    //for DMF_MISC16_CAUSE_OTHER_RF_MIPI_HW_FAILED
+    DMF_CMD_CNF(DMF_APP2_OTHER_RF_MIPI_HW_FAILED_CNF, dmf_app2_other_rf_mipi_hw_failed_cnf_struct, app2_other_rf_mipi_hw_failed_cnf)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+        DMF_FIELD_VAR(kal_uint32, is_abnormal, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, number_of_broken_component, UNUSED_FIELD)        
+        DMF_FIELD_VAR_ARRAY_D(kal_uint16, comp_id, 30)            
+    DMF_CMD_CNF_END(dmf_app2_other_rf_mipi_hw_failed_cnf_struct)
+
+	// for DMF_MISC16_CAUSE_NR_PDCP_TPUT mode1/2
+	DMF_CMD_CNF(DMF_APP2_NR_PDCP_THROUGHPUT_CNF, dmf_app2_nr_pdcp_throughput_cause_info_cnf_struct, dmf_app2_nr_pdcp_throughput_cause_info_cnf)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mode, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, current_rat, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, ul_speed, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, dl_speed, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_app2_nr_pdcp_throughput_cause_info_cnf_struct)
+
+	// for DMF_MISC16_CAUSE_NR_PDCP_TPUT mode4
+	DMF_CMD_CNF(DMF_APP2_NR_PDCP_THROUGHPUT_SECTION_CNF, dmf_app2_nr_pdcp_throughput_cause_info_throughput_section_ind_struct, dmf_app2_nr_pdcp_throughput_cause_info_throughput_section_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mode, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, rat_and_transmission_1, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, count_1, 10)
+		DMF_FIELD_VAR(kal_uint32, rat_and_transmission_2, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, count_2, 10)
+		DMF_FIELD_VAR(kal_uint32, rat_and_transmission_3, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, count_3, 10)
+		DMF_FIELD_VAR(kal_uint32, rat_and_transmission_4, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, count_4, 10)
+		DMF_FIELD_VAR(kal_uint32, rat_and_transmission_5, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, count_5, 10) 
+		DMF_FIELD_VAR(kal_uint32, rat_and_transmission_6, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, count_6, 10) 
+	DMF_CMD_CNF_END(dmf_app2_nr_pdcp_throughput_cause_info_throughput_section_ind_struct)
+
+	// for DMF_MISC16_CAUSE_NR_PDCP_TPUT mode6
+	DMF_CMD_CNF(DMF_APP2_NR_PDCP_THROUGHPUT_MAX_TPUTS_CNF, dmf_app2_nr_pdcp_throughput_cause_info_max_tputs_ind_struct, dmf_app2_nr_pdcp_throughput_cause_info_max_tputs_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mode, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, number_of_max_tputs, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, rat_and_transmission_1, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, max_tputs_1, 10)
+		DMF_FIELD_VAR(kal_uint32, rat_and_transmission_2, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, max_tputs_2, 10)
+		DMF_FIELD_VAR(kal_uint32, rat_and_transmission_3, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, max_tputs_3, 10)
+		DMF_FIELD_VAR(kal_uint32, rat_and_transmission_4, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, max_tputs_4, 10)
+		DMF_FIELD_VAR(kal_uint32, rat_and_transmission_5, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, max_tputs_5, 10) 
+		DMF_FIELD_VAR(kal_uint32, rat_and_transmission_6, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, max_tputs_6, 10)
+	DMF_CMD_CNF_END(dmf_app2_nr_pdcp_throughput_cause_info_max_tputs_ind_struct)
+
+	// for DMF_MISC16_CAUSE_NR_PDCP_VOLUMN
+	DMF_CMD_CNF(DMF_APP2_NR_PDCP_VOLUMN_CNF, dmf_app2_nr_pdcp_volumn_cnf_struct, dmf_app2_nr_pdcp_volumn_cnf)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nsa_ul, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nsa_dl, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, sa_ul, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, sa_dl, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lte_ul, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lte_dl, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_app2_nr_pdcp_volumn_cnf_struct)
+
+	// for DMF_MISC16_CAUSE_NR_NW_CONFIG
+	DMF_CMD_CNF(DMF_APP2_NR_NW_CONFIG_CNF, dmf_app2_nr_nw_config_cnf_struct, dmf_app2_nr_nw_config_cnf)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, lteOnDurT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, lteInactT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, lteLongDrxCycle, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, lteShortDrxCycle, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, nsaNrCellPCI, UNUSED_FIELD)
+		DMF_FIELD_VAR_LONG(kal_int64, nsaNrCellARFCN, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, nsaNrCellTAC, UNUSED_FIELD)
+		DMF_FIELD_VAR_LONG(kal_int64, nsaNrCellCID, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, nsaNrMeasConfigS, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nsaNrMeasCount, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nsaNrMeasConfigExistDuration, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nsaNrMeasConfigNonExistDuration, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteDataInactTimer, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, nrOnDurT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, nrInactT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, nrLongDrxCycle, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, nrShortDrxCycle, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrT310, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrN310, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrN311, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_app2_nr_nw_config_cnf_struct)
+
+	DMF_CMD_CNF(DMF_APP2_NR_NW_MEAS_CONFIG_CNF, dmf_app2_nr_nw_meas_config_cnf_struct, dmf_app2_nr_nw_meas_config_cnf)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nsaNrMeasCfgStart, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nsaNrMeasCfgEnd, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_1, 7) // nsaNrMeasCfg including below 7 parameters
+/*
+			DMF_FIELD_VAR(kal_uint32, nsaNrMeasARFCN_1, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_uint32, nsaNrMeasReportType_1, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_uint32, nsaNrMeasPeriodical_1, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_uint32, nsaNrMeasTriggerQty_1, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_uint32, nsaNrMeasThreshold_1, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_uint32, nsaNrMeasHysteresis_1, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_uint32, nsaNrMeasTimeToTrigger_1, UNUSED_FIELD)
+*/
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_2, 7)
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_3, 7)
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_4, 7)
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_5, 7)
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_6, 7)
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_7, 7)
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_8, 7)
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_9, 7)
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_10, 7)
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_11, 7)
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_12, 7)
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_13, 7)
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_14, 7)
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_15, 7)
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_16, 7)
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_17, 7)
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_18, 7)
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_19, 7)
+		DMF_FIELD_VAR_ARRAY(kal_uint32, nsaNrMeasCfg_20, 7)
+	DMF_CMD_CNF_END(dmf_app2_nr_nw_meas_config_cnf_struct)
+
+	// for DMF_MISC16_CAUSE_DEEP_SLEEP_MODE_STATISTICS
+	DMF_CMD_CNF(DMF_APP2_DEEP_SLEEP_MODE_STATISTICS_CNF, dmf_app2_deep_sleep_mode_statistics_cnf_struct, dmf_app2_deep_sleep_mode_statistics_cnf)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnDurT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrIdleDurT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrNoSvcDurT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnDurT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteIdleDurT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteNoSvcDurT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mdNoSvcDurT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_EMC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_HPA, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_MT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_MOS, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_MOD, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_MOVoC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_MOViC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_MOSMS, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_MPSPA, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_MCSPA, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_EMC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_HPA, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_MT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_MOS, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_MOD, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_MOVoC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_MOViC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_MOSMS, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_MPSPA, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_MCSPA, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnEstC_EMC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnEstC_HPA, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnEstC_MT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnEstC_MOS, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnEstC_MOD, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnEstC_MOVoC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnFailC_EMC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnFailC_HPA, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnFailC_MT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnFailC_MOS, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnFailC_MOD, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnFailC_MOVoC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, intraLtePingPongC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, intraNrPingPongC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteNrPingPongC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lte3gPingPongC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lte2gPingPongC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, idleOosC, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_app2_deep_sleep_mode_statistics_cnf_struct)
+	#endif
+
+    // Define URC structure
+    #ifdef DMF_URC_IND_SEC
+    //for DMF_MISC16_CAUSE_REQ_QUERY_MODULE MODULE_ID_COMMONINFO
+    DMF_URC_IND(DMF_APP2_KPI_COMMONINFO_IND, dmf_app2_kpi_commoninfo_ind_struct, dmf_app2_kpi_commoninfo_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, module_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mGSig_1T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mGSig_2T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mGSig_3T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mGSig_4T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mWSig_0T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mWSig_1T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mWSig_2T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mWSig_3T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mWSig_4T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mCSig_1T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mCSig_2T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mCSig_3T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mCSig_4T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mHSig_1T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mHSig_2T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mHSig_3T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mHSig_4T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mLSig_0T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mLSig_1T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mLSig_2T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mLSig_3T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mLSig_4T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mNrSig_0T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mNrSig_1T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mNrSig_2T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mNrSig_3T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, mNrSig_4T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Cs_cT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Ps_cT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Cs_gT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Ps_gT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Cs_uT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Ps_uT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Cs_tT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Ps_tT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Cs_lT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Ps_lT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Ps_enT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Cs_nrT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Ps_nrT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Cs_oosT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Ps_oosT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, TauSucC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, TauC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LAttachC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LAttachSucC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, RauC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, RauSucC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LuC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LuSucC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, GuC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, GuSucC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Srch_10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Srch_30sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Srch_60sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Srch_120sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Srch_Over120sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, RmSrch_10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, RmSrch_30sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, RmSrch_60sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, RmSrch_120sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, RmSrch_Over120sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, PdnConSucC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, PdnConC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NR_searching_times, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NR_searching_duration, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NR_searching_success_rate, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NR_SA_service_duration, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NR_SA_service_rate, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Count_of_initial_reg_succ, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Count_of_initial_reg_fail, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Count_of_mobility_reg_succ, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Count_of_mobility_reg_fail, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Count_of_NR_RACH_succ, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Count_of_NR_RACH_fail, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Count_of_NR_RLF, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, Count_of_NR_Reest, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LTE_to_NR_Resel, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NR_to_LTE_Resel, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LTE_to_NR_HO, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NR_to_LTE_HO, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LTE_to_NR_Redir, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NR_to_LTE_Redir, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_kpi_commoninfo_ind_struct)
+
+    // for DMF_MISC16_CAUSE_REQ_QUERY_MODULE MODULE_ID_CALL
+    DMF_URC_IND(DMF_APP2_KPI_CALL_IND, dmf_app2_kpi_call_ind_struct, dmf_app2_kpi_call_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, module_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, _1xCsPgC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, GtwCsPgC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, _1xCsMtSetupC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, GtwCsMtSetupC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, _1xCsMtMissC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, GtwCsMtMissC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, _1xCsMtSetup3sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, _1xCsMtSetup10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, _1xCsMtSetupOver10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, GtwCsMtSetup3sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, GtwCsMtSetup10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, GtwCsMtSetupOver10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LIpMtInvC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, WIpMtInvC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NrIpMtInvC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LImsMtRigCnfC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, WImsMtRigCnfC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NrImsMtRigCnfC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LImsMtMissC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, WImsMtMissC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NrImsMtMissC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LImsMtToRig3sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LImsMtToRig10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LImsMtToRigOver10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, WImsMtToRig3sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, WImsMtToRig10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, WImsMtToRigOver10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NrImsMtToRig3sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NrImsMtToRig10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NrImsMtToRigOver10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LteMtPgC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LteMtPgSucC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LteMtPg1sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LteMtPg3sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LteMtPgOver3sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, _1xCsMtP2ST, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, GtwCsMtP2ST, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, LImsTmsMtI2RT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, WImsTmsMtI2RT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, NrImsTmsMtI2RT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, ImsMtPageT, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_kpi_call_ind_struct)
+
+    // for DMF_MISC16_CAUSE_REQ_QUERY_MODULE MODULE_ID_PWR
+    DMF_URC_IND(DMF_APP2_KPI_PWR_IND, dmf_app2_kpi_pwr_ind_struct, dmf_app2_kpi_pwr_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, module_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_rrcConn10sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_rrcConn20sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_rrcConnMore20sC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_rrcConnC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_csChangedC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_psChangedC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_iRatC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_cellUpdateC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_nwSrchC, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_nwSrchT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_lteRrcConnT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_psRegT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_csRegT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_psNoRegT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_csNoRegT, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_sigGrid0T, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, MD_EndcActT, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_kpi_pwr_ind_struct)
+
+	// for DMF_MISC16_CAUSE_LTE_HAND_OVER_FAILURE
+	DMF_URC_IND(DMF_APP2_LTE_HAND_OVER_FAILURE_IND, dmf_app2_lte_hand_over_failure_ind_struct, app2_lte_hand_over_failure_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)	
+        DMF_FIELD_VAR(kal_uint32, tac, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)		
+        DMF_FIELD_VAR(kal_uint8, ho_result, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_lte_hand_over_failure_ind_struct)
+
+    //for DMF_MISC16_CAUSE_LTE_CELL_BAR
+	DMF_URC_IND(DMF_APP2_LTE_CELL_BAR_IND, dmf_app2_lte_cell_bar_ind_struct, app2_lte_cell_bar_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)	
+        DMF_FIELD_VAR(kal_uint32, tac, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)		
+        DMF_FIELD_VAR(kal_uint8, bar_cause, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint32, bar_time, UNUSED_FIELD)                
+        DMF_FIELD_VAR(kal_uint32, ext_wait_time, UNUSED_FIELD)          
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint8, est_type, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, ac_bar_type, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_lte_cell_bar_ind_struct)
+
+    //for DMF_MISC16_CAUSE_LTE_REESTABLISHMENT_FAILURE
+	DMF_URC_IND(DMF_APP2_LTE_REESTABLISHMENT_FAILURE_IND, dmf_app2_lte_restablishment_failure_ind_struct, app2_lte_restablishment_failure_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)	
+        DMF_FIELD_VAR(kal_uint32, tac, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)		
+        DMF_FIELD_VAR(kal_uint8, expired_timer, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint32, time_length, UNUSED_FIELD)          
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_lte_restablishment_failure_ind_struct)
+
+    //for DMF_MISC16_CAUSE_LTE_MOD3_INTERFERENCE
+	DMF_URC_IND(DMF_APP2_LTE_MOD3_INTERFERENCE_IND, dmf_app2_lte_mod3_interference_ind_struct, app2_lte_mod3_interference_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)	
+        DMF_FIELD_VAR(kal_uint32, tac, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, signal_quality, UNUSED_FIELD)		
+        DMF_FIELD_VAR(kal_uint16, pci, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint8, neighbor_cell_number, UNUSED_FIELD)          
+        DMF_FIELD_VAR(kal_uint16, neighbor_cell_1st_pci, UNUSED_FIELD)     
+        DMF_FIELD_VAR(kal_uint32, neighbor_cell_1st_rsrp, UNUSED_FIELD)     
+        DMF_FIELD_VAR(kal_uint32, neighbor_cell_1st_rsrq, UNUSED_FIELD)     
+        DMF_FIELD_VAR(kal_uint16, neighbor_cell_2nd_pci, UNUSED_FIELD)     
+        DMF_FIELD_VAR(kal_uint32, neighbor_cell_2nd_rsrp, UNUSED_FIELD)     
+        DMF_FIELD_VAR(kal_uint32, neighbor_cell_2nd_rsrq, UNUSED_FIELD)           
+        DMF_FIELD_VAR(kal_uint16, neighbor_cell_3rd_pci, UNUSED_FIELD)     
+        DMF_FIELD_VAR(kal_uint32, neighbor_cell_3rd_rsrp, UNUSED_FIELD)     
+        DMF_FIELD_VAR(kal_uint32, neighbor_cell_3rd_rsrq, UNUSED_FIELD)           
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_lte_mod3_interference_ind_struct)
+
+    //for DMF_MISC16_CAUSE_LTE_RLC_UL_RLF
+	DMF_URC_IND(DMF_APP2_LTE_RLC_UL_RLF_IND, dmf_app2_lte_rlc_ul_rlf_ind_struct, app2_lte_rlc_ul_rlf_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)	
+        DMF_FIELD_VAR(kal_uint32, tac, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)		
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_lte_rlc_ul_rlf_ind_struct)    
+
+    //for DMF_MISC16_CAUSE_LTE_NARROW_BANDWIDTH_SERVING_CELL
+	DMF_URC_IND(DMF_APP2_LTE_NARROW_BANDWIDTH_SERVING_CELL_IND, dmf_app2_lte_narrow_bandwidth_serving_cell_ind_struct, app2_lte_narrow_bandwidth_serving_cell_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)	
+        DMF_FIELD_VAR(kal_uint32, tac, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)	
+        DMF_FIELD_VAR(kal_uint16, dl_bandwidth, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, ul_bandwidth, UNUSED_FIELD)	        
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_lte_narrow_bandwidth_serving_cell_ind_struct)    
+
+    //for DMF_MISC16_CAUSE_LTE_BW_MONITORING_INFO
+	DMF_URC_IND(DMF_APP2_LTE_BW_MONITORING_IND, dmf_app2_lte_bw_monitoring_ind_struct, app2_lte_bw_monitoring_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, conn_large_bw_cell_stayed_time, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, conn_small_bw_cell_stayed_time, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, conn_change_to_large_bw_cell_count, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, conn_change_to_small_bw_cell_count, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, conn_block_to_small_bw_cell_count, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, conn_accelerate_to_large_bw_cell_count, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, idle_large_bw_cell_stayed_time, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, idle_small_bw_cell_stayed_time, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, idle_change_to_large_bw_cell_count, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, idle_change_to_small_bw_cell_count, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, idle_block_to_small_bw_cell_count, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, idle_accelerate_to_large_bw_cell_count, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_lte_bw_monitoring_ind_struct)    
+
+    //for DMF_MISC16_CAUSE_LTE_CUSTOM_CELL_BAR
+    DMF_URC_IND(DMF_APP2_LTE_CUSTOM_CELL_BAR_IND, dmf_app2_lte_custom_cell_bar_ind_struct, app2_lte_custom_cell_bar_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, bar_duration, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, earfcn, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, pci, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, protocol_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, bar_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_bool, fake_cell_ind, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_lte_custom_cell_bar_ind_struct)
+
+    // for DMF_MISC16_CAUSE_LTE_TRIGGER_REL_RESULT
+    DMF_URC_IND(DMF_APP2_LTE_TRIGGER_REL_RESULT_IND, dmf_app2_lte_trigger_rel_result_ind_struct, app2_lte_trigger_rel_result_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, a2_success_count, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, a2_failure_count, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, a2_success_rate, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_lte_trigger_rel_result_ind_struct)
+
+    //for DMF_MISC16_CAUSE_DATA_CALL_IA_APN_ERROR
+	DMF_URC_IND(DMF_APP2_DATA_CALL_IA_APN_ERROR_IND, dmf_app2_data_call_ia_apn_error_ind_struct, app2_data_call_ia_apn_error_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)	
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, cid, UNUSED_FIELD)	    
+        DMF_FIELD_VAR(kal_uint16, error_cause, UNUSED_FIELD)	        
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_data_call_ia_apn_error_ind_struct)
+
+    //for DMF_MISC16_CAUSE_DATA_CALL_PDN_PDP_DEACTIVATION_ERROR
+	DMF_URC_IND(DMF_APP2_DATA_CALL_PDN_PDP_DEACT_ERROR_IND, dmf_app2_data_call_pdn_pdp_deact_error_ind_struct, app2_data_call_pdn_pdp_deact_error_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)	
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, cid, UNUSED_FIELD)	    
+        DMF_FIELD_VAR(kal_uint16, error_cause, UNUSED_FIELD)	        
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_data_call_pdn_pdp_deact_error_ind_struct)
+
+    //for DMF_MISC16_CAUSE_DATA_CALL_PDN_PDP_ACTIVATION_ERROR
+	DMF_URC_IND(DMF_APP2_DATA_CALL_PDN_PDP_ACT_ERROR_IND, dmf_app2_data_call_pdn_pdp_act_error_ind_struct, app2_data_call_pdn_pdp_act_error_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)	
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, cid, UNUSED_FIELD)	    
+        DMF_FIELD_VAR(kal_uint16, error_cause, UNUSED_FIELD)	        
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_data_call_pdn_pdp_act_error_ind_struct)	
+
+    //for DMF_MISC16_CAUSE_MOBILITY_MANAGEMENT_LAU_REJECT
+	DMF_URC_IND(DMF_APP2_MOBILITY_MANAGEMENT_LAU_REJECT_IND, dmf_app2_mobility_management_lau_reject_ind_struct, app2_mobility_management_lau_reject_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)	
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, lu_type, UNUSED_FIELD)	    
+        DMF_FIELD_VAR(kal_uint16, conv_reject_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, lac, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, orig_reject_cause, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_mobility_management_lau_reject_ind_struct)
+
+    //for DMF_MISC16_CAUSE_MOBILITY_MANAGEMENT_RAU_REJECT
+	DMF_URC_IND(DMF_APP2_MOBILITY_MANAGEMENT_RAU_REJECT_IND, dmf_app2_mobility_management_rau_reject_ind_struct, app2_mobility_management_rau_reject_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)	
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, rau_type, UNUSED_FIELD)	    
+        DMF_FIELD_VAR(kal_uint16, conv_reject_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, lac, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rac, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, orig_reject_cause, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_mobility_management_rau_reject_ind_struct)
+
+    //for DMF_MISC16_CAUSE_MOBILITY_MANAGEMENT_TAU_REJECT
+	DMF_URC_IND(DMF_APP2_MOBILITY_MANAGEMENT_TAU_REJECT_IND, dmf_app2_mobility_management_tau_reject_ind_struct, app2_mobility_management_tau_reject_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)	
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, reject_type, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, conv_reject_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, orig_reject_cause, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_mobility_management_tau_reject_ind_struct)
+
+    //for DMF_MISC16_CAUSE_MOBILITY_MANAGEMENT_ATTACH_REJECT
+	DMF_URC_IND(DMF_APP2_MOBILITY_MANAGEMENT_ATTACH_REJECT_IND, dmf_app2_mobility_management_attach_reject_ind_struct, app2_mobility_management_attach_reject_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)	
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, reject_type, UNUSED_FIELD)	    
+        DMF_FIELD_VAR(kal_uint16, conv_reject_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, orig_reject_cause, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_mobility_management_attach_reject_ind_struct)
+
+    //for DMF_MISC16_CAUSE_MOBILITY_MANAGEMENT_AUTH_FAILURE
+	DMF_URC_IND(DMF_APP2_MOBILITY_MANAGEMENT_AUTH_FAILURE_IND, dmf_app2_mobility_management_auth_failure_ind_struct, app2_mobility_management_auth_failure_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)	
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, auth_reject_type, UNUSED_FIELD)	            
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_mobility_management_auth_failure_ind_struct)
+
+    //for DMF_MISC16_CAUSE_MOBILITY_MANAGEMENT_SERVICE_REJECT
+	DMF_URC_IND(DMF_APP2_MOBILITY_MANAGEMENT_SERVICE_REJECT_IND, dmf_app2_mobility_management_service_reject_ind_struct, app2_mobility_management_service_reject_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)	
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, reject_type, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, conv_reject_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, orig_reject_cause, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_mobility_management_service_reject_ind_struct)
+
+    //for DMF_MISC16_CAUSE_MOBILITY_MANAGEMENT_ABNORMAL_DETACH
+	DMF_URC_IND(DMF_APP2_MOBILITY_MANAGEMENT_ABNORMAL_DETACH_IND, dmf_app2_mobility_management_abnormal_detach_ind_struct, app2_mobility_management_abnormal_detach_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)	
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, detach_type, UNUSED_FIELD)	    
+        DMF_FIELD_VAR(kal_uint16, conv_reject_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, orig_reject_cause, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_mobility_management_abnormal_detach_ind_struct)
+
+    //for DMF_MISC16_CAUSE_DATA_SERVICE_UL_PDCP_TIMER_DISCARD
+	DMF_URC_IND(DMF_APP2_DATA_SERVICE_UL_PDCP_TIMER_DISCARD_IND, dmf_app2_data_service_ul_pdcp_timer_discard_ind_struct, app2_data_service_ul_pdcp_timer_discard_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)	
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)	 
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_bool, ims_call_exist, UNUSED_FIELD)    
+	DMF_URC_IND_END(dmf_app2_data_service_ul_pdcp_timer_discard_ind_struct)
+
+    //for DMF_MISC16_CAUSE_DATA_SERVICE_UL_PDCP_OUT_OF_BUFFER
+	DMF_URC_IND(DMF_APP2_DATA_SERVICE_UL_PDCP_OUT_OF_BUFFER_IND, dmf_app2_data_service_ul_pdcp_out_of_buffer_ind_struct, app2_data_service_ul_pdcp_out_of_buffer_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)	
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)	
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_bool, ims_call_exist, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_data_service_ul_pdcp_out_of_buffer_ind_struct)
+
+    //for DMF_MISC16_CAUSE_DATA_SERVICE_UL_PDCP_ONE_WAY_PASS
+	DMF_URC_IND(DMF_APP2_DATA_SERVICE_UL_PDCP_ONE_WAY_PASS_IND, dmf_app2_data_service_ul_pdcp_one_way_pass_ind_struct, app2_data_service_ul_pdcp_one_way_pass_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+		DMF_FIELD_STRING(plmnid, 6)
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_bool, ims_call_exist, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_data_service_ul_pdcp_one_way_pass_ind_struct)
+
+    //for DMF_MISC16_CAUSE_DATA_SERVICE_DL_HIGH_DL_BLER
+	DMF_URC_IND(DMF_APP2_DATA_SERVICE_DL_HIGH_DL_BLER_IND, dmf_app2_data_service_dl_high_dl_bler_ind_struct, app2_data_service_dl_high_dl_bler_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+		DMF_FIELD_STRING(plmnid, 6)        
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)	
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_bool, ims_call_exist, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_data_service_dl_high_dl_bler_ind_struct)
+
+    //for DMF_MISC16_CAUSE_CALL_FAIL_MT_CSFB
+    DMF_URC_IND(DMF_APP2_CALL_FAIL_MT_CSFB_IND, dmf_app2_call_fail_mt_csfb_ind_struct, app2_call_fail_mt_csfb_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)        
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)	
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)   
+        DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, specific_cell_id, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)	   
+        DMF_FIELD_VAR(kal_uint16, cc_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, emm_mm_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, errc_rrc_rr_cause, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint16, csfb_state, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_call_fail_mt_csfb_ind_struct)
+
+    //for DMF_MISC16_CAUSE_CALL_FAIL_MT_CS
+    DMF_URC_IND(DMF_APP2_CALL_FAIL_MT_CS_IND, dmf_app2_call_fail_mt_cs_ind_struct, app2_call_fail_mt_cs_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)        
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)	
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)   
+        DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, specific_cell_id, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)	   
+        DMF_FIELD_VAR(kal_uint16, cc_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, emm_mm_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, errc_rrc_rr_cause, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_call_fail_mt_cs_ind_struct)
+
+    //for DMF_MISC16_CAUSE_CALL_FAIL_MO_CSFB
+    DMF_URC_IND(DMF_APP2_CALL_FAIL_MO_CSFB_IND, dmf_app2_call_fail_mo_csfb_ind_struct, app2_call_fail_mo_csfb_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)        
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)	
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)   
+        DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, specific_cell_id, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)	   
+        DMF_FIELD_VAR(kal_uint16, cc_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, emm_mm_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, errc_rrc_rr_cause, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint16, csfb_state, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_call_fail_mo_csfb_ind_struct)
+
+    //for DMF_MISC16_CAUSE_CALL_FAIL_MO_CS
+    DMF_URC_IND(DMF_APP2_CALL_FAIL_MO_CS_IND, dmf_app2_call_fail_mo_cs_ind_struct, app2_call_fail_mo_cs_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)        
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)	
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)   
+        DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, specific_cell_id, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)	   
+        DMF_FIELD_VAR(kal_uint16, cc_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, emm_mm_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, errc_rrc_rr_cause, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_call_fail_mo_cs_ind_struct)
+
+    //for DMF_MISC16_CAUSE_CALL_FAIL_CS
+    DMF_URC_IND(DMF_APP2_CALL_FAIL_CS_IND, dmf_app2_call_fail_cs_ind_struct, app2_call_fail_cs_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)        
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)	
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)   
+        DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, specific_cell_id, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)	   
+        DMF_FIELD_VAR(kal_uint16, cc_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, emm_mm_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, errc_rrc_rr_cause, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_call_fail_cs_ind_struct)		
+
+    //for DMF_MISC16_CAUSE_CALL_FAIL_MT_C2K
+    DMF_URC_IND(DMF_APP2_CALL_FAIL_MT_C2K_IND, dmf_app2_call_fail_mt_c2k_ind_struct, app2_call_fail_mt_c2k_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, sid, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, nid, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, pn_offset, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, band_class, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, channel, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, rssi, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int8, ecio, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, c2k_cause, UNUSED_FIELD)	      
+        DMF_FIELD_VAR(kal_uint16, bid, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_call_fail_mt_c2k_ind_struct)
+
+    //for DMF_MISC16_CAUSE_CALL_FAIL_MO_C2K
+    DMF_URC_IND(DMF_APP2_CALL_FAIL_MO_C2K_IND, dmf_app2_call_fail_mo_c2k_ind_struct, app2_call_fail_mo_c2k_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, sid, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, nid, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, pn_offset, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, band_class, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, channel, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, rssi, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int8, ecio, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, c2k_cause, UNUSED_FIELD)	      
+        DMF_FIELD_VAR(kal_uint16, bid, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, hvolte_mode, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_call_fail_mo_c2k_ind_struct)
+
+    //for DMF_MISC16_CAUSE_CALL_FAIL_C2K
+    DMF_URC_IND(DMF_APP2_CALL_FAIL_C2K_IND, dmf_app2_call_fail_c2k_ind_struct, app2_call_fail_c2k_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, sid, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, nid, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, pn_offset, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, band_class, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, channel, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, rssi, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int8, ecio, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, c2k_cause, UNUSED_FIELD)	      
+        DMF_FIELD_VAR(kal_uint16, bid, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, hvolte_mode, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_call_fail_c2k_ind_struct)
+
+    //DMF_MISC16_CAUSE_CALL_FAIL_IMS_CALL
+    DMF_URC_IND(DMF_APP2_CALL_FAIL_IMS_CALL_IND, dmf_app2_call_fail_ims_call_ind_struct, app2_call_fail_ims_call_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)        
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)	
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)   
+        DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, specific_cell_id, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)	   
+        DMF_FIELD_VAR(kal_uint16, call_type, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, is_mt_call, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, sip_call_state, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, net_type, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, sip_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, call_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, conv_reject_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, errc_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, orig_reject_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, hvolte_mode, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_call_fail_ims_call_ind_struct)
+
+    //DMF_MISC16_CAUSE_CALL_FAIL_IMS_CALL_HANDOVER
+    DMF_URC_IND(DMF_APP2_CALL_FAIL_IMS_CALL_HANDOVER_IND, dmf_app2_call_fail_ims_call_handover_ind_struct, app2_call_fail_ims_call_handover_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, lw_ho_type, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, volte_vowifi_handover_fail, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_call_fail_ims_call_handover_ind_struct)	
+
+    //DMF_MISC16_CAUSE_IMS_REG_FAIL
+    DMF_URC_IND(DMF_APP2_IMS_REG_FAIL_IND, dmf_app2_ims_reg_faill_ind_struct, dmf_app2_ims_reg_faill_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)        
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)	
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)   
+        DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, specific_cell_id, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)	
+        DMF_FIELD_VAR(kal_int16, fail_state, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, sip_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, pdn_cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, hvolte_mode, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_ims_reg_faill_ind_struct)	
+
+    //for DMF_MISC16_CAUSE_OTHER_CARD_DROP
+    DMF_URC_IND(DMF_APP2_OTHER_CARD_DROP_IND, dmf_app2_other_card_drop_ind_struct, app2_other_card_drop_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+        DMF_FIELD_VAR(kal_uint32, count, UNUSED_FIELD)     
+    DMF_URC_IND_END(dmf_app2_other_card_drop_ind_struct)	 
+
+    // for DMF_MISC16_CAUSE_CELLULAR_SNIFFER_FULLBAND_SEARCH
+    DMF_URC_IND(DMF_APP2_CELLULAR_SNIFFER_FULLBAND_SEARCH_IND, dmf_app2_cellular_sniffer_fullband_search_ind_struct, dmf_app2_cellular_sniffer_fullband_search_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, inactive_search_type, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, inactive_search_count, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_cellular_sniffer_fullband_search_ind_struct)
+
+    // for DMF_MISC16_CAUSE_CELLULAR_NWSEL_SCREEN_ON_SEARCH
+    DMF_URC_IND(DMF_APP2_CELLULAR_NWSEL_SCREEN_ON_SEARCH_IND, dmf_app2_cellular_nwsel_screen_on_search_ind_struct, dmf_app2_cellular_nwsel_screen_on_search_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_bool, is_screen_on_req_trigger, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_cellular_nwsel_screen_on_search_ind_struct)
+
+    // DMF_MISC16_CAUSE_CALL_VOICE_QUALITY_GWL
+    DMF_URC_IND(DMF_APP2_CALL_VOICE_QUALITY_GWL_IND, dmf_app2_call_voice_quality_gwl_ind_struct, dmf_app2_call_voice_quality_gwl_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, tac_lac, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)	
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)   
+        DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, specific_cell_id, UNUSED_FIELD)        
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)	
+        DMF_FIELD_VAR(kal_int16, snr, UNUSED_FIELD)	
+        DMF_FIELD_VAR(kal_uint8, status, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_bool, is_dl_have_sound, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_call_voice_quality_gwl_ind_struct)
+
+    // DMF_MISC16_CAUSE_CALL_VOICE_QUALITY_C2K
+    DMF_URC_IND(DMF_APP2_CALL_VOICE_QUALITY_C2K_IND, dmf_app2_call_voice_quality_c2k_ind_struct, dmf_app2_call_voice_quality_c2k_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, sid, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, nid, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, bid, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, pn_offset, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, band_class, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, channel, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, rssi, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, ecio, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, status, UNUSED_FIELD)	
+        DMF_FIELD_VAR(kal_bool, is_dl_have_sound, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_call_voice_quality_c2k_ind_struct)
+
+    // DMF_MISC16_CAUSE_CELLULAR_DATA_INACTIVITY
+    // Note: be aware of max URC size = 512 bytes for this URC, must review max size when making change
+    DMF_URC_IND(DMF_APP2_CELLULAR_DATA_INACTIVITY_IND, dmf_app2_cellular_data_inactivity_ind_struct, dmf_app2_cellular_data_inactivity_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, num_of_inactivity_timer_record, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, release_count, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, local_release_count, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, a2_trigger_release_count, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, data_inact_timer_exp_count_other, UNUSED_FIELD)
+
+        DMF_FIELD_VAR(kal_uint16, tac_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, cell_id_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, cdrx_mask1_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, cdrx_mask2_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, data_inact_timer_exp_count_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, data_inact_timer_value_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, user_inactive_time_1, UNUSED_FIELD)
+
+        DMF_FIELD_VAR(kal_uint16, tac_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, cell_id_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, cdrx_mask1_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, cdrx_mask2_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, data_inact_timer_exp_count_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, data_inact_timer_value_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, user_inactive_time_2, UNUSED_FIELD)
+
+        DMF_FIELD_VAR(kal_uint16, tac_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, cell_id_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, cdrx_mask1_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, cdrx_mask2_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, data_inact_timer_exp_count_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, data_inact_timer_value_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, user_inactive_time_3, UNUSED_FIELD)
+
+        DMF_FIELD_VAR(kal_uint16, tac_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, cell_id_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, cdrx_mask1_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, cdrx_mask2_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, data_inact_timer_exp_count_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, data_inact_timer_value_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, user_inactive_time_4, UNUSED_FIELD)
+
+        DMF_FIELD_VAR(kal_uint16, tac_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, cell_id_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, cdrx_mask1_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, cdrx_mask2_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, data_inact_timer_exp_count_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, data_inact_timer_value_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, user_inactive_time_5, UNUSED_FIELD)
+
+        DMF_FIELD_VAR(kal_uint16, tac_6, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, cell_id_6, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, cdrx_mask1_6, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, cdrx_mask2_6, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, data_inact_timer_exp_count_6, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, data_inact_timer_value_6, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, user_inactive_time_6, UNUSED_FIELD)
+
+        DMF_FIELD_VAR(kal_uint16, tac_7, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, cell_id_7, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, cdrx_mask1_7, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, cdrx_mask2_7, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, data_inact_timer_exp_count_7, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, data_inact_timer_value_7, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, user_inactive_time_7, UNUSED_FIELD)
+
+        DMF_FIELD_VAR(kal_uint16, tac_8, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, cell_id_8, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, cdrx_mask1_8, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, cdrx_mask2_8, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, data_inact_timer_exp_count_8, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, data_inact_timer_value_8, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, user_inactive_time_8, UNUSED_FIELD)
+
+    DMF_URC_IND_END(dmf_app2_cellular_data_inactivity_ind_struct)
+
+	// for DMF_MISC16_CAUSE_NR_AC_BARRING_INFO
+	DMF_URC_IND(DMF_APP2_NR_AC_BARRING_INFO_IND, dmf_app2_nr_ac_barring_info_ind_struct, dmf_app2_nr_ac_barring_info_ind)
+	    DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, acBarringTime, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, acBarringFactor, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, acBarEstType, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, acBarringCause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, ssacBarringTime, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, ssacBarringFactor, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, ssacBarEstType, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, ssacBarringCause, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_nr_ac_barring_info_ind_struct)
+
+    // ------------------------------------NR part -----------------------------------
+    // DMF_MISC16_CAUSE_NR_RADIO_LINK_FAILURE
+    // DMF_EVENT_RADIO_LINK_FAILURE_CAUSE_INFO
+    DMF_URC_IND(DMF_APP2_NR_RADIO_LINK_FAILURE_IND, dmf_app2_nr_radio_link_failure_cause_info_ind_struct, dmf_app2_nr_radio_link_failure_cause_info_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 7)
+        DMF_FIELD_VAR(kal_uint32, tracking_area_code, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, freq_band_indicator, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, dl_frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, serv_rsrp, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, serv_rsrq, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, rlf_cause, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_nr_radio_link_failure_cause_info_ind_struct)
+
+    // DMF_MISC16_CAUSE_NR_SCG_FAILURE
+    // DMF_EVENT_NR_SCG_FAILURE_CAUSE_INFO
+    DMF_URC_IND(DMF_APP2_NR_SCG_FAILURE_IND, dmf_app2_nr_scg_failure_cause_info_ind_struct, dmf_app2_nr_scg_failure_cause_info_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 7)
+        DMF_FIELD_VAR(kal_uint32, tracking_area_code, UNUSED_FIELD) 
+        DMF_FIELD_VAR(kal_uint16, freq_band_indicator, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, dl_frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, serv_rsrp, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, serv_rsrq, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, scg_fail_cause, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_nr_scg_failure_cause_info_ind_struct)
+
+    // DMF_MISC16_CAUSE_CALL_VOLTE_CELL_INFO
+    DMF_URC_IND(DMF_APP2_CALL_VOLTE_CELL_INFO_IND, dmf_app2_call_volte_cell_info_ind_struct, dmf_app2_call_volte_cell_info_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, rsrp, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, rsrq, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, sinr, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, jitter, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, tx_drop_rate, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rx_drop_rate, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_call_volte_cell_info_ind_struct)
+
+    // DMF_MISC16_CAUSE_CALL_VOLTE_ONGOING_INFO
+    DMF_URC_IND(DMF_APP2_CALL_VOLTE_ONGOING_INFO_IND, dmf_app2_call_volte_ongoing_info_ind_struct, dmf_app2_call_volte_ongoing_info_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, rsrp, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, rsrq, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, sinr, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, jitter, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, tx_drop_rate, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rx_drop_rate, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_call_volte_ongoing_info_ind_struct)
+
+    // DMF_MISC16_CAUSE_CALL_VOLTE_END_INFO
+    DMF_URC_IND(DMF_APP2_CALL_VOLTE_END_INFO_IND, dmf_app2_call_volte_end_info_ind_struct, dmf_app2_call_volte_end_info_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, cell_id_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, rsrp_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, rsrq_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, sinr_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, jitter_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, tx_drop_rate_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rx_drop_rate_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, cell_id_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, rsrp_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, rsrq_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, sinr_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, jitter_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, tx_drop_rate_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rx_drop_rate_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, cell_id_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, rsrp_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, rsrq_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, sinr_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, jitter_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, tx_drop_rate_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rx_drop_rate_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, cell_id_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, rsrp_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, rsrq_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, sinr_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, jitter_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, tx_drop_rate_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rx_drop_rate_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, cell_id_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, rsrp_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, rsrq_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, sinr_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, jitter_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, tx_drop_rate_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rx_drop_rate_5, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_call_volte_end_info_ind_struct)
+
+    // DMF_MISC16_CAUSE_CALL_VOLTE_A2_INFO
+    DMF_URC_IND(DMF_APP2_CALL_VOLTE_A2_INFO_IND, dmf_app2_call_volte_a2_info_ind_struct, dmf_app2_call_volte_a2_info_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, meas_quantity_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, threshold_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, hysteresis_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, time_to_trigger_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, meas_quantity_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, threshold_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, hysteresis_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, time_to_trigger_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, meas_quantity_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, threshold_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, hysteresis_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, time_to_trigger_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, meas_quantity_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, threshold_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, hysteresis_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, time_to_trigger_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, meas_quantity_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, threshold_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, hysteresis_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, time_to_trigger_5, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_call_volte_a2_info_ind_struct)
+
+    // DMF_MISC16_CAUSE_CALL_VOLTE_B2_INFO
+    DMF_URC_IND(DMF_APP2_CALL_VOLTE_B2_INFO_IND, dmf_app2_call_volte_b2_info_ind_struct, dmf_app2_call_volte_b2_info_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, meas_quantity_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, threshold_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, other_rat_meas_quantity_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, other_rat_threshold_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, hysteresis_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, time_to_trigger_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, meas_quantity_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, threshold_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, other_rat_meas_quantity_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, other_rat_threshold_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, hysteresis_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, time_to_trigger_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, meas_quantity_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, threshold_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, other_rat_meas_quantity_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, other_rat_threshold_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, hysteresis_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, time_to_trigger_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, meas_quantity_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, threshold_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, other_rat_meas_quantity_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, other_rat_threshold_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, hysteresis_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, time_to_trigger_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, meas_quantity_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, threshold_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, other_rat_meas_quantity_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, other_rat_threshold_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, hysteresis_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, time_to_trigger_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, meas_quantity_6, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, threshold_6, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, other_rat_meas_quantity_6, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, other_rat_threshold_6, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, hysteresis_6, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, time_to_trigger_6, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, meas_quantity_7, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, threshold_7, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, other_rat_meas_quantity_7, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, other_rat_threshold_7, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, hysteresis_7, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, time_to_trigger_7, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, meas_quantity_8, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, threshold_8, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, other_rat_meas_quantity_8, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, other_rat_threshold_8, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, hysteresis_8, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, time_to_trigger_8, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_call_volte_b2_info_ind_struct)
+
+    // DMF_MISC16_CAUSE_CELLULAR_HVOLTE_SWITCH
+    DMF_URC_IND(DMF_APP2_CELLULAR_HVOLTE_SWITCH_IND, dmf_app2_cellular_hvolte_switch_ind_struct, dmf_app2_cellular_hvolte_switch_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, prev_hvolte_mode, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, hvolte_mode, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, switch_cause, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_cellular_hvolte_switch_ind_struct)
+
+    // DMF_MISC16_CAUSE_CELLULAR_HVOLTE_1X_SILENT_REDIAL
+    DMF_URC_IND(DMF_APP2_CELLULAR_HVOLTE_1X_SILENT_REDIAL_IND, dmf_app2_cellular_hvolte_1x_silent_redial_ind_struct, dmf_app2_cellular_hvolte_1x_silent_redial_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_cellular_hvolte_1x_silent_redial_ind_struct)
+
+    // DMF_MISC16_CAUSE_CELLULAR_HVOLTE_1X_SILENT_REDIAL_NO_RETURN_LTE
+    DMF_URC_IND(DMF_APP2_CELLULAR_HVOLTE_1X_SILENT_REDIAL_NO_RETURN_LTE_IND, dmf_app2_cellular_hvolte_1x_silent_redial_no_return_lte_ind_struct, dmf_app2_cellular_hvolte_1x_silent_redial_no_return_lte_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_cellular_hvolte_1x_silent_redial_no_return_lte_ind_struct)
+
+
+    // DMF_MISC16_CAUSE_SECONDARY_CELL_ADDITION
+    // DMF_EVENT_NR_SECONDARY_CELL_ADDITION_CAUSE_INFO
+    DMF_URC_IND(DMF_APP2_NR_SECONDARY_CELL_ADDITION_IND, dmf_app2_nr_secondary_cell_addition_cause_info_ind_struct, dmf_app2_nr_secondary_cell_addition_cause_info_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 7)
+        DMF_FIELD_VAR(kal_uint32, tracking_area_code, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, freq_band_indicator, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, dl_frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, serv_rsrp, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, serv_rsrq, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, result, UNUSED_FIELD) 
+        DMF_FIELD_VAR(kal_uint16, pscell_pci, UNUSED_FIELD) 
+        DMF_FIELD_VAR(kal_uint32, pscell_narfcn, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, pscell_add_latency_a, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, pscell_add_latency_b, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, success_number, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, failure_number, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_nr_secondary_cell_addition_cause_info_ind_struct)
+
+    // DMF_MISC16_CAUSE_SECONDARY_CELL_HANDOVER
+    // DMF_EVENT_NR_SECONDARY_CELL_HANDOVER_CAUSE_INFO
+    DMF_URC_IND(DMF_APP2_NR_SECONDARY_CELL_HANDOVER_IND, dmf_app2_nr_secondary_cell_handover_cause_info_ind_struct, dmf_app2_nr_secondary_cell_handover_cause_info_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 7)
+        DMF_FIELD_VAR(kal_uint32, tracking_area_code, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, freq_band_indicator, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, dl_frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, serv_rsrp, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, serv_rsrq, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, result, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, source_cell_pci, UNUSED_FIELD) 
+        DMF_FIELD_VAR(kal_uint32, source_cell_narfcn, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, target_cell_pci, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, target_cell_narfcn, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, handover_latency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, success_number, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, failure_number, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_nr_secondary_cell_handover_cause_info_ind_struct)
+
+    // DMF_MISC16_CAUSE_ENDC_MODE_KPI
+    // DMF_EVENT_NR_ENDC_MODE_KPI_CAUSE_INFO
+    DMF_URC_IND(DMF_APP2_NR_ENDC_MODE_KPI_IND, dmf_app2_nr_endc_mode_kpi_cause_info_ind_struct, dmf_app2_nr_endc_mode_kpi_cause_info_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 7)
+        DMF_FIELD_VAR(kal_uint32, tracking_area_code, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, freq_band_indicator, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, dl_frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, serv_rsrp, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, serv_rsrq, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, time_in_lte_connected, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, time_in_endc_mode, UNUSED_FIELD) 
+        DMF_FIELD_VAR(kal_uint32, time_between_enable_endc_mode, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, time_duration_ul_on_nr, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, time_in_split_bearer_mode, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_nr_endc_mode_kpi_cause_info_ind_struct)
+
+    // DMF_MISC16_CAUSE_OTHER_5G_KPI
+    // DMF_EVENT_NR_OTHER_5G_KPI_CAUSE_INFO
+    DMF_URC_IND(DMF_APP2_NR_OTHER_5G_KPI_IND, dmf_app2_nr_other_5g_kpi_cause_info_ind_struct, dmf_app2_nr_other_5g_kpi_cause_info_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 7)
+        DMF_FIELD_VAR(kal_uint32, tracking_area_code, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, freq_band_indicator, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, dl_frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, serv_rsrp, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, serv_rsrq, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, num_lte_ca_band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, lte_pcc_earfcn, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, lte_scc_earfcn_0, UNUSED_FIELD)    //ERRC_SCELL_NUM_MAX = 7
+        DMF_FIELD_VAR(kal_uint32, lte_scc_earfcn_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, lte_scc_earfcn_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, lte_scc_earfcn_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, lte_scc_earfcn_4, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, lte_scc_earfcn_5, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, lte_scc_earfcn_6, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, num_nr_ca_band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, nr_spcell_dl_frequency_band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, nr_scell_dl_frequency_band, UNUSED_FIELD) //NL1_SCELL_CONFIG_LIST_SIZE = 1
+    DMF_URC_IND_END(dmf_app2_nr_other_5g_kpi_cause_info_ind_struct)
+
+	// DMF_EVENT_PDCP_THROUGHPUT_INFO
+    DMF_URC_IND(DMF_APP2_NR_PDCP_THROUGHPUT_IND, dmf_app2_nr_pdcp_throughput_cause_info_ind_struct, dmf_app2_nr_pdcp_throughput_cause_info_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, current_rat, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, ul_speed, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, dl_speed, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_nr_pdcp_throughput_cause_info_ind_struct)
+
+	// DMF_EVENT_OTA_FAIL_REASON
+    DMF_URC_IND(DMF_APP2_OTA_FAIL_REASON_IND, dmf_app2_nr_ota_fail_reason_info_ind_struct, dmf_app2_ota_fail_reason_info_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, fail_reason, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 7)
+        DMF_FIELD_VAR(kal_uint32, tracking_area_code, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, freq_band_indicator, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, dl_frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, serv_rsrp, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, serv_rsrq, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mcc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, mnc, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, digits_of_mnc, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_nr_ota_fail_reason_info_ind_struct)
+
+    // DMF_EVENT_NL1_FBRX
+    DMF_URC_IND(DMF_APP2_NL1_FBRX_BAND_IND, dmf_app2_nl1_fbrx_band_ind_struct, dmf_app2_nl1_fbrx_band_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, rat, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_nl1_fbrx_band_ind_struct)
+    
+	// for DMF_MISC16_CAUSE_DEEP_SLEEP_MODE_STATISTICS
+	DMF_URC_IND(DMF_APP2_DEEP_SLEEP_MODE_STATISTICS_IND, dmf_app2_deep_sleep_mode_statistics_ind_struct, dmf_app2_deep_sleep_mode_statistics_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnDurT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrIdleDurT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrNoSvcDurT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnDurT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteIdleDurT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteNoSvcDurT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mdNoSvcDurT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_EMC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_HPA, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_MT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_MOS, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_MOD, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_MOVoC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_MOViC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_MOSMS, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_MPSPA, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnEstC_MCSPA, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_EMC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_HPA, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_MT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_MOS, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_MOD, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_MOVoC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_MOViC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_MOSMS, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_MPSPA, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nrConnFailC_MCSPA, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnEstC_EMC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnEstC_HPA, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnEstC_MT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnEstC_MOS, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnEstC_MOD, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnEstC_MOVoC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnFailC_EMC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnFailC_HPA, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnFailC_MT, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnFailC_MOS, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnFailC_MOD, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteConnFailC_MOVoC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, intraLtePingPongC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, intraNrPingPongC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lteNrPingPongC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lte3gPingPongC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lte2gPingPongC, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, idleOosC, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_app2_deep_sleep_mode_statistics_ind_struct)
+    
+    // DMF_EVENT_NON_DDS_PAGING
+    DMF_URC_IND(DMF_APP2_NON_DDS_PAGING_IND, dmf_app2_non_dds_paging_ind_struct, dmf_app2_non_dds_paging_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, counter_of_paging_over_12, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, total_paging, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_non_dds_paging_ind_struct)
+    
+    //DMF_MISC16_CAUSE_ABNORMAL_PDET_DETECTION
+    DMF_URC_IND(DMF_APP2_PDET_DETECTION_IND, dmf_app2_pdet_detection_ind_struct, app2_pdet_detection_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int16, target_power, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, power_delta_0, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, power_delta_1, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, power_delta_2, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, power_delta_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, counter, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_pdet_detection_ind_struct)
+
+    DMF_URC_IND(DMF_APP2_NR_RACH_FAIL_IND, dmf_app2_nr_rach_fail_ind_struct, dmf_app2_nr_rach_fail_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)
+        DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, bandwidth, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_nr_rach_fail_rar, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_nr_rach_fail_cr_timer_expired, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_nr_rach_fail_cr_failure, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_nr_rach_fail_abort, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_nr_rach_fail_ind_struct)
+    
+    DMF_URC_IND(DMF_APP2_NR_RLF_IND, dmf_app2_nrrc_rlf_ind_struct, dmf_app2_nr_rlf_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)
+        DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, bandwidth, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_nrrc_rlf_l1_problem, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_nrrc_rlf_ra_problem, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_nrrc_rlf_max_rlc_retransmission, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_nrrc_rlf_ind_struct)
+    
+    DMF_URC_IND(DMF_APP2_NRRC_REESTABLISHMENT_IND, dmf_app2_nrrc_reest_ind_struct, dmf_app2_nrrc_reest_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)
+        DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, bandwidth, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_nrrc_reest_rlf, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_nrrc_reest_sync_fail_reconfiguration, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_nrrc_reest_mobility_failure, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_nrrc_reest_integrity_check_failure, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_nrrc_reest_reconfiguration_failure, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_nrrc_reest_ind_struct)
+    
+    DMF_URC_IND(DMF_APP2_NR_REGISTRATION_FAILURE_IND, dmf_app2_nr_reg_failure_ind_struct, dmf_app2_nr_reg_failure_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(plmnid, 6)
+        DMF_FIELD_VAR(kal_uint16, band, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, frequency, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_strength, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, signal_quality, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint16, bandwidth, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, cell_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_cause_3, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_cause_6, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_cause_7, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_cause_9, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_cause_10, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_cause_11, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_cause_12, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_cause_13, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_cause_15, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_cause_22, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_cause_27, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_cause_72, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_cause_73, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, count_of_cause_other, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app2_nr_reg_failure_ind_struct)
+
+    #endif  /* DMF_URC_IND_SEC */
+
+DMF_APP_END
+#endif //for __DMF_TC16__
+
+
+#ifdef __DMF_TC01__
+DMF_APP(3)  
+
+    // Define CMD_REQ structure 
+    #ifdef DMF_CMD_REQ_SEC
+        DMF_CMD_REQ(dmf_app3_cmd_req_struct, app3_cmd)
+            DMF_FIELD_VAR(kal_uint32, cause, 10000)
+        DMF_CMD_REQ_END(dmf_app3_cmd_req_struct)
+    #endif 
+
+    // Define CMD_CNF structure 
+    #ifdef DMF_CMD_CNF_SEC
+		//DMF_MISC01_CAUSE_LTE_DATA_API_VERSION
+        DMF_CMD_CNF(DMF_APP3_LTE_DATA_API_VERSION_CMD_CNF, dmf_app3_lte_data_api_version_cnf_struct, app3_lte_data_api_version_cnf_struct)
+			DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+			DMF_FIELD_VAR(kal_int32, api_version, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app3_lte_data_api_version_cnf_struct)
+
+		//DMF_MISC01_CAUSE_LTE_DATA_NW_IDENTITY
+        DMF_CMD_CNF(DMF_APP3_LTE_DATA_NW_IDENTITY_CMD_CNF, dmf_app3_lte_data_nw_identity_cnf_struct, app3_lte_data_nw_identity_cnf_struct)
+			DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, tac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int16, lac, UNUSED_FIELD)
+			DMF_FIELD_VAR_LONG(kal_int64, first_carrier_cell_id, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, first_carrier_pci, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, second_carrier_pci, UNUSED_FIELD)
+            DMF_FIELD_VAR_LONG(kal_int64, third_carrier_cell_id, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, third_carrier_pci, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app3_lte_data_nw_identity_cnf_struct)
+
+		//DMF_MISC01_CAUSE_LTE_DATA_SIGNAL_CONDITION
+		DMF_CMD_CNF(DMF_APP3_LTE_DATA_SIGNAL_CONDITION_CMD_CNF, dmf_app3_lte_data_signal_condition_cnf_struct, app3_lte_data_signal_condition_cnf_struct)
+			DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, primary_carrier_rsrp, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, primary_carrier_rsrq, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, primary_carrier_sinr, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, primary_carrier_rssi, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, rach_power, UNUSED_FIELD)		
+			DMF_FIELD_VAR(kal_int32, lte_ul_headroom, UNUSED_FIELD)	
+			DMF_FIELD_VAR(kal_int32, second_carrier_rsrp, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, second_carrier_rsrq, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, second_carrier_sinr, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, second_carrier_rssi, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, third_carrier_rsrp, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, third_carrier_rsrq, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, third_carrier_sinr, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, third_carrier_rssi, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app3_lte_data_signal_condition_cnf_struct)
+
+		//DMF_MISC01_CAUSE_LTE_DATA_COMMON_RFC_CONFIG
+		DMF_CMD_CNF(DMF_APP3_LTE_DATA_COMMON_RFC_CONFIG_CMD_CNF, dmf_app3_lte_data_common_rfc_config_cnf_struct, app3_lte_data_common_rfc_config_cnf_struct)
+			DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, transmission_mode, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, rx_antenna_config, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, tx_antenna_config, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, receiver_diversity, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, rrc_state, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, laa_lteu_status, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app3_lte_data_common_rfc_config_cnf_struct)		
+
+		//DMF_MISC01_CAUSE_LTE_DATA_DL_CARRIER_INFO
+		DMF_CMD_CNF(DMF_APP3_LTE_DATA_DL_CARRIER_INFO_CMD_CNF, dmf_app3_lte_data_dl_carrier_info_cnf_struct, app3_lte_data_dl_carrier_info_cnf_struct)
+			DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, no_of_carriers, UNUSED_FIELD)
+			DMF_FIELD_VAR_LONG(kal_int64, first_carrier_earfcn, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, first_carrier_bw, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, first_carrier_band_number, UNUSED_FIELD)
+			DMF_FIELD_VAR_LONG(kal_int64, second_carrier_earfcn, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, second_carrier_bw, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, second_carrier_band_number, UNUSED_FIELD)
+			DMF_FIELD_VAR_LONG(kal_int64, third_carrier_earfcn, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, third_carrier_bw, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, third_carrier_band_number, UNUSED_FIELD)
+		DMF_CMD_CNF_END(dmf_app3_lte_data_dl_carrier_info_cnf_struct)	
+
+		//DMF_MISC01_CAUSE_LTE_DATA_UL_CARRIER_INFO
+		DMF_CMD_CNF(DMF_APP3_LTE_DATA_UL_CARRIER_INFO_CMD_CNF, dmf_app3_lte_data_ul_carrier_info_cnf_struct, app3_lte_data_ul_carrier_info_cnf_struct)
+			DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, no_of_carriers, UNUSED_FIELD)
+			DMF_FIELD_VAR_LONG(kal_int64, first_carrier_earfcn, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, first_carrier_bw, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, first_carrier_band_number, UNUSED_FIELD)
+			DMF_FIELD_VAR_LONG(kal_int64, second_carrier_earfcn, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, second_carrier_bw, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, second_carrier_band_number, UNUSED_FIELD)
+		DMF_CMD_CNF_END(dmf_app3_lte_data_ul_carrier_info_cnf_struct)	
+
+        //DMF_MISC01_CAUSE_LTE_DATA_DL_RFC_CONFIG 
+        DMF_CMD_CNF(DMF_APP3_LTE_DATA_DL_RFC_CONFIG_CMD_CNF, dmf_app3_lte_data_dl_rfc_config_cnf_struct, app3_lte_data_dl_rfc_config_cnf_struct)
+			DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, first_carrier_modulation_scheme, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, first_carrier_no_of_layers, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, second_carrier_modulation_scheme, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, second_carrier_no_of_layers, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, third_carrier_modulation_scheme, UNUSED_FIELD)        
+            DMF_FIELD_VAR(kal_int32, third_carrier_no_of_layers, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app3_lte_data_dl_rfc_config_cnf_struct)	
+
+        //DMF_MISC01_CAUSE_LTE_DATA_UL_RFC_CONFIG 
+        DMF_CMD_CNF(DMF_APP3_LTE_DATA_UL_RFC_CONFIG_CMD_CNF, dmf_app3_lte_data_ul_rfc_config_cnf_struct, app3_lte_data_ul_rfc_config_cnf_struct)
+			DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp, UNUSED_FIELD)
+			DMF_FIELD_VAR(kal_int32, first_carrier_modulation_scheme, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, second_carrier_modulation_scheme, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app3_lte_data_ul_rfc_config_cnf_struct)	
+
+        //DMF_MISC01_CAUSE_LTE_DATA_BEARER_CONFIG 
+        DMF_CMD_CNF(DMF_APP3_LTE_DATA_BEARER_CONFIG_CMD_CNF, dmf_app3_lte_data_bearer_config_cnf_struct, app3_lte_data_bearer_config_cnf_struct)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, no_of_active_bearers, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, first_bearer_qci, UNUSED_FIELD)
+            DMF_FIELD_STRING(first_bearer_apn_name, 100)
+            DMF_FIELD_VAR(kal_int32, second_bearer_qci, UNUSED_FIELD)
+            DMF_FIELD_STRING(second_bearer_apn_name, 100)
+            DMF_FIELD_VAR(kal_int32, third_bearer_qci, UNUSED_FIELD)
+            DMF_FIELD_STRING(third_bearer_apn_name, 100)            
+            DMF_FIELD_VAR(kal_int32, fourth_bearer_qci, UNUSED_FIELD)
+            DMF_FIELD_STRING(fourth_bearer_apn_name, 100)            
+        DMF_CMD_CNF_END(dmf_app3_lte_data_bearer_config_cnf_struct) 
+
+
+        //DMF_MISC01_CAUSE_5G_MMW_ENDC_LTE_LOG
+        DMF_CMD_CNF(DMF_APP3_5G_MMW_ENDC_LTE_LOG_CMD_CNF, dmf_app3_5g_mmw_endc_lte_log_cnf_struct, app3_5g_mmw_endc_lte_log_cnf_struct)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, anchor_lte_cid, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, anchor_lte_pci, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, endc_cap, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, lte_rrc_state, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app3_5g_mmw_endc_lte_log_cnf_struct) 
+
+        //DMF_MISC01_CAUSE_5G_MMW_5G_NR_MMW_CELL_LOG
+        DMF_CMD_CNF(DMF_APP3_5G_MMW_5G_NR_MMW_CELL_LOG_CMD_CNF, dmf_app3_5g_mmw_5g_nr_mmw_cell_log_cnf_struct, app3_5g_mmw_5g_nr_mmw_cell_log_cnf_struct)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, nr_pcell_pci, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, ssb_beam_index, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, ssb_brsrp, UNUSED_FIELD)  
+            DMF_FIELD_VAR(kal_int32, ssb_brsrq, UNUSED_FIELD)  
+            DMF_FIELD_VAR(kal_int32, ssb_snr, UNUSED_FIELD)  
+            DMF_FIELD_VAR(kal_int32, pdsch_beam_index, UNUSED_FIELD)  
+            DMF_FIELD_VAR(kal_int32, pdsch_rsrp, UNUSED_FIELD)  
+            DMF_FIELD_VAR(kal_int32, pdsch_rsrq, UNUSED_FIELD)  
+            DMF_FIELD_VAR(kal_int32, pdsch_snr, UNUSED_FIELD) 
+            DMF_FIELD_STRING(nr_band_name, 20)  
+            DMF_FIELD_VAR(kal_int32, nr_bw, UNUSED_FIELD) 
+            DMF_FIELD_VAR(kal_int32, no_of_ssb_beams, UNUSED_FIELD) 
+        DMF_CMD_CNF_END(dmf_app3_5g_mmw_5g_nr_mmw_cell_log_cnf_struct)
+
+        //DMF_MISC01_CAUSE_5G_MMW_SSB_BEAM_LOG
+        DMF_CMD_CNF(DMF_APP3_5G_MMW_SSB_BEAM_LOG_CMD_CNF, dmf_app3_5g_mmw_ssb_beam_log_cnf_struct, app3_5g_mmw_ssb_beam_log_cnf_struct)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, pci, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, ssb_beam_index, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, ssb_brsrp, UNUSED_FIELD)  
+            DMF_FIELD_VAR(kal_int32, ssb_brsrq, UNUSED_FIELD)  
+            DMF_FIELD_VAR(kal_int32, ssb_snr, UNUSED_FIELD)  
+        DMF_CMD_CNF_END(dmf_app3_5g_mmw_ssb_beam_log_cnf_struct)
+
+        //DMF_MISC01_CAUSE_5G_MMW_ENDC_UL_LOG
+        DMF_CMD_CNF(DMF_APP3_5G_MMW_ENDC_UL_LOG_CMD_CNF, dmf_app3_5g_mmw_endc_ul_log_cnf_struct, app3_5g_mmw_endc_ul_log_cnf_struct)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp, UNUSED_FIELD)  
+            DMF_FIELD_VAR(kal_int32, ul_nw, UNUSED_FIELD)
+       DMF_CMD_CNF_END(dmf_app3_5g_mmw_endc_ul_log_cnf_struct)
+
+
+        //DMF_MISC01_CAUSE_5G_MMW_5G_UI_LOG
+        DMF_CMD_CNF(DMF_APP3_5G_MMW_5G_UI_LOG_CMD_CNF, dmf_app3_5g_mmw_5g_ui_log_cnf_struct, app3_5g_mmw_5g_ui_log_cnf_struct)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+            DMF_FIELD_VAR_LONG(kal_uint64, timestamp, UNUSED_FIELD) 
+            DMF_FIELD_VAR(kal_int32, ui_5g_config_status, UNUSED_FIELD) 
+        DMF_CMD_CNF_END(dmf_app3_5g_mmw_5g_ui_log_cnf_struct)
+
+        //Cause 2407
+        DMF_CMD_CNF(DMF_APP3_5G_SA_GET_DL_CARRIER_LOG_CMD_CNF, dmf_app3_5g_sa_get_dl_carrier_log_cnf_struct, app3_5g_sa_get_dl_carrier_log_cnf_struct)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+            DMF_FIELD_STRING(techType, 5)
+            DMF_FIELD_STRING(bandNumber, 5)
+            DMF_FIELD_VAR(kal_int32, arfcn, UNUSED_FIELD)
+            DMF_FIELD_STRING(bandWidth, 5)
+            DMF_FIELD_VAR(kal_int32, isPrimary, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, isEndcAnchor, UNUSED_FIELD)
+            DMF_FIELD_STRING(modulationType, 10)
+            DMF_FIELD_VAR(kal_int32, transmissionMode, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, numberLayers, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, cellId, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, pci, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, tac, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32, lac, UNUSED_FIELD)
+            DMF_FIELD_STRING(rsrp, 5)
+            DMF_FIELD_STRING(rsrq, 5)
+            DMF_FIELD_STRING(rssi, 5)
+            DMF_FIELD_STRING(rscp, 5)
+            DMF_FIELD_STRING(sinr, 5)
+            DMF_FIELD_STRING(csiRsrp, 5)
+            DMF_FIELD_STRING(csiRsrq, 5)
+            DMF_FIELD_STRING(csiRssi, 5)
+            DMF_FIELD_STRING(csiSinr, 5)
+        DMF_CMD_CNF_END(dmf_app3_5g_sa_get_dl_carrier_log_cnf_struct)
+        
+        //cause 2408
+        DMF_CMD_CNF(DMF_APP3_5G_SA_GET_UL_CARRIER_LOG_CMD_CNF, dmf_app3_5g_sa_get_ul_carrier_log_cnf_struct, app3_5g_sa_get_ul_carrier_log_cnf_struct)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+            DMF_FIELD_STRING(techType, 5)
+            DMF_FIELD_STRING(bandNumber, 5)
+            DMF_FIELD_VAR(kal_int32, arfcn, UNUSED_FIELD)
+            DMF_FIELD_STRING(bandWidth, 5)
+            DMF_FIELD_VAR(kal_int32, isPrimary, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app3_5g_sa_get_ul_carrier_log_cnf_struct)        
+        
+        //cause 2409
+        DMF_CMD_CNF(DMF_APP3_5G_SA_GET_RRC_LOG_CMD_CNF, dmf_app3_5g_sa_get_rrc_log_cnf_struct, app3_5g_sa_get_rrc_log_cnf_struct)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+            DMF_FIELD_STRING(lteRrcState, 15)
+            DMF_FIELD_STRING(nrRrcState, 15)
+        DMF_CMD_CNF_END(dmf_app3_5g_sa_get_rrc_log_cnf_struct)
+        
+        //cause 2410
+        DMF_CMD_CNF(DMF_APP3_5G_SA_GET_NW_LOG_CMD_CNF, dmf_app3_5g_sa_get_nw_log_cnf_struct, app3_5g_sa_get_nw_log_cnf_struct)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+            DMF_FIELD_STRING(mcc, 5)
+            DMF_FIELD_STRING(mnc, 5)
+            DMF_FIELD_VAR(kal_int32,endcCapability, UNUSED_FIELD)
+            DMF_FIELD_VAR(kal_int32,endcConnectionStatus, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app3_5g_sa_get_nw_log_cnf_struct)
+        
+        //cause 2412
+        DMF_CMD_CNF(DMF_APP3_NR_SA_API_VERSION_CMD_CNF, dmf_app3_nr_sa_api_version_cnf_struct, app3_nr_sa_api_version_cnf_struct)
+            DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)    
+            DMF_FIELD_VAR(kal_int32,api_version, UNUSED_FIELD)
+        DMF_CMD_CNF_END(dmf_app3_nr_sa_api_version_cnf_struct)
+        
+	#endif 
+
+    // Define URC structure
+    #ifdef DMF_URC_IND_SEC
+
+	#endif 
+
+DMF_APP_END
+#endif //for __DMF_TC01__
+
+#ifdef __DMF_OP01_NW_KPI__
+DMF_APP(5)
+
+    #ifdef DMF_CMD_REQ_SEC
+    DMF_CMD_REQ(dmf_kpi_app_cmd_req_struct, kpi_app_cmd_req)
+        DMF_FIELD_VAR(kal_uint32, urc_query, 2000)
+        DMF_FIELD_VAR(kal_uint32, group_id, 2000)
+        DMF_FIELD_VAR(kal_uint32, kpi_id, 2000)
+    DMF_CMD_REQ_END(dmf_kpi_app_cmd_req_struct)
+    #endif 
+
+
+    #ifdef DMF_URC_IND_SEC
+	DMF_URC_IND(DMF_KPI_LTE_ATTACH_URC_IND, dmf_kpi_lte_attach_urc_ind_struct, kpi_lte_eps_attach_urc_ind)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, reported_event, UNUSED_FIELD)
+		DMF_FIELD_STRING(plmnid, 7)
+		DMF_FIELD_VAR(kal_uint16, tac_lac, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)	 
+		DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, attach_rej_cause, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_kpi_lte_attach_urc_ind_struct)
+
+	DMF_URC_IND(DMF_KPI_EPS_BEARER_URC_IND, dmf_kpi_eps_bearer_urc_ind_struct, kpi_eps_bearer_urc_ind)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, reported_event, UNUSED_FIELD)
+		DMF_FIELD_STRING(plmnid, 7) 
+		DMF_FIELD_VAR(kal_uint16, tac_lac, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)	 
+		DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint8, ebi, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, esm_reject_cause, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_kpi_eps_bearer_urc_ind_struct) 
+
+
+	DMF_URC_IND(DMF_KPI_SRVCC_URC_IND, dmf_kpi_srvcc_urc_ind_struct, kpi_srvcc_urc_ind)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, reported_event, UNUSED_FIELD)
+		DMF_FIELD_STRING(plmnid, 7) 
+		DMF_FIELD_VAR(kal_uint16, tac_lac, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)	 
+		DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, fail_cause, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_kpi_srvcc_urc_ind_struct) 
+
+	DMF_URC_IND(DMF_KPI_IMS_REG_URC_IND, dmf_kpi_ims_reg_urc_ind_struct, kpi_ims_reg_urc_ind)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, reported_event, UNUSED_FIELD)
+		DMF_FIELD_STRING(plmnid, 7) 
+		DMF_FIELD_VAR(kal_uint16, tac_lac, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)	 
+		DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint8, sip_msg_type,UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint16, sip_method, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, sip_resp_code,UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_kpi_ims_reg_urc_ind_struct)
+
+	DMF_URC_IND(DMF_KPI_VOLTE_CALL_DROP_URC_IND, dmf_kpi_volte_call_drop_urc_ind_struct, kpi_volte_call_drop_urc_ind)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, reported_event, UNUSED_FIELD)
+		DMF_FIELD_STRING(plmnid, 7) 
+		DMF_FIELD_VAR(kal_uint16, tac_lac, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)	 
+		DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint8, sip_msg_type, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint16, sip_method, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, sip_resp_code, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, fail_cause, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_kpi_volte_call_drop_urc_ind_struct) 
+
+
+	DMF_URC_IND(DMF_KPI_MO_VOLTE_CALL_URC_IND, dmf_kpi_mo_volte_call_urc_ind_struct, kpi_mo_volte_call_urc_ind)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, reported_event, UNUSED_FIELD)
+		DMF_FIELD_STRING(plmnid, 7) 
+		DMF_FIELD_VAR(kal_uint16, tac_lac, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)	 
+		DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint8, sip_msg_type, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint16, sip_method, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, sip_resp_code, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, fail_cause, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint8, call_id, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_kpi_mo_volte_call_urc_ind_struct) 
+
+	DMF_URC_IND(DMF_KPI_MT_VOLTE_CALL_URC_IND, dmf_kpi_mt_volte_call_urc_ind_struct, kpi_mt_volte_call_urc_ind)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, reported_event, UNUSED_FIELD)
+		DMF_FIELD_STRING(plmnid, 7) 
+		DMF_FIELD_VAR(kal_uint16, tac_lac, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)	 
+		DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint8, sip_msg_type, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint16, sip_method, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, sip_resp_code, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, fail_cause, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint8, call_id, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_kpi_mt_volte_call_urc_ind_struct)
+	
+	DMF_URC_IND(DMF_KPI_TAU_URC_IND, dmf_kpi_tau_urc_ind_struct, kpi_tau_urc_ind)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, reported_event, UNUSED_FIELD)
+		DMF_FIELD_STRING(plmnid, 7)
+		DMF_FIELD_VAR(kal_uint16, tac_lac, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)	 
+		DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, tau_rej_cause, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_kpi_tau_urc_ind_struct)
+	
+	DMF_URC_IND(DMF_KPI_MO_CSFB_URC_IND, dmf_kpi_mo_csfb_urc_ind_struct, kpi_mo_csfb_urc_ind)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, reported_event, UNUSED_FIELD)
+		DMF_FIELD_STRING(plmnid, 7)
+		DMF_FIELD_VAR(kal_uint16, tac_lac, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)	 
+		DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint16, fail_cause, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_kpi_mo_csfb_urc_ind_struct)
+
+	DMF_URC_IND(DMF_KPI_MT_CSFB_URC_IND, dmf_kpi_mt_csfb_urc_ind_struct, kpi_mt_csfb_urc_ind)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, reported_event, UNUSED_FIELD)
+		DMF_FIELD_STRING(plmnid, 7)
+		DMF_FIELD_VAR(kal_uint16, tac_lac, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)	 
+		DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint16, fail_cause, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_kpi_mt_csfb_urc_ind_struct)
+
+	DMF_URC_IND(DMF_KPI_MO_SMS_OVER_SGS_URC_IND, dmf_kpi_mo_sms_over_sgs_urc_ind_struct, kpi_mo_sms_over_sgs_urc_ind)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, reported_event, UNUSED_FIELD)
+		DMF_FIELD_STRING(plmnid, 7)
+		DMF_FIELD_VAR(kal_uint16, tac_lac, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)	 
+		DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, fail_cause, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_kpi_mo_sms_over_sgs_urc_ind_struct)
+
+	DMF_URC_IND(DMF_KPI_MT_SMS_OVER_SGS_URC_IND, dmf_kpi_mt_sms_over_sgs_urc_ind_struct, kpi_mt_sms_over_sgs_urc_ind)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, reported_event, UNUSED_FIELD)
+		DMF_FIELD_STRING(plmnid, 7)
+		DMF_FIELD_VAR(kal_uint16, tac_lac, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)	 
+		DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, fail_cause, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_kpi_mt_sms_over_sgs_urc_ind_struct)
+	
+	DMF_URC_IND(DMF_KPI_MO_SMS_OVER_IMS_URC_IND, dmf_kpi_mo_sms_over_ims_urc_ind_struct, kpi_mo_sms_over_ims_urc_ind)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, reported_event, UNUSED_FIELD)
+		DMF_FIELD_STRING(plmnid, 7)
+		DMF_FIELD_VAR(kal_uint16, tac_lac, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)	 
+		DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, fail_cause, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_kpi_mo_sms_over_ims_urc_ind_struct)
+
+	DMF_URC_IND(DMF_KPI_MT_SMS_OVER_IMS_URC_IND, dmf_kpi_mt_sms_over_ims_urc_ind_struct, kpi_mt_sms_over_ims_urc_ind)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, reported_event, UNUSED_FIELD)
+		DMF_FIELD_STRING(plmnid, 7)
+		DMF_FIELD_VAR(kal_uint16, tac_lac, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)	 
+		DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, fail_cause, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_kpi_mt_sms_over_ims_urc_ind_struct)
+	
+	DMF_URC_IND(DMF_KPI_ADD_SCG_URC_IND, dmf_kpi_add_scg_urc_ind_struct, kpi_add_scg_urc_ind)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, reported_event, UNUSED_FIELD)
+		DMF_FIELD_STRING(plmnid, 7)
+		DMF_FIELD_VAR(kal_uint16, tac_lac, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, cell_id, UNUSED_FIELD)	 
+		DMF_FIELD_VAR(kal_uint8, rat, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint8, fail_cause, UNUSED_FIELD)
+	DMF_URC_IND_END(dmf_kpi_add_scg_urc_ind_struct)
+	#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+	#endif
+    #endif	/* DMF_URC_IND_SEC */
+
+    #ifdef DMF_CMD_CNF_SEC
+	#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+	#endif	
+	DMF_CMD_CNF(DMF_KPI_URC_SWITCH_STATUS_CNF, dmf_kpi_urc_switch_status_cnf_struct, kpi_urc_switch_status_cnf)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, urc_on_kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_bool, urc_on_kpi_id_urc_status, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, urc_off_kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_bool, urc_off_kpi_id_urc_status, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_kpi_urc_switch_status_cnf_struct)
+	
+	DMF_CMD_CNF(DMF_KPI_LTE_ATTACH_COUNT_CNF, dmf_kpi_lte_attach_count_cnf_struct, lte_eps_attach_count_cnf)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lte_attach_request_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lte_attach_success_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lte_attach_fail_count, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_kpi_lte_attach_count_cnf_struct)
+
+	DMF_CMD_CNF(DMF_KPI_ACT_DEFAULT_EPS_BEARER_COUNT_CNF, dmf_kpi_act_default_eps_bearer_count_cnf_struct, kpi_act_default_eps_bearer_count_cnf)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, esm_act_default_eps_bearer_req_rcv_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, esm_act_default_eps_bearer_accept_sent_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, esm_act_default_eps_bearer_reject_sent_count, UNUSED_FIELD)	 
+	DMF_CMD_CNF_END(dmf_kpi_act_default_eps_bearer_count_cnf_struct)
+
+	DMF_CMD_CNF(DMF_KPI_SRVCC_COUNT_CNF, dmf_kpi_srvcc_count_cnf_struct, kpi_srvcc_count_cnf)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, srvcc_ho_req_rcv_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, srvcc_ho_succ_sent_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, srvcc_ho_fail_count, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_kpi_srvcc_count_cnf_struct)
+
+
+	DMF_CMD_CNF(DMF_KPI_IMS_REG_COUNT_CNF, dmf_kpi_ims_reg_count_cnf_struct, kpi_ims_reg_count_cnf)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, initial_reg_req_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, initial_reg_req_with_401_rsp_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, initial_reg_req_with_auc_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, initial_reg_success_count, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_kpi_ims_reg_count_cnf_struct)
+
+	DMF_CMD_CNF(DMF_KPI_VOLTE_CALL_DROP_COUNT_CNF, dmf_kpi_volte_call_drop_count_cnf_struct, kpi_volte_call_drop_count_cnf)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, initial_rsp_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, final_rsp_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, initial_call_drop_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, final_call_drop_count, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_kpi_volte_call_drop_count_cnf_struct)
+
+	DMF_CMD_CNF(DMF_KPI_MO_VOLTE_CALL_COUNT_CNF, dmf_kpi_mo_volte_call_count_cnf_struct, kpi_mo_volte_call_count_cnf)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, initial_mo_call_req_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, initial_mo_call_connect_to_nw_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mo_call_early_release_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mo_call_with_403_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mo_call_with_486_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mo_call_with_480_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mo_call_with_484_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mo_call_with_600_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mo_call_with_604_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mo_call_with_487_count, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_kpi_mo_volte_call_count_cnf_struct)
+
+
+	DMF_CMD_CNF(DMF_KPI_MT_VOLTE_CALL_COUNT_CNF, dmf_kpi_mt_volte_call_count_cnf_struct, kpi_mt_volte_call_count_cnf)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, initial_mt_call_req_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mt_call_connect_success_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mt_call_early_release_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mt_call_with_486_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mt_call_with_403_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mt_call_with_480_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mt_call_with_484_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mt_call_with_600_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mt_call_with_604_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mt_call_with_487_count, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_kpi_mt_volte_call_count_cnf_struct)
+	
+	DMF_CMD_CNF(DMF_KPI_TAU_COUNT_CNF, dmf_kpi_tau_count_cnf_struct, tau_count_cnf)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, tau_request_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, tau_success_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, tau_fail_count, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_kpi_tau_count_cnf_struct)
+	
+	DMF_CMD_CNF(DMF_KPI_MO_CSFB_COUNT_CNF, dmf_kpi_mo_csfb_count_cnf_struct, mo_csfb_count_cnf)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mo_csfb_ext_sr_req_snd_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mo_csfb_success_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mo_csfb_fail_count, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_kpi_mo_csfb_count_cnf_struct)
+
+	DMF_CMD_CNF(DMF_KPI_MT_CSFB_COUNT_CNF, dmf_kpi_mt_csfb_count_cnf_struct, mt_csfb_count_cnf)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mt_csfb_cs_paging_rcv_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mt_csfb_cs_service_notification_rcv_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mt_csfb_success_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, mt_csfb_fail_count, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_kpi_mt_csfb_count_cnf_struct)
+
+	DMF_CMD_CNF(DMF_KPI_MO_SMS_OVER_SGS_COUNT_CNF, dmf_kpi_mo_sms_over_sgs_count_cnf_struct, mo_sms_over_sgs_count_cnf)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, sms_over_sgs_mo_sms_start_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, sms_over_sgs_mo_sms_succ_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, sms_over_sgs_mo_sms_fail_count, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_kpi_mo_sms_over_sgs_count_cnf_struct)
+
+	DMF_CMD_CNF(DMF_KPI_MT_SMS_OVER_SGS_COUNT_CNF, dmf_kpi_mt_sms_over_sgs_count_cnf_struct, mt_sms_over_sgs_count_cnf)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, sms_over_sgs_mt_sms_start_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, sms_over_sgs_mt_sms_succ_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, sms_over_sgs_mt_sms_fail_count, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_kpi_mt_sms_over_sgs_count_cnf_struct)
+
+	DMF_CMD_CNF(DMF_KPI_MO_SMS_OVER_IMS_COUNT_CNF, dmf_kpi_mo_sms_over_ims_count_cnf_struct, mo_sms_over_ims_count_cnf)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, sms_over_ims_mo_sms_start_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, sms_over_ims_mo_sms_succ_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, sms_over_ims_mo_sms_fail_count, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_kpi_mo_sms_over_ims_count_cnf_struct)
+
+	DMF_CMD_CNF(DMF_KPI_MT_SMS_OVER_IMS_COUNT_CNF, dmf_kpi_mt_sms_over_ims_count_cnf_struct, mt_sms_over_ims_count_cnf)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, sms_over_ims_mt_sms_start_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, sms_over_ims_mt_sms_succ_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, sms_over_ims_mt_sms_fail_count, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_kpi_mt_sms_over_ims_count_cnf_struct)
+		
+	DMF_CMD_CNF(DMF_KPI_ADD_SCG_COUNT_CNF, dmf_kpi_add_scg_count_cnf_struct, add_scg_count_cnf)
+		DMF_FIELD_VAR(kal_uint32, group_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, kpi_id, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, add_scg_req_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, add_scg_succ_count, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, add_scg_fail_count, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_kpi_add_scg_count_cnf_struct)
+    #endif
+
+DMF_APP_END
+#endif
+
+#ifdef __DMF_THIN_MODEM__
+DMF_APP(6)
+
+    // Define CMD_REQ structure
+#ifdef DMF_CMD_REQ_SEC
+	DMF_CMD_REQ(dmf_app6_cmd_req_struct, app6_cmd)
+		DMF_FIELD_VAR(kal_uint32, cause, 10000)
+		DMF_FIELD_VAR_O(kal_uint32, param_1, 10000)
+		DMF_FIELD_VAR_O(kal_uint32, param_2, 10000)				
+	DMF_CMD_REQ_END(dmf_app6_cmd_req_struct)
+#endif
+    
+#ifdef DMF_CMD_CNF_SEC
+		// for DMF_THIN_MODEM_CAUSE_NR_RB_NUM
+	DMF_CMD_CNF(DMF_APP6_NR_RB_NUM_CNF, dmf_app6_nr_rb_num_cnf_struct, dmf_app6_nr_rb_num_cnf)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, pcc_ul_rb, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, pcc_dl_rb, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, scc_rb, 16)
+	DMF_CMD_CNF_END(dmf_app6_nr_rb_num_cnf_struct)     
+	
+	// for DMF_THIN_MODEM_CAUSE_MIMO_INFO
+	DMF_CMD_CNF(DMF_APP6_MIMO_INFO_CNF, dmf_app6_mimo_info_cnf_struct, dmf_app6_mimo_info_cnf)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, act, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, pcc_ul_layer, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, pcc_dl_layer, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, scc_layer, 24)
+	DMF_CMD_CNF_END(dmf_app6_mimo_info_cnf_struct)     
+	
+	// for DMF_THIN_MODEM_CAUSE_CA_INFO
+	DMF_CMD_CNF(DMF_APP6_CA_INFO_CNF, dmf_app6_ca_info_cnf_struct, dmf_app6_ca_info_cnf)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lte_dl_cc_num, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, lte_dl_cc_list, 8*8)
+		DMF_FIELD_VAR(kal_uint32, lte_ul_cc_num, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, lte_ul_cc_list, 8*6)
+		DMF_FIELD_VAR(kal_uint32, nr_dl_cc_num, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, nr_dl_cc_list, 8*8)
+		DMF_FIELD_VAR(kal_uint32, nr_ul_cc_num, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, nr_ul_cc_list, 8*6)
+	DMF_CMD_CNF_END(dmf_app6_ca_info_cnf_struct)     
+	
+	// for DMF_THIN_MODEM_CAUSE_CELL_INFO
+	DMF_CMD_CNF(DMF_APP6_CELL_INFO_CNF, dmf_app6_cell_info_cnf_struct, dmf_app6_cell_info_cnf)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, act, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lte_cc_num, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, nr_cc_num, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_app6_cell_info_cnf_struct)
+	
+	// for DMF_THIN_MODEM_CAUSE_WCDMA_CELL_INFO
+	DMF_CMD_CNF(DMF_APP6_WCDMA_CELL_INFO_CNF, dmf_app6_wcdma_cell_info_cnf_struct, dmf_app6_wcdma_cell_info_cnf)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, band, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, pci, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, uarfcn, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, dl_bandwidth, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, ul_bandwidth, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_app6_wcdma_cell_info_cnf_struct)
+	
+	// for DMF_THIN_MODEM_CAUSE_LTE_NR_PCELL_INFO
+	DMF_CMD_CNF(DMF_APP6_LTE_NR_PCELL_INFO_CNF, dmf_app6_lte_nr_pcell_info_cnf_struct, dmf_app6_lte_nr_pcell_info_cnf)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+		DMF_FIELD_STRING(pcc_name, 16)
+		DMF_FIELD_VAR(kal_uint32, band, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, pci, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, arfcn, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, dl_bandwidth, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, ul_bandwidth, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, dl_mimo, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, ul_mimo, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, dl_modulation, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, ul_modulation, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, dl_rb, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, ul_rb, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, dl_mcs_index, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, ul_mcs_index, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, pucch_tx_pwr, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, dl_tm, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, ul_tm, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, pusch_tx_pwr, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, dl_tput, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, ul_tput, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, dl_bwp_bandwidth, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, ul_bwp_bandwidth, UNUSED_FIELD)
+	DMF_CMD_CNF_END(dmf_app6_lte_nr_pcell_info_cnf_struct)
+
+	// for DMF_THIN_MODEM_CAUSE_LTE_NR_SCELL_INFO
+	DMF_CMD_CNF(DMF_APP6_LTE_NR_SCELL_INFO_CNF, dmf_app6_lte_nr_scell_info_cnf_struct, dmf_app6_lte_nr_scell_info_cnf)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+		DMF_FIELD_STRING(scc_name, 16)
+		DMF_FIELD_VAR(kal_uint32, scc_state, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, ul_config, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, band, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, pci, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, arfcn, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, dl_bandwidth, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, ul_bandwidth, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, dl_mimo, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, ul_mimo, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, dl_modulation, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, ul_modulation, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, dl_rb, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, ul_rb, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, dl_mcs_index, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, ul_mcs_index, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, pucch_tx_pwr, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, dl_tm, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, ul_tm, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_int32, pusch_tx_pwr, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, dl_tput, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, ul_tput, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, dl_bwp_bandwidth, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, ul_bwp_bandwidth, UNUSED_FIELD)		
+	DMF_CMD_CNF_END(dmf_app6_lte_nr_scell_info_cnf_struct) 	  	 	
+
+	// for DMF_THIN_MODEM_CAUSE_NEIGH_MEAS_INFO
+    DMF_CMD_CNF(DMF_APP6_NEIGH_MEAS_INFO_CNF, dmf_app6_neigh_meas_info_cnf_struct, dmf_app6_neigh_meas_info_cnf)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, num_of_cell, UNUSED_FIELD)
+        DMF_FIELD_VAR_ARRAY_D(kal_uint32, neigh_cell_list, 6*45)
+    DMF_CMD_CNF_END(dmf_app6_neigh_meas_info_cnf_struct) 	  	 	
+
+    // for DMF_THIN_MODEM_CAUSE_RX_RSSI_INFO
+    DMF_CMD_CNF(DMF_APP6_RX_RSSI_INFO_CNF, dmf_app6_rx_rssi_info_cnf_struct, dmf_app6_rx_rssi_info_cnf)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, act, UNUSED_FIELD)
+        DMF_FIELD_VAR_ARRAY_D(kal_int16, rx_rssi_list, 8)
+    DMF_CMD_CNF_END(dmf_app6_rx_rssi_info_cnf_struct)
+
+    // for DMF_THIN_MODEM_CAUSE_RX_SIGNAL_QUALITY_INFO
+    DMF_CMD_CNF(DMF_APP6_RX_SIGNAL_QUALITY_INFO_CNF, dmf_app6_rx_signal_quality_info_cnf_struct, dmf_app6_rx_signal_quality_info_cnf)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, lte_cc_num, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, nr_cc_num, UNUSED_FIELD)
+    DMF_CMD_CNF_END(dmf_app6_rx_signal_quality_info_cnf_struct)
+
+    // for DMF_THIN_MODEM_CAUSE_LTE_NR_RX_SIGNAL_QUALITY_INFO
+    DMF_CMD_CNF(DMF_APP6_LTE_NR_RX_SIGNAL_QUALITY_INFO_CNF, dmf_app6_lte_nr_rx_signal_quality_info_cnf_struct, dmf_app6_lte_nr_rx_signal_quality_info_cnf)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(cc_rx_index_name, 16)
+        DMF_FIELD_VAR(kal_int32, rx_path_rsrp, UNUSED_FIELD)
+    DMF_CMD_CNF_END(dmf_app6_lte_nr_rx_signal_quality_info_cnf_struct)
+
+    // for DMF_THIN_MODEM_CAUSE_OTA_MSG_INFO
+    DMF_CMD_CNF(DMF_APP6_OTA_MSG_CNF, dmf_app6_ota_msg_cnf_struct, dmf_app6_ota_msg_cnf)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, ota_type, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, act, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, total_len, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, offset, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, segment_len, UNUSED_FIELD)
+        DMF_FIELD_STRING(segment_raw_data, OTA_MSG_SEGMENT_MAX_LEN)
+    DMF_CMD_CNF_END(dmf_app6_ota_msg_cnf_struct)
+
+    // for DMF_THIN_MODEM_CAUSE_CA_MEAS_INFO
+    DMF_CMD_CNF(DMF_APP6_CA_MEAS_INFO_CNF, dmf_app6_ca_meas_info_cnf_struct, dmf_app6_ca_meas_info_cnf)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, lte_cc_num, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, nr_cc_num, UNUSED_FIELD)
+    DMF_CMD_CNF_END(dmf_app6_ca_meas_info_cnf_struct)
+
+    // for DMF_THIN_MODEM_CAUSE_LTE_CA_MEAS_INFO
+    DMF_CMD_CNF(DMF_APP6_LTE_CA_MEAS_INFO_CNF, dmf_app6_lte_ca_meas_info_cnf_struct, dmf_app6_lte_ca_meas_info_cnf)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(cc_name, 16)
+        DMF_FIELD_VAR(kal_uint32, path_loss, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, rank, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, serv_rsrp, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, serv_rsrq, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, serv_snr, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, serv_rssi, UNUSED_FIELD)
+    DMF_CMD_CNF_END(dmf_app6_lte_ca_meas_info_cnf_struct)
+
+    // for DMF_THIN_MODEM_CAUSE_NR_CA_MEAS_INFO
+    DMF_CMD_CNF(DMF_APP6_NR_CA_MEAS_INFO_CNF, dmf_app6_nr_ca_meas_info_cnf_struct, dmf_app6_nr_ca_meas_info_cnf)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_STRING(cc_name, 16)
+        DMF_FIELD_VAR(kal_uint32, path_loss, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, rank, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, brsrp, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, serv_rsrp, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, serv_rsrq, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, ssb_best_beam_id, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, ssb_snr_avg, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, ssb_rsrp_avg, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, trs_snr_avg, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, trs_rsrp_avg, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, serv_snr, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, serv_rssi, UNUSED_FIELD)
+    DMF_CMD_CNF_END(dmf_app6_nr_ca_meas_info_cnf_struct)
+
+    // for DMF_THIN_MODEM_CAUSE_THROUGHPUT_INFO
+    DMF_CMD_CNF(DMF_APP6_THROUGHPUT_INFO_CNF, dmf_app6_throughput_info_cnf_struct, dmf_app6_throughput_info_cnf)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, pdsch_tput, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, pdsch_peak_tput, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, pusch_tput, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, pusch_peak_tput, UNUSED_FIELD)
+    DMF_CMD_CNF_END(dmf_app6_throughput_info_cnf_struct)
+
+    // for DMF_THIN_MODEM_CAUSE_PDCP_BYTES_INFO
+    DMF_CMD_CNF(DMF_APP6_PDCP_BYTES_INFO_CNF, dmf_app6_pdcp_bytes_info_cnf_struct, dmf_app6_pdcp_bytes_info_cnf)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, tx_pdcp_bytes, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, rx_pdcp_bytes, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, tx_pdcp_bytes_total, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, rx_pdcp_bytes_total, UNUSED_FIELD)
+    DMF_CMD_CNF_END(dmf_app6_pdcp_bytes_info_cnf_struct)
+
+    // for DMF_THIN_MODEM_CAUSE_RACH_COUNT_INFO
+    DMF_CMD_CNF(DMF_APP6_RACH_COUNT_INFO_CNF, dmf_app6_rach_count_info_cnf_struct, dmf_app6_rach_count_info_cnf)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, attemp_count, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, fail_count, UNUSED_FIELD)
+    DMF_CMD_CNF_END(dmf_app6_rach_count_info_cnf_struct)
+            
+    // for DMF_THIN_MODEM_CAUSE_HANDOVER_COUNT_INFO
+    DMF_CMD_CNF(DMF_APP6_HANDOVER_COUNT_INFO_CNF, dmf_app6_handover_count_info_cnf_struct, dmf_app6_handover_count_info_cnf)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, handover_attempt_count, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, handover_failure_count, UNUSED_FIELD)
+    DMF_CMD_CNF_END(dmf_app6_handover_count_info_cnf_struct)
+
+    // for DMF_THIN_MODEM_CAUSE_RRC_COUNT_INFO
+    DMF_CMD_CNF(DMF_APP6_RRC_COUNT_INFO_CNF, dmf_app6_rrc_count_info_cnf_struct, dmf_app6_rrc_count_info_cnf)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, rrc_connect_request_count, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, rrc_connect_fail_count, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, rrc_connect_time, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, radio_link_failure_count, UNUSED_FIELD)
+    DMF_CMD_CNF_END(dmf_app6_rrc_count_info_cnf_struct)
+
+    // for DMF_THIN_MODEM_CAUSE_SCG_COUNT_INFO
+    DMF_CMD_CNF(DMF_APP6_SCG_COUNT_INFO_CNF, dmf_app6_scg_count_info_cnf_struct, dmf_app6_scg_count_info_cnf)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, nr_scg_change_count, UNUSED_FIELD)
+        DMF_FIELD_VAR_LONG(kal_uint64, nr_scg_change_failure_count, UNUSED_FIELD)
+    DMF_CMD_CNF_END(dmf_app6_scg_count_info_cnf_struct)            
+#endif
+
+#ifdef DMF_URC_IND_SEC
+	// for DMF_THIN_MODEM_CAUSE_CA_URC
+	DMF_URC_IND(DMF_APP6_CA_INFO_IND, dmf_app6_ca_info_ind_struct, dmf_app6_ca_info_ind)
+		DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+		DMF_FIELD_VAR(kal_uint32, lte_dl_cc_num, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, lte_dl_cc_list, 8*8)
+		DMF_FIELD_VAR(kal_uint32, lte_ul_cc_num, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, lte_ul_cc_list, 8*6)
+		DMF_FIELD_VAR(kal_uint32, nr_dl_cc_num, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, nr_dl_cc_list, 8*8)
+		DMF_FIELD_VAR(kal_uint32, nr_ul_cc_num, UNUSED_FIELD)
+		DMF_FIELD_VAR_ARRAY_D(kal_uint32, nr_ul_cc_list, 8*6)
+	DMF_URC_IND_END(dmf_app6_ca_info_ind_struct)
+
+    // for DMF_THIN_MODEM_CAUSE_NR_RSRP_URC
+    DMF_URC_IND(DMF_APP6_NR_RSRP_INFO_IND, dmf_app6_nr_rsrp_info_ind_struct, dmf_app6_nr_rsrp_info_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_int32, rsrp, UNUSED_FIELD)
+    DMF_URC_IND_END(dmf_app6_nr_rsrp_info_ind_struct)
+
+    // for DMF_THIN_MODEM_CAUSE_NR_IBLER_URC
+    DMF_URC_IND(DMF_APP6_NR_IBLER_INFO_IND, dmf_app6_nr_ibler_info_ind_struct, dmf_app6_nr_ibler_info_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, channel_type, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, cc_num, UNUSED_FIELD)
+        DMF_FIELD_VAR_ARRAY_D(kal_uint32, ibler_list, 8)
+    DMF_URC_IND_END(dmf_app6_nr_ibler_info_ind_struct)
+#endif    
+DMF_APP_END
+#endif
+
+#ifdef DMF_CUSTOM_SEC
+#include "custom_dmf_app_cmd_def.h"
+#endif
+
+#undef DMF_APP
+#undef DMF_APP_END
+#undef DMF_CMD_REQ
+#undef DMF_CMD_REQ_END
+#undef DMF_CMD_CNF
+#undef DMF_CMD_CNF_END
+#undef DMF_URC_IND
+#undef DMF_URC_IND_END
+#undef DMF_FIELD_VAR
+#undef DMF_FIELD_VAR_LONG
+#undef DMF_FIELD_VAR_O
+#undef DMF_FIELD_VAR_ARRAY
+#undef DMF_FIELD_VAR_ARRAY_D
+#undef DMF_FIELD_STRING
+#undef DMF_CMD_REQ_SEC
+#undef DMF_CMD_CNF_SEC
+#undef DMF_URC_IND_SEC
+#undef DMF_CUSTOM_SEC
+#undef UNUSED_FIELD
diff --git a/mcu/interface/protocol/general/atp_dmf_struct.h b/mcu/interface/protocol/general/atp_dmf_struct.h
new file mode 100644
index 0000000..818031f
--- /dev/null
+++ b/mcu/interface/protocol/general/atp_dmf_struct.h
@@ -0,0 +1,221 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *  atp_dmf_struct.h
+ *
+ *
+ * Description:
+ * ------------
+ *  This file defines message structures of ATP_DMF interface
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ ****************************************************************************/
+#ifndef _ATP_DMF_STRUCT_H_
+#define _ATP_DMF_STRUCT_H_
+
+#include "atp_public_defs.h"
+#include "ims_interface_md.h"
+
+#define DMF_APMAC_LEN 18 
+
+// MSG_ID_ATP_MT_DMF_ECPI_IND
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8               call_id;
+    kal_uint8               ecpi_type;
+    ims_ecpi_info_struct    ecpi_info;
+} atp_mt_dmf_ecpi_ind_struct;
+
+typedef enum 
+{  
+    ATP_MT_DMF_CMD_CNF_TYPE_NULL = 0,
+
+    #define DMF_CMD_CNF(CNF_TYPE, STRUCT_NAME, PARA_NAME)   CNF_TYPE,
+    #define DMF_CUSTOM_SEC
+    #include "atp_dmf_cmd_def.h"
+    
+    ATP_MT_DMF_CMD_CNF_TYPE_MAX,
+} atp_mt_dmf_cmd_cnf_type_enum;
+
+typedef enum 
+{  
+    ATP_MT_DMF_URC_IND_TYPE_NULL = 0,
+
+    #define DMF_URC_IND(IND_TYPE, STRUCT_NAME, PARA_NAME)   IND_TYPE,
+    #define DMF_CUSTOM_SEC
+    #include "atp_dmf_cmd_def.h"
+    
+    ATP_MT_DMF_URC_IND_TYPE_MAX,
+} atp_mt_dmf_urc_ind_type_enum;
+
+
+/*****************************
+ *Define REQ structure here
+ ******************************/
+#define DMF_CMD_REQ(STRUCT_NAME, PARA_NAME) \
+typedef struct \
+{
+    #define DMF_FIELD_VAR(VAR_TYPE, VAR_NAME, MAX_VAL) VAR_TYPE    VAR_NAME;
+    #define DMF_FIELD_VAR_O(VAR_TYPE, VAR_NAME, MAX_VAL) kal_bool is_##VAR_NAME##_present;\
+                                                VAR_TYPE    VAR_NAME;
+    #define DMF_FIELD_VAR_ARRAY(VAR_TYPE, VAR_NAME, LENGTH) VAR_TYPE    VAR_NAME[LENGTH];
+    #define DMF_FIELD_VAR_ARRAY_D(VAR_TYPE, VAR_NAME, LENGTH) kal_uint16  VAR_NAME##_cnt; \
+                                                VAR_TYPE    VAR_NAME[LENGTH];
+    #define DMF_FIELD_STRING(STR_NAME, LENGTH)  kal_uint16  STR_NAME##_len; \
+                                                kal_char    STR_NAME[LENGTH+1];
+
+#define DMF_CMD_REQ_END(STRUCT_NAME) \
+} STRUCT_NAME;
+
+#define DMF_CMD_REQ_SEC
+#define DMF_CUSTOM_SEC
+#include "atp_dmf_cmd_def.h"
+
+
+
+/*****************************
+ *Define CNF structure here
+ ******************************/
+#define DMF_CMD_CNF(RES_TYPE, STRUCT_NAME, PARA_NAME) \
+typedef struct \
+{
+
+    #define DMF_FIELD_VAR(VAR_TYPE, VAR_NAME, MAX_VAL) VAR_TYPE    VAR_NAME;
+	#define DMF_FIELD_VAR_LONG(VAR_TYPE, VAR_NAME, MAX_VAL) VAR_TYPE    VAR_NAME;
+    #define DMF_FIELD_VAR_ARRAY(VAR_TYPE, VAR_NAME, LENGTH) VAR_TYPE    VAR_NAME[LENGTH];
+    #define DMF_FIELD_VAR_ARRAY_D(VAR_TYPE, VAR_NAME, LENGTH) kal_uint16  VAR_NAME##_cnt; \
+                                                VAR_TYPE    VAR_NAME[LENGTH];
+    #define DMF_FIELD_STRING(STR_NAME, LENGTH)  kal_uint16  STR_NAME##_len; \
+                                                kal_char    STR_NAME[LENGTH+1];
+
+#define DMF_CMD_CNF_END(STRUCT_NAME) \
+} STRUCT_NAME;
+
+#define DMF_CMD_CNF_SEC
+#define DMF_CUSTOM_SEC
+#include "atp_dmf_cmd_def.h"
+
+
+
+/*****************************
+ *Define IND structure here
+ ******************************/
+#define DMF_URC_IND(IND_TYPE, STRUCT_NAME, PARA_NAME) \
+typedef struct \
+{
+
+    #define DMF_FIELD_VAR(VAR_TYPE, VAR_NAME, MAX_VAL) VAR_TYPE    VAR_NAME;
+    #define DMF_FIELD_VAR_LONG(VAR_TYPE, VAR_NAME, MAX_VAL) VAR_TYPE    VAR_NAME;
+    #define DMF_FIELD_VAR_ARRAY(VAR_TYPE, VAR_NAME, LENGTH) VAR_TYPE    VAR_NAME[LENGTH];
+    #define DMF_FIELD_VAR_ARRAY_D(VAR_TYPE, VAR_NAME, LENGTH) kal_uint16  VAR_NAME##_cnt; \
+                                                VAR_TYPE    VAR_NAME[LENGTH];
+    #define DMF_FIELD_STRING(STR_NAME, LENGTH)  kal_uint16  STR_NAME##_len; \
+                                                kal_char    STR_NAME[LENGTH+1];
+
+#define DMF_URC_IND_END(STRUCT_NAME) \
+} STRUCT_NAME;
+
+#define DMF_URC_IND_SEC
+#define DMF_CUSTOM_SEC
+#include "atp_dmf_cmd_def.h"
+
+
+
+typedef struct 
+{  
+    LOCAL_PARA_HDR 
+    kal_uint16 ch_id;    
+    kal_uint32 app_id;
+
+    union {
+        #define DMF_CMD_REQ(STRUCT_NAME, PARA_NAME)    STRUCT_NAME  PARA_NAME;
+        #define DMF_CUSTOM_SEC
+        #include "atp_dmf_cmd_def.h"
+        kal_uint32 reservered;
+    } p;
+} atp_mt_dmf_cmd_req_struct;
+
+
+typedef struct 
+{  
+    LOCAL_PARA_HDR 
+    kal_uint16 ch_id;
+    kal_uint32 app_id;
+    proxy_cmd_result_enum result;
+    atp_mt_dmf_cmd_cnf_type_enum cnf_type;
+
+    union {
+        #define DMF_CMD_CNF(RES_TYPE, STRUCT_NAME, PARA_NAME)    STRUCT_NAME  PARA_NAME;
+        #define DMF_CUSTOM_SEC
+        #include "atp_dmf_cmd_def.h"
+        kal_uint32 reservered;
+    } p;
+   
+} atp_mt_dmf_cmd_cnf_struct;
+
+
+typedef struct 
+{  
+    LOCAL_PARA_HDR 
+    kal_uint32 app_id;
+    atp_mt_dmf_urc_ind_type_enum ind_type;
+    
+    union {
+        #define DMF_URC_IND(IND_TYPE, STRUCT_NAME, PARA_NAME)    STRUCT_NAME  PARA_NAME;
+        #define DMF_CUSTOM_SEC
+        #include "atp_dmf_cmd_def.h"
+        kal_uint32 reservered;
+    } p;
+
+} atp_mt_dmf_urc_ind_struct;
+
+
+typedef struct 
+{  
+    LOCAL_PARA_HDR 
+    kal_uint8 apmac[DMF_APMAC_LEN];
+
+} atp_mt_dmf_wifiasc_req_struct;
+
+
+#endif /* _ATP_DMF_STRUCT_H_ */
diff --git a/mcu/interface/protocol/general/atp_public_defs.h b/mcu/interface/protocol/general/atp_public_defs.h
new file mode 100644
index 0000000..a431408
--- /dev/null
+++ b/mcu/interface/protocol/general/atp_public_defs.h
@@ -0,0 +1,773 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *  atp_public_defs.h
+ *
+ *
+ * Description:
+ * ------------
+ *  This file contains the public definitions of ATP
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef _ATP_PUBLIC_DEFS_H_
+#define _ATP_PUBLIC_DEFS_H_
+
+#include "global_def.h"
+#include "cmux_vp_num.h"
+#include "ps_public_enum.h"
+#include "msm_service.h"
+
+#ifdef __UE_SIMULATOR__
+#include "l4c2uegw_struct.h"
+#endif
+
+//CMUX and L5 have the same channel number
+#define ATP_L5_CHANNELS_NUM ((CMUX_VP_NUM_FOR_ATCI * MAX_SIM_NUM) + (CMUX_VP_NUM_FOR_ATCI_EX * MAX_SIM_NUM) + CMUX_VP_NUM_FOR_ATCI_CSD + CMUX_VP_NUM_FOR_ATCI_IMS + CMUX_VP_NUM_FOR_ATCI_IMS_SMS + CMUX_VP_NUM_FOR_NETIF_CONTROL)
+      
+typedef enum {
+    ATP_FIRST_CHANNEL,
+    /* channels mapped to ports between AP and MD */
+#ifdef __L5_SUPPORT__
+    #ifdef __CMUX_SUPPORT__
+            ATP_CMUX_CHANNELS_START =  ATP_FIRST_CHANNEL,
+            ATP_L5_CHANNELS_START = ATP_CMUX_CHANNELS_START,
+            ATP_CMUX_CHANNELS_END =  (ATP_CMUX_CHANNELS_START + (CMUX_VP_NUM_FOR_SINGLE_SIM * MAX_SIM_NUM) + CMUX_VPEX_TOTAL_NUM - 1),
+            ATP_L5_CHANNELS_END = ATP_CMUX_CHANNELS_END,
+    #else
+            ATP_L5_CHANNELS_START = ATP_FIRST_CHANNEL,
+            ATP_L5_CHANNELS_END = ATP_L5_CHANNELS_START + (ATP_L5_CHANNELS_NUM - 1),
+    #endif
+#else
+    #ifdef __CMUX_SUPPORT__
+            ATP_CMUX_CHANNELS_START =  ATP_FIRST_CHANNEL,
+            ATP_CMUX_CHANNELS_END =  (ATP_CMUX_CHANNELS_START + (CMUX_VP_NUM_FOR_SINGLE_SIM * MAX_SIM_NUM) + CMUX_VPEX_TOTAL_NUM - 1),
+    #endif
+#endif
+
+    /* channels for IMSP */
+//#if defined(__IMS_SUPPORT__)
+    ATP_IMS_CHANNEL_START,
+    ATP_IMS_CHANNEL_END = ATP_IMS_CHANNEL_START + 19, //MSP_MAX_TRANSACTION = 20, it must be the same with ATP_MAX_TRANSACTIONs
+//#endif
+
+    /* test channels per SIM for ELT inject AT command */
+    ATP_TST_CHANNEL,
+    ATP_TST_CHANNEL_END = ATP_TST_CHANNEL + MAX_SIM_NUM - 1,
+
+#ifdef __UE_SIMULATOR__
+    ATP_VMMI_CHANNEL_START,
+    ATP_VMMI_CHANNEL_END = ATP_VMMI_CHANNEL_START + (MAX_VMMI_SIM_NUM * MAX_VMMI_CHANNEL_NUM),
+#endif
+
+    ATP_EPDG_CHANNEL_START,
+	ATP_EPDG_CHANNEL_END = ATP_EPDG_CHANNEL_START + MAX_SIM_NUM - 1,
+    ATP_URC_EPDG_CHANNEL_START,
+	ATP_URC_EPDG_CHANNEL_END = ATP_URC_EPDG_CHANNEL_START + MAX_SIM_NUM - 1,
+
+    ATP_CHANNEL_NUMBER,
+
+    /* URC channel begin
+       below channels are representative for URC, no input/output queue
+     */
+    ATP_URC_CHANNEL,
+    ATP_URC2_CHANNEL,
+#ifdef __TC01_IMS_SUPPORT__
+    ATP_URC3_CHANNEL,
+#endif
+    ATP_URC_EPDG_CHANNEL,
+    ATP_URC4_CHANNEL,
+    ATP_URC_LAST_CHANNEL = ATP_URC4_CHANNEL,
+    /* URC channel end */
+
+    ATP_INVALID_CHANNEL = 0xff
+} atp_channel_enum; 
+
+// TODO: to replace MAX_DATA_QUEUE_LENGTH
+#if defined (__LONG_AT_CMD_SUPPORT__) || defined (__SMART_PHONE_MODEM__)
+#define ATP_MAX_DATA_QUEUE_LENGTH 2048
+#elif defined (__ULC_AT__)
+#define ATP_MAX_DATA_QUEUE_LENGTH 192
+#elif defined (__SLIM_AT__)
+#define ATP_MAX_DATA_QUEUE_LENGTH 350
+#else
+#define ATP_MAX_DATA_QUEUE_LENGTH 2048  
+#endif 
+
+// TODO: replace MAX_UART_LENGTH
+/* size of per UART read/write operation
+   i.e. the size of prepared buffer transfered to UART read API as an output parameter
+*/
+#define ATP_MAX_UART_LENGTH 128
+
+#define ATP_EXT_QUEUE_RESERVE_SPACE 20
+
+
+typedef enum
+{
+  PROXY_CMD_FAIL,
+  PROXY_CMD_SUCCESS,
+  PROXY_CMD_INTERMEDIATE_RSP,
+  PROXY_CMD_NO_CARRIER,
+  PROXY_CMD_BUSY,
+  PROXY_CMD_CONNECT,
+  PROXY_CMD_CONNECT_PS
+} proxy_cmd_result_enum;
+
+typedef enum
+{
+    ATP_WRONG_MODE = 0x00,
+
+    ATP_SET_OR_EXECUTE_MODE = 0x01,
+    ATP_READ_MODE = 0x02,
+    ATP_TEST_MODE = 0x04,
+    ATP_ACTIVE_MODE = 0x8,
+
+    ATP_URC_MODE = 0x10,            // URC command
+    ATP_INTERMEDIATE_MODE = 0x20,   // intermidate response
+    ATP_RESULT_MODE = 0x40,         // Command result
+
+    ATP_SET_OR_EXECUTE_OR_READ_MODE = ATP_SET_OR_EXECUTE_MODE | ATP_READ_MODE,
+    ATP_SET_OR_EXECUTE_OR_TEST_MODE = ATP_SET_OR_EXECUTE_MODE | ATP_TEST_MODE,
+    ATP_SET_OR_EXECUTE_OR_ACTIVE_MODE = ATP_SET_OR_EXECUTE_MODE | ATP_ACTIVE_MODE,
+    ATP_READ_OR_TEST_MODE = ATP_READ_MODE | ATP_TEST_MODE,
+    ATP_READ_OR_ACTIVE_MODE = ATP_READ_MODE | ATP_ACTIVE_MODE,
+    ATP_TEST_OR_ACTIVE_MODE = ATP_TEST_MODE | ATP_ACTIVE_MODE,
+
+    ATP_SET_OR_EXECUTE_OR_READ_OR_TEST_MODE = ATP_SET_OR_EXECUTE_MODE | ATP_READ_MODE | ATP_TEST_MODE,
+    ATP_SET_OR_EXECUTE_OR_READ_OR_ACTIVE_MODE = ATP_SET_OR_EXECUTE_MODE | ATP_READ_MODE | ATP_ACTIVE_MODE,
+    ATP_SET_OR_EXECUTE_OR_TEST_OR_ACTIVE_MODE = ATP_SET_OR_EXECUTE_MODE | ATP_TEST_MODE | ATP_ACTIVE_MODE,
+    ATP_READ_OR_TEST_OR_ACTIVE_MODE = ATP_READ_MODE | ATP_TEST_MODE | ATP_ACTIVE_MODE,
+
+    ATP_ALL_CMD_MODE = 0xff
+} atp_cmd_mode_enum;
+
+typedef enum
+{
+    ATP_CMD_CLASS_INVALID = 0,
+    ATP_CMD_CLASS_PREV,
+    ATP_CMD_CLASS_BASIC,
+    ATP_CMD_CLASS_EXTENDED,
+    ATP_CMD_CLASS_EXTENDED_CUSTOM,
+    ATP_CMD_CLASS_CUSTOM
+} atp_cmd_class_enum;
+
+
+// TODO: _Hong_ replace rmmi_error_report_mode_enum
+typedef enum
+{
+    ATP_SIMPLE_ERROR,
+    ATP_NUMERIC_ERROR,
+    ATP_TEXT_ERROR
+} atp_error_report_mode_enum;
+
+// TODO: _Hong_ replace rmmi_cmd_echo_enum
+typedef enum
+{
+    ATP_ECHO_OFF,
+    ATP_ECHO_ON
+} atp_cmd_echo_enum;
+
+// TODO: _Hong_ replace rmmi_result_code_format
+typedef enum
+{
+    ATP_NUM_PARTIAL_HEAD_TAIL,
+    ATP_VERBOSE_FULL_HEAD_TAIL
+} atp_result_code_format;
+
+// TODO: _Ian_ replace rmmi_result_code_suppress_enum
+typedef enum
+{
+    ATP_SUPPRESS_OFF,
+    ATP_SUPPRESS_ON
+} atp_result_code_suppress_enum;
+
+
+typedef enum
+{
+    ATP_PARSE_ERR_NO_FIELDS,
+    ATP_PARSE_ERR_INCOMPLETE_FIELD,
+    ATP_PARSE_ERR_INCOMPLETE_FIELD_WITH_SPACE,
+    ATP_PARSE_ERR_INCOMPLETE_FIELD_UNEXPECT_CHAR,
+    ATP_PARSE_ERR_REACH_MAX_FIELDS,
+} atp_cmd_parse_error_enum;
+
+
+
+// TODO: _Hong_ replace rmmi_rsp_type_enum
+typedef enum
+{
+    /* --- standard result codes, defined in V.25 Table1 --- */
+    ATP_RCODE_OK,                //0
+    ATP_RCODE_CONNECT,           //1
+    ATP_RCODE_RING,              //2
+    ATP_RCODE_NO_CARRIER,        //3
+    ATP_RCODE_ERROR,             //4
+    //there is no 5 in V.25 spec.
+    //ATP_RCODE_NO_DIALTONE = 6, //6
+    ATP_RCODE_BUSY = 7,          //7
+    //ATP_RCODE_NO_ANSWER = 8,   //8
+
+    /* --- MTK Proprietary result codes --- */
+    ATP_RCODE_CONNECT_PS = 100, //MAUI_02956467, mtk02285, for PS call
+} atp_rsp_type_enum;
+
+typedef enum
+{
+    ATP_SPACE = ' ',
+    ATP_EQUAL = '=',
+    ATP_COMMA = ',',
+    ATP_SEMICOLON = ';',
+    ATP_COLON = ':',
+    ATP_AT = '@',
+    ATP_HAT = '^',
+    ATP_DOUBLE_QUOTE = '"',
+    ATP_QUESTION_MARK = '?',
+    ATP_EXCLAMATION_MARK = '!',
+    ATP_FORWARD_SLASH = '/',
+    ATP_L_ANGLE_BRACKET = '<',
+    ATP_R_ANGLE_BRACKET = '>',
+    ATP_L_SQ_BRACKET = '[',
+    ATP_R_SQ_BRACKET = ']',
+    ATP_L_CURLY_BRACKET = '{',
+    ATP_R_CURLY_BRACKET = '}',
+    ATP_CHAR_STAR = '*',
+    ATP_CHAR_POUND = '#',
+    ATP_CHAR_AMPSAND = '&',
+    ATP_CHAR_PERCENT = '%',
+    ATP_CHAR_PLUS = '+',
+    ATP_CHAR_MINUS = '-',
+    ATP_CHAR_DOT = '.',
+    ATP_CHAR_ULINE = '_',
+    ATP_CHAR_TILDE = '~',
+    ATP_CHAR_REVERSE_SOLIDUS = '\\',
+    ATP_CHAR_VERTICAL_LINE = '|',
+    ATP_END_OF_STRING_CHAR = '\0',
+    ATP_CHAR_0 = '0',
+    ATP_CHAR_1 = '1',
+    ATP_CHAR_2 = '2',
+    ATP_CHAR_3 = '3',
+    ATP_CHAR_4 = '4',
+    ATP_CHAR_5 = '5',
+    ATP_CHAR_6 = '6',
+    ATP_CHAR_7 = '7',
+    ATP_CHAR_8 = '8',
+    ATP_CHAR_9 = '9',
+    ATP_CHAR_A = 'A',
+    ATP_CHAR_B = 'B',
+    ATP_CHAR_C = 'C',
+    ATP_CHAR_D = 'D',
+    ATP_CHAR_E = 'E',
+    ATP_CHAR_F = 'F',
+    ATP_CHAR_G = 'G',
+    ATP_CHAR_H = 'H',
+    ATP_CHAR_I = 'I',
+    ATP_CHAR_J = 'J',
+    ATP_CHAR_K = 'K',
+    ATP_CHAR_L = 'L',
+    ATP_CHAR_M = 'M',
+    ATP_CHAR_N = 'N',
+    ATP_CHAR_O = 'O',
+    ATP_CHAR_P = 'P',
+    ATP_CHAR_Q = 'Q',
+    ATP_CHAR_R = 'R',
+    ATP_CHAR_S = 'S',
+    ATP_CHAR_T = 'T',
+    ATP_CHAR_U = 'U',
+    ATP_CHAR_V = 'V',
+    ATP_CHAR_W = 'W',
+    ATP_CHAR_X = 'X',
+    ATP_CHAR_Y = 'Y',
+    ATP_CHAR_Z = 'Z',
+    atp_char_a = 'a',
+    atp_char_b = 'b',
+    atp_char_c = 'c',
+    atp_char_d = 'd',
+    atp_char_e = 'e',
+    atp_char_f = 'f',
+    atp_char_g = 'g',
+    atp_char_h = 'h',
+    atp_char_i = 'i',
+    atp_char_j = 'j',
+    atp_char_k = 'k',
+    atp_char_l = 'l',
+    atp_char_m = 'm',
+    atp_char_n = 'n',
+    atp_char_o = 'o',
+    atp_char_p = 'p',
+    atp_char_q = 'q',
+    atp_char_r = 'r',
+    atp_char_s = 's',
+    atp_char_t = 't',
+    atp_char_u = 'u',
+    atp_char_v = 'v',
+    atp_char_w = 'w',
+    atp_char_x = 'x',
+    atp_char_y = 'y',
+    atp_char_z = 'z',
+    ATP_R_BRACKET = ')',  
+    ATP_L_BRACKET = '(', 
+    ATP_MONEY = '$',
+    ATP_EURO = 0x80   /*to avoid build error due to wcxsubmit issue*/
+} atp_char_enum;
+// TODO: _Hong_ replace rmmi_char_enum by atp_char_enum
+
+// TODO: use run time ATP context to store S3 character
+#define ATP_CHAR_S3 13
+
+//for BS(BackSpace) = '\b' = ^H
+#define ATP_CHAR_BS 0x08
+//for LF(Line Feed, end of line) = '\n' = ^J
+#define ATP_CHAR_LF 0x0a
+//for CR(Carriage Return) = '\r' = ^M
+#define ATP_CHAR_CR 0x0d
+//for CTRL-Z
+#define ATP_CHAR_CTRL_Z 0x1a
+//for ESC
+#define ATP_CHAR_ESC 0x1b
+
+#define ATP_EXTEND_SYMBOL_HASH_BASE 79235168           // 38^5
+
+
+// TODO: _Hong_ to replace rmmi_err_id_enum
+/*
+All values below 256 are reserved.
+Values in the range 0 - 100 are reserved for general errors.
+Values in the range 101 - 150 are reserved for use by GPRS and EPS.
+Values in the range 151 - 170 are reserved for use by VBS/VGCS and eMLPP.
+Values in the range 171 - 256 can be used by GPRS or by EPS.
+Sometimes ps_cause_enum is mixed in +CME ERROR: <err>; however this is a bad design
+*/
+typedef enum
+{
+    /* 07.07 Sec 9.2.1 */
+    ATP_ERR_PHONE_FAILURE,
+    ATP_ERR_NO_CONNECTION_TO_PHONE = 1,
+    ATP_ERR_PHONE_ADAPTOR_LINK_RESERVED = 2,
+    ATP_ERR_OPERATION_NOT_ALLOWED = 3,
+    ATP_ERR_OPERATION_NOT_SUPPORTED = 4,
+    ATP_ERR_PH_SIM_PIN_REQUIRED = 5,
+    ATP_ERR_PH_FSIM_PIN_REQUIRED = 6, //Kinki: SIM-ME lock [MAUI_01264994]
+    ATP_ERR_PH_FSIM_PUK_REQUIRED = 7, //Kinki: SIM-ME lock [MAUI_01264994]
+    ATP_ERR_SIM_NOT_INSERTED = 10,
+    ATP_ERR_SIM_PIN_REQUIRED = 11,
+    ATP_ERR_SIM_PUK_REQUIRED = 12,
+    ATP_ERR_SIM_FAILURE = 13,
+    ATP_ERR_SIM_BUSY = 14,
+    ATP_ERR_SIM_WRONG = 15,
+    ATP_ERR_INCORRECT_PASSWD = 16,
+    ATP_ERR_SIM_PIN2_REQUIRED = 17,
+    ATP_ERR_SIM_PUK2_REQUIRED = 18,
+    ATP_ERR_MEM_FULL = 20,
+    ATP_ERR_INVALID_INDEX = 21,
+    ATP_ERR_NO_FOUND = 22,
+    ATP_ERR_TEXT_ERRSTRING_TOO_LONG_ERR = 24,
+    ATP_ERR_INVALID_CHARACTERS_IN_TEXT_ERRSTRING_ERR = 25,
+    ATP_ERR_DIAL_ERRSTRING_TOO_LONG_ERR = 26,
+    ATP_ERR_INVALID_CHARACTERS_IN_DIAL_ERRSTRING_ERR = 27,
+    ATP_ERR_NO_NW_SERVICE = 30,
+    ATP_ERR_NETWORK_TIMEOUT = 31,
+    ATP_ERR_NETWORK_NOT_ALLOWED = 32,
+    ATP_ERR_NW_PERSON_PIN_REQUIRED = 40,
+    ATP_ERR_NW_PERSON_PUK_REQUIRED = 41,
+    ATP_ERR_NW_SUB_PERSON_PIN_REQUIRED = 42,
+    ATP_ERR_NW_SUB_PERSON_PUK_REQUIRED = 43,
+    ATP_ERR_SP_PERSON_PIN_REQUIRED = 44,
+    ATP_ERR_SP_PERSON_PUK_REQUIRED = 45,
+    ATP_ERR_CORP_PERSON_PIN_REQUIRED = 46,
+    ATP_ERR_CORP_PERSON_PUK_REQUIRED = 47,
+    ATP_ERR_HIDDEN_KEY_REQUIRED = 48,
+    ATP_ERR_EAP_NOT_SUPPORT = 49,
+    ATP_ERR_INCORRECT_PARAM = 50,
+    ATP_ERR_CMD_IMPLEMENT_BUT_CUR_DISABLED = 51,
+    ATP_ERR_CMD_ABORT_BY_USER = 52,
+    ATP_ERR_NOT_ATTACHED_TO_NETWORK = 53,
+    ATP_ERR_MODEM_NOT_ALLOW = 54,
+    ATP_ERR_OPERATION_NOT_ALLOW_MT_RESTRICTIONS = 55,
+    ATP_ERR_FIXED_DIAL_NUMBER_ONLY_ALLOW = 56,
+    ATP_ERR_TEMP_OUT_OF_SERVICE = 57,
+    ATP_ERR_LANG_NOT_SUPPORT = 58,
+    ATP_ERR_UNEXPECTED_VALUE = 59,
+    ATP_ERR_SYSTEM_FAILURE = 60,
+    ATP_ERR_DATA_MISSING = 61,
+    ATP_ERR_CALL_BARRED = 62,
+    ATP_ERR_SLA_AUTH_FAIL = 63,
+    ATP_ERR_UNKNOWN = 100,
+
+
+    ATP_ERR_ILLEGAL_MS = 103,
+    ATP_ERR_ILLEGAL_ME = 106,
+    ATP_ERR_GPRS_NOT_ALLOWED = 107,
+    ATP_ERR_GPRS_NON_GPRS_NOT_ALLOWED = 108,
+    ATP_ERR_PLMN_NOT_ALLOWED = 111,
+    ATP_ERR_LA_NOT_ALLOWED = 112,
+    ATP_ERR_ROAMING_AREA_NOT_ALLOWED = 113,
+    ATP_ERR_GPRS_NOT_ALLOWED_IN_THIS_PLMN = 114,
+    ATP_ERR_NO_SUITABLE_CELL = 115,
+    ATP_ERR_CONGESTION = 122,
+    ATP_ERR_NOT_AUTH_FOR_CSG = 125,
+
+    ATP_ERR_INSUFF_RESOURCE = 126,
+    ATP_ERR_MISSING_APN = 127,
+    ATP_ERR_UNKNOWN_PDP_ADDR = 128,
+    ATP_ERR_USER_AUTH_FAIL = 129,
+    ATP_ERR_ACTIVATION_REJ_BY_GGSN = 130,
+    ATP_ERR_ACTIVATION_REJ_UNSPECIFIED = 131,
+    ATP_ERR_SERV_OPTION_NOT_SUPPORTED = 132,
+    ATP_ERR_REQ_SERV_OPTION_NOT_SUBSCRIBED = 133,
+    ATP_ERR_SERV_OPTION_TEMP_OUT_OF_ORDER = 134,
+
+    ATP_ERR_FEATURE_NOT_SUPPORTED = 140,
+    ATP_ERR_SEMANTIC_ERR_IN_TFT = 141,
+    ATP_ERR_SYNTACTICAL_ERR_IN_TFT = 142,
+    ATP_ERR_UNKNOWN_PDP_CONTEXT = 143,
+    ATP_ERR_SEMANTIC_ERR_IN_PF = 144,
+    ATP_ERR_SYNTACTICAL_ERR_IN_PF = 145,
+    ATP_ERR_PDP_CONTEXT_WO_TFT_ALREADY_ACTIVATED = 146,
+
+    ATP_ERR_GPRS_UNSPECIFIED_ERROR = 148,
+    ATP_ERR_PDP_AUTH_FAIL = 149,
+    ATP_ERR_INVALID_MOBILE_CLASS = 150,
+    ATP_ERR_LAST_PDN_DISC_NOT_ALLOWED = 171,
+
+    ATP_ERR_SEMANTICALLY_INCORRECT_MSG = 172,
+    ATP_ERR_MANDATORY_IE_ERR = 173,
+    ATP_ERR_IE_NOT_EXIST = 174,
+    ATP_ERR_COND_IR_ERR = 175,
+    ATP_ERR_PROTOCOL_ERR_UNSPECIFIED = 176,
+
+    ATP_ERR_OPERATOR_BARRING = 177,
+    ATP_ERR_MAXIMUM_PDP_CONTEXT = 178,
+    ATP_ERR_REQUESTED_APN_NOT_SUPPORTED = 179,
+    ATP_ERR_REQUEST_REJ_BCM_MODE_VIOLATION = 180,
+    ATP_ERR_REQUEST_REJ_UNSUPPORTED_QCI_VALUE = 181,
+
+    ATP_ERROR_DIAL_MODIFIED_TO_DAIL = 246, /* This is specified for TC09 */
+
+    /*** according to TS 27.007 9.2.0, all values below 256 are reserved ***/
+
+    ATP_ERR_LINK_NS_SP_PERSON_PIN_REQUIRED = 257,   //Kinki: SIM-ME lock [MAUI_01264994]
+    ATP_ERR_LINK_NS_SP_PERSON_PUK_REQUIRED = 258,   //Kinki: SIM-ME lock [MAUI_01264994]
+    ATP_ERR_LINK_SIM_C_PERSON_PIN_REQUIRED = 259,   //Kinki: SIM-ME lock [MAUI_01264994]
+    ATP_ERR_LINK_SIM_C_PERSON_PUK_REQUIRED = 260,   //Kinki: SIM-ME lock [MAUI_01264994]
+    ATP_ERR_CHANNEL_NOT_ALLOWED_IN_META_MODE = 261, //Block all AT channels other than +EMETACFG when in META mode
+
+    /* The following error causes should be added into rmmi_result_code_fmttr() to be displayed in +CME ERROR */
+    ATP_ERR_VERIFICATION_FAILED = 270, /* for TMO */
+    ATP_ERR_REBOOT_REQUIRED = 271,     /* for TMO */
+
+    /* following are proprietary error cause : the cause below WON'T be showed as +CME ERROR. */
+    ATP_ERR_COMMAND_CONFLICT = 302, //same as operation not allowed in 07.05 Sec 3.2.5
+    // will be convert to +CME ERROR: 3  or +CMS ERROR: 302
+    ATP_NO_ERR = 600,
+
+    /* following: error is related to syntax, invalid parameters.. */
+    /* according to spec 07.07 Sec 9.1, only "ERROR" will be returned to TE side */
+    ATP_ERR_UNRECOGNIZED_CMD = 601,
+    ATP_ERR_RETURN_ERROR = 602,
+    ATP_ERR_SYNTEX_ERROR = 603,
+    ATP_ERR_UNSPECIFIED = 604, //unspecified parsing error
+    ATP_ERR_DATA_TRANSFER_ALREADY = 605,
+    ATP_ERR_ACTION_ALREADY = 606,
+    ATP_ERR_NOT_AT_CMD = 607,
+    ATP_ERR_MULTI_CMD_TOO_LONG = 608,
+    ATP_ERR_ABORT_COPS = 609,
+    ATP_ERR_NO_CALL_DISC = 610,
+    ATP_ERR_BT_SAP_UNDEFINED = 611,
+    ATP_ERR_BT_SAP_NOT_ACCESSIBLE = 612,
+    ATP_ERR_BT_SAP_CARD_REMOVED = 613,
+    ATP_ERR_AT_NOT_ALLOWED_BY_CUSTOMER = 614,
+    ATP_ERR_MM_LU_REJ_17_IN_MANUAL_MODE = 615,
+    ATP_ERR_CARD_TECHNICAL_PROBLEM = 616,
+    ATP_ERR_BT_SAP_CARD_ALREADY_POWERED_OFF = 617,
+    ATP_ERR_BT_SAP_CARD_ALREADY_POWERED_ON = 618,
+    ATP_ERR_RMS_RFON_NOT_ALLOWED = 619,
+    ATP_ERR_RMS_SIMON_NOT_ALLOWED = 620,
+
+    // for secure AT command, refer to MSM_ERROR_E
+    ATP_ERR_SECURE_AT_CAUSE_START = MSM_ERROR_START, // 0x600, 1536
+    ATP_ERR_SECURE_AT_CAUSE_END = MSM_ERROR_END,     // 0x6FF, 1791
+
+    /* below err id are reserved for LWTG protocol stack */
+    ATP_ERR_CAUSE_FDN_BLOCKED = PHB_CAUSE_FDN_BLOCKED, //2600
+    ATP_ERR_LWTG_PS_START = REPORT_TO_UPPER_LAYER_CAUSE_START,
+    ATP_ERR_LWTG_PS_END = REPORT_TO_UPPER_LAYER_CAUSE_END,
+    /* above err id are reserved for LWTG protocol stack */
+
+    ATP_ERR_NONE = 0xffff
+} atp_err_id_enum;
+
+typedef enum
+{
+    ATP_PARSE_OK,
+    ATP_PARSE_ERROR,
+    ATP_PARSE_NOT_FOUND,
+    ATP_PARSE_TEXT_TOO_LONG
+} atp_validator_cause_enum;
+// TODO:_Hong_ replace imsp_validator_cause_enum with atp_validator_cause_enum
+
+typedef enum
+{
+    ATP_EXTEND_HASH_PLUS =      ATP_EXTEND_SYMBOL_HASH_BASE*0,          // + : 0*38^5
+    ATP_EXTEND_HASH_HAT =       ATP_EXTEND_SYMBOL_HASH_BASE*1,          // ^ : 1*38^5
+    ATP_EXTEND_HASH_PERCENT =   ATP_EXTEND_SYMBOL_HASH_BASE*2,          // % : 2*38^5
+    ATP_EXTEND_HASH_MONEY =     ATP_EXTEND_SYMBOL_HASH_BASE*3,          // $ : 3*38^5
+    ATP_EXTEND_HASH_STAR =      ATP_EXTEND_SYMBOL_HASH_BASE*4           // * : 4*38^5
+} atp_extend_symbol_hash_enum;
+
+
+
+typedef enum
+{
+    ATP_FIELD_TYPE_INVALIDE,
+    ATP_FIELD_UNKNOWN_STR,      // others
+    ATP_FIELD_TYPE_INT,         // 1
+    ATP_FIELD_TYPE_STR,         // ,"mtk",
+    ATP_FIELD_TYPE_EMPTY,       // ,,
+
+} atp_field_enum;
+
+typedef struct
+{
+    kal_uint8       *field_ptr;
+    kal_uint16      field_len;
+    kal_int64       field_value;
+    atp_field_enum  field_type;
+
+} atp_field_struct;
+
+#define ATP_FIELD_MAX   30
+
+typedef struct atp_string_struct
+{
+    kal_uint8               *string_ptr;
+    kal_uint8               tid;                // used to record the ATP transaction ID
+    kal_uint16              index;
+    kal_uint16              string_length;
+    kal_uint16              cmd_index;
+    kal_uint16              hdlr_index; 
+    kal_uint16              field_count;
+    atp_field_struct        *field_list;
+    atp_cmd_mode_enum       cmd_mode;
+    atp_cmd_class_enum      cmd_class;
+    atp_extend_symbol_hash_enum symbol_hash;
+
+} atp_string_struct;
+// TODO: _Hong_ replace atp_string_struct
+
+
+typedef struct
+{
+    /* TODO */
+    kal_uint8 reserved;
+
+} atp_multiple_basic_cmd_struct;
+
+
+
+#define ATP_UNKNOWN_REPORT_MODE 0xff
+
+typedef enum
+{
+    ATP_REPORT_MODE_NONE,
+    ATP_REPORT_MODE_CMEE,
+    ATP_REPORT_MODE_ECSQ,
+    ATP_REPORT_MODE_CREG,
+    ATP_REPORT_MODE_CGREG,
+    ATP_REPORT_MODE_CEREG,
+    ATP_REPORT_MODE_EN3GPECP,
+    ATP_REPORT_MODE_EANBR,
+    ATP_REPORT_MODE_EICPG,
+	ATP_REPORT_MODE_C5GUSMS,
+    //Add new report mode here
+    ATP_REPORT_MODE_MAX
+
+} atp_urc_report_mode_enum;
+
+typedef enum
+{
+    ATP_AT_CMD_BLOCK_FOR_LDU,
+    ATP_AT_CMD_BLOCK_STANDARD,
+    ATP_AT_CMD_BLOCK_MAX
+} atp_at_cmd_block_enum;
+
+
+#endif /* _ATP_PUBLIC_DEFS_H_ */
diff --git a/mcu/interface/protocol/general/atp_public_utility.h b/mcu/interface/protocol/general/atp_public_utility.h
new file mode 100644
index 0000000..36cd8c4
--- /dev/null
+++ b/mcu/interface/protocol/general/atp_public_utility.h
@@ -0,0 +1,256 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *	atp_public_utility.h
+ *
+ *
+ * Description:
+ * ------------
+ *  This file contains the function prototype for 
+ *  AT PROXY module utility functions.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *******************************************************************************/
+
+
+#ifndef _ATP_PUBLIC_UTILITY_H
+#define _ATP_PUBLIC_UTILITY_H
+
+#include "kal_general_types.h"
+#include "atp_public_defs.h"
+#include "sim_exported_enum.h"
+
+
+#define ATP_VALIDATOR_OK           0
+#define ATP_VALIDATOR_ERROR        255
+
+#define ATP_IS_NUMBER( alpha_char )   \
+   ( ( (alpha_char >= ATP_CHAR_0) && (alpha_char <= ATP_CHAR_9) ) ? 1 : 0 )
+
+#define ATP_IS_LOWER( alpha_char )   \
+  ( ( (alpha_char >= atp_char_a) && (alpha_char <= atp_char_z) ) ?  1 : 0 )
+
+#define ATP_IS_UPPER( alpha_char )   \
+   ( ( (alpha_char >= ATP_CHAR_A) && (alpha_char <= ATP_CHAR_Z) ) ? 1 : 0 )
+
+#define ATP_IS_ALPHA( alpha_char )   \
+   ( ( ATP_IS_UPPER(alpha_char) || ATP_IS_LOWER(alpha_char) ) ? 1 : 0 )
+
+#define atp_skip_spaces(source_string_ptr) \
+      while ((source_string_ptr->index < source_string_ptr->string_length) \
+              && (source_string_ptr->string_ptr[source_string_ptr->index] == ATP_SPACE)) \
+      { \
+        source_string_ptr->index++; \
+      }
+#define atp_skip_none_a(atp_string_ptr) \
+        while( (atp_string_ptr->index < atp_string_ptr->string_length) && !((atp_string_ptr->string_ptr[ atp_string_ptr->index ] == ATP_CHAR_A) ||\
+             (atp_string_ptr->string_ptr[ atp_string_ptr->index ] == atp_char_a)) ) \
+        { \
+            atp_string_ptr->index++; \
+        }
+
+void atp_to_upper(kal_uint8 *str, kal_uint16 str_len);
+
+kal_uint32 atp_int_validator_ext(kal_uint8 *error_cause, 
+                                 atp_string_struct *source_string_ptr, 
+                                 kal_uint8 delimiter, 
+                                 kal_uint16 str_len);
+
+kal_int32 atp_signed_int_validator(kal_uint8 *error_cause, atp_string_struct *source_string_ptr, kal_uint8 delimiter);
+
+kal_uint8 atp_hex_validator_ext(kal_uint8 *error_cause, 
+                                atp_string_struct *source_string_ptr, 
+                                kal_uint8 delimiter, 
+                                kal_uint16 max_length, 
+                                kal_uint8 *str);
+
+kal_uint8 atp_string_validator_ext(kal_uint8 *error_cause, 
+                                   atp_string_struct *source_string_ptr, 
+                                   kal_uint16 source_string_len, 
+                                   kal_uint8 delimiter, 
+                                   kal_uint16 max_length, 
+                                   kal_uint8 *str);
+
+kal_uint32 atp_extract_number_ext(atp_string_struct *source_string_ptr, 
+                                  atp_validator_cause_enum *result, 
+                                  kal_uint32 max);
+
+void atp_int_to_ascii_converter(kal_uint32 digit, kal_uint8 *buff_ptr);
+
+kal_uint16 atp_fast_string_print(kal_uint8 *buff_ptr, 
+                                 kal_uint8 *fmt, 
+                                 void *arg_list[], 
+                                 kal_uint8 nos_arg);
+
+kal_bool atp_hexstring_to_integer(kal_char *str, kal_uint32 *val);
+
+kal_bool atp_hexstring_to_integer_ext(kal_char *str, kal_uint32 *val, kal_uint16 str_len);
+
+kal_bool atp_hexstring_to_bytes(kal_char *str, kal_uint8 *val, kal_uint16 val_buf_size);
+
+// TODO:_Hong_ replace IMSP and RMMI utility functions by above utilities
+
+kal_uint32 atp_int_validator_range_check(
+                    kal_uint8 *error_cause, 
+                    atp_string_struct *source_string_ptr, 
+                    kal_uint8 delimiter, 
+                    kal_uint32 max);
+
+
+/*****************************************************************************
+ * FUNCTION
+ *  atp_check_at_prefix
+ *
+ * DESCRIPTION
+ *  check the input string begins with "AT"
+ *
+ * PARAMETERS
+ *  str_ptr     [IN]        ASCII string
+ *  str_len     [IN]        length of *str_ptr
+ *
+ * RETURNS
+ *  KAL_TRUE/KAL_FALSE depends on success or fail.
+ *
+ *****************************************************************************/
+kal_bool atp_check_at_prefix(kal_uint8 *str_ptr, kal_uint16 str_len);
+
+/*****************************************************************************
+ * FUNCTION
+ *  l4b_atp_find_cmd_mode
+ *
+ * DESCRIPTION
+ *  find the command mode of *at_cmd_ptr
+ *
+ * PARAMETERS
+ *  at_cmd_ptr     [IN]        ASCII string
+ *  at_cmd_len     [IN]        length of *at_cmd_ptr
+ *
+ * RETURNS
+ *  atp_cmd_mode_enum   the command mode of *at_cmd_ptr
+ *
+ *****************************************************************************/
+atp_cmd_mode_enum l4b_atp_find_cmd_mode(atp_string_struct *at_cmd_ptr);
+
+/*****************************************************************************
+ * FUNCTION
+ *  atp_get_urc_report_mode
+ * DESCRIPTION
+ *  This function is used to get URC report mode value
+ * PARAMETERS
+ *  ps_id              [IN] which protocol id  
+ *  urc_type         [IN] which URC's report mode you want to know
+ * RETURNS
+ *  URC's report mode value is returned.
+ *****************************************************************************/
+kal_uint8 atp_get_urc_report_mode(protocol_id_enum ps_id, atp_urc_report_mode_enum urc_type);
+
+/*****************************************************************************
+ * FUNCTION
+ *  atp_set_urc_report_mode
+ * DESCRIPTION
+ *  This function is used to set URC report mode value
+ * PARAMETERS 
+ *  urc_type         [IN] which URC's report mode value you want to set
+ *  mode              [IN] the value to be set.
+ * RETURNS
+ *  void
+ *****************************************************************************/
+void atp_set_urc_report_mode(atp_urc_report_mode_enum urc_type, kal_uint8 mode);
+
+#ifdef __SENSITIVE_DATA_MOSAIC__
+/*****************************************************************************
+ * FUNCTION
+ *  atp_copy_partial_string
+ * DESCRIPTION
+ *  This function is used to mask the trace output
+ * PARAMETERS 
+ *  in_str_ptr         [IN]  Input string
+ *  in_str_len         [IN]  Input string length
+ *  at_str_ptr         [IN]  AT output string
+ *  at_str_len         [IN]  AT output string length
+ * RETURNS
+ *  void
+ *****************************************************************************/
+void atp_copy_partial_string(kal_uint8 *in_str_ptr, kal_uint16 in_str_len, kal_uint8 *at_str_ptr, kal_uint16 at_str_len);
+
+/*****************************************************************************
+ * FUNCTION
+ *  atp_usir_command_analyzer
+ * DESCRIPTION
+ *  This function is used to find sensitive AT cmd
+ * PARAMETERS
+ *  hash_value1    [IN] hash_value1 for at command
+ *  hash_value2     [IN] hash_value2 for at command
+ *  index          [IN] index of table for return
+ * RETURNS
+ *  void
+ *****************************************************************************/
+kal_bool atp_usir_command_analyzer(kal_uint32 hash_value1, kal_uint32 hash_value2, kal_uint8 *index);
+
+/*****************************************************************************
+ * FUNCTION
+ *  atp_check_sensitive_command
+ * DESCRIPTION
+ *  This function is used to check sensitive AT cmd
+ * PARAMETERS
+ *  buffer *        [IN] command string pointer
+ *  row_index          [IN] index of table for return
+ * RETURNS
+ *  kal_bool          [OUT] find the command or not
+ *****************************************************************************/
+kal_bool atp_check_sensitive_command(kal_uint8 *buffer, kal_uint8 *row_index);
+
+/*****************************************************************************
+* FUNCTION
+* atp_public_usir_process_ft
+* DESCRIPTION
+* This function is used to check sensitive AT cmd
+* PARAMETERS
+* buffer * [IN] command string pointer
+* row_index [IN] index of table for return
+* RETURNS
+* kal_bool [OUT] process the command or not
+*****************************************************************************/
+kal_bool atp_public_usir_process_ft(kal_uint8 *buffer, kal_uint8 row_index);
+
+#endif /* __SENSITIVE_DATA_MOSAIC__ */  
+
+#endif /* _ATP_PUBLIC_UTILITY_H */
diff --git a/mcu/interface/protocol/general/cm2gas_struct.h b/mcu/interface/protocol/general/cm2gas_struct.h
new file mode 100644
index 0000000..31e59ae
--- /dev/null
+++ b/mcu/interface/protocol/general/cm2gas_struct.h
@@ -0,0 +1,82 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *	cm2gas_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for structure definition between CC and RRM layers.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef _CM2GAS_STRUCT_H
+#define _CM2GAS_STRUCT_H
+
+#include "kal_general_types.h"
+#include "ps_public_enum.h"
+
+typedef struct {
+    LOCAL_PARA_HDR
+    cc_call_type_enum call_type; 
+} cc_gas_call_failure_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    ps_cause_enum cc_disconnect_cause;
+	cc_call_direction_enum call_direction;
+} cc_gas_call_status_ind_struct;
+
+#endif 
+
+
diff --git a/mcu/interface/protocol/general/cmux_vp_num.h b/mcu/interface/protocol/general/cmux_vp_num.h
new file mode 100644
index 0000000..b324f44
--- /dev/null
+++ b/mcu/interface/protocol/general/cmux_vp_num.h
@@ -0,0 +1,244 @@
+/*******************************************************************************
+*  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:
+ * ---------
+ *   cmux_vp_num.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Header file for CMUX Virtual Port Number Inclusion
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *==============================================================================
+ ******************************************************************************/
+
+#ifndef CMUX_VP_NUM_H
+#define CMUX_VP_NUM_H
+/******************************************************************************/
+
+#include "global_def.h"
+
+/******************************************************************************/
+
+// CMUX_VP_NUM_FOR_ATCI
+#define CMUX_VP_NUM_FOR_ATCI		5
+#define CMUX_VP_NUM_FOR_ATCI_EX		6 
+
+#define CMUX_VP_NUM_FOR_ATCI_CSD 	0
+
+// CMUX_VP_NUM_FOR_VT
+#if defined(__VT_TRANSPORT_SUPPORT__)
+#define CMUX_VP_NUM_FOR_VT		1
+#else
+#define CMUX_VP_NUM_FOR_VT		0
+#endif
+
+// CMUX_VP_NUM_FOR_CS
+#if defined(__DATA_CARD_SPEECH__)
+#define CMUX_VP_NUM_FOR_CS		1
+#else
+#define CMUX_VP_NUM_FOR_CS		0
+#endif
+
+//CMUX_VP_NUM_FOR_ATCI_IMS
+#define CMUX_VP_NUM_FOR_ATCI_IMS 2
+
+//CMUX_VP_NUM_FOR_ATCI_IMS_SMS
+#define CMUX_VP_NUM_FOR_ATCI_IMS_SMS 4
+
+//CMUX_VP_NUM_FOR_NETIF_CONTROL
+#define CMUX_VP_NUM_FOR_NETIF_CONTROL 2
+
+/******************************************************************************/
+
+// CMUX_VP_NUM_FOR_SINGLE_SIM is used for users of CMUX
+// referenced by ATCI
+#ifdef __CMUX_SUPPORT__
+	#define CMUX_VP_NUM_FOR_SINGLE_SIM	    (CMUX_VP_NUM_FOR_ATCI)
+	#define CMUX_VPEX_NUM_FOR_SINGLE_SIM    (CMUX_VP_NUM_FOR_ATCI_EX)
+	#define CMUX_VPEX_TOTAL_NUM				(((CMUX_VP_NUM_FOR_ATCI_EX) \
+		* (MAX_SIM_NUM)) + CMUX_VP_NUM_FOR_ATCI_CSD + CMUX_VP_NUM_FOR_ATCI_IMS \
+		+ CMUX_VP_NUM_FOR_ATCI_IMS_SMS + CMUX_VP_NUM_FOR_NETIF_CONTROL)
+#else
+	#define CMUX_VP_NUM_FOR_SINGLE_SIM 	    0
+	#define CMUX_VPEX_NUM_FOR_SINGLE_SIM    0
+	#define CMUX_VPEX_TOTAL_NUM				0
+#endif
+
+/******************************************************************************/
+
+// CMUX_DLC_NUM is used by CMUX
+// referenced in cmux_def.h
+#ifdef __CMUX_SUPPORT__
+	#define CMUX_DLC_NUM (((CMUX_VP_NUM_FOR_ATCI + CMUX_VP_NUM_FOR_ATCI_EX) \
+        * (MAX_SIM_NUM)) + CMUX_VP_NUM_FOR_ATCI_CSD + CMUX_VP_NUM_FOR_ATCI_IMS + CMUX_VP_NUM_FOR_VT \
+        + CMUX_VP_NUM_FOR_CS + CMUX_VP_NUM_FOR_ATCI_IMS_SMS + CMUX_VP_NUM_FOR_NETIF_CONTROL)
+#else
+	#define CMUX_DLC_NUM 	0
+#endif
+
+/******************************************************************************/
+
+// CMUX_VP_NUM is used for uart provider
+// referenced in enum UART_PORT
+#ifdef __CMUX_SUPPORT__
+    #define CMUX_VP_NUM     (CMUX_DLC_NUM)
+#else
+	#define CMUX_VP_NUM 	0
+#endif
+
+/******************************************************************************/
+#endif /* CMUX_VP_NUM_H */
+
diff --git a/mcu/interface/protocol/general/csm2vt_struct.h b/mcu/interface/protocol/general/csm2vt_struct.h
new file mode 100644
index 0000000..62870b2
--- /dev/null
+++ b/mcu/interface/protocol/general/csm2vt_struct.h
@@ -0,0 +1,157 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2007
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ * Filename:
+ * ---------
+ * csm2vt_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for structure definition between VT and CSM.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _CSM2VT_STRUCT_H
+#define _CSM2VT_STRUCT_H
+
+//#include "kal_non_specific_general_types.h"
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+#ifdef __VIDEO_CALL_SUPPORT__
+typedef enum {
+    VT_MO_DISC = 0,
+    VT_MT_DISC,
+    VT_3G324M_DISC
+} vt_call_end_type_enum;
+
+typedef struct csm_vt_activate_req_struct{
+LOCAL_PARA_HDR
+kal_uint8 call_id;
+}csm_vt_activate_req_struct;
+
+typedef struct csm_vt_activate_cnf_struct{
+LOCAL_PARA_HDR
+kal_uint8 call_id;
+kal_bool result;
+kal_uint8 cause;
+}csm_vt_activate_cnf_struct;
+
+typedef struct csm_vt_deactivate_req_struct{
+LOCAL_PARA_HDR
+kal_uint8 call_id;
+kal_uint8 call_end_type;
+}csm_vt_deactivate_req_struct;
+
+typedef struct csm_vt_deactivate_cnf_struct{
+LOCAL_PARA_HDR
+kal_uint8 call_id;
+kal_uint8 call_end_type;
+kal_bool result;
+kal_uint8 cause;
+}csm_vt_deactivate_cnf_struct;
+
+typedef struct csm_vt_disc_ind_struct{
+LOCAL_PARA_HDR
+kal_uint8 call_id;
+kal_uint8 call_end_type;
+}csm_vt_disc_ind_struct;
+#endif /*__VIDEO_CALL_SUPPORT__*/
+
+#endif 
+
diff --git a/mcu/interface/protocol/general/csmcc_common_enums.h b/mcu/interface/protocol/general/csmcc_common_enums.h
new file mode 100644
index 0000000..a326161
--- /dev/null
+++ b/mcu/interface/protocol/general/csmcc_common_enums.h
@@ -0,0 +1,393 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *	csmcc_common_enums.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file defines the enum types which are common to the L4.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _CSMCC_COMMON_ENUMS_H
+#define _CSMCC_COMMON_ENUMS_H
+
+#include "ps_public_enum.h" //hong_mpm
+
+typedef enum
+{
+   CSMCC_ERROR,
+   CSMCC_NO_ERROR,
+   CSMCC_DTMF_QUERY,
+   CSMCC_CMD_SUCC /* ripple add. */
+} csmcc_error_enum;
+
+typedef enum
+{
+   CSMCC_CLIR_INVOCATION,
+   CSMCC_CLIR_SUPPRESSION,
+   CSMCC_INVALID_CLIR_INFO = 255
+} csmcc_clir_info_enum;
+
+typedef enum
+{
+   CSMCC_VOICE_CALL,
+   CSMCC_AUX_VOICE_CALL,
+   CSMCC_DATA_CALL,
+   CSMCC_FAX_CALL,
+   CSMCC_CSD_CALL,
+   CSMCC_SAT_DATA_CALL,
+   CSMCC_VIDEO_CALL,
+   CSMCC_NO_CALL_TYPE,
+   CSMCC_INVALID_CALL_TYPE = 255
+} csmcc_call_type_enum;
+
+typedef enum
+{
+   CSMCC_PREEMPT_BY_HOLD,
+   CSMCC_PREEMPT_BY_REL
+} csmcc_preempt_type_enum;
+
+typedef enum
+{
+   CSMCC_CLI_UNAVAILABLE,
+   CSMCC_CLI_REJECT_BY_USER,
+   CSMCC_CLI_INTERACTION,
+   CSMCC_COIN_LINE_PAYPHONE,
+   CSMCC_INVALID_NO_CLI_CAUSE = 255
+} csmcc_no_cli_cause_enum;
+
+typedef enum
+{
+   CSMCC_USER,
+   CSMCC_PRIVATE_NW_LOCAL_USER,
+   CSMCC_PUBLIC_NW_LOCAL_USER,
+   CSMCC_TRANSIT_NW,
+   CSMCC_PUBLIC_NW_REMOTE_USER,
+   CSMCC_PRIVATE_NW_REMOTE_USER,
+   CSMCC_INTERNATIONAL_NW = 7,
+   CSMCC_NW_BEYOND_INTERWORKING_POINT = 10
+} csmcc_location_enum;
+
+typedef enum
+{
+   CSMCC_NOT_END_TO_END = 1,
+   CSMCC_DEST_IN_NON_PLMN_ISDN,
+   CSMCC_ORIG_IN_NON_PLMN_ISDN,
+   CSMCC_RETURN_PLMN_ISDN = 4,
+   CSMCC_IN_BAND_AVAILABLE = 8,
+   CSMCC_END_TO_END = 32,
+   CSMCC_QUEUEING = 64
+} csmcc_prog_desc_enum;
+
+typedef enum
+{
+   CSMCC_ORIG_NONE = 0x00,
+   CSMCC_MO_CALL = 0x01,
+   CSMCC_MT_CALL = 0x02,
+   CSMCC_NW_INIT_MO_CALL = 0x04
+} csmcc_call_orig_enum;
+
+
+typedef enum
+{
+   CSMCC_DIAL_TONE_ON,
+   CSMCC_RING_BACK_TONE_ON,
+   CSMCC_INTERCEPT_TONE_ON,
+   CSMCC_NTW_CONGESTION_TONE_ON,
+   CSMCC_BUSY_TONE_ON,
+   CSMCC_CONFIRM_TONE_ON,
+   CSMCC_ANSWER_TONE_ON,
+   CSMCC_CALL_WAITING_TONE_ON,
+   CSMCC_OFF_HOOK_WARNING_TONE_ON,
+   CSMCC_TONES_OFF = 63,
+   CSMCC_ALERTING_OFF = 79
+} csmcc_signal_value_enum;
+
+typedef enum
+{
+   CSMCC_ALERTING_PATTERN_1,
+   CSMCC_ALERTING_PATTERN_2,
+   CSMCC_ALERTING_PATTERN_3,
+   CSMCC_ALERTING_PATTERN_5 = 4,
+   CSMCC_ALERTING_PATTERN_6,
+   CSMCC_ALERTING_PATTERN_7,
+   CSMCC_ALERTING_PATTERN_8,
+   CSMCC_ALERTING_PATTERN_9
+} csmcc_alerting_pattern_enum;
+
+typedef enum
+{
+   CSMCC_SAT_SETUP_CALL,
+   CSMCC_SAT_HOLD_AND_SETUP_CALL,
+   CSMCC_SAT_REL_AND_SETUP_CALL
+} csmcc_sat_call_req_type_enum;
+
+typedef enum
+{
+   CLCC_CALL_ACTIVE,
+   CLCC_CALL_HELD,
+   CLCC_CALL_DIALING,
+   CLCC_CALL_ALERTING,
+   CLCC_CALL_INCOMING,
+   CLCC_CALL_WAITING,
+   CLCC_CALL_INVALID_STATE=0xff
+} clcc_state_enum;
+
+typedef enum
+{
+    CLCCS_CALL_IDLE = 1,
+    CLCCS_CALL_CALLING_MO,      //2 map to CLCC_CALL_DIALING
+    CLCCS_CALL_CONNECTING_MO,   //3
+    CLCCS_CALL_ALERTING_MO,     //4 map to CLCC_CALL_ALERTING
+    CLCCS_CALL_ALERTING_MT,     //5 mpa to CLCC_CALL_INCOMING
+    CLCCS_CALL_ACTIVE,          //6 map to CLCC_CALL_ACTIVE
+    CLCCS_CALL_RELEASED_MO,     //7
+    CLCCS_CALL_RELEASED_MT,     //8
+    CLCCS_CALL_USER_BUSY,       //9
+    CLCCS_CALL_UDUB,            //10
+    CLCCS_CALL_WAITING_MO,      //11
+    CLCCS_CALL_WAITING_MT,      //12
+    CLCCS_CALL_HOLD_MO,         //13 map to CLCC_CALL_HELD
+    CLCCS_CALL_HOLD_MT,         //14 map to CLCC_CALL_HELD
+    CLCCS_CALL_INVALID_STATE = 0xff
+} clccs_ccstatus_enum; // this is mapped from clcc_state_enum
+
+
+typedef enum
+{
+    CLCCS_NUMBER_TYPE_NO_VALIDE,
+    CLCCS_NUMBER_TYPE_URI,
+    CLCCS_NUMBER_TYPE_TEL,
+} clccs_number_type_enum;
+
+
+typedef enum
+{
+   CLCC_VOICE_CALL,
+   CLCC_DATA_CALL,
+   CLCC_FAX_CALL,
+   CLCC_VFD_VOICE, /* voice followed by data, voice mode */
+   CLCC_AVD_VOICE, /* alternating voice/data, voice mode */
+   CLCC_AVF_VOICE, /* alternating voice/fax, voice mode */
+   CLCC_VFD_DATA,  /* voice followed by data, data mode */
+   CLCC_AVD_DATA,  /* alternating voice/data, data mode */
+   CLCC_AVF_FAX,  /* alternating voice/fax, fax mode */
+   CLCC_UNKNOWN_MODE,
+   CLCC_VIDEO_CALL
+} clcc_mode_enum;
+
+typedef enum
+{
+   CLCC_NOT_MPTY,
+   CLCC_MPTY
+} clcc_mpty_enum;
+
+typedef enum
+{
+   CSMCC_NOTIFY_CFU,             /* call forwarding active: CFU */
+   CSMCC_NOTIFY_CFC,             /* call forwarding active: CFC */
+   CSMCC_NOTIFY_CF,              /* call forwarded indication */
+   CSMCC_NOTIFY_CF_CFU,          /* call forwarded indication: CFU */
+   CSMCC_NOTIFY_CF_CFC,          /* call forwarded indication: CFC */
+   CSMCC_NOTIFY_CF_CFB,          /* call forwarded indication: CFB */
+   CSMCC_NOTIFY_CF_CFNRY,        /* call forwarded indication: CFNRY */
+   CSMCC_NOTIFY_CF_CFNRC,        /* call forwarded indication: CFNRC */
+   CSMCC_NOTIFY_BAC,             /* call barring active: BAC */
+   CSMCC_NOTIFY_BAOC,            /* call barring active: BAOC */
+   CSMCC_NOTIFY_BAIC,            /* call barring active: BAIC */
+   CSMCC_NOTIFY_CW,              /* call waiting indication */
+   CSMCC_NOTIFY_CALL_HELD,       /* call held indication */
+   CSMCC_NOTIFY_CALL_RETRIEVED,  /* call retrieved indication */
+   CSMCC_NOTIFY_MPTY,            /* MPTY call indication */
+   CSMCC_NOTIFY_CUG,             /* CUG invocation indication */
+   CSMCC_NOTIFY_CLIR_REJECT,     /* CLIR reject indication */
+   CSMCC_NOTIFY_ECT_ACTIVE,      /* active ECT indication */
+   CSMCC_NOTIFY_ECT_ALERTING,    /* alerting ECT indication */
+   CSMCC_NOTIFY_CNAP,            /* CNAP indication */
+   CSMCC_NOTIFY_CCBS,            /* CCBS invocation indication */
+   CSMCC_NOTIFY_CD,         /* call is deflected or this mt call is a defelected call. */
+   CSMCC_NOTIFY_HELD_CALL_RELEASED,  /* Generated by CSMCC, for 27.007 +CSSN, code2, 5. */
+   CSMCC_NOTIFY_NONE = 255
+} csmcc_notify_ss_type_enum;
+
+typedef enum
+{
+   CSD_PROF_RATE_2400,
+   CSD_PROF_RATE_4800,
+   CSD_PROF_RATE_9600,
+   CSD_PROF_RATE_14400,
+   CSD_PROF_RATE_AUTO
+} csmcc_csd_prof_rate_enum;
+
+#if defined (__CPHS__) || defined (__REL4__) //MAUI_01977687
+
+typedef enum {
+   CSMCC_ALS_LINE1,
+   CSMCC_ALS_LINE2,
+   CSMCC_ALS_LINE1_2,
+   CSMCC_ALS_NONE
+} csmcc_als_line_id_enum;
+
+#endif
+
+/*coding standard*/
+typedef enum {
+   CSMCC_ITU_T_Q931,
+   CSMCC_RESERVED_FOR_INTERNATIONAL,    
+   CSMCC_NATIONAL,
+   CSMCC_GSM_PLMNS_24008
+}csmcc_coding_standard_enum;
+
+#ifdef __VIDEO_CALL_SUPPORT__
+typedef enum {
+   CSMCC_VIDEO_CALL_ACTIVATE,
+   CSMCC_VIDEO_CALL_DEACTIVATE
+}csmcc_video_call_action_enum;
+#endif
+
+typedef enum {
+	CSMCC_CSD_PROF,			/* normal csd profile */
+	CSMCC_SAT_PROF,	  		/* sat csd profile */
+	CSMCC_SPA_CSD_PROF		/* sim provisioning csd profile */
+} csmcc_profile_type_enum;
+
+/*Presentation Indicator*/
+typedef enum {
+	CC_PRESENTATION_ALLOWED        = 0x00,
+	CC_PRESENTATION_RESTRICTED = 0x20,
+	CC_NUMBER_UNAVAILABLE = 0x40   
+}cc_presentation_ind_enum;
+
+#endif /* _CSMCC_COMMON_ENUMS_H */
+
diff --git a/mcu/interface/protocol/general/csmcc_enums.h b/mcu/interface/protocol/general/csmcc_enums.h
new file mode 100644
index 0000000..7d0434d
--- /dev/null
+++ b/mcu/interface/protocol/general/csmcc_enums.h
@@ -0,0 +1,727 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *	csmcc_enums.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for enum types used in CSM(CC) module.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _CSMCC_ENUMS_H
+#define _CSMCC_ENUMS_H
+
+//#include "ps_public_enum.h" //hong_mpm
+
+/* The following enum types are used in CSMCC message handler */
+
+typedef enum
+{
+   CSMCC_NO_REQ, /*0*/
+   CSMCC_CALL_SETUP_REQ, /*1*/
+   CSMCC_EMERGENCY_CALL_SETUP_REQ, /*2*/
+   CSMCC_CALL_ACCEPT_REQ, /*3*/
+   CSMCC_CALL_PREEMPT_REQ, /*4, non-L4C request */
+   CSMCC_AUTO_ANSWER_REQ, /*5, non-L4C request */
+   CSMCC_REL_HELD_OR_UDUB_REQ, /*6*/
+   CSMCC_REL_ACTIVE_AND_ACCEPT_REQ, /*7*/
+   CSMCC_REL_SPECIFIC_ACTIVE_CALL_REQ,/*8*/
+   CSMCC_HOLD_ACTIVE_AND_ACCEPT_REQ, /*9*/
+   CSMCC_HOLD_ACTIVE_EXCEPT_SPECIFIC_CALL_REQ, /*10*/
+   CSMCC_ADD_HELD_CALL_REQ, /*11*/
+   CSMCC_EXPLICIT_CALL_TRANSFER_REQ, /*12*/
+   CSMCC_CALL_DEFLECTION_REQ, /*13*/
+   CSMCC_ACTIVATE_CCBS_CALL_REQ, /*14*/
+   CSMCC_CALL_DISC_REQ, /*15*/
+   CSMCC_MO_MODIFY_REQ, /*16*/
+   CSMCC_REL_ALL_EXCEPT_WAITING_CALL_REQ, /*17*/
+   CSMCC_ACMMAX_SET_REQ, /* 18 */
+   CSMCC_ACM_RESET_REQ, /* 19 */
+   CSMCC_SAT_SETUP_REQ, /* 20 */
+   CSMCC_MT_MODIFY_REQ, /* 21, non-L4C request */
+   CSMCC_ACCEPT_WAITING_CALL_REQ, /* 22, aux request */
+   CSMCC_ACCEPT_CCBS_CALL_REQ, /* 23, aux request */
+   CSMCC_ACCEPT_HELD_CALL_REQ, /* 24, aux request */
+   CSMCC_WAIT_DATA_DEACTIVATE_REQ, /* 25, aux request */
+   CSMCC_ALERTING_REQ, /* 26, non-L4C request */
+   CSMCC_STARTUP_REQ, /* 27 */
+   CSMCC_SAT_FILE_CHANGE_REQ, /* 28 */
+   CSMCC_REL_SPECIFIC_CALL_REQ,/* 29 */
+   CSMCC_UPDATE_ALS_REQ, /*30*/
+   CSMCC_REL_ACTIVE_REQ, /* 31 */
+   CSMCC_REL_HELD_REQ, /* 32 */
+   CSMCC_SET_CSD_PROF_REQ, /* 33 */
+   CSMCC_REL_ALL_REQ, /* 34 */
+   CSMCC_WAIT_DATA_DEACTIVATE_CNF,  /* 35 */
+   CSMCC_RESET_LAST_CCM_REQ, /* 36 */ /* MAUI_01938414 */
+   CSMCC_REL_CALL_REJECT_REQ,/* 37 */
+   CSMCC_SRVCC_REQ /* 38, for SRVCC */
+} csmcc_req_enum;
+
+/* The following enum types ared used to describe bc parameters */
+
+typedef enum
+{
+   CSMCC_FR_ONLY = 1,
+   CSMCC_DUAL_HR_PREF,
+   CSMCC_DUAL_FR_PREF
+} csmcc_radio_channel_enum;
+
+typedef enum
+{
+   CSMCC_CIRCUIT_MODE,
+   CSMCC_PACKET_MODE
+} csmcc_transfer_mode_enum;
+
+typedef enum
+{
+   CSMCC_SYNC_DATA,
+   CSMCC_ASYNC_DATA
+} csmcc_sync_enum;
+
+typedef enum
+{
+   CSMCC_ITC_SPEECH,
+   CSMCC_ITC_UDI,
+   CSMCC_ITC_3_1_K_AUDIO,
+   CSMCC_ITC_FAX_GROUP_3,
+   CSMCC_OTHER_ITC = 5,
+   CSMCC_ITC_AUX_SPEECH = 6,
+   CSMCC_ITC_RESERVED = 7
+} csmcc_itc_enum;
+
+typedef enum
+{
+   CSMCC_ITC_RDI
+} csmcc_other_itc_enum;
+
+typedef enum
+{
+   CSMCC_UR_0_3_K = 1,
+   CSMCC_UR_1_2_K,
+   CSMCC_UR_2_4_K,
+   CSMCC_UR_4_8_K,
+   CSMCC_UR_9_6_K,
+   CSMCC_UR_12_K
+} csmcc_user_rate_enum;
+
+typedef enum
+{
+   CSMCC_FNUR_NM,
+   CSMCC_FNUR_9_6_K,
+   CSMCC_FNUR_14_4_K,
+   CSMCC_FNUR_19_2_K,
+   CSMCC_FNUR_28_8_K,
+   CSMCC_FNUR_38_4_K,
+   CSMCC_FNUR_48_K,
+   CSMCC_FNUR_56_K,
+   CSMCC_FNUR_64_K,
+   CSMCC_FNUR_33_6_K,
+   CSMCC_FNUR_32_K,
+   CSMCC_FNUR_31_2_K
+} csmcc_fnur_enum;
+
+typedef enum
+{
+   CSMCC_RA_NONE,
+   CSMCC_RA_V110,
+   CSMCC_RA_X31,
+   CSMCC_RA_OTHER
+} csmcc_rate_adaptation_enum;
+
+typedef enum
+{
+   CSMCC_RA_V120,
+   CSMCC_RA_H223,
+   CSMCC_RA_PIAFS
+} csmcc_other_rate_adaptation_enum;
+
+typedef enum
+{
+   CSMCC_MT_NONE,
+   CSMCC_MT_V21,
+   CSMCC_MT_V22,
+   CSMCC_MT_V22_BIS,
+   CSMCC_MT_V26_TER = 5,
+   CSMCC_MT_V32,
+   CSMCC_MT_UNDEFINED,
+   CSMCC_MT_AUTOBAUDING
+} csmcc_modem_type_enum;
+
+typedef enum
+{
+   CSMCC_OTHER_MT_NONE,
+   CSMCC_MT_V34 = 2
+} csmcc_other_modem_type_enum;
+
+typedef enum
+{
+   CSMCC_FR_V1 = 0,
+   CSMCC_HR_V1 = 1,
+   CSMCC_FR_V2 = 2,
+   CSMCC_FR_V3 = 4,
+   CSMCC_HR_V3 = 5,
+   CSMCC_FR_AMRWB_V5 = 8
+} csmcc_speech_ver_enum;
+
+typedef enum
+{
+   CSMCC_NO_DATA_COMPRESS,
+   CSMCC_DATA_COMPRESS
+} csmcc_data_compression_enum;
+
+typedef enum
+{
+   CSMCC_SDU_INTEGRITY,
+   CSMCC_UNSTRUCTURED = 3
+} csmcc_structure_enum;
+
+typedef enum
+{
+   CSMCC_HALF_DUPLEX,
+   CSMCC_FULL_DUPLEX	
+} csmcc_duplex_mode_enum;
+
+typedef enum
+{
+   CSMCC_NIRR_NO_MEANING,
+   CSMCC_NIRR_REQUESTED
+} csmcc_nirr_enum;
+
+typedef enum
+{
+   CSMCC_SAP_I440_450 = 1,
+   CSMCC_SAP_X32 = 6
+} csmcc_sap_enum;
+
+typedef enum
+{
+   CSMCC_IR_8_K = 2,
+   CSMCC_IR_16_K
+} csmcc_intermediate_rate_enum;
+
+typedef enum
+{
+   CSMCC_NO_NIC_ON_TX,
+   CSMCC_NIC_ON_TX
+} csmcc_nic_on_tx_enum;
+
+typedef enum
+{
+   CSMCC_NO_NIC_ON_RX,
+   CSMCC_NIC_ON_RX
+} csmcc_nic_on_rx_enum;
+
+typedef enum
+{
+   CSMCC_UIMI_NOT_ALLOWED,
+   CSMCC_UIMI_UPTO_1_TCH,
+   CSMCC_UIMI_UPTO_2_TCH,
+   CSMCC_UIMI_UPTO_3_TCH,
+   CSMCC_UIMI_UPTO_4_TCH
+} csmcc_uimi_enum;
+
+typedef enum
+{
+   CSMCC_UIL2P_X25 = 6,
+   CSMCC_UIL2P_ISO_6429 = 8,
+   CSMCC_UIL2P_VICEOTEX = 10,
+   CSMCC_UIL2P_COP_NO_FLCT = 12,
+   CSMCC_UIL2P_X75
+} csmcc_uil2p_enum;
+
+typedef enum
+{
+   CSMCC_1_STOP_BIT,
+   CSMCC_2_STOP_BIT
+} csmcc_nsb_enum;
+
+typedef enum
+{
+   CSMCC_7_DATA_BIT,
+   CSMCC_8_DATA_BIT
+}csmcc_ndb_enum;
+
+typedef enum
+{
+   CSMCC_PARITY_ODD,
+   CSMCC_PARITY_EVEN = 2,
+   CSMCC_PARITY_NONE,
+   CSMCC_PARITY_FORCED_0,
+   CSMCC_PARITY_FORCED_1
+} csmcc_parity_enum;
+
+typedef enum
+{
+   CSMCC_1_TCH,
+   CSMCC_2_TCH,
+   CSMCC_3_TCH,
+   CSMCC_4_TCH,
+   CSMCC_5_TCH,
+   CSMCC_6_TCH,
+   CSMCC_7_TCH,
+   CSMCC_8_TCH
+} csmcc_max_tch_enum;
+
+typedef enum
+{
+   CSMCC_AIUR_NM,
+   CSMCC_AIUR_9_6_K,
+   CSMCC_AIUR_14_4_K,
+   CSMCC_AIUR_19_2_K,
+   CSMCC_AIUR_28_8_K = 5,
+   CSMCC_AIUR_38_4_K,
+   CSMCC_AIUR_43_2_K,
+   CSMCC_AIUR_57_6_K
+} csmcc_waiur_enum;
+
+typedef enum
+{
+   CSMCC_ALTERNATE_MODE = 1,
+   CSMCC_FALLBACK_MODE,
+   CSMCC_SEQUENTIAL_MODE,
+   CSMCC_SERVICE_CHANGE_AND_FALLBACK
+} csmcc_repeat_ind_enum;
+
+/* The following enum types are used to describe AT parameters */
+
+typedef enum
+{
+   CSMCC_DEFAULT_ADDR_TYPE = 129,
+   CSMCC_INTERNATIONAL_ADDR = 145
+   
+} csmcc_addr_type_enum;
+
+typedef enum
+{
+   CSMCC_SINGLE_MODE,
+   CSMCC_ALT_VOICE_FAX,
+   CSMCC_ALT_VOICE_DATA,
+   CSMCC_VOICE_FOLLOW_DATA,
+   CSMCC_INVALID_CALL_MODE = 255
+} csmcc_call_mode_enum;
+
+typedef enum
+{
+   CSMCC_AUTOBAUDING,
+   CSMCC_2400_BPS_V22BIS = 4,
+   CSMCC_2400_BPS_V26TER = 5,
+   CSMCC_4800_BPS_V32 = 6,
+   CSMCC_9600_BPS_V32 = 7,
+   CSMCC_9600_BPS_V34 = 12,
+   CSMCC_14400_BPS_V34 = 14,
+   CSMCC_19200_BPS_V34 = 15,
+   CSMCC_28800_BPS_V34 = 16,
+   CSMCC_2400_BPS_V120 = 36,
+   CSMCC_4800_BPS_V120 = 38,
+   CSMCC_9600_BPS_V120 = 39,
+   CSMCC_14400_BPS_V120 = 43,
+   CSMCC_19200_BPS_V120 = 47,
+   CSMCC_28800_BPS_V120 = 48,
+   CSMCC_38400_BPS_V120 = 49,
+   CSMCC_48000_BPS_V120 = 50,
+   CSMCC_56000_BPS_V120 = 51,
+   CSMCC_2400_BPS_V110 = 68,
+   CSMCC_4800_BPS_V110 = 70,
+   CSMCC_9600_BPS_V110 = 71,
+   CSMCC_14400_BPS_V110 = 75,
+   CSMCC_19200_BPS_V110 = 79,
+   CSMCC_28800_BPS_V110 = 80,
+   CSMCC_38400_BPS_V110 = 81,
+   CSMCC_48000_BPS_V110 = 82,
+   CSMCC_56000_BPS_V110 = 83,
+   CSMCC_56000_BPS_TRANSPARENT = 115,   //__UMTS_CSD_T__
+   CSMCC_64000_BPS_TRANSPARENT = 116,   
+   CSMCC_64000_BPS_MULTIMEDIA = 134, /*[MAUI_00740014]:CBST for Multimedia*/
+   CSMCC_INVALID_SPEED = 255
+} csmcc_bearer_speed_enum;
+
+typedef enum
+{
+   CSMCC_DATA_ASYNC,
+   CSMCC_DATA_SYNC,
+   CSMCC_PDA_UDI,
+   CSMCC_PACKET_UDI,
+   CSMCC_DATA_ASYNC_RDI,
+   CSMCC_DATA_SYNC_RDI,
+   CSMCC_PDA_RDI,
+   CSMCC_PACKET_RDI,
+   CSMCC_INVALID_BEARER_NAME = 255
+} csmcc_bearer_name_enum;
+
+typedef enum
+{
+   CSMCC_TRANSPARENT,
+   CSMCC_NON_TRANSPARENT,
+   CSMCC_TRANSPARENT_PREF,
+   CSMCC_NON_TRANSPARENT_PREF,
+   CSMCC_INVALID_BEARER_CE = 255 /*mtk00924: remove warning C2874W may be used before being set*/
+} csmcc_bearer_ce_enum;
+
+typedef enum
+{
+   CSMCC_SNS_VOICE,
+   CSMCC_SNS_ALT_VOICE_FAX_VOICE_FIRST,
+   CSMCC_SNS_FAX,
+   CSMCC_SNS_ALT_VOICE_DATA_VOICE_FIRST,
+   CSMCC_SNS_DATA,
+   CSMCC_SNS_ALT_VOICE_FAX_FAX_FIRST,
+   CSMCC_SNS_ALT_VOICE_DATA_DATA_FIRST,
+   CSMCC_SNS_VOICE_FOLLOW_DATA
+} csmcc_sns_mode_enum;
+
+typedef enum
+{
+   CSMCC_CF_PARITY_AUTODETECT,
+   CSMCC_CF_8_DATA_2_STOP,
+   CSMCC_CF_8_DATA_1_PARITY_1_STOP,
+   CSMCC_CF_8_DATA_1_STOP,
+   CSMCC_CF_7_DATA_2_STOP,
+   CSMCC_CF_7_DATA_1_PARITY_1_STOP,
+   CSMCC_CF_7_DATA_1_STOP
+} csmcc_cf_format_enum;
+
+typedef enum
+{
+   CSMCC_CF_PARITY_ODD,
+   CSMCC_CF_PARITY_EVEN,
+   CSMCC_CF_PARITY_MARK,
+   CSMCC_CF_PARITY_SPACE
+} csmcc_cf_parity_enum;
+
+typedef enum
+{
+   CSMCC_RAH_NOT_INCLUDED,
+   CSMCC_RAH_INCLUDED
+} csmcc_v120_rah_enum;
+
+typedef enum
+{
+   CSMCC_MULTI_FRAME_EST_NOT_SUPPORT,
+   CSMCC_MULTI_FRAME_EST_SUPPORT
+} csmcc_v120_mfm_enum;
+
+typedef enum
+{
+   CSMCC_BIT_TRANSPARENT_MODE,
+   CSMCC_PROTOCOL_SENSITIVE_MODE
+} csmcc_v120_mode_enum;
+
+typedef enum
+{
+   CSMCC_LLI_NEG_NOT_ALLOWED,
+   CSMCC_LLI_NEG_ALLOWED
+} csmcc_v120_llineg_enum;
+
+typedef enum
+{
+   CSMCC_DEFAULT_ASSIGNEE,
+   CSMCC_ASSIGNOR_ONLY
+} csmcc_v120_assign_enum;
+
+typedef enum
+{
+   CSMCC_LOGICAL_LINK_ZERO,
+   CSMCC_USER_INFO
+} csmcc_v120_negtype_enum;
+
+typedef enum
+{
+   CSMCC_NO_COMPRESSION,
+   CSMCC_TRANSMIT_ONLY,
+   CSMCC_RECEIVE_ONLY,
+   CSMCC_BOTH_DIRECTION
+} csmcc_data_compression_dir_enum;
+
+typedef enum
+{
+   CSMCC_NO_DISC_IF_NO_NEGOTIATION,
+   CSMCC_DISC_IF_NO_NEGOTIATION
+} csmcc_data_compression_nego_enum;
+
+typedef enum
+{
+   CSMCC_QUERY_CCM,
+   CSMCC_DEACTIVATE_CCM_REPORTING,
+   CSMCC_ACTIVEATE_CCM_REPORTING
+} csmcc_aoc_mode_enum;
+
+typedef enum
+{
+   CSMCC_DISABLE_CUG_TEMPORARY_MODE,
+   CSMCC_ENABLE_CUG_TEMPORARY_MODE
+} csmcc_cug_temporary_mode_enum;
+
+typedef enum
+{
+   CSMCC_CUG_INDEX_0,
+   CSMCC_CUG_INDEX_1,
+   CSMCC_CUG_INDEX_2,
+   CSMCC_CUG_INDEX_3,
+   CSMCC_CUG_INDEX_4,
+   CSMCC_CUG_INDEX_5,
+   CSMCC_CUG_INDEX_6,
+   CSMCC_CUG_INDEX_7,
+   CSMCC_CUG_INDEX_8,
+   CSMCC_CUG_INDEX_9,
+   CSMCC_CUG_NO_INDEX
+} csmcc_cug_index_enum;
+
+typedef enum
+{
+   CSMCC_CUG_NO_SUPPRESS_INFO,
+   CSMCC_CUG_SUPPRESS_OA,
+   CSMCC_CUG_SUPPRESS_PREF_CUG,
+   CSMCC_CUG_SUPPRESS_OA_AND_PREF_CUG
+} csmcc_cug_suppress_enum;
+
+typedef enum
+{
+   CSMCC_DATA,
+   CSMCC_FAX_CLASS_1_TIA,
+   CSMCC_FAX_CLASS_1_ITUT = 10,
+   CSMCC_FAX_MANU_SPECIFIC = 2,
+   CSMCC_FAX_CLASS_2 = 20,
+   CSMCC_VOICE = 8,
+   CSMCC_VOICEVIEW = 80
+} csmcc_fclass_mode_enum;
+
+typedef enum
+{
+   CSMCC_DETACH,         /* No TCH. */
+   CSMCC_ATTACH_REQ, /* Wish to attach but wait TCH. */
+   CSMCC_SPEECH_ON,
+   CSMCC_SPEECH_OFF,  /* Speech is detached, but TCH still exists. */
+   CSMCC_DATA_ATTACH_REQ,
+   CSMCC_DATA_ATTACH   
+} csmcc_attach_status_enum;
+
+typedef enum
+{
+   CSMCC_NO_TCH,
+   CSMCC_SPEECH_TCH,
+   CSMCC_DATA_TCH,
+   CSMCC_CHMODE_MODIFY
+} csmcc_channel_info_enum;
+
+
+
+typedef enum
+{
+   CSMCC_CTM_NOT_SUPPORT,
+   CSMCC_CTM_SUPPORT
+} csmcc_ctm_enum;
+
+/*mtk01602: replace 3 stack timer by an event scheduler */
+typedef enum
+{
+   CSMCC_DTMF_PAUSE_TIMER,
+   CSMCC_CALL_CONFIRM_TIMER
+}csmcc_timer_enum;
+
+/* mtk01602: use rlc_enum to represent rlc_flag status*/
+typedef enum
+{
+	RLC_TIMER_INIT,
+	RLC_TIMER_RUNNING,
+	WAIT_FOR_SENDING_RLC,
+        RLC_TIMER_EXPIRE /*MAUI_02648399*/
+} csmcc_rlc_enum;
+
+/* mtk01602: REL4, TS 24.008 Table 10.5.135d
+   Define Emergency Service Categories Enum */
+typedef enum
+{
+   CSMCC_CATEGORY_UNSPECIFIED, 
+   CSMCC_CATEGORY_POLICE,
+   CSMCC_CATEGORY_AMBULANCE,
+   CSMCC_CATEGORY_FIRE_BRIGADE = 4,
+   CSMCC_CATEGORY_MARINE_GUARD = 8,
+   CSMCC_CATEGORY_MOUNTAIN_RESCUE = 16,
+   CSMCC_CATEGORY_MANUALLY_INITIATED_ECALL = 32,
+   CSMCC_CATEGORY_AUTOMATICALLY_INITIATED_ECALL = 64,   
+   CSMCC_CATEGORY_RESERVED = 128,
+   CSMCC_CATEGORY_INVALID = 255
+}csmcc_ecc_category_enum;
+
+typedef enum
+{
+   CSMCC_LLC_UR_600_BPS = 1,
+   CSMCC_LLC_UR_1200_BPS = 2,
+   CSMCC_LLC_UR_2400_BPS = 3,
+   CSMCC_LLC_UR_3600_BPS = 4,   
+   CSMCC_LLC_UR_4800_BPS = 5,
+   CSMCC_LLC_UR_7200_BPS = 6,
+   CSMCC_LLC_UR_8000_BPS = 7,
+   CSMCC_LLC_UR_9600_BPS = 8,
+   CSMCC_LLC_UR_14400_BPS = 9,
+   CSMCC_LLC_UR_16000_BPS = 10,
+   CSMCC_LLC_UR_19200_BPS = 11,
+   CSMCC_LLC_UR_32000_BPS = 12,	
+   CSMCC_LLC_UR_48000_BPS = 14,
+   CSMCC_LLC_UR_56000_BPS = 15,
+   CSMCC_LLC_UR_64000_BPS = 16
+}csmcc_llc_user_rate_enum;/*LLC IE 5A bit 1 to bit 5*/
+
+#endif /* _CSMCC_ENUMS_H */
+
+
diff --git a/mcu/interface/protocol/general/csmss_common_enums.h b/mcu/interface/protocol/general/csmss_common_enums.h
new file mode 100644
index 0000000..ec7c5f7
--- /dev/null
+++ b/mcu/interface/protocol/general/csmss_common_enums.h
@@ -0,0 +1,406 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *	csmss_common_enums.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for type definition used in CSM(SS) module.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _CSMSS_COMMON_ENUMS_H
+#define _CSMSS_COMMON_ENUMS_H
+
+#include "ps_public_enum.h"
+
+/* the following are used for CSMSS */
+
+typedef enum
+{
+    CSMSS_NULL_STATE,
+    CSMSS_WAIT_FOR_NW_STATE,
+    CSMSS_WAIT_FOR_SUB_STATE
+}csmss_state_enum;
+
+//MAUI_01988887
+#define L4_CPHS INVALID_SRC
+
+typedef enum {
+   L4_SUCCESS  = 0,
+   L4_FAIL     = 1,
+   L4_CHANGE   = 2
+} l4_ret_code_enum;
+
+typedef enum {
+   SS_OP_REGISTERSS                            =  10,  //          CISS
+   SS_OP_ERASESS                               =  11,  //          CISS
+   SS_OP_ACTIVATESS                            =  12,  //          CISS
+   SS_OP_DEACTIVATESS                          =  13,  //          CISS
+   SS_OP_INTERROGATESS                         =  14,  //          CISS
+   SS_OP_NOTIFYSS                              =  16,  // CRSS
+   SS_OP_REGISTERPASSWORD                      =  17,  //          CISS
+   SS_OP_GETPASSWORD                           =  18,  //          CISS
+   SS_OP_PROCESSUNSTRUCTUREDSS_DATA            =  19,  // CRSS AND CISS
+   SS_OP_FORWARDCHECKSS_INDICATION             =  38,  //          CISS
+   SS_OP_PROCESSUNSTRUCTUREDSS_REQUEST         =  59,  //          CISS
+   SS_OP_UNSTRUCTUREDSS_REQUEST                =  60,  //          CISS
+   SS_OP_UNSTRUCTUREDSS_NOTIFY                 =  61,  //          CISS
+   SS_OP_ERASECCENTRY                          =  77,  //          CISS
+//SSAGPS
+//#ifdef __AGPS_CONTROL_PLANE__
+   SS_OP_LCS_MOLR                              = 115,  //          CISS(LCS)
+   SS_OP_LCS_LOCATIONNOTIFICATION              = 116,  //          CISS(LCS)
+   SS_OP_LCS_AREA_EVENT_REQUEST                = 114,  //          CISS(LCS)
+   SS_OP_LCS_AREA_EVENT_REPORT                 = 113,  //          CISS(LCS)
+   SS_OP_LCS_AREA_EVENT_CANCELLATION           = 112,  //          CISS(LCS)
+   SS_OP_CALLDEFLECTION                        = 117,  // CRSS
+   SS_OP_USERUSERSERVICE                       = 118,  // CRSS
+   SS_OP_ACCESSREGISTERCCENTRY                 = 119,  // CRSS
+   SS_OP_FORWARDCUG_INFO                       = 120,  // CRSS
+   SS_OP_SPLITMPTY                             = 121,  // CRSS
+   SS_OP_RETRIEVEMPTY                          = 122,  // CRSS
+   SS_OP_HOLDMPTY                              = 123,  // CRSS
+   SS_OP_BUILDMPTY                             = 124,  // CRSS
+   SS_OP_FORWARDCHARGEADVICE                   = 125,  // CRSS
+   SS_OP_EXPLICITCT                            = 126   // CRSS
+} l4_op_code_enum;
+
+typedef enum {    //                        RegisterSS EraseSS ActivateSS DeactivateSS InterrogateSS
+   SS_ALLSS                       = 0x00,
+   SS_ALLLINEIDENTIFICATIONSS     = 0x10,
+   SS_CLIP                        = 0x11, //                                           11.14
+   SS_CLIR                        = 0x12, //                                           12.14
+   SS_COLP                        = 0x13, //                                           13.14
+   SS_COLR                        = 0x14, //                                           14.14
+   SS_MCI                         = 0x15,
+   SS_ALLNAMEIDENTIFICATIONSS     = 0x18,
+   SS_CNAP                        = 0x19, //                                           19.14
+   SS_ALLFORWARDINGSS             = 0x20, //20.10      20.11   20.12      20.13        20.14
+   SS_CFU                         = 0x21, //21.10      21.11   21.12      21.13        21.14
+   SS_ALLCONDFORWARDINGSS         = 0x28, //28.10      28.11   28.12      28.13        28.14
+   SS_CFB                         = 0x29, //29.10      29.11   29.12      29.13        29.14
+   SS_CFNRY                       = 0x2A, //2A.10      2A.11   2A.12      2A.13        2A.14
+   SS_CFNRC                       = 0x2B, //2B.10      2B.11   2B.12      2B.13        2B.14
+   SS_CD                          = 0x24,
+   SS_ALLCALLOFFERINGSS           = 0x30,
+   SS_ECT                         = 0x31,
+   SS_MAH                         = 0x32,
+   SS_ALLCALLCOMPLETIONSS         = 0x40,
+   SS_CW                          = 0x41, //                   41.12      41.13        41.14
+   SS_HOLD                        = 0x42, //                              ERASECCENTRY
+   SS_CCBS_A                      = 0x43, //                              43.77        43.14
+   SS_CCBS_B                      = 0x44,
+   SS_MC                          = 0x45,
+   SS_ALLMULTIPARTYSS             = 0x50,
+   SS_MULTIPTY                    = 0x51,
+   SS_ALLCOMMUNITYOFINTEREST_SS   = 0x60,
+   SS_CUG                         = 0x61,
+   SS_ALLCHARGINGSS               = 0x70,
+   SS_AOCI                        = 0x71,
+   SS_AOCC                        = 0x72,
+   SS_ALLADDITIONALINFOTRANSFERSS = 0x80,
+   SS_UUS1                        = 0x81,
+   SS_UUS2                        = 0x82,
+   SS_UUS3                        = 0x83, //REGISTERPW GETPW
+   SS_ALLBARRINGSS                = 0x90, //90.17      90.18   90.12      90.13        90.14
+   SS_BARRINGOFOUTGOINGCALLS      = 0x91, //91.17      91.18   91.12      91.13        91.14
+   SS_BAOC                        = 0x92, //92.17      92.18   92.12      92.13        92.14
+   SS_BOIC                        = 0x93, //93.17      93.18   93.12      93.13        93.14
+   SS_BOICEXHC                    = 0x94, //94.17      94.18   94.12      94.13        94.14
+   SS_BARRINGOFINCOMINGCALLS      = 0x99, //99.17      99.18   99.12      99.13        99.14
+   SS_BAIC                        = 0x9A, //9A.17      9A.18   9A.12      9A.13        9A.14
+   SS_BICROAM                     = 0x9B, //9B.17      9B.18   9B.12      9B.13        9B.14
+   SS_ALLCALLPRIORITYSS           = 0xA0,
+   SS_EMLPP                       = 0xA1, //A1.10                                      A1.14
+   SS_ALLLCSPRIVACYEXCEPTION      = 0xB0,
+   SS_UNIVERSAL                   = 0xB1,
+   SS_CALLRELATED                 = 0xB2,
+   SS_CALLUNRELATED               = 0xB3,
+   SS_PLMNOPERATOR                = 0xB4,
+   SS_ALLMOLR_SS                  = 0xC0,
+   SS_BASICSELFLOCATION           = 0xC1,
+   SS_AUTONOMOUSSELFLOCATION      = 0xC2,
+   SS_TRANSFERTOTHIRDPARTY        = 0xC3,
+   SS_ALLPLMN_SPECIFICSS          = 0xF0,
+   SS_PLMN_SPECIFICSS_1           = 0xF1,
+   SS_PLMN_SPECIFICSS_2           = 0xF2,
+   SS_PLMN_SPECIFICSS_3           = 0xF3,
+   SS_PLMN_SPECIFICSS_4           = 0xF4,
+   SS_PLMN_SPECIFICSS_5           = 0xF5,
+   SS_PLMN_SPECIFICSS_6           = 0xF6,
+   SS_PLMN_SPECIFICSS_7           = 0xF7,
+   SS_PLMN_SPECIFICSS_8           = 0xF8,
+   SS_PLMN_SPECIFICSS_9           = 0xF9,
+   SS_PLMN_SPECIFICSS_A           = 0xFA,
+   SS_PLMN_SPECIFICSS_B           = 0xFB,
+   SS_PLMN_SPECIFICSS_C           = 0xFC,
+   SS_PLMN_SPECIFICSS_D           = 0xFD,
+   SS_PLMN_SPECIFICSS_E           = 0xFE,
+   SS_PLMN_SPECIFICSS_F           = 0xFF
+} ss_code_enum;
+
+/*
+ * Teleservice codes
+ * 3GPP TS 29.002 clause 7.6.4.39 / 17.7.9
+ */
+
+typedef enum {
+   TS_ALLTELESERVICES                       = 0x00,
+   TS_ALLSPEECTRANSMISSIONSERVICES          = 0x10,
+   TS_TELEPHONY                             = 0x11,
+   TS_EMERGENCYCALLS                        = 0x12,
+   TS_ALLSHORTMESSAGESERVICES               = 0x20,
+   TS_SHORTMESSAGEMT_PP                     = 0x21,
+   TS_SHORTMESSAGEMO_PP                     = 0x22,
+   TS_ALLFACSIMILETRANSMISSIONSERVICES      = 0x60,
+   TS_FACSIMILEGROUP3ANDALTERSPEECH         = 0x61,
+   TS_AUTOMATICFACSIMILEGROUP3              = 0x62,
+   TS_FACSIMILEGROUP4                       = 0x63,
+   TS_ALLDATATELESERVICES                   = 0x70,
+   TS_ALLTELESERVICES_EXEPTSMS              = 0x80,
+   TS_ALLVOICEGROUPCALLSERVICES             = 0x90,
+   TS_VOICEGROUPCALL                        = 0x91,
+   TS_VOICEBROADCASTCALL                    = 0x92,
+   TS_ALLPLMN_SPECIFICTS                    = 0xD0,
+   TS_PLMN_SPECIFICTS_1                     = 0xD1,
+   TS_PLMN_SPECIFICTS_2                     = 0xD2,
+   TS_PLMN_SPECIFICTS_3                     = 0xD3,
+   TS_PLMN_SPECIFICTS_4                     = 0xD4,
+   TS_PLMN_SPECIFICTS_5                     = 0xD5,
+   TS_PLMN_SPECIFICTS_6                     = 0xD6,
+   TS_PLMN_SPECIFICTS_7                     = 0xD7,
+   TS_PLMN_SPECIFICTS_8                     = 0xD8,
+   TS_PLMN_SPECIFICTS_9                     = 0xD9,
+   TS_PLMN_SPECIFICTS_A                     = 0xDA,
+   TS_PLMN_SPECIFICTS_B                     = 0xDB,
+   TS_PLMN_SPECIFICTS_C                     = 0xDC,
+   TS_PLMN_SPECIFICTS_D                     = 0xDD,
+   TS_PLMN_SPECIFICTS_E                     = 0xDE,
+   TS_PLMN_SPECIFICTS_F                     = 0xDF,
+//} teleservice_code_enum;
+/*
+ * Bearer Service codes
+ * 3GPP TS 29.002 clause 7.6.4.38 / 17.7.10
+ */
+//typedef enum {
+   BS_ALLBEARERSERVICES                     = 0x00,
+   BS_ALLDATACDA_SERVICES                   = 0x10,
+   BS_DATACDA_300BPS                        = 0x11,
+   BS_DATACDA_1200BPS                       = 0x12,
+   BS_DATACDA_1200_75BPS                    = 0x13,
+   BS_DATACDA_2400BPS                       = 0x14,
+   BS_DATACDA_4800BPS                       = 0x15,
+   BS_DATACDA_9600BPS                       = 0x16,
+   BS_GENERAL_DATACDA                       = 0x17,
+   BS_ALLDATACDS_SERVICES                   = 0x18,
+   BS_DATACDS_1200BPS                       = 0x1A,
+   BS_DATACDS_2400BPS                       = 0x1C,
+   BS_DATACDS_4800BPS                       = 0x1D,
+   BS_DATACDS_9600BPS                       = 0x1E,
+   BS_GENERAL_DATACDS                       = 0x1F,
+   BS_ALLPADACCESSCA_SERVICES               = 0x20,
+   BS_PADACCESSCA_300BPS                    = 0x21,
+   BS_PADACCESSCA_200BPS                    = 0x22,
+   BS_PADACCESSCA_1200_75BPS                = 0x23,
+   BS_PADACCESSCA_2400BPS                   = 0x24,
+   BS_PADACCESSCA_800BPS                    = 0x25,
+   BS_PADACCESSCA_9600BPS                   = 0x26,
+   BS_GENERAL_PADACCESSCA                   = 0x27,
+   BS_ALLDATAPDS_SERVICES                   = 0x28,
+   BS_DATAPDS_2400BPS                       = 0x2C,
+   BS_DATAPDS_4800BPS                       = 0x2D,
+   BS_DATAPDS_9600BPS                       = 0x2E,
+   BS_GENERAL_DATAPDS                       = 0x2F,
+   BS_ALLALTERNATESPEECH_DATACDA            = 0x30,
+   BS_ALLALTERNATESPEECH_DATACDS            = 0x38,
+   BS_ALLSPEECHFOLLOWEDBYDATACDA            = 0x40,
+   BS_ALLSPEECHFOLLOWEDBYDATACDS            = 0x48,
+   BS_ALLDATACIRCUITASYNCHRONOUS            = 0x50,
+   BS_ALLDATACIRCUITSYNCHRONOUS             = 0x58,
+   BS_ALLASYNCHRONOUSSERVICES               = 0x60,
+   BS_ALLSYNCHRONOUSSERVICES                = 0x68,
+   BS_ALLPLMN_SPECIFICBS                    = 0xD0,
+   BS_PLMN_SPECIFICBS_1                     = 0xD1,
+   BS_PLMN_SPECIFICBS_2                     = 0xD2,
+   BS_PLMN_SPECIFICBS_3                     = 0xD3,
+   BS_PLMN_SPECIFICBS_4                     = 0xD4,
+   BS_PLMN_SPECIFICBS_5                     = 0xD5,
+   BS_PLMN_SPECIFICBS_6                     = 0xD6,
+   BS_PLMN_SPECIFICBS_7                     = 0xD7,
+   BS_PLMN_SPECIFICBS_8                     = 0xD8,
+   BS_PLMN_SPECIFICBS_9                     = 0xD9,
+   BS_PLMN_SPECIFICBS_A                     = 0xDA,
+   BS_PLMN_SPECIFICBS_B                     = 0xDB,
+   BS_PLMN_SPECIFICBS_C                     = 0xDC,
+   BS_PLMN_SPECIFICBS_D                     = 0xDD,
+   BS_PLMN_SPECIFICBS_E                     = 0xDE,
+   BS_PLMN_SPECIFICBS_F                     = 0xDF
+//} bearerservice_enum;
+} bs_code_enum;
+
+typedef enum {
+   CAUSE_NOT_PRESENT = 0,
+   CAUSE_PRESENT     = 1
+} cause_present_enum;
+
+typedef enum {
+   SUBADDRESS_NOT_PRESENT = 0,
+   SUBADDRESS_PRESENT     = 1
+} subaddress_present_enum;
+
+typedef enum {
+   SS_ABIT=0x1, // activation
+   SS_RBIT=0x2, // registration
+   SS_PBIT=0x4, // provision
+   SS_QBIT=0x8  // quiescent
+} ss_status_enum;
+
+//[ALPS00006144]
+//[MAUI_02553565] [YuSu] [L4 SS] explicit SS feature
+typedef enum {
+    CSMSS_IMPLICIT_OP,
+    CSMSS_EXPLICIT_SS_OP,
+    CSMSS_EXPLICIT_USSD_OP
+} ss_string_op; //ALPS00006144
+
+//align the value in LBS_MOLR_BEGIN_REQ to L4C, and the value in MNSS_BEGIN_IND
+typedef enum
+{
+    CSMSS_RAT_2_3G,
+    CSMSS_RAT_4G,
+    CSMSS_RAT_INVALID=255
+} csmss_rat_enum;
+
+//0: 24.080(refer to Q.773); 1: 34.123-3 annex.H
+typedef enum
+{
+    CSMSS_TS24080,
+    CSMSS_TS34123
+} csmss_asn_1_version_enum;
+
+//CFU file read status
+typedef enum
+{
+    CSMSS_CFU_FILE_NOT_READ = 0x00,
+    CSMSS_CFIS_READ         = 0x01, //EF_CFIS is read successfully
+    CSMSS_CFF_READ          = 0x02, //CPHS EF_CFF is read successfully
+    CSMSS_CFIS_CFF_READ     = 0x03, //CSMSS_CFIS_READ | CSMSS_CFF_READ
+    CSMSS_CFU_NVRAM_READ    = 0x04,
+    CSMSS_CFU_READ_DONE     = 0x07, //CSMSS_CFIS_READ | CSMSS_CFF_READ | CSMSS_CFU_NVRAM_READ
+} csmss_cfu_file_read_status_enum;
+
+#endif /* End of file csmss_common_enums.h */
+
+
diff --git a/mcu/interface/protocol/general/d2cm_custom_utility.h b/mcu/interface/protocol/general/d2cm_custom_utility.h
new file mode 100644
index 0000000..05d3e58
--- /dev/null
+++ b/mcu/interface/protocol/general/d2cm_custom_utility.h
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ *  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) 2013
+ *
+ ******************************************************************************/
+
+/*******************************************************************************
+ * Filename:
+ * ---------
+ *   d2cm_custom_utility.h
+ *
+ * Project:
+ * --------
+ *   
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ *   
+ *
+ ******************************************************************************/
+ 
+#ifndef __D2CM_CUSTOM_UTILITY_H__
+#define __D2CM_CUSTOM_UTILITY_H__
+
+#include "kal_public_defs.h"
+#include "d2cm_public_defs.h"
+#include "d2cm_struct.h"
+
+// Type definitions
+typedef enum
+{
+    // a single CID or the final CID 
+    D2CM_API_RES_NONE = D2CM_RES_NONE, 
+    D2CM_API_RES_FAIL = D2CM_RES_FAIL,
+    D2CM_API_RES_SUCC = D2CM_RES_SUCC,
+    // a subsequent CID
+    D2CM_API_RES_FAIL_ABORT = D2CM_RES_FAIL_ABORT,
+    D2CM_API_RES_SUCC_ABORT = D2CM_RES_SUCC_ABORT,
+    D2CM_API_RES_FAIL_CONT = D2CM_RES_FAIL_CONT,
+    D2CM_API_RES_SUCC_CONT = D2CM_RES_SUCC_CONT,
+    // otherwise
+    D2CM_API_RES_REJ = D2CM_RES_REJ,
+    D2CM_API_RES_RETRY = D2CM_RES_RETRY,
+    D2CM_API_RES_MAX = 0x7FFFFFFF
+}d2cm_api_res_enum;
+
+typedef void (*d2cm_event_cb_t) (kal_uint32 ps_id, d2cm_event_ind_struct *ind_ptr, void *arg);
+typedef void (*d2cm_get_pdn_profile_cb_t) (kal_uint32 ps_id, d2cm_get_pdn_profile_ind_struct *ind_ptr, void *arg);
+typedef void (*d2cm_act_data_call_cb_t) (kal_uint32 ps_id, d2cm_act_data_call_cnf_struct *cnf_ptr, void *arg);
+typedef void (*d2cm_deact_data_call_cb_t) (kal_uint32 ps_id, d2cm_deact_data_call_cnf_struct *cnf_ptr, void *arg);
+#if 0
+/* under construction !*/
+#endif
+typedef void (*d2cm_pre_act_data_call_cb_t) (kal_uint32 ps_id, d2cm_act_data_call_req_struct *req_ptr, void *arg);
+typedef void (*d2cm_post_act_data_call_cb_t) (kal_uint32 ps_id, d2cm_act_data_call_cnf_struct *cnf_ptr, void *arg);
+typedef void (*d2cm_pre_deact_data_call_cb_t) (kal_uint32 ps_id, d2cm_deact_data_call_req_struct *req_ptr, void *arg);
+typedef void (*d2cm_post_deact_data_call_cb_t) (kal_uint32 ps_id, d2cm_deact_data_call_cnf_struct *cnf_ptr, void *arg);
+
+// Macros
+// N/A
+
+// Functions
+extern d2cm_api_res_enum d2cm_search_pdn_profile_by_apn_idx (kal_uint32 ps_id, module_type mod_id, const kal_char *apn, kal_int32 apn_idx, d2cm_get_pdn_profile_ind_struct *ind_ptr);
+extern d2cm_api_res_enum d2cm_search_pdn_profile_by_cid (kal_uint32 ps_id, module_type mod_id, kal_int32 cid, d2cm_get_pdn_profile_ind_struct *ind_ptr);
+extern d2cm_api_res_enum d2cm_get_pdn_profile (kal_uint32 ps_id, module_type mod_id, d2cm_get_pdn_profile_req_struct *req_ptr, d2cm_get_pdn_profile_cb_t hook_fp, void* arg);
+extern d2cm_api_res_enum d2cm_act_data_call (kal_uint32 ps_id, module_type mod_id, d2cm_act_data_call_req_struct *req_ptr, d2cm_act_data_call_cb_t hook_fp, void* arg);
+extern d2cm_api_res_enum d2cm_deact_data_call (kal_uint32 ps_id, module_type mod_id, d2cm_deact_data_call_req_struct *req_ptr, d2cm_deact_data_call_cb_t hook_fp, void* arg);
+extern d2cm_api_res_enum d2cm_reg_event_cb (kal_uint32 ps_id, module_type mod_id, d2cm_event_enum event, d2cm_event_cb_t cb, void *arg);
+extern d2cm_api_res_enum d2cm_dereg_event_cb (kal_uint32 ps_id, module_type mod_id, d2cm_event_enum event);
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+extern d2cm_api_res_enum d2cm_reg_post_act_data_call_cb (kal_uint32 ps_id, module_type mod_id, d2cm_post_act_data_call_cb_t cb, void *arg);
+extern d2cm_api_res_enum d2cm_dereg_post_act_data_call_cb (kal_uint32 ps_id, module_type mod_id);
+extern d2cm_api_res_enum d2cm_reg_post_deact_data_call_cb (kal_uint32 ps_id, module_type mod_id, d2cm_post_deact_data_call_cb_t cb, void *arg);
+extern d2cm_api_res_enum d2cm_dereg_post_deact_data_call_cb (kal_uint32 ps_id, module_type mod_id);
+    
+#endif
diff --git a/mcu/interface/protocol/general/device.h b/mcu/interface/protocol/general/device.h
new file mode 100644
index 0000000..e3acf5a
--- /dev/null
+++ b/mcu/interface/protocol/general/device.h
@@ -0,0 +1,1383 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * DEVICE.H
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for definition of all hardware device requirement.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _DEVICE_H
+#define _DEVICE_H
+
+/***************************************************************************** 
+* Include
+*****************************************************************************/
+#include "kal_general_types.h"
+//#include "pmic6318_sw.h"
+#include "ps_public_struct.h"
+#include "dcl.h"
+
+/***************************************************************************** 
+* Define
+*****************************************************************************/
+/* Add by Yuchuan */
+#define UEM_GREETING_LEN      62
+#define UEM_EQUIP_ID_LEN      64
+
+/* Define the ring compose capability */
+#define MAX_RING_COMPOSE_NUM        5
+#define MAX_RING_COMPOSE_LEN        300
+
+/* Define the display text maximum len */
+#define UEM_DISPLAY_TEXT_LEN  30
+#define UEM_MAX_GREETING_LEN  30
+
+/* For UEM GPIO*/
+#define MAX_LED_GPIO       3    /* 3 LED lights */
+#define MAX_LCD_BACKLIGHT  1    /* 1 backlight */
+#define MAX_VIBRATOR       1    /* 1 vibrator */
+
+#define GPIO_INVAILD   0x0
+#define GPIO_VAILD     0x01
+#define GPO_VAILD        0x02
+#define MAX_NETNAME_TEXT 32
+
+//#ifdef __CUST_NEW__
+#define GPIO_INVALID   GPIO_INVAILD
+#define GPIO_VALID     GPIO_VAILD
+#define GPO_VALID      GPO_VAILD
+//#endif /* __CUST_NEW__ */ 
+
+/***************************************************************************** 
+* Typedef
+*****************************************************************************/
+typedef enum {
+   L4_BCD = 0x01,
+   L4_ASCII = 0x04,
+   L4_UCS2 = 0x08
+} L4_charset_enum;
+
+
+typedef enum {
+   MMI_PS_AT_LANG_DEFAULT,
+   MMI_PS_AT_LANG_UNKWN,
+   MMI_PS_AT_LANG_EN,
+   MMI_PS_AT_LANG_TW,
+   MMI_PS_AT_LANG_ZH,
+   MMI_PS_AT_LANG_LAST
+} L4_AT_lang_enum;
+
+typedef enum {
+    L4_WB_AUDIO_INPUT_FIR,
+    L4_WB_AUDIO_OUTPUT_FIR,
+    L4_WB_ADUIO_MODE_PARAM
+}l4_wb_audio_para_action_enum;
+/***************************************************************************** 
+* Audio Interface 
+*****************************************************************************/
+   
+/* Define the audio device type */
+typedef enum {
+    AUDIO_DEVICE_SPEAKER = 0  ,     /* Tone, Keypad sound to play on audio device. */
+    AUDIO_DEVICE_MICROPHONE   ,     /* Microphone sound to send on audio device. */
+    AUDIO_DEVICE_BUZZER       ,     /* Ring tone sound to play on audio device. */
+    AUDIO_DEVICE_GMI          ,     /* MIDI/Melody sound to play on audio device */
+    AUDIO_DEVICE_SPEAKER2     ,     /* earphone, carkit */
+    AUDIO_DEVICE_LOUDSPEAKER  ,     /* loudspeaker for free sound */
+    AUDIO_DEVICE_SPEAKER_BOTH ,
+    MAX_AUDIO_DEVICE_NUM      
+}audio_type_enum;
+
+
+/* Define the audio device type */
+typedef enum {
+    AUDIO_DEVICE_MIC1 = 0 ,    /* ME */
+    AUDIO_DEVICE_MIC2     ,    /* Headset */
+    AUDIO_DEVICE_FMRR     ,     /* FM Radio */
+    AUDIO_DEVICE_MIC3          /* Loud Spkear */
+}audio_input_path_enum;
+
+
+/* Define volume category */
+typedef enum {
+    VOL_NORMAL   = 0 ,
+    VOL_HEADSET      ,  
+    VOL_HANDFREE     ,  
+    MAX_VOL_CATE,
+    VOL_TV_OUT = MAX_VOL_CATE
+}volume_category_enum;
+
+
+/* Define volume type.*/
+typedef enum {
+    VOL_TYPE_CTN  = 0 ,   /* MMI can apply to associate volume; call tone attribute */
+    VOL_TYPE_KEY      ,   /* MMI can apply to associate volume; keypad tone attribute */
+    VOL_TYPE_MIC      ,   /* microphone attribute */
+    VOL_TYPE_GMI      ,   /* MMI can apply to associate volume; melody, imelody, midi attribute */
+    VOL_TYPE_SPH      ,   /* MMI can apply to associate volume; speech sound attribute */
+    VOL_TYPE_SID	  ,   /* side tone attribute */
+    VOL_TYPE_MEDIA    ,   /* MMI can apply to associate volume; As MP3, Wave,... attribute */
+    MAX_VOL_TYPE           
+}volume_type_enum;
+
+
+/* Volume level. based index is from 0..(MAX_VOL_LEVEL-1) */
+#define MAX_VOL_LEVEL               7
+
+
+
+/* Define the audio play style. */
+typedef enum {
+    DEVICE_AUDIO_PLAY_CRESCENDO  = 0 ,  /* Play sound for crescendo. */
+    DEVICE_AUDIO_PLAY_INFINITE       ,  /* Play sound for infinite. */
+    DEVICE_AUDIO_PLAY_ONCE           ,  /* Play sound for once. */
+    DEVICE_AUDIO_PLAY_DESCENDO         /* Play sound for descendo. */
+}audio_play_style_enum;
+
+
+typedef struct {
+   kal_uint8 first_out_amp[MAX_AUDIO_DEVICE_NUM][MAX_VOL_LEVEL];
+   kal_uint8 second_out_amp[MAX_AUDIO_DEVICE_NUM][MAX_VOL_LEVEL];
+   kal_uint8 side[MAX_AUDIO_DEVICE_NUM][MAX_VOL_LEVEL];
+   kal_uint8 volume[MAX_AUDIO_DEVICE_NUM];
+} acoustic_gain_struct;
+
+
+/***************************************************************************** 
+* Keypad  Interface 
+*****************************************************************************/
+
+/* Define the keypad status. */
+typedef enum {
+    KEY_PRESSED        = 0   /* Keypad is pressed. */
+    ,KEY_RELEASED            /* Keypad is released. */
+    ,KEY_LONGPRESS           /* Keypad is longpressed. */
+    ,KEY_REPEATED            /* Keypad is repeated. */
+#ifdef TWO_KEY_ENABLE
+    ,KEY_PRESSED_TWOKEY      /* Two Keypad is pressed. */
+    ,KEY_RELEASED_TWOKEY     /* Two Keypad is released. */
+#endif   /*TWO_KEY_ENABLE*/
+}keypad_status_enum;
+
+
+/* Define the keypad code value. */
+typedef kal_uint8 keypad_code_enum;
+
+
+/***************************************************************************** 
+* RTC  Interface 
+*****************************************************************************/
+
+/* Define the RTC type. */
+typedef enum {
+    RTC_TIME_CLOCK_IND  = 0 , /* The time clock indication. */
+    RTC_ALARM_IND             /* The alarm indication */
+}rtc_type_enum;
+
+
+/* Define the type to setting RTC. */
+typedef enum {
+    RTC_SETTING_TYPE_DATETIME  = 0 , 
+    RTC_SETTING_TYPE_DATE          ,
+    RTC_SETTING_TYPE_TIME             
+}rtc_setting_type_enum;
+
+/* Define the RTC alarm id. */
+typedef kal_uint8 rtc_alarm_id_enum;
+#define RTC_ALARM1_IND     0 /* The alarm indication */
+#define RTC_ALARM2_IND     1 /* The alarm indication */
+#define RTC_ALARM3_IND     2 /* The alarm indication */
+#define MAX_ALARM_NUM      3
+
+/* Define the Alarm type */
+typedef enum {
+    RTC_ALARM_VIBRATOR  = 0x01 , 
+    RTC_ALARM_LED       = 0x02 , 
+    RTC_ALARM_SOUND     = 0x04 , 
+    RTC_ALARM_SILENT    = 0x08 
+}rtc_alarm_type_enum;
+
+
+/* Define the Alarm recurr */
+typedef enum {
+ RTC_ALARM_DAY1    = 0x01 ,
+ RTC_ALARM_DAY2    = 0x02 ,
+ RTC_ALARM_DAY3    = 0x04 ,
+ RTC_ALARM_DAY4    = 0x08 ,
+ RTC_ALARM_DAY5    = 0x10 ,
+ RTC_ALARM_DAY6    = 0x20 ,
+ RTC_ALARM_DAY7    = 0x40 ,
+ RTC_ALARM_DAY_ALL = 0x7F
+}rtc_alarm_recurr_enum;
+
+/* Define the Date/Time format type. */
+typedef enum {
+    DATE_DD_MMM_YYYY  = 1 
+/*
+    ,DATE_DD_MM_YY_H     
+    ,DATE_MM_DD_YY       
+    ,DATE_DD_MM_YY_S     
+    ,DATE_DD_MM_YY_P     
+    ,DATE_YYMMDD         
+    ,DATE_YY_MM_DD       
+*/
+
+    ,DATE_DD_MM_YYYY_S 	  = 8
+    ,DATE_MM_DD_YYYY_S		
+    ,DATE_YYYY_MM_DD_S		
+    ,DATE_YYYY_MM_DD_H		
+    ,DATE_MMM_DD_YYYY		
+}date_format_enum;
+
+
+#define   DATE_AUX_YY_MM_DD   1
+#define   DATE_AUX_YYYY_MM_DD 2
+
+
+typedef enum {
+    TIME_HH_MM_24 = 1 ,
+    TIME_HH_MM_12    
+}time_format_enum;
+
+
+/* Define the RTC clock/alarm format type. */
+/* Could be rtc_alarm_format_enum or rtc_clock_format_enum */
+typedef kal_uint8 rtc_format_enum; 
+
+
+/*Y:Year,M:Month,W:DOW,D:DOM,H:Hour,M:Min,S:SEC*/
+typedef enum {
+    DEVICE_AL_EN_None     = 0 ,
+    DEVICE_AL_EN_ChkS         ,
+    DEVICE_AL_EN_ChkMS        ,
+    DEVICE_AL_EN_ChkHMS       ,
+    DEVICE_AL_EN_ChkDHMS      ,
+    DEVICE_AL_EN_ChkWHMS      ,
+    DEVICE_AL_EN_ChkMDHMS     ,
+    DEVICE_AL_EN_ChkYMDHMS    ,
+    DEVICE_AL_EN_NoChange    
+}rtc_alarm_format_enum;
+
+
+typedef enum {
+    DEVICE_TC_EN_None    = 0 ,
+    DEVICE_TC_EN_ChkS        ,
+    DEVICE_TC_EN_ChkM        ,
+    DEVICE_TC_EN_ChkH        ,
+    DEVICE_TC_EN_ChkD        ,
+    DEVICE_TC_EN_ChkW        ,
+    DEVICE_TC_EN_ChkMon      ,
+    DEVICE_TC_EN_ChkY        ,
+    DEVICE_TC_EN_NoChange        
+}rtc_clock_format_enum;
+
+/* Define the alarm status. */
+typedef enum {
+    ALARM_STATUS_ON_POWEROFF_CHARING  =0 , /* The alarm is started when it's power off with charging status. */
+    ALARM_STATUS_ON_POWEROFF             , /* The alarm is started when it's power off status without charging. */
+    ALARM_STATUS_ON_POWERON                /* The alarm is started when it's power on status. */
+}alarm_status_enum;
+
+
+/* Define the calling status */
+typedef enum {
+  UEM_CALL_UNKNOW     = 0 ,
+  UEM_CALL_SETUP          , 
+  UEM_CALL_CONNECT        ,
+  UEM_CALL_DISCONNECT           
+}uem_call_state_enum;
+
+
+/***************************************************************************** 
+* GPIO / EINT  Interface 
+*****************************************************************************/
+
+/* Define the internal GPIO device type. */
+/* Becareful!!!! 
+   MAX_GPIO_DEVICE_NUM Will impact the size of uem_context_rmi_struct data item !!!!! */
+
+typedef enum {
+    GPIO_DEV_LED_MAINLCD   = 0 ,  /* Main LCD backlight */
+    GPIO_DEV_LED_SUBLCD        ,  /* Sub LCD backlight */
+    GPIO_DEV_LED_STATUS_1      ,  /* Status LED  R*/
+    GPIO_DEV_LED_STATUS_2      ,  /* Status LED  G*/
+    GPIO_DEV_LED_STATUS_3      ,  /* Status LED   B*/
+    GPIO_DEV_LED_KEY           ,  /* Keypad backlight */
+    GPIO_DEV_VIBRATOR          ,  /* Vibrator */
+    GPIO_DEV_FLASHLIGHT        ,  /* FlashLight */
+    GPIO_DEV_FTE_FEEDBACK_VIB  ,  /* Reserve_1 */
+    GPIO_DEV_LED_BACKLIGHT_DIMMING,  /* Reserve_2 */
+    GPIO_DEV_RESERVED3         ,  /* Reserve_3 */
+    GPIO_DEV_RESERVED4         ,  /* Reserve_4 */
+    GPIO_DEV_RESERVED5         ,  /* Reserve_4 */
+    GPIO_DEV_RESERVED6         ,  /* Reserve_4 */
+    GPIO_DEV_RESERVED7         ,  /* Reserve_4 */
+    GPIO_DEV_RESERVED8         ,  /* Reserve_4 */
+    GPIO_DEV_RESERVED9         ,  /* Reserve_4 */
+    GPIO_DEV_RESERVED10        ,  /* Reserve_4 */
+    GPIO_DEV_RESERVED11        ,  /* Reserve_4 */
+    GPIO_DEV_RESERVED12        ,  /* Reserve_4 */
+    MAX_GPIO_DEVICE_NUM           
+}gpio_device_enum;
+
+
+/* Define the LED light level. For LCD bright level, Keypad backlight,  Flashlight */
+typedef enum {
+    LED_LIGHT_LEVEL0   =0  ,  /* turn off */
+    LED_LIGHT_LEVEL1       ,
+    LED_LIGHT_LEVEL2       ,
+    LED_LIGHT_LEVEL3       ,
+    LED_LIGHT_LEVEL4       ,
+    LED_LIGHT_LEVEL5       ,
+#if defined (WISDOM_MMI)
+    LED_LIGHT_LEVEL6       ,
+#endif
+    LED_LIGHT_LEVEL_MAX     
+}gpio_device_led_level_typedef;
+
+typedef enum
+{
+    /* LED status pattern */
+    LED_PATTERN_BEGIN,
+
+    LED_POWER_ON = LED_PATTERN_BEGIN,
+    LED_POWER_OFF,
+    LED_BATTERY_WARNING,
+    LED_BATTERY_LOW,
+    LED_Connect900,
+    LED_Connect1800,
+    LED_OnCharging,
+    LED_FullCharging,
+    LED_MessageIn,
+    LED_MessageRemind,
+    LED_Caller1,
+    LED_Caller2,
+    LED_Caller3,
+    LED_Caller4,
+    LED_Caller5,
+    LED_Caller6,
+    LED_LimitService,
+    LED_NoService,
+    LED_Connect1900,
+    LED_Roaming,
+    LED_PATTERN_END = 50,
+
+    /* lcd backlight pattern */
+    LCD_PATTERN_BEGIN,
+    LCD_PATTERN_1 = LCD_PATTERN_BEGIN,
+    LCD_PATTERN_2,
+    LCD_PATTERN_END = 100,
+
+    /* vibrator pattern */
+    VIB_PATTERN_BEGIN,
+    VIB_PATTERN_1 = VIB_PATTERN_BEGIN,
+    VIB_PATTERN_2,
+    VIB_PATTERN_3,  /* Incomming SMS */
+    VIB_PATTERN_4,  /* FTE feedback*/
+    VIB_PATTERN_A,
+    VIB_PATTERN_B,
+    VIB_PATTERN_C,
+    VIB_PATTERN_END = 150,
+
+    MAX_PATTERN_ID = VIB_PATTERN_END
+} PATTERN_ID;
+
+typedef enum
+{
+    PLAY_STOP,
+    PLAY_REPEAT,
+    PLAY_ONCE,
+    MAX_PATTERN_TYPE = PLAY_ONCE
+} PATTERN_TYPE;
+
+typedef struct
+{
+    kal_uint8 gpio_control[MAX_LED_GPIO];
+    kal_uint16 duration_time;   /* max time 65535 msec */
+} LED_PATTERN_STRUCT;
+
+typedef struct
+{
+    kal_uint8 gpio_control[MAX_LCD_BACKLIGHT];
+    kal_uint16 duration_time;   /* max time 65535 msec */
+} LCD_PATTERN_STRUCT;
+
+typedef struct
+{
+    kal_uint8 gpio_control[MAX_VIBRATOR];
+    kal_uint16 duration_time;   /* max time 65535 msec */
+} VIB_PATTERN_STRUCT;
+
+extern LCD_PATTERN_STRUCT *custom_get_lcd_patterns(PATTERN_ID lcd_pattern_id);
+extern LED_PATTERN_STRUCT *custom_get_led_patterns(PATTERN_ID led_pattern_id);
+extern VIB_PATTERN_STRUCT *custom_get_vib_patterns(PATTERN_ID vib_pattern_id);
+extern kal_bool uem_play_pattern(PATTERN_ID pattern_id, PATTERN_TYPE pattern_type);
+extern kal_uint8 custom_get_led_label(kal_uint8 id);
+extern kal_uint8 custom_get_lcd_label(kal_uint8 id);
+extern kal_uint8 custom_get_vib_label(kal_uint8 id);
+extern void custom_uem_set_rmi_lang_id(kal_uint8 *lang_id);
+extern kal_bool custom_uem_gpio_set_level(kal_uint8 gpio_dev_type, kal_uint8 gpio_dev_level);
+extern kal_uint8* custom_uem_get_equip_id(kal_uint8 equip_id);
+#ifdef __VIBRATION_SPEAKER_SUPPORT__
+typedef  void (*custom_uem_spkvib_func)(kal_bool);
+extern void custom_uem_set_spkvib_func(void (*func)(kal_bool));
+#endif
+extern kal_uint32 custom_uem_get_bl_level_num(void);
+extern kal_uint32 custom_uem_get_pwm_bl_mode(kal_uint8 gpio_dev_type);
+
+/* It is a time from backlight dimming to backlight drak*/
+#define GPIO_BRIGHTNESS_DIMMING_TIME    5000
+
+/* Define the Vibrator level. */
+typedef enum {
+    VIBRATOR_OFF  =0 ,  /* turn off */
+    VIBRATOR_ON         /* turn on */     
+}gpio_device_vibrator_level_typedef;
+
+
+typedef enum {
+    AUD_MODE_NORMAL   =0 , /* Normal Mode */
+    AUD_MODE_HEADSET     , /* HeadSet (Earphone) Mode */
+    AUD_MODE_LOUDSPK     , /* Loudspeaker Mode */
+    MAX_AUD_MODE_NUM     
+}audio_mode_enum;
+
+
+/* Define the external GPIO device interrupt. */
+typedef enum {
+    EXT_DEV_NONE      = 0  , /* None, if there is no external device */
+    EXT_DEV_HANDFREE       , /* Hand-free */
+    EXT_DEV_EARPHONE       , /* Earphone */
+    EXT_DEV_CARKIT         , /* Car-Kit */
+    EXT_DEV_KEY_1          , /* Send Key */
+    EXT_DEV_KEY_2          , /* Reserved */
+    EXT_DEV_UART           , 
+    EXT_DEV_CLAM_OPEN  = 8 ,
+    EXT_DEV_CLAM_CLOSE     , 
+    EXT_DEV_HOOK_ON	   , /* for FWP */
+    EXT_DEV_HOOK_OFF	   , /* for FWP */
+    EXT_DEV_AUX_DETECT_DONE	   , 
+    EXT_DEV_TRANSMITTER_HOLD_ON,
+    EXT_DEV_TRANSMITTER_PUT_DOWN,
+    MAX_EXT_DEVICE_NUM   
+}ext_device_enum;
+
+
+typedef enum {
+    AUD_LOOPBACK_MODE_NORMAL       =0 , /* Normal Mode */
+    AUD_LOOPBACK_MODE_HEADSET_PREFER  , /* Loudspk_prefer */		
+    AUD_LOOPBACK_MODE_HEADSET         , /* HeadSet (Earphone) Mode */
+    AUD_LOOPBACK_MODE_LOUDSPK         , /* Loudspeaker Mode */
+    MAX_AUD_LOOPBACK_MODE_NUM     
+}audio_loopback_mode_enum;
+
+
+/**************************************************************
+  **
+  **      Set UART Port Function Type
+  ** 
+  **************************************************************/
+typedef enum
+{
+   UART_NVRAM_LID_FUNC_UART_CONFIG,
+   UART_NVRAM_LID_FUNC_HIGH_SPEED_SIM,
+   UART_NVRAM_LID_FUNC_SWDBG,
+   UART_NVRAM_LID_FUNC_UART_POWER,
+   UART_NVRAM_LID_FUNC_TST_OUTPUT_MODE,
+   UART_NVRAM_LID_FUNC_USB_LOGGING
+} uart_nvram_lid_function_enum;
+
+
+/***************************************************************************** 
+* PMIC  Interface 
+*****************************************************************************/
+typedef enum
+{
+   PMIC_VBAT_STATUS,    /* Notify the battery voltage, BMT_VBAT_STATUS */
+   PMIC_CHARGER_IN,     /* Charger plug in, BMT_CHARGER_IN */
+   PMIC_CHARGER_OUT,    /* Charger plug out, BMT_CHARGER_OUT */
+   PMIC_OVERVOLPROTECT,    /* The voltage of battery is too high. BMT_OVERVOLPROTECT */
+   PMIC_OVERBATTEMP,    /* The temperature of battery is too high. BMT_OVERBATTEMP */
+   PMIC_LOWBATTEMP,     /* The temperature of battery is too low. BMT_LOWBATTEMP */
+   PMIC_OVERCHARGECURRENT, /* Charge current is too large. BMT_OVERCHARGECURRENT */
+   PMIC_CHARGE_COMPLETE,   /* Charge is completed. BMT_CHARGE_COMPLETE */
+   PMIC_INVALID_BATTERY,    /* invalid battery  BMT_INVALID_BAT*/
+   PMIC_INVALID_CHARGER,   /* invalid charger BMT_INVALID_CHARGER*/
+   PMIC_CHARGING_TIMEOUT, /* Bad battery BMT_CHARGE_TIMEOUT */ 
+   PMIC_LOWCHARGECURRENT, /* Charge current is too Low. BMT_LOWCHARGECURRENT */
+   PMIC_CHARGE_BAD_CONTACT, /* Charger Bad Contact */
+   PMIC_BATTERY_BAD_CONTACT, /* Battery Bad Contact */
+   PMIC_USB_CHARGER_IN,   /* Usb Charger plug in */
+   PMIC_USB_CHARGER_OUT,   /* Usb Charger plug out */
+   PMIC_USB_NO_CHARGER_IN,
+   PMIC_USB_NO_CHARGER_OUT,
+   PMIC_BATTERY_IN,
+   PMIC_BATTERY_OUT
+} pmic_status_enum;
+typedef pmic_status_enum battery_status_enum;
+
+typedef enum 
+{
+   BATTERY_LOW_POWEROFF = 0,
+   BATTERY_LOW_TX_PROHIBIT,
+   BATTERY_LOW_WARNING,
+   BATTERY_LEVEL_0,
+   BATTERY_LEVEL_1,
+   BATTERY_LEVEL_2,
+   BATTERY_LEVEL_3, 
+   BATTERY_LEVEL_4 = BATTERY_LEVEL_3, /* BATTERY_LEVEL_4 */
+   BATTERY_LEVEL_5 = BATTERY_LEVEL_3, /* BATTERY_LEVEL_5 */
+   BATTERY_LEVEL_6 = BATTERY_LEVEL_3, /* BATTERY_LEVEL_6 */
+   BATTERY_LEVEL_LAST = 9
+
+} battery_level_enum;
+
+
+/* Define the power on status. */
+typedef enum 
+{
+	POWER_ON_KEYPAD	     = 0 ,
+	POWER_ON_ALARM			 ,
+	POWER_ON_CHARGER_IN		 ,
+	POWER_ON_EXCEPTION		 ,
+	POWER_ON_USB			 ,
+	POWER_ON_UNINIT			 ,
+	POWER_ON_PRECHARGE	 = 8
+} power_on_status_enum;
+
+#define	POWERON(mode) (	(mode == POWER_ON_KEYPAD) || \
+									(mode == POWER_ON_ALARM) || \
+									(mode == POWER_ON_CHARGER_IN) ||\
+									(mode == POWER_ON_USB) ||\
+									(mode == POWER_ON_EXCEPTION) ||\
+									(mode == POWER_ON_PRECHARGE) )
+
+extern power_on_status_enum uem_get_power_on_mode(void);
+
+/* Define the POWER reset type. This is to use for the power restablish, while it's on charging or alarm status. */
+typedef enum
+{
+   NORMAL_RESET,
+   CHARGING_RESET,
+   ALARM_RESET,
+   WM_RESET
+} pmic_reset_type_enum;
+
+typedef enum
+{
+	PMIC_GET_CHR_STATE
+	,PMIC_GET_AC_USB
+	,PMIC_GET_LED_CONFIG
+	,PMIC_GET_RGB_DIM
+	,PMIC_GET_BL_DIM
+	,PMIC_GET_SPEAKER_STATE
+	,PMIC_GET_SPEAKER_GAIN
+	,PMIC_GET_MISC_LDO_STATE
+	,PMIC_READ_REG
+	,PMIC_WRITE_REG
+	,PMIC_CHR_ENABLE
+	,PMIC_CHR_CURRENT_CTRL
+	,PMIC_USB_CHR_ENABLE
+	,PMIC_LED_ENABLE
+	,PMIC_LED_CONFIG
+	,PMIC_RGB_DIM_CLK
+	,PMIC_CHR_PUMP_ENABLE
+	,PMIC_CHR_PUMP_CURRENT
+	,PMIC_BL_DIM_CLK
+	,PMIC_BL_DIV_BYPASS
+	,PMIC_SPEAKER_ENABLE
+	,PMIC_SPEAKER_GAIN
+	,PMIC_VIBRATOR_ENABLE
+	,PMIC_VIBRATOR_SEL
+	,PMIC_VMC_ENABLE
+	,PMIC_VMC_SEL
+	,PMIC_VASW_ENABLE
+	,PMIC_VASW_SEL
+	,PMIC_USB_REG_ENABLE
+	,PMIC_VBAT_ENABLE
+	,PMIC_ISENSE_ENABLE
+	,PMIC_BL_PWM
+	,PMIC_MAX_NUM
+}pmic_config_req_enum;
+
+/***************************************************************
+  **   FM Radio
+  ***************************************************************/
+typedef enum
+{
+    FM_RADIO_CMD_MONO = 0,
+    FM_RADIO_CMD_STEREO,
+    FM_RADIO_CMD_RSSI,
+    FM_RADIO_CMD_IF_COUNT,
+    FM_RADIO_CMD_RSSI_INFO
+}fm_radio_config_cmd_enum;
+
+typedef enum
+{
+    FM_RADIO_COMMON_DISABLE = 0,
+    FM_RADIO_COMMON_ENABLE,      /* in mono, only represent enable; in stereo, represent enable + sblend On */
+    FM_RADIO_COMMON_ENABLE_EXTRA   /* in stereo, represent enable + sblend Off */
+}fm_radio_common_state_enum;
+
+/***************************************************************
+  **   RF Test Tool -- GSM 
+  ***************************************************************/
+typedef enum
+{
+    RF_TEST_GSM_TX_BAND_850,
+    RF_TEST_GSM_TX_BAND_900,
+    RF_TEST_GSM_TX_BAND_1800,
+    RF_TEST_GSM_TX_BAND_1900
+}rf_test_gsm_tx_band_enum;
+  
+typedef enum
+{
+    RF_TEST_GSM_STOP,
+    RF_TEST_GSM_TX_TEST,
+    RF_TEST_GSM_RX_TEST,
+    RF_TEST_GSM_POWER_SCAN,
+    RF_TEST_GSM_TX_TEST_MULTI_SLOT,             
+    RF_TEST_GSM_RX_TEST_TWO_PATH,      //5
+    RF_TEST_GSM_GET_TX_POWER      //6
+}rf_test_gsm_req_enum;
+
+/***************************************************************
+  **   RF Test Tool -- WiFi 
+  ***************************************************************/
+
+typedef enum
+{
+    RF_TEST_WIFI_STOP,
+    RF_TEST_WIFI_TEST_MODE,
+    RF_TEST_WIFI_NORMAL_MODE,
+    RF_TEST_WIFI_TX_GET_DAC_OFFSET,
+    RF_TEST_WIFI_TX_OUTPUT_POWER,
+    RF_TEST_WIFI_TX_CARRIER_SUPP,
+    RF_TEST_WIFI_TX_LOCAL_FREQ,
+    RF_TEST_WIFI_TX_CONT_PKT,
+    RF_TEST_WIFI_RX_CONT_PKT,
+    RF_TEST_WIFI_POWER_SAVE,
+    RF_TEST_WIFI_REG_MCR32_WRITE,
+    RF_TEST_WIFI_REG_MCR32_READ,
+    RF_TEST_WIFI_REG_MCR16_WRITE,
+    RF_TEST_WIFI_REG_MCR16_READ,
+    RF_TEST_WIFI_REG_BBCR_WRITE,
+    RF_TEST_WIFI_REG_BBCR_READ,
+    RF_TEST_WIFI_REG_EEPROM_WRITE,
+    RF_TEST_WIFI_REG_EEPROM_READ,
+    RF_TEST_WIFI_REG_EFUSE_WRITE,
+    RF_TEST_WIFI_REG_EFUSE_READ
+}rf_test_wifi_req_enum;
+
+/***************************************************************************** 
+* Misc  Interface 
+*****************************************************************************/
+/* Indicator data type */
+typedef enum 
+{
+    IND_BATTCHG  = 0 ,
+    IND_SIGNAL       ,  
+    IND_SERVICE      ,  
+    IND_SOUNDER      ,  
+    IND_MESSAGE      ,  
+    IND_CALL         ,  
+    IND_VOX          ,  
+    IND_ROAM         ,  
+    IND_SMSFULL       
+} indicator_type_enum;
+
+
+/* Define the equipment to return the string mapping. */
+typedef enum 
+{
+    EQ_ME_MANUFACTURE_ID      = 0 ,
+    EQ_ME_MODEL_ID                ,
+    EQ_ME_REVISION_ID             ,
+    EQ_ME_SERIAL_NUMBER_ID        ,
+    EQ_ME_SERIAL_NUMBER_SIM2_ID   ,
+    EQ_ME_GLOBAL_OBJECT_ID        ,
+    EQ_ME_MANUFACTURE_INFO_ID     ,
+    EQ_ME_COMP_CAP_LIST_ID        ,
+    EQ_ME_SERIAL_NUMBER_SIM3_ID   ,
+    EQ_ME_SERIAL_NUMBER_SIM4_ID   ,
+    MAX_ME_ID_NUM                    
+} equip_id_enum;
+
+
+#define MAX_ME_ID_LEN               30
+
+
+/* Define the device process status. */
+typedef enum 
+{
+    DEV_OK                    = 0 , /* The device status is ok to process. */
+    DEV_FAIL                      , /* The device status is fail to process*/
+    DEV_FAIL_VM_NO_FREE_ENTRY     , /* voice mail fail cause */
+    DEV_FAIL_VM_BUFFER_FULL       ,
+    DEV_FAIL_VM_PLAY_NO_DATA     
+} dev_status_enum;
+
+
+/***************************************************************************** 
+* USB  Interface 
+*****************************************************************************/
+typedef enum 
+{
+    DEVUSB_DETECT_ACTION_UNKNOWN = 0 ,
+    DEVUSB_DETECT_ACTION_PLUGIN      , 
+    DEVUSB_DETECT_ACTION_PLUGOUT     ,
+    DEVUSB_DETECT_ACTION_USB_SUSPEND ,
+    DEVUSB_DETECT_ACTION_MAX_ID   
+} devusb_detect_action_enum;
+
+
+typedef enum 
+{
+    DEVUSB_CFG_ACTION_UNKNOWN     =	0 ,
+    DEVUSB_CFG_ACTION_CDC_ACM         ,
+    DEVUSB_CFG_ACTION_MASS_STORAGE    ,
+    DEVUSB_CFG_ACTION_MULTI_COM,
+    DEVUSB_CFG_ACTION_WEBCAM          ,
+    DEVUSB_CFG_ACTION_STOP_MS         ,
+    DEVUSB_CFG_ACTION_IRDBG           ,
+    DEVUSB_CFG_ACTION_PICTBRIGE       ,
+    DEVUSB_CFG_ACTION_MTP       ,	
+    DEVUSB_CFG_ACTION_STOP_MTP       ,	    
+    DEVUSB_CFG_ACTION_MAX_ID			  
+} devusb_cfg_action_enum;
+
+
+typedef enum 
+{
+    USB_SWITCH_PORT_APP_DATA     = 0 ,
+    USB_SWITCH_PORT_APP_DEBUG, 
+    USB_SWITCH_PORT_APP_NULL 
+} usb_switch_port_app_enum;
+
+#if (defined(MT6229) || defined(MT6227) || defined(MT6228) || defined(MT6225) || defined(MT6268T) || defined(MT6268H) || defined(MT6230) || defined(MT6227D) || defined(MT6223)  || defined(MT6226D) || defined(MT6223P)) 
+#if (defined(MT6227) || defined(MT6227D)  || defined(MT6226D))
+typedef enum
+{
+
+    EM_SWDBG_OFF,
+    EM_SWDBG_DSP_L1_PS,
+    EM_SWDBG_L1_PS,
+    EM_SWDBG_MCU,
+    EM_SWDBG_RESET,
+    EM_SWDBG_MAX
+} EM_SWDBG_ITEM;
+
+#elif defined(MT6228)
+typedef enum
+{
+
+    EM_SWDBG_OFF,
+    EM_SWDBG_DSP_L1_PS,
+    EM_SWDBG_L1_PS,
+    EM_SWDBG_MCU,
+    EM_SWDBG_MCU_DSP,
+    EM_SWDBG_RESET,
+    EM_SWDBG_MAX
+} EM_SWDBG_ITEM;
+
+#else 
+typedef enum
+{
+
+    EM_SWDBG_OFF,
+    EM_SWDBG_DSP_L1,
+    EM_SWDBG_DSP_PS,
+    EM_SWDBG_L1_PS,
+    EM_SWDBG_MCU,
+    EM_SWDBG_MCU_DSP,
+    EM_SWDBG_RESET,
+    EM_SWDBG_MAX
+} EM_SWDBG_ITEM;
+
+#endif 
+#endif /* #if (defined(MT6229) || defined(MT6227) || defined(MT6228) || defined(MT6225) || defined(MT6268T)|| defined(MT6268H) || defined(MT6230) || defined(MT6227D))  */ 
+
+typedef enum
+{
+    EM_USB_LOGGING_NONE,
+#ifdef __DSPIRDBG__    
+    EM_USB_LOGGING_IRDBG,
+#endif
+
+
+    EM_USB_LOGGING_MAX
+} EM_USB_LOGGING_ITEM;
+
+
+//#if defined(MT6223PMU)
+/***************************************************************
+  **   PMU6223
+  ***************************************************************/
+/* Enum */
+typedef enum
+{
+    MT6223PMU_READ_REG
+    ,MT6223PMU_WRITE_REG
+    ,MT6223PMU_GET_CHR_STATUS
+    ,MT6223PMU_SET_CHR_GET_CHR_EN
+    ,MT6223PMU_SET_CHR_SET_CHR_EN
+    ,MT6223PMU_SET_CHR_GET_CHR_CUR
+    ,MT6223PMU_SET_CHR_SET_CHR_CUR    
+    ,MT6223PMU_SET_CHR_GET_CHR_CUR_OFFSET
+    ,MT6223PMU_SET_CHR_SET_CHR_CUR_OFFSET
+//    ,MT6223PMU_SET_CHR_GET_OV_TH_FREEZE
+//    ,MT6223PMU_SET_CHR_SET_OV_TH_FREEZE
+    ,MT6223PMU_SET_CHR_GET_CV_THRESHOLD
+    ,MT6223PMU_SET_CHR_SET_CV_THRESHOLD
+    ,MT6223PMU_GET_DRIVER_INFO
+    ,MT6223PMU_SET_DRIVER_INFO
+    ,MT6223PMU_GET_LDO_VOLTAGE
+    ,MT6223PMU_SET_LDO_VOLTAGE
+    ,MT6223PMU_GET_LDO_ENABLE
+    ,MT6223PMU_SET_LDO_ENABLE
+    ,MT6223PMU_GET_BIAS_CURRENT
+    ,MT6223PMU_SET_BIAS_CURRENT    
+    
+	,MT6223PMU_MAX_NUM
+}EM_MT6223PMU_REQ_ENUM;
+
+
+typedef enum 
+{
+   PMU6223_CHR_STATE_CHR_DET = 0,   
+   PMU6223_CHR_STATE_BAT_ON,
+   PMU6223_CHR_STATE_CV,
+   PMU6223_CHR_STATE_CHR_OVP,
+   PMU6223_CHR_STATE_CHARGING,
+   PMU6223_CHR_STATE_MAX
+}PMU6223_CHR_STATE;
+
+typedef enum 
+{
+   PMU6223_CHR_CUR_OFFSET_P1 = 0,   
+   PMU6223_CHR_CUR_OFFSET_P2,
+   PMU6223_CHR_CUR_OFFSET_M2,
+   PMU6223_CHR_CUR_OFFSET_M1
+}PMU6223_CHR_CUR_OFFSET;
+
+typedef enum 
+{
+   PMU6223_DRIVE_INFO_VIB = 0,   
+   PMU6223_DRIVE_INFO_LED
+}PMU6223_DRIVE_INFO;
+
+typedef enum 
+{
+   PMU6223_LDO_VOLTAGE_VRF = 0,   
+   PMU6223_LDO_VOLTAGE_VCORE,
+   PMU6223_LDO_VOLTAGE_VM,
+   PMU6223_LDO_VOLTAGE_VIO,
+   PMU6223_LDO_VOLTAGE_VA,
+   PMU6223_LDO_VOLTAGE_VTCXO,
+   PMU6223_LDO_VOLTAGE_VSIM,
+   PMU6223_LDO_VOLTAGE_VRTC1
+//   PMU6223_LDO_VOLTAGE_VRTC2
+}PMU6223_LDO_VOLTAGE_TYPE;
+
+typedef enum 
+{
+   PMU6223_LDO_ENABLE_VRF = 0,   
+   PMU6223_LDO_ENABLE_VTCXO,
+   PMU6223_LDO_ENABLE_VSIM
+}PMU6223_LDO_ENABLE;
+
+typedef enum 
+{
+   PMU6223_BIAS_CALIBRATE_VRF = 0,   
+   PMU6223_BIAS_CALIBRATE_VM,
+   PMU6223_BIAS_CALIBRATE_VIO,
+   PMU6223_BIAS_CALIBRATE_VSIM,
+   PMU6223_BIAS_CALIBRATE_VCORE_CAL
+}PMU6223_BIAS_CALIBRATE_TYPE;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif /* if 0 */
+
+/***************************************************************
+  **   PMU6238
+  ***************************************************************/
+/* Enum */
+typedef enum
+{
+     MT6238PMU_READ_REG
+    ,MT6238PMU_WRITE_REG
+    ,MT6238PMU_GET_CHR_STATUS     
+    ,MT6238PMU_SET_CHR_GET_CHR_EN
+    ,MT6238PMU_SET_CHR_SET_CHR_EN
+    ,MT6238PMU_SET_CHR_GET_CHR_CUR
+    ,MT6238PMU_SET_CHR_SET_CHR_CUR    
+    ,MT6238PMU_SET_CHR_GET_CHR_CUR_OFFSET
+    ,MT6238PMU_SET_CHR_SET_CHR_CUR_OFFSET
+    ,MT6238PMU_SET_CHR_GET_OV_TH_FREEZE    
+    ,MT6238PMU_SET_CHR_SET_OV_TH_FREEZE
+    ,MT6238PMU_SET_CHR_GET_CV_THRESHOLD
+    ,MT6238PMU_SET_CHR_SET_CV_THRESHOLD
+    ,MT6238PMU_GET_DRIVER_INFO
+    ,MT6238PMU_SET_DRIVER_INFO
+    ,MT6238PMU_GET_LDO_VOL_SEL_VBT    /* MC */
+    ,MT6238PMU_SET_LDO_VOL_SEL_VBT    /* MC */
+    ,MT6238PMU_GET_LDO_VOL_SEL_VCAMD  /* CAMERA */
+    ,MT6238PMU_SET_LDO_VOL_SEL_VCAMD  /* CAMERA */
+    ,MT6238PMU_GET_LDO_VOL_SEL_VCAMA  /* SW_A */
+    ,MT6238PMU_SET_LDO_VOL_SEL_VCAMA  /* SW_A */
+    ,MT6238PMU_GET_LDO_VOL_SEL_VSIM
+    ,MT6238PMU_SET_LDO_VOL_SEL_VSIM
+    ,MT6238PMU_GET_LDO_VOLTAGE_CAL
+    ,MT6238PMU_SET_LDO_VOLTAGE_CAL
+    ,MT6238PMU_GET_LDO_ENABLE
+    ,MT6238PMU_SET_LDO_ENABLE
+    ,MT6238PMU_GET_DC_CONTROL
+    ,MT6238PMU_SET_DC_CONTROL
+    ,MT6238PMU_GET_BIAS_CURRENT
+    ,MT6238PMU_SET_BIAS_CURRENT    
+    
+	,MT6238PMU_MAX_NUM
+}EM_MT6238PMU_REQ_ENUM;
+
+typedef enum
+{
+    EM_MT6238PMU_OV_TH_FREEZE_AUTO = 0,
+    EM_MT6238PMU_OV_TH_FREEZE_FIXED
+} EM_MT6238PMU_OV_TH_FREEZE_TYPE;
+
+
+typedef enum 
+{
+   PMU6238_CHR_CUR_OFFSET_P1 = 0,   
+   PMU6238_CHR_CUR_OFFSET_P2,
+   PMU6238_CHR_CUR_OFFSET_M2,
+   PMU6238_CHR_CUR_OFFSET_M1
+}PMU6238_CHR_CUR_OFFSET;
+
+typedef enum 
+{
+   PMU6238_DRIVE_INFO_VIB = 0,   
+   PMU6238_DRIVE_INFO_LED
+}PMU6238_DRIVE_INFO;
+
+typedef enum 
+{
+   PMU6238_LDO_VOLTAGE_VCORE = 0,    /* FBADJ */
+   PMU6238_LDO_VOLTAGE_VCORE_SLEEP,  /* FBADJ_SLEEP */
+   PMU6238_LDO_VOLTAGE_VRF,   
+   PMU6238_LDO_VOLTAGE_VM,
+   PMU6238_LDO_VOLTAGE_VIO,
+   PMU6238_LDO_VOLTAGE_VA,
+   PMU6238_LDO_VOLTAGE_VTCXO,
+   PMU6238_LDO_VOLTAGE_VSIM,
+   PMU6238_LDO_VOLTAGE_VRTC1,
+   PMU6238_LDO_VOLTAGE_VRTC2,
+   PMU6238_LDO_VOLTAGE_VUSB,   
+   PMU6238_LDO_VOLTAGE_VBT,          /* VMC */
+   PMU6238_LDO_VOLTAGE_VCAMD,        /* VCAMERA */
+   PMU6238_LDO_VOLTAGE_VCAMA,        /* VSW_A */
+   PMU6238_LDO_VOLTAGE_VSIM2
+}PMU6238_LDO_VOLTAGE_TYPE;
+
+
+typedef enum 
+{
+   PMU6238_LDO_ENABLE_VRF_ON_SEL = 0,   
+   PMU6238_LDO_ENABLE_VRF_EN, 
+   PMU6238_LDO_ENABLE_VTCXO_ON_SEL,
+   PMU6238_LDO_ENABLE_VTCXO_EN,
+   PMU6238_LDO_ENABLE_VUSB,
+   PMU6238_LDO_ENABLE_VBT,          /* VMC */
+   PMU6238_LDO_ENABLE_VCAM_D,       /* CAMERA */
+   PMU6238_LDO_ENABLE_VCAM_A,       /* SW_A */
+   PMU6238_LDO_ENABLE_VSIM1,
+   PMU6238_LDO_ENABLE_VSIM2
+}PMU6238_LDO_ENABLE;
+
+
+typedef enum 
+{
+   PMU6238_DC_CONTROL_GAINP = 0,   
+   PMU6238_DC_CONTROL_GAIN,
+   PMU6238_DC_CONTROL_GAIND,
+   PMU6238_DC_CONTROL_DIR_CTRL_EN,
+   PMU6238_DC_CONTROL_DCVCK_SEL,
+   PMU6238_DC_CONTROL_ISEL,
+   PMU6238_DC_CONTROL_ADJCKSEL,
+   PMU6238_DC_CONTROL_MODESET,
+   PMU6238_DC_CONTROL_MODEEN,
+   PMU6238_DC_CONTROL_PFMSEL_0_3,
+   PMU6238_DC_CONTROL_PFMSEL_4_6,
+   PMU6238_DC_CONTROL_IASEL,
+   PMU6238_DC_CONTROL_SLEW_CTRL
+}PMU6238_DC_CONTROL_TYPE;
+
+typedef enum 
+{
+   PMU6238_BIAS_CALIBRATE_VRF = 0,   
+   PMU6238_BIAS_CALIBRATE_VM,
+   PMU6238_BIAS_CALIBRATE_VIO,
+   PMU6238_BIAS_CALIBRATE_VA,
+   PMU6238_BIAS_CALIBRATE_VTCXO,
+   PMU6238_BIAS_CALIBRATE_VSIM,
+   PMU6238_BIAS_CALIBRATE_VUSB,
+   PMU6238_BIAS_CALIBRATE_VBT,
+   PMU6238_BIAS_CALIBRATE_VCAMD,
+   PMU6238_BIAS_CALIBRATE_VCAMA,
+   PMU6238_BIAS_CALIBRATE_VSIM2
+}PMU6238_BIAS_CALIBRATE_TYPE;
+
+/***************************************************************
+  **   PMU6326
+  ***************************************************************/
+/* Enum */
+typedef enum
+{
+     MT6326PMU_READ_REG
+    ,MT6326PMU_WRITE_REG    
+	,MT6326PMU_MAX_NUM
+}EM_MT6326PMU_REQ_ENUM;
+
+/***************************************************************
+  **   PMU6253
+  ***************************************************************/
+/* Enum */
+typedef enum
+{
+     MT6253PMU_READ_REG
+    ,MT6253PMU_WRITE_REG
+    ,MT6253PMU_MAX_NUM    
+}EM_MT6253PMU_REQ_ENUM;
+
+#endif  /* _DEVICE_H */
+
+
diff --git a/mcu/interface/protocol/general/dmf_public_api.h b/mcu/interface/protocol/general/dmf_public_api.h
new file mode 100644
index 0000000..fc3e12a
--- /dev/null
+++ b/mcu/interface/protocol/general/dmf_public_api.h
@@ -0,0 +1,96 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * dmf_public_api.h
+ *
+ * Project:
+ * --------
+ *   UMOLYA
+ *
+ * Description:
+ * ------------
+ *   DMF Framework  public API
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *
+ ********************************************************************************/
+
+#ifndef _DMF_PUBLIC_API_H_
+#define _DMF_PUBLIC_API_H_
+
+#include "sim_exported_enum.h"
+#include "dmf_public_def.h"
+
+#include "atp_public_defs.h"
+#include "atp_dmf_struct.h"
+
+/* DMF AT APIs */
+extern void dmf_send_at_rsp(
+            kal_uint16 ch_id, 
+            protocol_id_enum ps_id,
+            kal_uint32 app_id, 
+            proxy_cmd_result_enum result, 
+            atp_mt_dmf_cmd_cnf_type_enum type, 
+            void *msg, kal_uint32 msg_size);
+
+extern void dmf_send_at_urc(kal_uint32 app_id, protocol_id_enum ps_id, atp_mt_dmf_urc_ind_type_enum type, void *msg, kal_uint32 msg_size);
+
+extern void dmf_send_at_final_rsp(
+            kal_uint16 ch_id, 
+            protocol_id_enum ps_id,
+            kal_uint32 app_id, 
+            proxy_cmd_result_enum result);
+
+/*COMMON*/
+extern void dmf_info_collect_get_current_serving_cell_info(
+        protocol_id_enum ps_id, dmf_info_collect_current_serving_cell_info_struct *serving_cell);
+extern void dmf_info_collect_replace_as_cell_info(
+        protocol_id_enum ps_id, dmf_info_collect_current_serving_cell_info_struct *serving_cell);
+
+#ifdef __C2K_RAT__
+extern kal_uint8 dmf_info_collect_get_current_ps_id();
+#endif
+
+extern void dmf_kpi_nvram_write_cnf_hdlr();
+extern kal_bool dmf_info_collect_check_ps_id_valid(protocol_id_enum ps_id);
+
+
+#endif // _DMF_PUBLIC_API_H_
diff --git a/mcu/interface/protocol/general/dmf_public_def.h b/mcu/interface/protocol/general/dmf_public_def.h
new file mode 100644
index 0000000..7344c82
--- /dev/null
+++ b/mcu/interface/protocol/general/dmf_public_def.h
@@ -0,0 +1,1462 @@
+/*****************************************************************************
+*  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) 2012
+*
+*  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:
+ * ---------
+ * dmf_public_def.h
+ *
+ * Project:
+ * --------
+ * UMOLYA
+ *
+ * Description:
+ * ------------
+ * DM Framework public structure/enum definition
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 09 24 2020 jack-mh.tsai
+ * [MOLY00547250] 5G SA®I?»Ý¨D
+ *
+ * 09 18 2020 jack-mh.tsai
+ * [MOLY00570074] [Cayman][TMUS][Protocol][EchoLocate] Request to implement DataMetrics5gSa class API version 1
+ *
+ * 09 14 2020 jack-mh.tsai
+ * [MOLY00570074] [Cayman][TMUS][Protocol][EchoLocate] Request to implement DataMetrics5gSa class API version 1
+ *
+ * 08 25 2020 jack-mh.tsai
+ * [MOLY00562173] DMFªº«È¨î¤Æ»Ý¨D - ICD Backward Compatible - DMF Part
+ *
+ * 08 13 2020 titi.wu
+ * [MOLY00524839] 5G RF ®I?»Ý¨D
+ * EWSP0000141637
+ *
+ * 08 13 2020 titi.wu
+ * [MOLY00524839] 5G RF ®I?»Ý¨D
+ * EWSP0000141637
+ *
+ * 08 01 2020 kunkun.shao
+ * [MOLY00550497] [RDIT][NW KPI UTIT]Provide volte call id when report call related KPI information
+ * 	
+ * 	.
+ *
+ * 07 31 2020 kunkun.shao
+ * [MOLY00527050] [MP5 Excluded][NW KPI UTIT]modify invalid mo csfb info collect when mo  csfb call happens
+ * 	
+ * 	.
+ *
+ * 07 06 2020 titi.wu
+ * [MOLY00541505] ¡i5G-A¡j¡iModem·sfeature¡j5G±µ¤J±±¨î???¦ô®I?
+ * .
+ *
+ * 06 29 2020 kunkun.shao
+ * [MOLY00536656] Modem¶Ë´óÊý¾ÝÊÕ¼¯:add scg SW part.
+ * 	
+ * 	.
+ *
+ * 05 22 2020 jack-mh.tsai
+ * [MOLY00511933] 5G¥\¯Ó®I?¤W?Éó¨î
+ *
+ * 05 18 2020 kunkun.shao
+ * [MOLY00522254] [MP5 Excluded][NW KPI UTIT][Margaux][MT6873]MT VoLTE callÔö¼ÓFail cause
+ * 	
+ * 	.
+ *
+ * 05 01 2020 kunkun.shao
+ * [MOLY00518537] [NW KPI UTIT][Margaux][MT6873]DMF add IMS related kpi handle for  IMS fail
+ * 	
+ * 	.
+ *
+ * 04 22 2020 jack-mh.tsai
+ * [MOLY00516557] CS????DMFAPP??????(AT+URC 1001)(SWRD)
+ *
+ * 04 17 2020 kunkun.shao
+ * [MOLY00511342] Modem¶Ë´óÊý¾ÝÊÕ¼¯:DMF NW KPI SW DOMAIN
+ *
+ * 03 16 2020 jack-mh.tsai
+ * [MOLY00505503] [Gen97] OPPO DMF KPI requirement
+ *
+ * 01 18 2020 kunkun.shao
+ * [MOLY00475736] Modem¶Ë´óÊý¾ÝÊÕ¼¯:internal dmf
+ *
+ * 01 07 2020 jack-mh.tsai
+ * [MOLY00469943] DMF Customization Framework: DMF MISC16 1010(SWRD)
+ *
+ * 01 06 2020 jack-mh.tsai
+ * [MOLY00469943] DMF Customization Framework:Move event structure to public layer(SWRD)
+ *
+ *
+ ****************************************************************************/
+
+
+#ifndef _DMF_PUBLIC_DEF_H_
+#define _DMF_PUBLIC_DEF_H_
+
+#include "ps_public_enum.h"
+#include "l3_inc_enums.h"
+#include "ims_interface_md.h"
+
+#include "em_vdm_public_struct.h"
+#include "em_public_struct_xl1.h"
+#include "em_public_struct_xl3.h"
+#include "em_mcf_public_struct.h"
+#include "em_sbp_public_struct.h"
+#include "em_mm_public_struct.h"
+#include "em_emm_public_struct.h"
+#include "em_errc_public_struct.h"
+#include "em_sim_public_struct.h"
+#include "em_uas_public_struct.h"
+#include "em_gmss_public_struct.h"
+#include "em_esm_public_struct.h"
+
+
+#define DMF_INFO_COLLECT_MAX_MCF_FILE_NAME    EM_MCF_FILE_MAX_NAME_LEN
+#define MAX_ICD_NL2_PDCP_CONFIGURATION_EVENT_STRUCT_V1_NUMBER_OF_RBS    37
+#define MAX_ICD_NL2_PDCP_DL_STATS_STRUCT_V1_NUMBER_OF_RBS       37
+#define MAX_ICD_NL2_PDCP_UL_STATS_STRUCT_V1_NUMBER_OF_RBS       37
+#define FLEXIBLE_ARRAY_SIZE 1
+#define ERRC_SCELL_NUM_MAX 7
+#define NL1_SCELL_CONFIG_LIST_SIZE 1
+#define MAX_ICD_NL2_RLC_DL_STATS_STRUCT_V1_NUMBER_OF_ENTITIES       75
+#define MAX_ICD_NL2_RLC_UL_STATS_STRUCT_V1_NUMBER_OF_ENTITIES       75
+#define DMF_KPI_MAX_COUNT_NUM    0xffffffff
+
+#define DMF_ESM_MAX_PT_NUM 15     //same as ESM_MAX_PT_NUM
+#define DMF_ESM_MAX_EPSB_NUM 11   //same as ESM_MAX_EPSB_NUM
+
+#define DMF_MAX(x, y) (((x) > (y)) ? (x) : (y))
+#define DMF_MIN(x, y) (((x) < (y)) ? (x) : (y))
+#define DMF_AVG(x, y) (((x) + (y)) / 2)
+
+typedef enum
+{
+    DMF_PAGING_REASON_VOLTE,
+    DMF_PAGING_REASON_SMS,
+    DMF_PAGING_REASON_DETACH,
+    DMF_PAGING_REASON_PAGING_FAIL,
+    DMF_PAGING_REASON_UNSPECIFIED,
+    DMF_PAGING_REASON_MAX,
+} dmf_info_collect_paging_reason_enum;
+
+typedef enum
+{
+    DMF_EMM_ATTACH_NONE,
+    DMF_EMM_ATTACH_REQUEST,
+    DMF_EMM_ATTACH_ACCEPT,
+    DMF_EMM_ATTACH_REJECT,
+    DMF_EMM_ATTACH_T3410_EXPIRY
+} dmf_emm_attach_event_enum;
+
+typedef enum
+{
+    DMF_EMM_ATTACH_TAU_INVALID,
+    DMF_EMM_ATTACH_TYPE_EPS_ATTACH,
+    DMF_EMM_ATTACH_TYPE_COMBINED_ATTACH,
+    DMF_EMM_ATTACH_TYPE_EMERGENCY_ATTACH,
+
+    DMF_EMM_TAU_TYPE_TAU,
+    DMF_EMM_TAU_TYPE_COMBINED_TAU,
+    DMF_EMM_TAU_TYPE_COMBINED_TAU_IMSI_ATTACH,
+    DMF_EMM_TAU_TYPE_PERIODIC_TAU,
+} dmf_emm_attach_tau_type_enum;
+
+typedef enum
+{
+    DMF_ESM_OTA_EVENT_NONE,
+    DMF_ESM_PDN_CONN_REQUEST,
+    DMF_ESM_PDN_CONN_REJECT,
+    DMF_ESM_PDN_DISCONN_REQUEST,
+    DMF_ESM_PDN_DISCONN_REJECT,
+    DMF_ESM_ACT_DEFAULT_BEARER_REQUEST,
+    DMF_ESM_ACT_DEFAULT_BEARER_ACCEPT,
+    DMF_ESM_ACT_DEFAULT_BEARER_REJECT,
+    DMF_ESM_ACT_DEDICATED_BEARER_REQUEST,
+    DMF_ESM_ACT_DEDICATED_BEARER_ACCEPT,
+    DMF_ESM_ACT_DEDICATED_BEARER_REJECT,
+    DMF_ESM_MODIFY_BEARER_REQUEST,
+    DMF_ESM_MODIFY_BEARER_ACCEPT,
+    DMF_ESM_MODIFY_BEARER_REJECT,
+    DMF_ESM_DEACT_BEARER_REQUEST,
+    DMF_ESM_DEACT_BEARER_ACCEPT,
+    DMF_ESM_BEARER_RSC_ALLOCATE_REQUEST,
+    DMF_ESM_BEARER_RSC_ALLOCATE_REJECT,
+    DMF_ESM_BEARER_RSC_MODIFY_REQUEST,
+    DMF_ESM_BEARER_RSC_MODIFY_REJECT,
+    DMF_ESM_INFO_REQUEST,
+    DMF_ESM_INFO_RESPONSE,
+    DMF_ESM_NOTIFICATION,
+    DMF_ESM_STATUS,
+} dmf_esm_ota_event_enum;
+
+typedef enum
+{
+    DMF_ESM_APP_NONE,
+    DMF_ESM_APP_IMS,
+    DMF_ESM_APP_EMERGENCY,
+} dmf_esm_app_type_enum;
+
+typedef enum
+{
+    DMF_ESM_TIMER_NONE,
+    DMF_ESM_TIMER_T3480,
+    DMF_ESM_TIMER_T3482,
+    DMF_ESM_TIMER_T3481,
+    DMF_ESM_TIMER_T3492,
+} dmf_esm_timer_enum;
+
+typedef enum
+{
+    DMF_SM_PDP_NONE,
+    DMF_SM_PDP_ACT_REQUEST,
+    DMF_SM_PDP_ACT_ACCEPT,
+    DMF_SM_PDP_ACT_REJECT,
+} dmf_sm_pdp_event_enum;
+
+
+typedef enum
+{
+    /*MT Begin*/
+    DMF_MM_MT_CS_BEGIN    = 0,
+    DMF_MM_MT_CS_NONE    =  DMF_MM_MT_CS_BEGIN + EM_MM_MT_CS_NONE,
+    DMF_MM_MT_CS_SUCCESS    =  DMF_MM_MT_CS_BEGIN + EM_MM_MT_CS_SUCCESS,
+    DMF_MM_MT_CS_RR_REL_IND_RECEIVED    =  DMF_MM_MT_CS_BEGIN + EM_MM_RR_REL_IND_RECEIVED,
+    DMF_MM_MT_CS_FAIL_LU_ABNORMAL    =  DMF_MM_MT_CS_BEGIN + EM_MM_MT_CS_FAIL_LU_ABNORMAL,
+    DMF_MM_MT_CS_T3240_TIMEOUT    =  DMF_MM_MT_CS_BEGIN + EM_MM_T3240_TIMEOUT,
+    DMF_MM_MT_CS_PAGING_RESPONSE_SENT    =  DMF_MM_MT_CS_BEGIN + EM_MM_PAGING_RESPONSE_SENT,
+    DMF_MM_MT_CS_PAGING_BLOCKED_BY_ACCESS_BARRED    =  DMF_MM_MT_CS_BEGIN + EM_MM_PAGING_BLOCKED_BY_ACCESS_BARRED,
+    DMF_MM_MT_CS_AUTH_REJECT    =  DMF_MM_MT_CS_BEGIN + EM_MM_AUTH_REJECT,
+    DMF_MM_MT_CS_AUTH_FAIL    =  DMF_MM_MT_CS_BEGIN + EM_MM_AUTH_FAIL,
+    DMF_MM_MT_CS_PLMN_LOSS_IND_RECEIVED    =  DMF_MM_MT_CS_BEGIN + EM_MM_PLMN_LOSS_IND_RECEIVED,
+    DMF_MM_MT_CS_SIM_ERROR_IND_RECEIVED    =  DMF_MM_MT_CS_BEGIN + EM_MM_SIM_ERROR_IND_RECEIVED,
+    DMF_MM_MT_CS_CONN_EST_FAIL    =  DMF_MM_MT_CS_BEGIN + EM_MM_CONN_EST_FAIL,
+
+    /*MO Begin*/
+    DMF_MM_MO_CS_BEGIN    = 100,
+    DMF_MM_MO_CS_NONE    =  DMF_MM_MO_CS_BEGIN + EM_MM_MO_CS_NONE,
+    DMF_MM_MO_CS_SUCCESS    =  DMF_MM_MO_CS_BEGIN + EM_MM_MO_CS_SUCCESS,
+    DMF_MM_MO_CS_RR_REL_IND_RECEIVED    =  DMF_MM_MO_CS_BEGIN + EM_MM_MO_RR_REL_IND_RECEIVED,
+    DMF_MM_MO_CS_FAIL_LU_ABNORMAL    =  DMF_MM_MO_CS_BEGIN + EM_MM_MO_CS_FAIL_LU_ABNORMAL,
+    DMF_MM_MO_CS_T3240_TIMEOUT    =  DMF_MM_MO_CS_BEGIN + EM_MM_MO_T3240_TIMEOUT,
+    DMF_MM_MO_CS_AUTH_REJECT    =  DMF_MM_MO_CS_BEGIN + EM_MM_MO_AUTH_REJECT,
+    DMF_MM_MO_CS_AUTH_FAIL    =  DMF_MM_MO_CS_BEGIN + EM_MM_MO_AUTH_FAIL,
+    DMF_MM_MO_CS_PLMN_LOSS_IND_RECEIVED    =  DMF_MM_MO_CS_BEGIN + EM_MM_MO_PLMN_LOSS_IND_RECEIVED,
+    DMF_MM_MO_CS_SIM_ERROR_IND_RECEIVED    =  DMF_MM_MO_CS_BEGIN + EM_MM_MO_SIM_ERROR_IND_RECEIVED,
+    DMF_MM_MO_CS_CONN_EST_FAIL    =  DMF_MM_MO_CS_BEGIN + EM_MM_MO_CONN_EST_FAIL,
+    DMF_MM_MO_CS_CM_SERV_REJECT    =  DMF_MM_MO_CS_BEGIN + EM_MM_MO_CM_SERV_REJECT,
+
+} dmf_mm_cs_call_status_enum;
+
+typedef enum
+{
+  /* MM BEGIN */
+    DMF_CSFB_CALL_MM_MTCSFB_BEGIN    = 0,
+    DMF_CSFB_CALL_MM_MTCSFB_NONE    =  DMF_CSFB_CALL_MM_MTCSFB_BEGIN+EM_MM_MTCSFB_NONE,
+    DMF_CSFB_CALL_MM_MTCSFB_START   = DMF_CSFB_CALL_MM_MTCSFB_BEGIN+EM_MM_MTCSFB_START,
+    DMF_CSFB_CALL_MM_MTCSFB_SUCCESS = DMF_CSFB_CALL_MM_MTCSFB_BEGIN+EM_MM_MTCSFB_SUCCESS,
+    DMF_CSFB_CALL_MM_MTCSFB_FAIL    = DMF_CSFB_CALL_MM_MTCSFB_BEGIN+EM_MM_MTCSFB_FAIL,
+    DMF_CSFB_CALL_MM_MTCSFB_FAIL_PAGING_GUARD_TIMER_EXPIRED = DMF_CSFB_CALL_MM_MTCSFB_BEGIN+EM_MM_MTCSFB_FAIL_PAGING_GUARD_TIMER_EXPIRED,
+    DMF_CSFB_CALL_MM_MTCSFB_FAIL_T3240_TIMEOUT = DMF_CSFB_CALL_MM_MTCSFB_BEGIN+EM_MM_MTCSFB_FAIL_T3240_TIMEOUT,
+    DMF_CSFB_CALL_MM_MTCSFB_FAIL_AUTH_FAIL = DMF_CSFB_CALL_MM_MTCSFB_BEGIN+EM_MM_MTCSFB_FAIL_AUTH_FAIL,
+    DMF_CSFB_CALL_MM_MTCSFB_FAIL_CONN_EST_FAIL = DMF_CSFB_CALL_MM_MTCSFB_BEGIN+EM_MM_MTCSFB_FAIL_CONN_EST_FAIL,
+    DMF_CSFB_CALL_MM_MTCSFB_FAIL_LAU_REJECT = DMF_CSFB_CALL_MM_MTCSFB_BEGIN+EM_MM_MTCSFB_FAIL_LAU_REJECT,
+    DMF_CSFB_CALL_MM_MTCSFB_FAIL_RRC_REL_IND_RECEIVED = DMF_CSFB_CALL_MM_MTCSFB_BEGIN+EM_MM_MTCSFB_FAIL_RRC_REL_IND_RECEIVED,
+    DMF_CSFB_CALL_MM_MTCSFB_LAU_ACCEPT = DMF_CSFB_CALL_MM_MTCSFB_BEGIN+EM_MM_MTCSFB_LAU_ACCEPT,
+    DMF_CSFB_CALL_MM_MTCSFB_FAIL_PLMN_LOSS_IND_RECEIVED = DMF_CSFB_CALL_MM_MTCSFB_BEGIN+EM_MM_MTCSFB_FAIL_PLMN_LOSS_IND_RECEIVED,
+    DMF_CSFB_CALL_MM_MTCSFB_FAIL_SIM_ERROR_IND_RECEIVED = DMF_CSFB_CALL_MM_MTCSFB_BEGIN+EM_MM_MTCSFB_FAIL_SIM_ERROR_IND_RECEIVED,
+    DMF_CSFB_CALL_MM_MTCSFB_PAGING_RESPONSE_SENT = DMF_CSFB_CALL_MM_MTCSFB_BEGIN+EM_MM_MTCSFB_PAGING_RESPONSE_SENT,
+    DMF_CSFB_CALL_MM_MTCSFB_PAGING_BLOCKED_BY_ACCESS_BARRED = DMF_CSFB_CALL_MM_MTCSFB_BEGIN+EM_MM_MTCSFB_PAGING_BLOCKED_BY_ACCESS_BARRED,
+
+    DMF_CSFB_CALL_MM_MOCSFB_BEGIN    = 100,
+    DMF_CSFB_CALL_MM_MOCSFB_NONE    =  DMF_CSFB_CALL_MM_MOCSFB_BEGIN+EM_MM_MOCSFB_NONE,
+    DMF_CSFB_CALL_MM_MOCSFB_START   = DMF_CSFB_CALL_MM_MOCSFB_BEGIN+EM_MM_MOCSFB_START,
+    DMF_CSFB_CALL_MM_MOCSFB_SUCCESS = DMF_CSFB_CALL_MM_MOCSFB_BEGIN+EM_MM_MOCSFB_SUCCESS,
+    DMF_CSFB_CALL_MM_MOCSFB_FAIL    = DMF_CSFB_CALL_MM_MOCSFB_BEGIN+EM_MM_MOCSFB_FAIL,
+    DMF_CSFB_CALL_MM_MOCSFB_CM_SERV_REJECT = DMF_CSFB_CALL_MM_MOCSFB_BEGIN+EM_MM_MOCSFB_CM_SERV_REJECT,
+    DMF_CSFB_CALL_MM_MOCSFB_FAIL_T3240_TIMEOUT = DMF_CSFB_CALL_MM_MOCSFB_BEGIN+EM_MM_MOCSFB_FAIL_T3240_TIMEOUT,
+    DMF_CSFB_CALL_MM_MOCSFB_FAIL_AUTH_FAIL = DMF_CSFB_CALL_MM_MOCSFB_BEGIN+EM_MM_MOCSFB_FAIL_AUTH_FAIL,
+    DMF_CSFB_CALL_MM_MOCSFB_FAIL_CONN_EST_FAIL = DMF_CSFB_CALL_MM_MOCSFB_BEGIN+EM_MM_MOCSFB_FAIL_CONN_EST_FAIL,
+    DMF_CSFB_CALL_MM_MOCSFB_FAIL_LAU_REJECT = DMF_CSFB_CALL_MM_MOCSFB_BEGIN+EM_MM_MOCSFB_FAIL_LAU_REJECT,
+    DMF_CSFB_CALL_MM_MOCSFB_FAIL_RRC_REL_IND_RECEIVED = DMF_CSFB_CALL_MM_MOCSFB_BEGIN+EM_MM_MOCSFB_FAIL_RRC_REL_IND_RECEIVED,
+    DMF_CSFB_CALL_MM_MOCSFB_LAU_ACCEPT = DMF_CSFB_CALL_MM_MOCSFB_BEGIN+EM_MM_MOCSFB_LAU_ACCEPT,
+    DMF_CSFB_CALL_MM_MOCSFB_FAIL_PLMN_LOSS_IND_RECEIVED = DMF_CSFB_CALL_MM_MOCSFB_BEGIN+EM_MM_MOCSFB_FAIL_PLMN_LOSS_IND_RECEIVED,
+    DMF_CSFB_CALL_MM_MOCSFB_FAIL_SIM_ERROR_IND_RECEIVED = DMF_CSFB_CALL_MM_MOCSFB_BEGIN+EM_MM_MOCSFB_FAIL_SIM_ERROR_IND_RECEIVED,
+    DMF_CSFB_CALL_MM_MOCSFB_ACCESS_CLASS_BARRED = DMF_CSFB_CALL_MM_MOCSFB_BEGIN+EM_MM_MOCSFB_ACCESS_CLASS_BARRED,
+    DMF_CSFB_CALL_MM_MOCSFB_FAIL_T3230_TIMEOUT = DMF_CSFB_CALL_MM_MOCSFB_BEGIN+EM_MM_MOCSFB_FAIL_T3230_TIMEOUT,
+
+
+    /* EMM BEGIN */
+    DMF_CSFB_CALL_EMM_IGNORE_BEGIN = 200,
+    DMF_CSFB_CALL_EMM_IGNORE_NONE = DMF_CSFB_CALL_EMM_IGNORE_BEGIN + EM_EMM_CALL_IGNORE_PAGING_NONE,
+    DMF_CSFB_CALL_EMM_IGNORE_PAGING_UNEXPECTED_TYPE =  DMF_CSFB_CALL_EMM_IGNORE_BEGIN+EM_EMM_CALL_IGNORE_PAGING_UNEXPECTED_TYPE,
+    DMF_CSFB_CALL_EMM_IGNORE_PAGING_IMS_CALL_ONGOING = DMF_CSFB_CALL_EMM_IGNORE_BEGIN+EM_EMM_CALL_IGNORE_PAGING_IMS_CALL_ONGOING,
+    DMF_CSFB_CALL_EMM_IGNORE_PAGING_CS_NOT_ALLOW = DMF_CSFB_CALL_EMM_IGNORE_BEGIN+EM_EMM_CALL_IGNORE_PAGING_CS_NOT_ALLOW,
+    DMF_CSFB_CALL_EMM_IGNORE_PAGING_ID_ERROR = DMF_CSFB_CALL_EMM_IGNORE_BEGIN+EM_EMM_CALL_IGNORE_PAGING_ID_ERROR,
+    DMF_CSFB_CALL_EMM_IGNORE_PAGING_NOT_SUITABLE_CELL = DMF_CSFB_CALL_EMM_IGNORE_BEGIN+EM_EMM_CALL_IGNORE_PAGING_NOT_SUITABLE_CELL,
+    DMF_CSFB_CALL_EMM_IGNORE_PAGING_NO_CS_INSTANCE = DMF_CSFB_CALL_EMM_IGNORE_BEGIN+EM_EMM_CALL_IGNORE_PAGING_NO_CS_INSTANCE,
+    DMF_CSFB_CALL_EMM_IGNORE_PAGING_INTERRAT = DMF_CSFB_CALL_EMM_IGNORE_BEGIN+EM_EMM_CALL_IGNORE_PAGING_INTERRAT,
+    DMF_CSFB_CALL_EMM_IGNORE_PAGING_TMSI_ERROR = DMF_CSFB_CALL_EMM_IGNORE_BEGIN+EM_EMM_CALL_IGNORE_PAGING_TMSI_ERROR,
+    DMF_CSFB_CALL_EMM_IGNORE_PAGING_WAIT_ATTACH_END = DMF_CSFB_CALL_EMM_IGNORE_BEGIN+EM_EMM_CALL_IGNORE_PAGING_WAIT_ATTACH_END,
+
+    DMF_CSFB_CALL_EMM_FAIL_TRIG_BEGIN = 300,
+    DMF_CSFB_CALL_EMM_FAIL_TRIG_SUCCESS = DMF_CSFB_CALL_EMM_FAIL_TRIG_BEGIN+EM_EMM_CALL_FAIL_TRIG_SUCCESS,
+    DMF_CSFB_CALL_EMM_FAIL_TRIG_EST_FAIL = DMF_CSFB_CALL_EMM_FAIL_TRIG_BEGIN+EM_EMM_CALL_FAIL_TRIG_EST_FAIL,
+    DMF_CSFB_CALL_EMM_FAIL_TRIG_REL_IND  = DMF_CSFB_CALL_EMM_FAIL_TRIG_BEGIN+EM_EMM_CALL_FAIL_TRIG_REL_IND,
+    DMF_CSFB_CALL_EMM_FAIL_TRIG_RETRANS  = DMF_CSFB_CALL_EMM_FAIL_TRIG_BEGIN+EM_EMM_CALL_FAIL_TRIG_RETRANS,
+    DMF_CSFB_CALL_EMM_FAIL_TRIG_REJECT   = DMF_CSFB_CALL_EMM_FAIL_TRIG_BEGIN+EM_EMM_CALL_FAIL_TRIG_REJECT,
+    DMF_CSFB_CALL_EMM_FAIL_TRIG_T3417TO  = DMF_CSFB_CALL_EMM_FAIL_TRIG_BEGIN+EM_EMM_CALL_FAIL_TRIG_T3417TO,
+    DMF_CSFB_CALL_EMM_FAIL_TRIG_AC_BARRED= DMF_CSFB_CALL_EMM_FAIL_TRIG_BEGIN+EM_EMM_CALL_FAIL_TRIG_AC_BARRED,
+    DMF_CSFB_CALL_EMM_FAIL_TRIG_AUTH_REJ = DMF_CSFB_CALL_EMM_FAIL_TRIG_BEGIN+EM_EMM_CALL_FAIL_TRIG_AUTH_REJ,
+} dmf_csfb_call_state_enum;
+
+
+typedef enum
+{
+    DMF_ERRC_SRVCC_FAIL_MEAS_RPTE_NO_RESPONSE,
+    DMF_ERRC_SRVCC_FAIL_MEAS_RPT_SEND_FAIL,
+    DMF_ERRC_SRVCC_FAIL_THRESHOLD_NOT_PASS,
+    DMF_ERRC_SRVCC_FAIL_TTT_RECOUNT,
+    DMF_ERRC_SRVCC_FAIL_TTT_NOT_PASS,
+    DMF_ERRC_SRVCC_BSIC_DECODE_FAIL,
+    DMF_ERRC_NOT_IN_SRVCC_DURATION = 0xff,
+} dmf_errc_srvcc_fail_type_enum;
+
+typedef enum
+{
+    DMF_IR_HO,
+    DMF_IR_RESELECT,
+    DMF_IR_REDIRECT,
+    DMF_IR_CCO,
+    DMF_HANDOVER,
+    DMF_CELL_RESELECT,
+    DMF_CELL_REDIRECT,
+    DMF_CELL_UPDATE
+} dmf_info_collect_cell_update_event_enum;
+
+typedef enum
+{
+    DMF_RAT_NONE,
+    DMF_RAT_GSM,
+    DMF_RAT_UMTS,
+    DMF_RAT_LTE,
+    DMF_RAT_NR,
+    DMF_RAT_C2K
+} dmf_info_collect_rat_enum;
+
+typedef enum
+{
+    DMF_RAT_3GPP_NONE,
+    DMF_RAT_3GPP_GSM,
+    DMF_RAT_3GPP_WCDMA,
+    DMF_RAT_3GPP_TDSCDMA,
+    DMF_RAT_3GPP_LTE,
+    DMF_RAT_3GPP_NR
+} dmf_info_collect_3gpp_rat_enum;
+
+typedef enum {
+    DMF_NO_TAU_RAU_LAU = 0,
+    DMF_LTE_TAU_REQUEST,
+    DMF_LTE_TAU_ACCEPT,
+    DMF_LTE_TAU_REJECT,
+    DMF_UMTS_RAU_REQUEST,
+    DMF_UMTS_RAU_ACCEPT,
+    DMF_UMTS_RAU_REJECT,
+    DMF_UMTS_LAU_REQUEST,
+    DMF_UMTS_LAU_ACCEPT,
+    DMF_UMTS_LAU_REJECT,
+    DMF_GSM_RAU_REQUEST,
+    DMF_GSM_RAU_ACCEPT,
+    DMF_GSM_RAU_REJECT,
+    DMF_GSM_LAU_REQUEST,
+    DMF_GSM_LAU_ACCEPT,
+    DMF_GSM_LAU_REJECT,
+} dmf_tau_rau_lau_event_enum;
+
+typedef struct{    
+    kal_char plmn_id[7];    
+    kal_uint16 lac;    
+    kal_uint8 rac;    
+    kal_uint32 tac;    
+    kal_uint64 cell_id;    
+    kal_uint16 specific_cell_id;    //2G: BSIC, 3G: PSC, 4G:PCI    dmf_info_collect_rat_enum active_rat;   
+    dmf_info_collect_rat_enum active_rat;
+    dmf_info_collect_3gpp_rat_enum active_rat_3gpp;    
+    kal_uint16 band;    
+    kal_uint32 frequency;    
+    kal_int16 sig1;    
+    kal_int16 sig2;    
+    kal_int16 rs_snr_in_qdb;
+    kal_uint32 dl_bandwidth;
+    kal_bool is_sib2_endc_support;
+    kal_bool is_endc_scg_connected;
+} dmf_info_collect_current_serving_cell_info_struct;
+
+typedef struct {
+
+    kal_bool is_data_sim;
+    dmf_info_collect_paging_reason_enum paging_reason;
+} dmf_event_paging_info_struct;
+
+typedef struct {
+    kal_uint32 volte_rb_idx;
+    kal_uint32 ims_disc_tmr_rpt;
+    kal_uint32 ims_ul_disc_cnt_rpt;
+    kal_uint32 ims_dl_disc_cnt_rpt;
+} dmf_event_volte_pdcp_info_struct;
+
+typedef struct
+{
+    kal_uint8 ra_preamble_last_TXpower;
+    dmf_info_collect_rat_enum ra_fail_rat;
+} dmf_event_em_emac_rach_finish_struct;
+
+typedef struct {
+    em_lte_rrc_state_enum errc_state;
+    em_lte_rrc_cause_enum errc_cause;
+} dmf_event_errc_state_struct;
+
+typedef struct {
+	EARFCN pcell_earfcn;
+	kal_uint16 pcell_band;
+	kal_uint16 pcell_pci;
+	kal_uint8 pcell_bw;
+	kal_uint8 unused[3];
+
+	kal_bool is_scell_configured[EM_SCELL_MAX_NUM];
+	EARFCN scell_earfcn[EM_SCELL_MAX_NUM];
+	kal_uint16 scell_band[EM_SCELL_MAX_NUM];
+	kal_uint16 scell_pci[EM_SCELL_MAX_NUM];
+	kal_uint8 scell_bw[EM_SCELL_MAX_NUM];
+	kal_bool scell_belongs_to_stag[EM_SCELL_MAX_NUM];
+} dmf_event_errc_conn_info_struct;
+
+typedef struct {
+	em_errc_state_enum errc_sts;
+} dmf_event_errc_state_info_struct;
+
+typedef struct {
+    kal_bool is_attach;
+    dmf_emm_attach_tau_type_enum attach_tau_type;
+    emm_cause_enum emm_cause;
+} dmf_event_emm_reject_info_struct;
+
+typedef struct {
+
+    dmf_esm_ota_event_enum esm_ota_event;
+    dmf_esm_app_type_enum app_type;
+} dmf_event_esm_ota_struct;
+
+typedef struct {
+
+    dmf_esm_timer_enum timer_id;
+    dmf_esm_app_type_enum app_type;
+} dmf_event_esm_timer_expiry_struct;
+
+
+typedef struct {
+
+    kal_uint8 nsapi;
+    kal_bool is_ms_initial;
+    dmf_sm_pdp_event_enum pdp_request_event;
+    kal_bool is_ims_signaling_pdp;
+    kal_bool is_t3380_retry;
+} dmf_event_sm_pdp_request_struct;
+
+typedef struct {
+
+    em_c2k_call_type_enum          type;
+    em_1xrtt_call_fail_reason_enum reason;
+    kal_char                       mcc[4];
+    kal_char                       imsi_11_12[4];
+    kal_uint16                     sid;
+    kal_uint16                     nid;
+    kal_uint16                     bid;
+    kal_uint16                     channel;         /* It defines channel number. */
+    kal_uint16                     band_class;      /* It defines band class. */
+    kal_uint16                     pilot_pn_offset; /* It defines pilot PN offset. */
+    kal_int8                       rx_power;        /* It defines rx power. */
+    kal_int8                       pilot_ecio;      /* Pilot Ec/Io. */
+} dmf_event_c2k_call_fail_reason_struct;
+
+typedef struct {
+
+    kal_bool is_mo_csfb_call;
+    dmf_csfb_call_state_enum csfb_status;
+    kal_uint8 mm_state;
+    kal_uint8 mm_cause;
+} dmf_event_mm_csfb_call_status_struct;
+
+typedef struct {
+
+    kal_bool is_mo_cs_call;
+    dmf_mm_cs_call_status_enum cs_status;
+    kal_uint8 mm_state;
+    kal_uint8 mm_cause;
+} dmf_event_mm_cs_call_status_struct;
+
+typedef struct
+{
+    kal_bool is_mo_csfb_call;
+    dmf_csfb_call_state_enum csfb_state;
+    em_emm_cause_enum ext_service_reject_cause;    
+} dmf_event_emm_csfb_call_status_struct;
+
+typedef struct
+{
+    kal_bool is_mo_call;
+    kal_uint8 call_id;	
+    em_vdm_call_state_enum call_state;
+    ims_disc_cause_enum disc_cause;
+} dmf_event_vdm_call_status_struct;
+
+typedef struct
+{
+    em_mcf_trigger_type_enum trigger_type;
+    l4c_mcf_config_type_enum config_type;
+    kal_uint32 result;
+    kal_uint32 start_time;
+    kal_uint32 end_time;
+    l4c_mcf_path_type_enum path_type;
+    kal_char file_name[DMF_INFO_COLLECT_MAX_MCF_FILE_NAME];
+} dmf_event_mcf_info_struct;
+
+typedef struct
+{
+    em_l4bsbp_trigger_type_enum trigger_type;
+    em_l4bsbp_mode_type_enum    mode;
+    em_l4bsbp_result_type_enum  result;
+    kal_uint32                  sbp_id;
+    kal_uint32                  sim_sbp_id;
+    kal_uint32                  start_time_tick;
+    kal_uint32                  end_time_tick;
+} dmf_event_sbp_dsbp_info_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint32  error_cause_is_valid;
+    kal_uint32  error_cause;
+} dmf_event_ims_pdn_fail_cause_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint32 error_apn_is_valid;
+    kal_uint8 error_apn[100];
+
+}dmf_event_ims_pdn_fail_apn_struct;
+
+typedef struct
+{
+    kal_bool is_mo_call;
+    kal_uint8 call_id;
+    kal_uint8 call_state;
+    kal_bool is_cc_disc_cause_valid;
+    kal_uint16 cc_disc_cause;
+} dmf_event_cc_call_info_struct;
+
+typedef enum 
+{
+	  DMF_SIP_EVENT_ID_BEGIN      		= 0,
+	  DMF_SIP_MO_CALL_ATTEMPT     		= 1, /* 1 */
+	  DMF_SIP_MO_CALL_SET_UP      		= 2,
+	  DMF_SIP_MO_CALL_ESTABLISHED 		= 3,
+	  DMF_SIP_MO_CALL_END 				= 4,
+	  DMF_SIP_MO_CALL_DROPED			= 5,
+	  DMF_SIP_MO_CALL_FAILED			= 6,
+	  DMF_SIP_MO_CALL_EARLY_REL			= 7,
+
+	  DMF_SIP_MT_CALL_ATTEMPT     		= 51, /* 51 */
+	  DMF_SIP_MT_CALL_SET_UP      		= 52,
+	  DMF_SIP_MT_CALL_ESTABLISHED 		= 53,
+	  DMF_SIP_MT_CALL_END 				= 54,
+	  DMF_SIP_MT_CALL_DROPED			= 55,
+	  DMF_SIP_MT_CALL_FAILED			= 56,
+	  DMF_SIP_MT_CALL_EARLY_REL			= 57,
+	  DMF_SIP_MT_IMS_SMS_FAIL           = 201,
+	  DMF_SIP_INITIAL_REG_REQ			= 501,
+	  DMF_SIP_INITIAL_REG_401_RCV		= 502,
+	  DMF_SIP_INITIAL_REG_WITH_IPSEC	= 503,
+	  DMF_SIP_INITIAL_REG_SUCC			= 504,
+	  DMF_SIP_INITIAL_REG_FAIL			= 505,
+	  DMF_SIP_ID_MAX
+} dmf_kpi_ims_event_id_enum;
+
+typedef enum
+{
+    DMF_IMS_SIP_MSG_TYPE_REQUEST = 0x00,
+    DMF_IMS_SIP_MSG_TYPE_RESPONSE = 0x01,
+    DMF_IMS_SIP_MSG_TYPE_MAX,
+} dmf_ims_sip_msg_type_enum;
+
+typedef enum 
+{
+    DMF_METHOD_SIP_REGISTER,
+    DMF_METHOD_SIP_INVITE,
+    DMF_METHOD_SIP_REFER,
+    DMF_METHOD_SIP_UPDATE,
+    DMF_METHOD_SIP_CANCEL,
+    DMF_METHOD_SIP_MESSAGE,
+    DMF_METHOD_SIP_ACK,
+    DMF_METHOD_SIP_BYE,
+    DMF_METHOD_SIP_OPTIONS,
+    DMF_METHOD_SIP_SUBSCRIBE,
+    DMF_METHOD_SIP_NOTIFY,
+    DMF_METHOD_SIP_PUBLISH,
+    DMF_METHOD_SIP_INFO,
+    DMF_METHOD_SIP_PRACK,
+    DMF_METHOD_HTTP_GET,
+    DMF_METHOD_HTTP_POST,
+    DMF_METHOD_HTTP_TRACE,
+    DMF_METHOD_HTTP_HEAD,
+    DMF_METHOD_HTTP_PUT,
+    DMF_METHOD_HTTP_DELETE,
+    DMF_METHOD_HTTP_CONNECT,
+    DMF_METHOD_RTSP_OPTIONS,
+    DMF_METHOD_RTSP_REDIRECT,
+    DMF_METHOD_RTSP_DESCRIBE,
+    DMF_METHOD_RTSP_SETUP,
+    DMF_METHOD_RTSP_PLAY,
+    DMF_METHOD_RTSP_PAUSE,
+    DMF_METHOD_RTSP_TEARDOWN,
+    DMF_METHOD_RTSP_SET_PARAMETER,
+    DMF_METHOD_PXY_DEBUG,
+    DMF_METHOD_UNRECOGNIZED,
+    DMF_METHOD_NUM,
+} dmf_sip_method_enum; 
+
+typedef enum
+{
+    DMF_SIP_FAIL_CAUSE_NOT_USERTRIGGERED = 0x01,
+    DMF_SIP_FAIL_CAUSE_NOT_ALERTED = 0x04,
+} dmf_ims_sip_fail_cause_enum;
+
+typedef enum 
+{
+    DMF_KPI_URC_SWITCH_OFF = 0,
+    DMF_KPI_URC_SWITCH_ON, /* 1*/
+    DMF_KPI_URC_SWITCH_STATUS_QUERY,
+    DMF_KPI_NETWORK_KPI_QUERY
+} dmf_kpi_urc_query_enum;
+
+typedef enum 
+{
+	 DMF_GROUP_ID_BEGIN = 0,
+	 DMF_GROUP_ID_CMCC_NETWORK_KPI, /* 1 */
+	 DMF_GROUP_ID_CMCC_NR_NETWORK_KPI,
+	 DMF_GROUP_ID_MAX
+} dmf_group_id_enum;
+
+
+ typedef enum 
+ {
+	 //define kpi for cmcc network group
+	 DMF_KPI_CAUSE_BEGIN = 0,
+	 DMF_KPI_LTE_ATTACH_SUCC_RATE = 0x00000001, /* 1 */
+	 DMF_KPI_DEFAULT_EPS_BEARER_ESTABLISH_SUCC_RATE = 0x00000002,
+	 DMF_KPI_ESRVCC_SUCC_RATE = 0x00000004,
+	 DMF_KPI_IMS_REGISTRATION_SUCC_RATE = 0x00000008,
+	 DMF_KPI_VOLTE_CALL_DROP = 0x00000010,
+	 DMF_KPI_MO_VOLTE_CALL_SUCC_RATE = 0x00000020,
+	 DMF_KPI_MT_VOLTE_CALL_SUCC_RATE = 0x00000040,
+	 DMF_KPI_TAU_SUCC_RATE = 0x00000080,
+	 DMF_KPI_MO_CSFB_SUCC_RATE = 0x00000100,
+	 DMF_KPI_MT_CSFB_SUCC_RATE = 0x00000200,
+	 DMF_KPI_MO_SMS_OVER_SGS_SUCC_RATE = 0x00000400,
+	 DMF_KPI_MT_SMS_OVER_SGS_SUCC_RATE = 0x00000800,
+	 DMF_KPI_MO_SMS_OVER_IMS_SUCC_RATE = 0x00001000,
+	 DMF_KPI_MT_SMS_OVER_IMS_SUCC_RATE = 0x00002000,
+	 DMF_KPI_CAUSE_MAX
+ } dmf_nw_kpi_enum;
+
+typedef enum 
+{
+	 //define kpi for cmcc nr network group
+	 DMF_NR_NW_KPI_BEGIN = 0,
+	 DMF_KPI_ADD_SCG_SUCC_RATE = 0x00000001, /* 1 */
+	 DMF_NR_NW_KPI_MAX
+ } dmf_nr_nw_kpi_enum;
+
+
+typedef enum
+{
+    DMF_CMCC_EPS_ATTACH_NONE,
+    DMF_CMCC_EPS_ATTACH_REQUEST,
+    DMF_CMCC_EPS_ATTACH_SUCCESS,
+    DMF_CMCC_EPS_ATTACH_FAIL,
+} dmf_cmcc_eps_attach_event_enum;
+
+typedef enum
+{
+    DMF_CMCC_ACT_DEFAULT_EPS_BEARER_NONE,
+	DMF_CMCC_ACT_DEFAULT_EPS_BEARER_REQUEST_RECEIVED,
+	DMF_CMCC_ACT_DEFAULT_EPS_BEARER_ACCEPT_SENT,
+	DMF_CMCC_ACT_DEFAULT_EPS_BEARER_REJECT_SENT,
+} dmf_cmcc_esm_eps_bearer_event_enum;
+typedef enum
+{
+	DMF_CMCC_SRVCC_NONE,
+	DMF_CMCC_SRVCC_HO_REQ_RECEIVED,
+	DMF_CMCC_SRVCC_HO_COMPLETE_SENT,
+	DMF_CMCC_SRVCC_HO_FAIL_SENT,
+} dmf_cmcc_srvcc_event_enum;
+typedef enum
+{
+    DMF_CMCC_TAU_NONE,
+    DMF_CMCC_TAU_REQUEST_SENT,
+    DMF_CMCC_TAU_ACCEPT_RECEIVED,
+    DMF_CMCC_TAU_REJECT_RECEIVED,
+} dmf_cmcc_tau_event_enum;
+typedef enum
+{
+    DMF_CMCC_CSFB_CALL_NONE,
+	DMF_CMCC_MO_CSFB_EXT_SR_REQ_SENT,
+    DMF_CMCC_MO_CSFB_SUCCESS,
+    DMF_CMCC_MO_CSFB_FAIL,
+    DMF_CMCC_MT_CSFB_CS_SERVICE_NOTIFICATION,
+    DMF_CMCC_MT_CSFB_CS_PAGING,
+    DMF_CMCC_MT_CSFB_SUCCESS,
+    DMF_CMCC_MT_CSFB_FAIL,
+}dmf_cmcc_csfb_call_event_enum ;
+
+typedef enum
+{
+    DMF_CSFB_RESULT_NULL,
+    DMF_CSFB_RESULT_FAIL,
+    DMF_CSFB_RESULT_SUCCESS,
+}dmf_csfb_result_enum ;
+
+
+typedef enum
+{
+    DMF_CMCC_SMS_NONE,
+	DMF_CMCC_SMS_OVER_SGS_MO_SMS_START,
+    DMF_CMCC_SMS_OVER_SGS_MO_SMS_SUCCESS,
+    DMF_CMCC_SMS_OVER_SGS_MO_SMS_FAIL,
+    DMF_CMCC_SMS_OVER_SGS_MT_SMS_START,
+    DMF_CMCC_SMS_OVER_SGS_MT_SMS_SUCCESS,
+    DMF_CMCC_SMS_OVER_SGS_MT_SMS_FAIL,
+    DMF_CMCC_SMS_OVER_IMS_MO_SMS_START,
+    DMF_CMCC_SMS_OVER_IMS_MO_SMS_SUCCESS,
+    DMF_CMCC_SMS_OVER_IMS_MO_SMS_FAIL,
+    DMF_CMCC_SMS_OVER_IMS_MT_SMS_START,
+    DMF_CMCC_SMS_OVER_IMS_MT_SMS_SUCCESS,
+    DMF_CMCC_SMS_OVER_IMS_MT_SMS_FAIL,
+}dmf_cmcc_sms_event_enum ;
+
+typedef enum
+{
+    DMF_CMCC_ADD_SCG_NONE,
+	DMF_CMCC_ADD_SCG_BEGIN,
+    DMF_CMCC_ADD_SCG_SUCCESS,
+    DMF_CMCC_ADD_SCG_FAIL,
+}dmf_cmcc_add_scg_event_enum ;
+
+
+typedef struct
+{
+    dmf_cmcc_tau_event_enum tau_event;
+    kal_uint32 tau_reject_cause;
+} dmf_event_cmcc_tau_struct;
+
+typedef struct
+{
+    dmf_cmcc_csfb_call_event_enum call_event;
+    kal_uint16 fail_cause;
+} dmf_event_cmcc_csfb_call_info_struct;
+typedef struct
+{
+    dmf_cmcc_sms_event_enum sms_event;
+    kal_uint32 fail_cause;
+} dmf_event_cmcc_sms_info_struct;
+
+typedef enum {
+    DMF_ANTENNA_LOWER = 0,
+    DMF_ANTENNA_UPPER = 1,
+} dmf_ant_status_enum;
+
+typedef struct
+{
+    //em_esm_status_struct        esm_status;
+    //em_esm_pt_struct            esm_pt[ESM_MAX_PT_NUM];
+    //em_esm_epsbc_struct         esm_epsbc[ESM_MAX_EPSB_NUM];
+    //em_esm_conn_status_struct   esm_conn;
+
+#if defined(__VOLTE_SUPPORT__)
+    //em_esm_ims_status_struct    esm_ims;
+#endif
+
+    // Vzw MDMI: Report events
+    kal_uint8                   reported_pt_index;
+    kal_uint8                   reported_epsbc_index;
+
+} dmf_event_esm_esm_info_struct;
+
+typedef struct {
+	kal_uint32 physical_cell_id:10; // range[0, 1007]
+	kal_uint32 dl_frequency_band:7; // range[1, 89]
+	kal_uint32 bwp_size:9; // range[0, 275]
+	kal_uint32 sub_carrier_spacing:3; // {0, 1, 2, 3, 4} indicates SCS={15, 30, 60, 120, 240} khz
+} dmf_event_nl1_physical_configuration_struct;
+
+typedef struct {
+	kal_uint32 resource_id:8; // range[0, 191]
+	kal_int16 rsrp;
+	kal_int8 rsrq;
+	kal_int8 sinr;
+} dmf_event_nl1_serving_cell_csirs_measurement_struct;
+
+typedef struct
+{
+    dmf_cmcc_eps_attach_event_enum attach_event;
+    kal_uint32 attach_reject_cause;
+} dmf_event_cmcc_eps_attach_struct;
+
+typedef struct
+{
+    dmf_cmcc_esm_eps_bearer_event_enum esm_eps_bearer_event;
+    kal_uint8 ebi;
+    kal_uint32 reject_cause;
+} dmf_event_cmcc_eps_bearer_struct;
+
+typedef struct
+{
+	em_errc_success_rate_kpi_proc_enum proc_id;
+    em_kpi_status_enum  status;
+	kal_bool srvcc_ho_flag;
+} dmf_event_cmcc_esrvcc_struct;
+
+typedef struct
+{
+	em_ho_from_lte_type_enum ir_ho_type;
+	kal_bool srvcc_ho_flag;
+} dmf_event_cmcc_errc_mfrom_struct;
+
+
+typedef struct
+{
+	kal_uint32   srvcc_fail_cause;
+} dmf_event_cmcc_errc_srvcc_fail_struct;
+
+
+typedef struct
+{
+	kal_uint8  sip_msg_type;
+	kal_uint8  call_id;
+    kal_uint16 sip_method;
+    kal_uint32 sip_resp_code;
+    kal_uint32 event_id;
+	kal_uint32 fail_cause;
+}dmf_event_cmcc_imc_ims_struct;
+
+typedef struct
+{
+
+    kal_uint32      tracking_area_code;     // Track area code
+    kal_uint16      freq_band_indicator;    // Frequency band indicator
+    kal_uint32      dl_frequency;       // Downlink Frequency 
+    kal_uint8       serv_rsrp;      // RSRP of serving cell over last measurement period
+    kal_uint8       serv_rsrq;      // RSRQ of serving cell over last measurement period
+    kal_uint16      mcc;    // MCC part of PLMN
+    kal_uint16      mnc;    // MNC part of PLMN
+    kal_uint8       num_of_mnc_digits;      // Number of digits in MNC (e.g.2/3)
+    kal_uint32      cause; 
+} dmf_event_scg_failure_event_struct;
+
+typedef struct
+{ 
+    kal_uint32      tracking_area_code;     // Track area code
+    kal_uint16      freq_band_indicator;    // Frequency band indicator
+    kal_uint32      dl_frequency;       // Downlink Frequency 
+    kal_uint8       serv_rsrp;      // RSRP of serving cell over last measurement period
+    kal_uint8       serv_rsrq;      // RSRQ of serving cell over last measurement period
+    kal_uint16      mcc;    // MCC part of PLMN
+    kal_uint16      mnc;    // MNC part of PLMN
+    kal_uint8       num_of_mnc_digits;      // Number of digits in MNC (e.g.2/3)
+    kal_uint32      cause; 
+} dmf_event_radio_link_failure_event_struct;
+
+typedef struct
+{
+    kal_uint32      tracking_area_code;     // Track area code
+    kal_uint16      freq_band_indicator;    // Frequency band indicator
+    kal_uint32      dl_frequency;       // Downlink Frequency 
+    kal_uint8       serv_rsrp;      // RSRP of serving cell over last measurement period
+    kal_uint8       serv_rsrq;      // RSRQ of serving cell over last measurement period
+    kal_uint16      mcc;    // MCC part of PLMN
+    kal_uint16      mnc;    // MNC part of PLMN
+    kal_uint8       num_of_mnc_digits;      // Number of digits in MNC (e.g.2/3)
+    kal_uint8       lte_num_of_scells;  
+    kal_uint32      lte_pcc_earfcn;
+    kal_uint32      lte_scc_earfcn[ERRC_SCELL_NUM_MAX];
+    kal_uint8       nr_number_of_scell;  
+    kal_uint16      nr_spcell_dl_frequency_band;
+    kal_uint16      nr_scell_dl_frequency_band[NL1_SCELL_CONFIG_LIST_SIZE];
+}dmf_event_other_5g_kpi_event_struct;
+
+typedef enum
+{
+    DMF_NL2_PDCP_THROUGHPUT_DL,
+    DMF_NL2_PDCP_THROUGHPUT_UL,
+    DMF_EL2_PDCP_THROUGHPUT_DL,
+    DMF_EL2_PDCP_THROUGHPUT_UL
+}dmf_pdcp_throughput_direction_enum;
+
+typedef struct {
+    dmf_pdcp_throughput_direction_enum type;
+    kal_uint32      version;    // Log record structure ID
+    kal_uint32      pdcp_throughput;     // DL/UL throughput measured on the PDCP layer(bps)
+} dmf_event_pdcp_throughput_struct;
+
+typedef enum {
+    DMF_CALL_EVENT_INACTIVE = 0,             // call id not active
+    DMF_CALL_EVENT_MO_DIAL_NORMAL_CALL,
+    DMF_CALL_EVENT_MO_DIAL_EMERGENCY_CALL,
+    DMF_CALL_EVENT_MO_UPDATE_TO_EMERGENCY,   // ATD then VDM judge it as emergency call
+    DMF_CALL_EVENT_MT_CALL_SETUP,
+    DMF_CALL_EVENT_CALL_SUCCESS,
+    DMF_CALL_EVENT_CALL_EST_FAIL,
+    DMF_CALL_EVENT_CALL_END,                 // Call ended with previous est success
+} dmf_call_event_enum;
+
+typedef struct 
+{
+    kal_uint8 call_id;
+    dmf_call_event_enum dmf_call_event;
+} dmf_event_call_status_struct;
+
+typedef struct
+{
+    kal_uint8 ho_result;
+} dmf_event_errc_ho_fail_struct;
+
+typedef struct
+{
+    dmf_info_collect_rat_enum ra_fail_rat;
+} dmf_event_ra_fail_occur_struct;
+
+typedef struct
+{
+    kal_uint8  bar_cause;
+    kal_uint32 bar_time;
+    kal_uint32 ext_wait_time;
+    kal_uint8  est_type;
+    kal_uint8  ac_bar_type;
+} dmf_event_errc_bar_info_struct;
+
+typedef struct
+{
+    kal_uint8  timer_type;
+    kal_uint32 timer_length;
+} dmf_event_errc_reest_fail_timer_info_struct;
+
+typedef struct
+{
+    kal_uint16 pci;
+    kal_uint32 rsrp;
+    kal_uint32 rsrq;
+}dmf_event_errc_cell_info_struct;
+
+typedef struct
+{
+    kal_uint32 serving_cell_freq;
+    dmf_event_errc_cell_info_struct serving_cell;
+    kal_uint8  neighbor_cell_num;
+    dmf_event_errc_cell_info_struct neighbor_cell[3];
+} dmf_event_errc_interference_mod3_info_struct;
+
+typedef enum
+{
+    DMF_MM_AUTH_REJ,
+    DMF_GMM_AUTH_REJ,
+    DMF_EMM_AUTH_REJ
+} dmf_mm_emm_auth_type_enum;
+
+typedef struct
+{
+    dmf_mm_emm_auth_type_enum type;
+} dmf_event_mm_emm_auth_rej_info_struct;
+
+typedef struct
+{
+    kal_uint32 cid;
+    kal_uint16 err_cause;  
+} dmf_event_ddm_ia_fail_info_struct;
+
+typedef struct
+{
+    kal_uint32 cid;
+    kal_uint16 err_cause;  
+} dmf_event_ddm_deact_fail_info_struct;
+
+typedef struct
+{
+    kal_uint32 cid;
+    kal_uint16 err_cause;  
+} dmf_event_ddm_act_fail_info_struct;
+
+typedef struct
+{
+    errc_mob_em_bw_monitoring_info_struct   conn_info;
+    errc_mob_em_bw_monitoring_info_struct   idle_info;
+} dmf_event_errc_bw_monitoring_info_struct;
+
+typedef struct
+{
+    sim_monitor_type event_type;
+    kal_uint32 count;
+} dmf_event_sim_monitor_info_struct;
+
+typedef struct {
+    tdd_em_rrc_conn_status_enum rrc_conn_status;
+    kal_uint8 est_cause;
+    tdd_em_rrc_cause_enum rrc_cause;
+} dmf_event_tdd_rrce_conn_status_struct;
+
+typedef struct {
+    kal_bool                    is_emm;
+    kal_uint16                  event;
+    kal_uint16                  reject_type;
+    kal_uint16                  original_mm_emm_cause;   // (based on is_emm) em_mm_cause_enum or em_emm_cause_enum
+    kal_uint16                  converted_mm_emm_cause;  // (based on is_emm) em_mm_cause_enum or em_emm_cause_enum
+    kal_bool                    is_ps_sim_valid;
+    kal_bool                    is_cs_sim_valid;
+    kal_uint8                   reject_domain;
+}dmf_event_mm_emm_cause_info_struct;
+
+typedef struct
+{
+    kal_int16  rsrp;
+    kal_int16  rsrq;
+    kal_int16  sinr;
+    kal_int32  jitter;
+    kal_uint8  tx_drop_rate;
+    kal_uint8  rx_drop_rate;
+} dmf_event_volte_quality_info_struct;
+
+typedef struct
+{
+    MobEmMeasQty meas_quantity;
+    kal_int16 threshold;
+    kal_uint8 hysteresis;
+    kal_uint16 time_to_trigger;
+} dmf_a2_config_struct;
+
+typedef struct
+{
+    dmf_a2_config_struct a2_config[ERRC_EM_MAX_A2_ONLY_MEAS_CONFIG_REPORT_NUM];
+} dmf_event_errc_a2_config_event_struct;
+
+typedef struct
+{
+    MobEmMeasQty meas_quantity;
+    kal_int16 threshold;
+    MobEmMeasQty other_rat_meas_quantity;
+    kal_int16 other_rat_threshold;
+    kal_uint8 hysteresis;
+    kal_uint16 time_to_trigger;
+} dmf_b2_config_struct;
+
+typedef struct
+{
+    dmf_b2_config_struct b2_config[ERRC_EM_MAX_B2_ONLY_MEAS_CONFIG_REPORT_NUM];
+} dmf_event_errc_b2_config_event_struct;
+
+typedef struct
+{
+    em_gmss_hvolte_mode_enum hvolte_mode;
+    em_gmss_hvolte_mode_chg_cause_enum  hvolte_mode_change_cause;
+    kal_bool is_silent_redial_start;
+    kal_bool is_after_silent_redial_return_lte_fail;
+} dmf_event_gmss_hvolte_info_struct;
+
+typedef struct {
+	kal_uint8 is_nr_cell_measured;  // 0: No NR cell measured
+									// 1: NR cell measured
+} dmf_event_errc_ir_nr_meas_result_info_struct;
+
+typedef struct {
+    kal_uint32      ul_grant_valid:1;       // 0: Not valid
+                                            // 1: Valid
+    kal_uint32      dci_format:1;       // 0: 0_0
+                                        // 1: 0_1
+    kal_uint32      resource_allocation_type:1;     // Resource allocation type in freq domain.
+                                                    // 0: type 0, 1: type 1
+    kal_uint32      start_rb:9;     // If resource allocation type is 0: RBGbmp LSBs;
+                                    // If resource allocation type is 1:
+                                    // The Start of RB for the assigned PUSCH.
+                                    // range[0, 274]
+    kal_uint32      num_rb:9;       // If resource allocation type is 0: RBGbmp MSBs;
+                                    // If resource allocation type is 1:
+                                    // The length of RB for the assigned PUSCH.
+                                    // range[0, 275]
+    kal_uint32      slot_offset_k2:6;       // Slot offset for DCI and the corresponding PUSCH.
+                                            // range[0, 32]
+    kal_uint32      sliv_start:4;       // The start symbol index of the corresponding
+                                        // PUSCH. range[0, 13]
+    kal_uint32      reserved:1;
+    kal_uint32      sliv_length:4;      // Symbol length of the corresponding PUSCH.
+                                        // range[1, 14]
+    kal_uint32      frequency_hopping_flag:1;       // 0: no frequency hopping
+                                                    // 1: frequency hopping
+    kal_uint32      modulation_type:3;      // Modulation Order.
+                                            // 0: BPSK, 1: QPSK, 2: 16QAM, 3: 64QAM, 4: 256QAM
+    kal_uint32      mcs_index:5;    // range[0, 31]
+    kal_uint32      ndi:1;      // Indicate new transmission or re-transmission.
+    kal_uint32      rv:2;       // Derive from MCS, range[0, 3]
+    kal_uint32      harq_id:4;      // range[0, 15]
+    kal_uint32      pusch_tpc_command:2;    // TPC command for scheduled PUSCH as defined in
+                                            // 7.1.1 of TS 38.213.
+    kal_uint32      ul_sul_indicator:1;     // As defined in 7.3.1.1.1 of TS38.212.
+                                            // 0: The non-supplementary uplink
+                                            // 1: The supplementary uplink
+    kal_uint32      bandwidth_part_indicator:2;     // Specific for DCI format 0_1.
+    kal_uint32      first_dai:2;    // Specific for DCI format 0_1.
+                                    // As defined in 7.3.1.1.2 of TS38.212.
+    kal_uint32      second_dai:2;       // Specific for DCI format 0_1.
+                                        // As defined in 7.3.1.1.2 of TS38.212.
+    kal_uint32      reserved_1:3;
+    kal_uint32      srs_resource_indicator:4;       // range[0, 15]
+    kal_uint32      tpmi_indicator:3;       // range[0, 5]
+    kal_uint32      number_of_layers:1;     // 0: 1 layer, 1: 2 layers
+    kal_uint32      srs_request:3;      // As defined in 7.3.1.1 of TS38.212.
+    kal_uint32      csi_request:6;      // range[0, 63]
+    kal_uint32      ul_cbgti:8;     // UL CBG transmission information bitmap.
+                                    // MSB correspondes to CBG#0.
+    kal_uint32      beta_offset_indicator:2;    // range[0, 3]
+    kal_uint32      dmrs_sequence_initialization:1;     // range[0, 1]
+    kal_uint32      reserved_2:4;
+} dmf_nl1_ul_dci_info_record_v1;
+
+typedef struct {
+    kal_uint32      dl_dci_valid:1;     // 0: Not valid
+                                        // 1: Valid
+    kal_uint32      dci_format:1;       // 0: 1_0
+                                        // 1: 1_1
+    kal_uint32      resource_allocation_type:1;     // Resource allocation type in freq domain.
+                                                    // 0: type 0, 1: type 1
+    kal_uint32      start_rb:9;     // If resource allocation type is 0:
+                                    // RBGbmp LSBs;
+                                    // If resource allocation type is 1:
+                                    // The Start of RB of assigned PDSCH.
+                                    // range[0, 274]
+    kal_uint32      num_rb:9;       // If resource allocation type is 0:
+                                    // RBGbmp MSBs;
+                                    // If resource allocation type is 1:
+                                    // The length of assigned PDSCH RB.
+                                    // range[0, 275]
+    kal_uint32      pdsch_mapping_type:1;       // Time domain PDSCH mapping type.
+                                                // 0: type A, 1: type B
+    kal_uint32      slot_offset_k0:6;       // Slot offset for DCI and the assigned PDSCH.
+                                            // range[0, 32]
+    kal_uint32      sliv_start:4;       // The start symbol index of assigned PDSCH.
+                                        // range[0, 13]
+    kal_uint32      sliv_length:4;      // Symbol length of the assigned PDSCH.
+                                        // range[1, 14]
+    kal_uint32      vrb_to_prb_mapping:1;       // 0: Non-interleaved, 1: Interleaved
+    kal_uint32      ndi_1:1;    // Indicate new transmission or re-transmission
+                                // for TB1.
+    kal_uint32      rv_1:2;     // Redundancy version for TB1. Derive from MCS.
+                                // range[0, 3]
+    kal_uint32      mcs_type_1:2;       // MCS type for TB1.
+                                        // 0: QPSK, 1: 16QAM, 2: 64QAM, 3: 256QAM
+    kal_uint32      ndi_2:1;    // Indicate new transmission or re-transmission
+                                // for TB2. Only valid for DCI format 1_1
+                                // Only valid for DCI format 1_1 and when TB2
+                                // is configured.
+    kal_uint32      rv_2:2;     // Redundancy version for TB2. Derive from MCS.
+                                // range[0, 3]
+                                // Only valid for DCI format 1_1 and when TB2
+                                // is configured.
+    kal_uint32      mcs_type_2:2;       // MCS type for TB2.
+                                        // Only valid for DCI format 1_1 and when TB2
+                                        // is configured.
+                                        // 0: QPSK, 1: 16QAM, 2: 64QAM, 3: 256QAM
+    kal_uint32      harq_id:4;      // range[0, 15]
+    kal_uint32      counter_dai:2;      // As described in 9.1.3 of TS 38.213.
+    kal_uint32      total_dai:2;    // Specific for DCI format 1_1.
+    kal_uint32      pucch_tpc_command:2;    // As defined in 7.2.1 of TS 38.213.
+    kal_uint32      pdsch_harq_ack_codebook:1;      // 0: Semistatic, 1: Dynamic
+    kal_uint32      pucch_resource_indicator:3;     // As defined in 9.2.3 of TS 38.213.
+                                                    // range[0, 7]
+    kal_uint32      pdsch_to_harq_feedback_timing_indicator:3;      // As defined in 9.2.3 of TS 38.213.
+                                                                    // range[0, 7]
+    kal_uint32      bandwidth_part_indicator:2;     // For acitve BWP change.
+                                                    // Specific for DCI format 1_1.
+    kal_uint32      reserved:2;
+    kal_uint32      prb_bundling_size:3;    // 0: bundle size n2, 1: bundle size n4,
+                                            // 2: wideband
+    kal_uint32      rate_matching_indicator:2;      // Specific for DCI format 1_1.
+    kal_uint32      tci:3;      // Transmission configuration indication for
+                                // the TCI states as defined in 5.1.5 of
+                                // TS 38.214.
+                                // Specific for DCI format 1_1.
+    kal_uint32      srs_request:3;      // As defined in 7.3.1.1 of TS 38.212.
+                                        // Specific for DCI format 1_1.
+    kal_uint32      cbgti:8;    // CBG transmission information. As defined in
+                                // 5.1.7 of TS 38.214.
+                                // Specific for DCI format 1_1.
+    kal_uint32      cbgfi:1;    // CBG flushing out information. As defined in
+                                // 5.1.7 of TS 38.214.
+                                // Specific for DCI format 1_1.
+    kal_uint32      num_ack_bit:2;      // Received DL TB num. range[0, 2]
+    kal_uint32      dmrs_sequence_initialization:1;     // Specific for DCI format 1_1.
+    kal_uint32      number_of_harq_process_for_pdsch:3;     // 0: n2, 1: n4, 2: n6, 3: n8, 4: n10,
+                                                            // 5: n12, 6: n16
+    kal_uint32      num_of_layers:2;    // 0: 1 layer, 1: 2 layers, 2: 3 layers,
+                                        // 3: 4 layers
+    kal_uint32      mcs_index_1:5;      // range[0, 31]
+    kal_uint32      mcs_index_2:5;      // range[0, 31]
+    kal_uint32      reserved_1:22;
+} dmf_nl1_dl_dci_info_record_v2;
+
+typedef struct {
+    kal_uint32      sfn:10;     // This is the SFN based on the occurrence
+                                // of this record. range[0, 1023]
+    kal_uint32      subframe:4;     // This is the SF based on the occurrence
+                                    // of this record. range[0, 9]
+    kal_uint32      slot_index:3;       // Slot index within this SF. range[0, 7]
+    kal_uint32      reserved:15;
+    dmf_nl1_ul_dci_info_record_v1       ul_dci_info;
+    dmf_nl1_dl_dci_info_record_v2       dl_dci_info;
+} dmf_nl1_dci_info_record_v2;
+
+typedef struct {
+    kal_uint32      version:8;      // Log record structure ID
+    kal_uint32      phys_cell_id:10;    // range[0, 1007]
+    kal_uint32      carrier_index:3;    // range[0, 7]
+    kal_uint32      number_of_records:5;    // range[0, 20]
+    kal_uint32      reserved:6;
+    dmf_nl1_dci_info_record_v2      dci_info[FLEXIBLE_ARRAY_SIZE];      // N := Number of Records
+} dmf_event_nl1_dci_info_struct;
+
+typedef enum {
+    DMF_MM_NORMAL_LU = 0x00,
+    DMF_MM_PERIODIC_LU = 0x01,
+    DMF_MM_IMSI_ATTACH_LU = 0x02,
+    DMF_MM_NONE_ATTEMPTED
+} dmf_mm_update_type_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint16   lu_attempt_num; //increase when LU is snet out
+    kal_uint16   lu_success_num; //increase when LU success
+    kal_uint16   lu_failure_num; //increase when LU failure    
+    dmf_mm_update_type_enum lu_type;
+    em_mm_lr_status_enum lu_status;
+    em_lr_failure_cause_enum lu_failure_cause;
+}dmf_em_mm_lu_info_ind_struct;
+
+typedef struct
+{
+    kal_uint32 buffer_packet_num;
+    kal_uint32 buffer_avg_time;
+    kal_uint32 buffer_max_time;
+    kal_uint32 sent_packet_num;
+    kal_uint32 num_sdu_acked;
+    kal_uint32 num_sdu_disc_all_type;
+} dmf_event_lte_pdcp_status_struct;
+
+typedef struct
+{
+    kal_uint32 nack_num_by_nw;
+    kal_uint32 nack_num_by_ue;
+    kal_uint32 miss_num_by_ue;
+    kal_uint32 retx_num_by_ue;
+    kal_uint32 TxDataPdu;
+    kal_uint32 RxDataPdu;
+} dmf_event_el2_rlc_status_struct;
+
+typedef struct
+{
+    dmf_info_collect_rat_enum update_rat;
+    kal_bool stop_tx;
+} dmf_event_sig_info_struct;
+
+typedef struct
+{
+    dmf_info_collect_rat_enum rat;
+    kal_uint32 meas_duration_in_ms;
+} dmf_event_idle_meas_time_struct;
+
+typedef struct
+{
+    dmf_info_collect_rat_enum rat;
+    kal_uint8 drx_factor;
+    kal_uint32 drx_cnt;
+} dmf_event_drx_cnt_info_struct;
+
+typedef struct
+{
+    dmf_info_collect_rat_enum latest_oos_rat;
+} dmf_event_oos_user_unaware_recovery_info_struct;
+
+typedef struct
+{
+    em_3g_rrc_state_enum umts_rrc_state; 
+} dmf_event_rrc_state_transition_struct;
+
+typedef struct
+{
+    kal_uint8 rr_state;  /* NULL: 0, INACTIVE: 1, SELECTION: 2
+                          * IDLE: 3, ACCESS: 4. PKT_TRANSFER: 5
+                          * DEDICATED:6, RESELCTION: 7 */    
+} dmf_event_rr_state_transition_struct;
+
+typedef struct
+{
+    dmf_info_collect_rat_enum rat;
+    em_kpi_status_enum status;
+    kal_uint16 proc_id;
+    dmf_info_collect_rat_enum target_rat;
+    kal_uint32 frequency;
+    kal_uint16 pci;
+} dmf_event_xas_kpi_info_struct;
+
+typedef struct
+{
+    em_errc_searching_state_enum state;
+} dmf_event_errc_search_struct;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef struct
+{
+    dmf_info_collect_rat_enum latest_oos_rac_rat;
+} dmf_event_oos_delay_info_struct;
+
+typedef struct
+{
+    kal_char prev_plmn_id[7];
+    kal_char curr_plmn_id[7];
+} dmf_event_plmn_change_struct;
+
+typedef struct
+{
+    kal_bool is_new_rat;
+    dmf_info_collect_rat_enum rat;
+    kal_uint8 sig1;   // sig1 for l4c (note for LTE this is rsrq, different from DMF interpretation)
+    kal_uint8 sig2;
+} dmf_event_l4c_sig_update_struct;
+
+typedef struct
+{
+    dmf_tau_rau_lau_event_enum event;
+    kal_bool is_combined_rau_lau;
+} dmf_event_tau_rau_lau_info_struct;
+
+typedef struct
+{
+    kal_uint8 esm_active_epsb_num;
+} dmf_event_esm_active_epsb_info_struct;
+
+typedef struct {
+    kal_uint32      version:8;      // Log record structure ID
+    kal_uint32      sfn:10;     // This is the SFN based on reporting time of this record.
+                                // Range [0,1023].
+    kal_uint32      subframe:4;     // This is the SF based on reporting time of this record.
+                                    // Range [0,9].
+    kal_uint32      serving_cell_index:3;       // Indicates this metric is reporting on which serving cell
+                                                // (not scell index configured by RRC). range[0, 7],
+                                                // Values: 0:PCC, 1:SCC1, 2:SCC2, 3:SCC3, 4:SCC4, 5:SCC5, 6:SCC6, 7:SCC7
+    kal_uint32      reserved:7;
+    kal_int16       target_pwr;     // range [-50, 23]
+                                    // Target power for the Uplink Tx record for within 100 ms
+    kal_int16       pd_pwr;     // range [-50, 23]
+                                // PD power for the Uplink Tx record for within 100 ms
+} dmf_event_el1_tx_pdpower_report_struct;
+
+typedef struct {
+    kal_uint8       version;    // Log event structure ID
+    kal_uint8       call_status;    // Indicates IMS call status
+                                    // 0:Inactive
+                                    // 1:Active
+                                    // 2:Attmpting
+                                    // 3:Hold
+                                    // 4:Ringing
+    kal_uint8       call_type;      // Bitmask of IMS call type
+                                    // Bit0:Voice
+                                    // Bit1:Video
+                                    // Bit2:Text
+                                    // Bit3:Emergency
+    kal_uint8       rat_information;    // Indicates Rat information
+                                        // 0:LTE
+                                        // 1:NR
+                                        // 2:Wifi
+    kal_uint8       call_direction;     // Indicates Call direction
+                                        // 0:MO
+                                        // 1:MT
+    kal_uint8       call_change_state_cause;    // Indicates Call change state cause
+                                                // 0:notAvailable
+                                                // 1:normalCallClearing
+                                                // 2:callFail
+                                                // 3:callDrop
+    kal_uint16      reserved;
+    kal_int8    sip_call_id[100];       // Indicates the Call-ID in SIP message.
+    kal_int8    reason_text[128];       // Indicates the text of SIP reason header.
+} dmf_ims_call_status_info_struct;
+
+typedef struct {
+	kal_int32 drx_ondurationtimer;
+	kal_int32 drx_inactivitytimer;
+	kal_int32 drx_longcycle;
+	kal_int32 drx_shortcycle;
+} dmf_errc_cdrx_info_struct;
+
+#endif // _DMF_PUBLIC_DEF_H_
diff --git a/mcu/interface/protocol/general/dmf_public_event.h b/mcu/interface/protocol/general/dmf_public_event.h
new file mode 100644
index 0000000..97869b1
--- /dev/null
+++ b/mcu/interface/protocol/general/dmf_public_event.h
@@ -0,0 +1,2446 @@
+/*****************************************************************************
+*  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) 2012
+*
+*  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:
+ * ---------
+ * dmf_public_event.h
+ *
+ * Project:
+ * --------
+ * UMOLYA
+ *
+ * Description:
+ * ------------
+ * DM Framework public event interface
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 09 24 2020 jack-mh.tsai
+ * [MOLY00547250] 5G SA®I?»Ý¨D
+ *
+ * 09 18 2020 jack-mh.tsai
+ * [MOLY00570074] [Cayman][TMUS][Protocol][EchoLocate] Request to implement DataMetrics5gSa class API version 1
+ *
+ * 09 14 2020 jack-mh.tsai
+ * [MOLY00570074] [Cayman][TMUS][Protocol][EchoLocate] Request to implement DataMetrics5gSa class API version 1
+ *
+ * 08 13 2020 titi.wu
+ * [MOLY00524839] 5G RF ®I?»Ý¨D
+ * EWSP0000141637
+ *
+ * 08 13 2020 titi.wu
+ * [MOLY00524839] 5G RF ®I?»Ý¨D
+ * EWSP0000141637
+ *
+ * 07 07 2020 jack-mh.tsai
+ * [MOLY00519978] °Æ¥dLTE?Ácpaging?±±®I?»Ý¨D(SWRD)
+ *
+ * 07 01 2020 jack-mh.tsai
+ * [MOLY00519978] °Æ¥dLTE?Ácpaging?±±®I?»Ý¨D(SWRD)
+ *
+ * 07 06 2020 titi.wu
+ * [MOLY00541505] ¡i5G-A¡j¡iModem·sfeature¡j5G±µ¤J±±¨î???¦ô®I?
+ * .
+ *
+ * 05 22 2020 jack-mh.tsai
+ * [MOLY00511933] 5G¥\¯Ó®I?¤W?Éó¨î
+ *
+ * 04 17 2020 kunkun.shao
+ * [MOLY00511342] Modem¶Ë´óÊý¾ÝÊÕ¼¯:DMF NW KPI SW DOMAIN
+ *
+ * 03 16 2020 jack-mh.tsai
+ * [MOLY00505503] [Gen97] OPPO DMF KPI requirement
+ *
+ * 01 18 2020 kunkun.shao
+ * [MOLY00475736] Modem¶Ë´óÊý¾ÝÊÕ¼¯:internal dmf
+ *
+ * 01 07 2020 jack-mh.tsai
+ * [MOLY00469943] DMF Customization Framework: DMF MISC16 1010(SWRD)
+ *
+ *
+ *
+ ****************************************************************************/
+
+
+#ifndef _DMF_PUBLIC_EVENT_H_
+#define _DMF_PUBLIC_EVENT_H_
+
+#include "sim_exported_enum.h"
+
+
+typedef enum
+{
+    DMF_EVENT_NULL,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ERRC_SRVCC_FAIL
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when SRVCC Fail occurs
+ *
+ * Data Type
+ *  dmf_errc_srvcc_fail_type_enum
+ *
+ * Data Size
+ *  sizeof(dmf_errc_srvcc_fail_type_enum)
+ *
+ * Data Description
+ *  ERRC SRVCC fail cause
+ *
+ *****************************************************************************/
+    DMF_EVENT_ERRC_SRVCC_FAIL,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ERRC_TIMER_EXPIRED
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when ERRC timer exipred
+ *
+ * Data Type
+ *  em_errc_timer_enum
+ *
+ * Data Size
+ *  sizeof(em_errc_timer_enum)
+ *
+ * Data Description
+ *  ERRC Timer type
+ *
+ *****************************************************************************/
+    DMF_EVENT_ERRC_TIMER_EXPIRED, 
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ERRC_REEST
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when ERRC reestablishment occurs
+ *
+ * Data Type
+ *  em_errc_reest_info_cause_enum
+ *
+ * Data Size
+ *  sizeof(em_errc_reest_info_cause_enum)
+ *
+ * Data Description
+ *  ERRC reestablishment cause
+ *
+ *****************************************************************************/
+    DMF_EVENT_ERRC_REEST,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ERRC_STATE_TRANSITION
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when ERRC state transition occurs
+ *
+ * Data Type
+ *  pointer to dmf_event_errc_state_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_errc_state_struct)
+ *
+ * Data Description
+ *  ERRC state and cause
+ *
+ *****************************************************************************/
+    DMF_EVENT_ERRC_STATE_TRANSITION,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_MM_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when MSG_ID_EM_MM_INFO_IND is received 
+ *
+ * Data Type
+ *  kal_uint8
+ *
+ * Data Size
+ *  sizeof(kal_uint8)
+ *
+ * Data Description
+ *  LU reject cause which is defined in the spec. 24.008
+ *  MM INFO
+ *
+ *****************************************************************************/
+    DMF_EVENT_MM_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_MM_LU_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when MSG_ID_EM_MM_LU_INFO_IND is received
+ *
+ * Data Type
+ *  em_lr_failure_cause_enum
+ *
+ * Data Size
+ *  sizeof(em_lr_failure_cause_enum)
+ *
+ * Data Description
+ *  LU Failure cause
+ *  MM LU INFO
+ *
+ *****************************************************************************/
+    DMF_EVENT_MM_LU_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_EMM_ATTACU_TAU_REJECT_OCCURS
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EMM ATTACH/TAU reject occurs
+ *
+ * Data Type
+ *  point to dmf_event_emm_reject_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_emm_reject_info_struct)
+ *
+ * Data Description
+ *  ATTACH/TAU type, EMM cause
+ *
+ *****************************************************************************/
+    DMF_EVENT_EMM_ATTACU_TAU_REJECT_OCCURS,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_EMM_AUTH_REJECT_OCCURS
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EMM authentication is rejected
+ *
+ * Data Type
+ *  void
+ *
+ * Data Size
+ *  0
+ *
+ * Data Description
+ *  N/A
+ *
+ *****************************************************************************/
+    DMF_EVENT_EMM_AUTH_REJECT_OCCURS,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ESM_TIMER_EXPIRY
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when ESM Timer is exipred
+ *
+ * Data Type
+ *  pointer to dmf_event_esm_timer_expiry_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_esm_timer_expiry_struct)
+ *
+ * Data Description
+ *  Expired Timer  and application type
+ *
+ *****************************************************************************/
+    DMF_EVENT_ESM_TIMER_EXPIRY,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ESM_OTA_EVENT
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when ESM OTA message is sent/received
+ *
+ * Data Type
+ *  pointer to dmf_event_esm_ota_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_esm_ota_struct)
+ *
+ * Data Description
+ *  OTA event and application type
+ *
+ *****************************************************************************/
+    DMF_EVENT_ESM_OTA_EVENT,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_SM_OTA_PDP
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when SM PDP CONTEXT REQUEST related OTA message is sent/received.
+ *
+ * Data Type
+ *  pointer to dmf_event_sm_pdp_request_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_sm_pdp_request_struct)
+ *
+ * Data Description
+ *  NSAPI/PDP OTA event/IMS or NON-IMS PDP
+ *
+ *****************************************************************************/
+    DMF_EVENT_SM_OTA_PDP,
+
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_EMM_OTA_ATTACH
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EMM ATTACH related OTA message is sent/received.
+ *
+ * Data Type
+ *  dmf_emm_attach_event_enum
+ *
+ * Data Size
+ *  sizeof(dmf_emm_attach_event_enum)
+ *
+ * Data Description
+ *  ATTACH request/accept/reject/t3340 expiry
+ *
+ *****************************************************************************/
+    DMF_EVENT_EMM_OTA_ATTACH,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_C2K_CALL_FAIL
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when detecting C2K Call fail occurs
+ *
+ * Data Type
+ *  pointer to dmf_event_c2k_call_fail_reason_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_c2k_call_fail_reason_struct)
+ *
+ * Data Description
+ *  Provide c2k call fail reason(em_1xrtt_call_fail_reason_enum) 
+ *  and c2k call fail type(em_c2k_call_type_enum)
+ *
+ *****************************************************************************/
+    DMF_EVENT_C2K_CALL_FAIL,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_MM_CSFB_STATUS
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when MM CSFB STATUS is reported
+ *
+ * Data Type
+ *  em_csfb_status_enum
+ *
+ * Data Size
+ *  sizeof(em_csfb_status_enum)
+ *
+ * Data Description
+ *  CSFB Status
+ *
+ *****************************************************************************/
+    DMF_EVENT_MM_CSFB_STATUS,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_MM_CSFB_CALL_STATUS
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when MM CSFB CALL STATUS is reported by MM for MO/MT Call
+ *
+ * Data Type
+ *  pointer to dmf_event_mm_csfb_call_status_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_mm_csfb_call_status_struct)
+ *
+ * Data Description
+ *  Provide mm_state/mm_casue /csfb_status
+ *
+ *****************************************************************************/
+    DMF_EVENT_MM_CSFB_CALL_STATUS,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_MM_CS_CALL_STATUS
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when MM CS CALL STATUS is reported by MM for MO/MT Call
+ *
+ * Data Type
+ *  pointer to dmf_event_mm_cs_call_status_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_mm_cs_call_status_struct)
+ *
+ * Data Description
+ *  Provide mm_state/mm_casue /cs_status
+ *
+ *****************************************************************************/
+    DMF_EVENT_MM_CS_CALL_STATUS,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_EMM_CSFB_CALL_STATUS
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EMM CSFB STATUS is changed
+ *
+ * Data Type
+ *  pointer to dmf_event_emm_csfb_call_status_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_emm_csfb_call_status_struct)
+ *
+ * Data Description
+ *  Provide MO/MT Call and CSFB status
+ *
+ *****************************************************************************/
+    DMF_EVENT_EMM_CSFB_CALL_STATUS,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_VDM_CALL_STATUS
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when VDM CALL_STATUS is changed
+ *
+ * Data Type
+ *  pointer to dmf_event_vdm_call_status_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_vdm_call_status_struct)
+ *
+ * Data Description
+ *  Provide Dir/RAT and following VDM call domain selection state
+ *     EM_VDM_CALL_STATE_DISCONNECTED,
+ *     EM_VDM_CALL_STATE_CONNECTED,
+ *     EM_VDM_CALL_STATE_MO_EST_ADS_EXE,
+ *     EM_VDM_CALL_STATE_MO_EST_DOMAIN_ATMP,
+ *     EM_VDM_CALL_STATE_MT_EST_APPROVE,
+ *     EM_VDM_CALL_STATE_MT_EST_DOMAIN_ATMP
+ *****************************************************************************/
+    DMF_EVENT_VDM_CALL_STATUS,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_CALL_STATUS
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when ATP updates MSG_ID_ATP_MT_DMF_ECPI_IND or
+ *  when VDM update MSG_ID_EM_VDM_CALL_INFO_IND
+ *
+ * Data Type
+ *  dmf_event_call_status_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_call_status_struct)
+ *
+ * Data Description
+ *  N/A
+ *****************************************************************************/
+    DMF_EVENT_CALL_STATUS,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_2G_RACH_FAIL
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when Rach fail occurs in 2G
+ *
+ * Data Type
+ *  void
+ *
+ * Data Size
+ *  0
+ *
+ * Data Description
+ *  N/A
+ *
+ *****************************************************************************/
+    DMF_EVENT_2G_RACH_FAIL,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_2G_N200_EXP
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when N200 expires occurs in 2G
+ *
+ * Data Type
+ *  void
+ *
+ * Data Size
+ *  0
+ *
+ * Data Description
+ *  N/A
+ *
+ *****************************************************************************/
+    DMF_EVENT_2G_N200_EXP,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_2G_HO_FAIL
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when Handover fails in 2G
+ *
+ * Data Type
+ *  void
+ *
+ * Data Size
+ *  0
+ *
+ * Data Description
+ *  N/A
+ *
+ *****************************************************************************/
+    DMF_EVENT_2G_HO_FAIL,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_2G_CONTROL_MSG
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when Channel Release Control message received in 2G
+ *
+ * Data Type
+ *  kal_uint8
+ *
+ * Data Size
+ *  sizeof(kal_uint8)
+ *
+ * Data Description
+ *  provide the RR cause received in Channel Release
+ *
+ *****************************************************************************/
+    DMF_EVENT_2G_CONTROL_MSG,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_2G_RLF_CALL_TYPE_IND
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when MO/MT RLF happen in 2G
+ *
+ * Data Type
+ *  em_mt_call_type_enum
+ *
+ * Data Size
+ *  sizeof(em_mt_call_type_enum)
+ *
+ * Data Description
+ *  provide GSM call type MO/MT
+ *
+ *****************************************************************************/
+    DMF_EVENT_2G_RLF_CALL_TYPE_IND,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_CC_CALL_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when there is change in call state in 2G/3G
+ *
+ * Data Type
+ *  pointer to dmf_event_cc_call_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_cc_call_info_struct)
+ *
+ * Data Description
+ *  Provide Call ID/Dir/State/Disconnect Cause
+ *
+ *****************************************************************************/
+    DMF_EVENT_CC_CALL_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_3G_RACH_FAIL
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when Rach fail occurs in 3G
+ *
+ * Data Type
+ *  void
+ *
+ * Data Size
+ *  0
+ *
+ * Data Description
+ *  N/A
+ *
+ *****************************************************************************/
+    DMF_EVENT_3G_RACH_FAIL,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_3G3_HO_FAIL
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when Intra (3G to 3G) Handover Fail
+ *
+ * Data Type
+ *  void
+ *
+ * Data Size
+ *  0
+ *
+ * Data Description
+ *  N/A
+ *
+ *****************************************************************************/
+    DMF_EVENT_3G3_HO_FAIL,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_3G2_HO_FAIL
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when Inter (3G to 2G) Handover Fail
+ *
+ * Data Type
+ *  void
+ *
+ * Data Size
+ *  0
+ *
+ * Data Description
+ *  N/A
+ *
+ *****************************************************************************/
+    DMF_EVENT_3G2_HO_FAIL,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_3G_MT_RLF_IND
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when RLF occurs during MT Call in 3G
+ *
+ * Data Type
+ *  void
+ *
+ * Data Size
+ *  0
+ *
+ * Data Description
+ *  N/A
+ *
+ *****************************************************************************/
+    DMF_EVENT_3G_MT_RLF_IND,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_3G_MO_RLF_IND
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when RLF occurs during MO Call in 3G
+ *
+ * Data Type
+ *  void
+ *
+ * Data Size
+ *  0
+ *
+ * Data Description
+ *  N/A
+ *
+ *****************************************************************************/
+    DMF_EVENT_3G_MO_RLF_IND,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_IMS_INFO
+ *
+ * DESCRIPTION
+ *  To be provided
+ *
+ * Data Type
+ *  To be provided
+ *
+ * Data Size
+ *  To be provided
+ *
+ * Data Description
+ *  To be provided
+ *
+ *****************************************************************************/
+    DMF_EVENT_IMS_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_IMS_SIP_INFO
+ *
+ * DESCRIPTION
+ *  This event is boradcasted when UE send/receive a SIP
+ *
+ * Data Type
+ *  To be provided
+ *
+ * Data Size
+ *  To be provided
+ *
+ * Data Description
+ *  To be provided
+ *
+ *****************************************************************************/
+    DMF_EVENT_IMS_SIP_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_IMS_CALL_DROP_INFO
+ *
+ * DESCRIPTION
+ *  This event is boradcasted when IMS Call drop occurs
+ *
+ * Data Type
+ *  To be provided
+ *
+ * Data Size
+ *  To be provided
+ *
+ * Data Description
+ *  To be provided
+ *
+ *****************************************************************************/
+    DMF_EVENT_IMS_CALL_DROP_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_IMS_REG_ABNORMAL_INFO
+ *
+ * DESCRIPTION
+ *  This event is boradcasted when IMS abnormal registration occurs
+ *
+ * Data Type
+ *  To be provided
+ *
+ * Data Size
+ *  To be provided
+ *
+ * Data Description
+ *  To be provided
+ *
+ *****************************************************************************/
+    DMF_EVENT_IMS_REG_ABNORMAL_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_IMS_HO_INFO
+ *
+ * DESCRIPTION
+ *  This event is boradcasted when IMS handover between WIFI and LTE occurs
+ *
+ * Data Type
+ *  To be provided
+ *
+ * Data Size
+ *  To be provided
+ *
+ * Data Description
+ *  To be provided
+ *
+ *****************************************************************************/
+    DMF_EVENT_IMS_HO_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_IMS_PDN_ERROR
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when IMS PDN fail with failed cause
+ *
+ * Data Type
+ *  pointer to dmf_event_ims_pdn_fail_cause_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_ims_pdn_fail_cause_struct)
+ *
+ * Data Description
+ *  Cause of pdn failure
+ *
+ *****************************************************************************/
+    DMF_EVENT_IMS_PDN_ERROR,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_IMS_PDN_FAIL_APN
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when IMS PDN fail with failed APN
+ *
+ * Data Type
+ *  pointer to dmf_event_ims_pdn_fail_apn_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_ims_pdn_fail_apn_struct)
+ *
+ * Data Description
+ *  Apn name for PDN creation
+ *
+ *****************************************************************************/
+    DMF_EVENT_IMS_PDN_FAIL_APN,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_VOLTE_PDCP_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when VoLTE PDCP INFO is changed. 
+ *
+ * Data Type
+ *  dmf_event_volte_pdcp_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_volte_pdcp_info_struct)
+ *
+ * Data Description
+ *  - UL/DL packet drop
+ *  - PDCP discard timer value
+ *****************************************************************************/
+    DMF_EVENT_VOLTE_PDCP_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_PAGING_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when PAGING INFO is changed. 
+ *  Please notice that when receiving paging, 
+ *  we will always report DMF_PAGING_REASON_UNSPECIFIED first.
+ *  If we know the exactly reason, we will report correct reason again.
+ *
+ * Data Type
+ *  dmf_event_paging_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_paging_info_struct)
+ *
+ * Data Description
+ *  - paging reason
+ *  - is data SIM
+ *****************************************************************************/
+    DMF_EVENT_PAGING_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_MCF_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EM  MSG_ID_EM_MCF_OTA_FILE_INFO_IND is received. 
+ *
+ * Data Type
+ *  dmf_event_mcf_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_mcf_info_struct)
+ *
+ * Data Description
+ *  - Trigger type
+ *  - Configure type
+ *  - Result
+ *  - start time (unit: tick)
+ *  - end time (unit: tick)
+ *  - path type
+ *  - file name
+ *****************************************************************************/
+    DMF_EVENT_MCF_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_SBP_DSBP_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EM DSBP_INFO_IND is received. 
+ *
+ * Data Type
+ *  dmf_event_sbp_dsbp_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_sbp_dsbp_info_struct)
+ *
+ * Data Description
+ *  - Trigger type
+ *  - Mode
+ *  - Result
+ *  - SBP ID
+ *  - SIM SBP ID
+ *  - start time (unit: tick)
+ *  - end time (unit: tick)
+ *****************************************************************************/
+    DMF_EVENT_SBP_DSBP_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ERRC_HO_FAIL_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EM MSG_ID_EM_ERRC_HO_FAIL_EVENT_IND is received. 
+ *
+ * Data Type
+ *  dmf_event_errc_ho_fail_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_errc_ho_fail_struct)
+ *
+ * Data Description
+ *  - handover result
+ *****************************************************************************/
+    DMF_EVENT_ERRC_HO_FAIL_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ERRC_BAR_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EM MSG_ID_EM_ERRC_BAR_INFO_IND is received. 
+ *
+ * Data Type
+ *  dmf_event_errc_bar_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_errc_bar_info_struct)
+ *
+ * Data Description
+ *  - bar cause
+ *  - bar time
+ *  - extended wait time
+ *****************************************************************************/
+    DMF_EVENT_ERRC_BAR_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ERRC_REEST_FAIL_TIMER_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EM MSG_ID_EM_ERRC_REEST_FAIL_TIMER_INFO_IND is received. 
+ *
+ * Data Type
+ *  dmf_event_errc_reest_fail_timer_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_errc_reest_fail_timer_info_struct)
+ *
+ * Data Description
+ *  - time type
+ *  - timer length
+ *****************************************************************************/
+    DMF_EVENT_ERRC_REEST_FAIL_TIMER_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ERRC_INTERFERENCE_MOD3_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EM MSG_ID_EM_ERRC_INTRALTE_INTERFERENCE_MOD3_IND is received. 
+ *
+ * Data Type
+ *  dmf_event_errc_interference_mod3_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_errc_interference_mod3_info_struct)
+ *
+ * Data Description
+ *  - serving cell's pci/rsrp/rsrq/freq
+ *  - neighbor cell's pci/rsrp/rsrq/freq (max: 3 neighbor cells)
+ *****************************************************************************/
+    DMF_EVENT_ERRC_INTERFERENCE_MOD3_INFO,
+
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ERRC_RESET_UL_MAX_RLF_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EM MSG_ID_EM_ERRC_REEST_UL_MAX_RLF_INFO_IND is received. 
+ *
+ * Data Type
+ *  no data
+ *
+ * Data Size
+ *  0
+ *
+ * Data Description
+ *  - n/a
+ *****************************************************************************/
+    DMF_EVENT_ERRC_RESET_UL_MAX_RLF_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ERRC_SERVING_CELL_INFO_UPDATE
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EM MSG_ID_EM_ERRC_SERVING_INFO_IND is received. 
+ *
+ * Data Type
+ *  NA
+ *
+ * Data Size
+ *  NA
+ *
+ * Data Description
+ *  NA
+ *****************************************************************************/
+    DMF_EVENT_ERRC_SERVING_CELL_INFO_UPDATE,
+
+/*****************************************************************************
+* EVENT NAME
+* DMF_EVENT_ERRC_CONN_INFO
+*
+* DESCRIPTION
+* This event is broadcasted when EM MSG_ID_EM_ERRC_CONN_INFO_IND is received. 
+*
+* Data Type
+* NA
+*
+* Data Size
+* NA
+*
+* Data Description
+* NA
+*****************************************************************************/
+	DMF_EVENT_ERRC_CONN_INFO,
+
+/*****************************************************************************
+* EVENT NAME
+* DMF_EVENT_ERRC_STATE_IND
+*
+* DESCRIPTION
+* This event is broadcasted when EM MSG_ID_EM_ERRC_STATE_IND is received. 
+*
+* Data Type
+* NA
+*
+* Data Size
+* NA
+*
+* Data Description
+* NA
+*****************************************************************************/
+	DMF_EVENT_ERRC_STATE_IND,
+
+/*****************************************************************************
+* EVENT NAME
+* DMF_EVENT_EL1_PHYSICAL_CONFIGURATION
+*
+* DESCRIPTION
+* This event is broadcasted when PDCP THROUGHPUT event is received. 
+*
+* Data Type
+* dmf_event_el1_physical_configuration_struct
+*
+* Data Size
+* sizeof(dmf_event_el1_physical_configuration_struct)
+*
+* Data Description
+* N/A
+*****************************************************************************/
+	DMF_EVENT_EL1_PHYSICAL_CONFIGURATION,
+	DMF_EVENT_NL1_PHYSICAL_CONFIGURATION,
+	DMF_EVENT_NL1_PHYSICAL_CONFIGURATION_2,
+	DMF_EVENT_NL1_SERVING_CELL_CSIRS_MEASUREMENT,
+	DMF_EVENT_NL1_SERVING_CELL_CSIRS_MEASUREMENT_2,
+
+/*****************************************************************************
+* EVENT NAME
+* DMF_EVENT_ESM_L4C_INFO
+*
+* DESCRIPTION
+* This event is broadcasted when MSG_ID_EM_ESM_L4C_ESM_INFO_IND received
+*
+* Data Type
+* em_esm_l4c_esm_info_ind_struct
+*
+* Data Size
+* sizeof(em_esm_l4c_esm_info_ind_struct)
+*
+* Data Description
+* N/A
+*
+*****************************************************************************/
+	DMF_EVENT_ESM_L4C_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_EPDCP_TIMEOUT_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EM MSG_ID_EM_EPDCP_TMOUT_DISC_IND is received. 
+ *
+ * Data Type
+ *  no data
+ *
+ * Data Size
+ *  0
+ *
+ * Data Description
+ *  - n/a
+ *****************************************************************************/
+    DMF_EVENT_EPDCP_TIMEOUT_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_EPDCP_OOB_DISC_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EM MSG_ID_EM_EPDCP_OOB_DISC_IND is received. 
+ *
+ * Data Type
+ *  no data
+ *
+ * Data Size
+ *  0
+ *
+ * Data Description
+ *  - n/a
+ *****************************************************************************/
+    DMF_EVENT_EPDCP_OOB_DISC_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_EPDCP_DATA_INACTIVE_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EM MSG_ID_EM_EPDCP_DATA_INACTV_IND is received. 
+ *
+ * Data Type
+ *  no data
+ *
+ * Data Size
+ *  0
+ *
+ * Data Description
+ *  - n/a
+ *****************************************************************************/
+    DMF_EVENT_EPDCP_DATA_INACTIVE_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_EMAC_RACH_FINISH_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EM MSG_ID_EM_EMAC_RACH_FINISH_IND is received. 
+ *
+ * Data Type
+ *  no data
+ *
+ * Data Size
+ *  0
+ *
+ * Data Description
+ *  - n/a
+ *****************************************************************************/
+    DMF_EVENT_EMAC_RACH_FINISH_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_MM_LAU_REJ_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EM MSG_ID_EM_REG_REJ_INFO_IND is received. 
+ *
+ * Data Type
+ *  dmf_event_mm_lau_rej_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_mm_lau_rej_info_struct)
+ *
+ * Data Description
+ *  - lu_type;
+ *  - lu_rej_cause;
+ *****************************************************************************/
+    DMF_EVENT_MM_LAU_REJ_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_MM_RAU_REJ_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EM MSG_ID_EM_REG_REJ_INFO_IND is received. 
+ *
+ * Data Type
+ *  dmf_event_mm_rau_rej_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_mm_rau_rej_info_struct)
+ *
+ * Data Description
+ *  - rau_type;
+ *  - rau_rej_cause;
+ *****************************************************************************/
+    DMF_EVENT_MM_RAU_REJ_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_MM_ATTACH_REJ_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EM MSG_ID_EM_REG_REJ_INFO_IND is received. 
+ *
+ * Data Type
+ *  dmf_event_mm_attach_rej_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_mm_attach_rej_info_struct)
+ *
+ * Data Description
+ *  - attach_type;
+ *  - attach_rej_cause;
+ *****************************************************************************/
+    DMF_EVENT_MM_ATTACH_REJ_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_MM_AUTH_FAILURE_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when MM/EMM AUTH reject occurs
+ *
+ * Data Type
+ *  dmf_event_mm_emm_auth_rej_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_mm_emm_auth_rej_info_struct)
+ *
+ * Data Description
+ *  Auth failure type
+ *
+ *****************************************************************************/
+    DMF_EVENT_MM_AUTH_FAILURE_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_DDM_IA_FAIL_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when IA FAIL occurs which is sent through MSG_ID_EM_DDM_IA_FAIL_INFO_IND
+ *
+ * Data Type
+ *  dmf_event_ddm_ia_fail_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_ddm_ia_fail_info_struct)
+ *
+ * Data Description
+ *  cid and error cause
+ *
+ *****************************************************************************/
+    DMF_EVENT_DDM_IA_FAIL_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_DDM_DEACT_FAIL_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when Deactive PDN FAIL occurs which is sent through MSG_ID_EM_DDM_DEACT_FAIL_INFO_IND
+ *
+ * Data Type
+ *  dmf_event_ddm_deact_fail_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_ddm_deact_fail_info_struct)
+ *
+ * Data Description
+ *  cid and error cause
+ *
+ *****************************************************************************/
+    DMF_EVENT_DDM_DEACT_FAIL_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_DDM_ACT_FAIL_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when Deactive PDN FAIL occurs which is sent through MSG_ID_EM_DDM_ACT_FAIL_INFO_IND
+ *
+ * Data Type
+ *  dmf_event_ddm_act_fail_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_ddm_act_fail_info_struct)
+ *
+ * Data Description
+ *  cid and error cause
+ *
+ *****************************************************************************/
+    DMF_EVENT_DDM_ACT_FAIL_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_EL1_HIGH_DL_BLER_OCCUR
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when DL CRC fail ratio > 50% within every 10 seconds.
+ *  Note, this event is reported once every 10 seconds.
+ * 
+ * Data Type
+ *  N/A
+ *
+ * Data Size
+ *  N/A
+ *
+ * Data Description
+ *  N/A
+ *
+ *****************************************************************************/
+    DMF_EVENT_EL1_HIGH_DL_BLER_OCCUR,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ERRC_BW_MONITORING_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when receiving MSG_ID_EM_ERRC_BW_MONITORING_INFO_IND
+ *  
+ * Data Type
+ *  dmf_event_errc_bw_monitoring_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_errc_bw_monitoring_info_struct)
+ *
+ * Data Description
+ *  conn & idle information
+ *
+ *****************************************************************************/
+    DMF_EVENT_ERRC_BW_MONITORING_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_SIM_MONITOR_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when receiving MSG_ID_EM_SIM_MONITOR_EVENT_INFO_IND
+ *  
+ * Data Type
+ *  dmf_event_sim_monitor_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_sim_monitor_info_struct)
+ *
+ * Data Description
+ *  event_type and count
+ *
+ *****************************************************************************/
+    DMF_EVENT_SIM_MONITOR_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_EMM_NASMSG_OCCURS
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when receiving MSG_ID_EM_EMM_NASMSG_INFO_IND,
+ *  
+ * Data Type
+ *  dmf_event_emm_nasmsg_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_emm_nasmsg_info_struct)
+ *
+ * Data Description
+ *  nas message type, reject type, and reject cause
+ *
+ *****************************************************************************/
+    DMF_EVENT_EMM_NASMSG_OCCURS,
+
+/*****************************************************************************
+ * EVENT NAME
+ *	DMF_EVENT_MM_SR_REJECT_INFO
+ *
+ * DESCRIPTION
+ *	This event is broadcasted when receiving MSG_ID_EM_MM_GMM_PROC_REJ_INFO_IND,
+ *       and the type is SR rej
+ *	
+ * Data Type
+ *	dmf_event_mm_sr_rej_info_struct
+ *
+ * Data Size
+ *	sizeof(dmf_event_mm_sr_rej_info_struct)
+ *
+ * Data Description
+ *	rej_type, rej_cause
+ *
+ *****************************************************************************/
+    DMF_EVENT_MM_SR_REJECT_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *	DMF_EVENT_MM_NW_DETACH_INFO
+ *
+ * DESCRIPTION
+ *	This event is broadcasted when receiving MSG_ID_EM_MM_GMM_PROC_REJ_INFO_IND,
+ *       and the type is nw detach
+ *	
+ * Data Type
+ *	dmf_event_mm_nw_detach_info_struct
+ *
+ * Data Size
+ *	sizeof(dmf_event_mm_nw_detach_info_struct)
+ *
+ * Data Description
+ *	detach_type, detach_cause
+ *
+ *****************************************************************************/
+    DMF_EVENT_MM_NW_DETACH_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_XAS_SNIFFER_OCCUR
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when GAS_FDD, GAS_TDD, UAS, or ERRC sniffer occur
+ * 
+ * Data Type
+ *  N/A
+ *
+ * Data Size
+ *  N/A
+ *
+ * Data Description
+ *  N/A
+ *
+ *****************************************************************************/
+    DMF_EVENT_XAS_SNIFFER_OCCUR,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_NWSEL_FULLBAND_SEARCH_OCCUR
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when NWSEL fullband search occur
+ * 
+ * Data Type
+ *  N/A
+ *
+ * Data Size
+ *  N/A
+ *
+ * Data Description
+ *  N/A
+ *
+ *****************************************************************************/
+    DMF_EVENT_NWSEL_FULLBAND_SEARCH_OCCUR,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_L4C_SCREEN_STATE
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when screen state update occur
+ * 
+ * Data Type
+ *  N/A
+ *
+ * Data Size
+ *  N/A
+ *
+ * Data Description
+ *  N/A
+ *
+ *****************************************************************************/
+    DMF_EVENT_L4C_SCREEN_STATE,
+
+/*****************************************************************************
+ * EVENT NAME
+ *	DMF_EVENT_TDD_RRCE_CONN_STATUS
+ *
+ * DESCRIPTION
+ *	This event is broadcasted when receiving MSG_ID_TDD_EM_RRCE_CONN_STATUS_IND,
+ *	
+ * Data Type
+ *	dmf_event_tdd_rrce_conn_status_struct
+ *
+ * Data Size
+ *	sizeof(dmf_event_tdd_rrce_conn_status_struct)
+ *
+ * Data Description
+ *	rrc_conn_status, est_cause, rrc_cause;
+ *
+ *****************************************************************************/
+    DMF_EVENT_TDD_RRCE_CONN_STATUS,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ERRC_CUSTOM_BAR_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted for ERRC LTE custom cell bar
+ * 
+ * Data Type
+ *  N/A
+ *
+ * Data Size
+ *  N/A
+ *
+ * Data Description
+ *  N/A
+ *
+ *****************************************************************************/
+    DMF_EVENT_ERRC_CUSTOM_BAR_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_VOICE_QUALITY_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when receiving MSG_ID_EM_SPEECH_INFO_VOICE_QUALITY_EVENT_IND 
+ * 
+ * Data Type
+ *  N/A
+ *
+ * Data Size
+ *  N/A
+ *
+ * Data Description
+ *  N/A
+ *
+ *****************************************************************************/
+    DMF_EVENT_VOICE_QUALITY_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ERRC_TRIG_REL_RESULT_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted for ERRC trigger rel result
+ * 
+ * Data Type
+ *  N/A
+ *
+ * Data Size
+ *  N/A
+ *
+ * Data Description
+ *  N/A
+ *
+ *****************************************************************************/
+    DMF_EVENT_ERRC_TRIG_REL_RESULT_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ERRC_DATA_INACT_TIMER_EXP_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted for ERRC data inactivity timer expiry
+ * 
+ * Data Type
+ *  N/A
+ *
+ * Data Size
+ *  N/A
+ *
+ * Data Description
+ *  N/A
+ *
+ *****************************************************************************/
+    DMF_EVENT_ERRC_DATA_INACT_TIMER_EXP_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_MM_EMM_CAUSE_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EMM_CAUSE_INFO or MM_CAUSE_INFO is received. 
+ *
+ * Data Type
+ *  dmf_event_mm_emm_cause_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_mm_emm_cause_info_struct)
+ *
+ * Data Description
+ *  N/A
+ *****************************************************************************/
+    DMF_EVENT_MM_EMM_CAUSE_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_VOLTE_QUALITY_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when one full set of VoLTE quality info is collected via
+ *  - EM_EL1_STATUS_IND (rsrp, rsrq, sinr)
+ *  - MSG_ID_EM_LTECSR_RTP_PERIODIC_RPT_CUSTOMER_IND  (jitter, rx drop)
+ *  - MSG_ID_EM_EL2_OV_STATUS_IND (tx drop)
+ * Data Type
+ *  dmf_event_volte_quality_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_volte_quality_info_struct)
+ *
+ * Data Description
+ *  N/A
+ *****************************************************************************/
+    DMF_EVENT_VOLTE_QUALITY_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ERRC_A2_CONFIG_EVENT
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when receiving MSG_ID_EM_ERRC_MOB_INTRARAT_MEAS_CONFIG_INFO_IND
+ * Data Type
+ *  dmf_event_errc_a2_config_event_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_errc_a2_config_event_struct)
+ *
+ * Data Description
+ *  N/A
+ *****************************************************************************/
+    DMF_EVENT_ERRC_A2_CONFIG_EVENT,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ERRC_B2_CONFIG_EVENT
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when receiving MSG_ID_EM_ERRC_MOB_B2_MEAS_CONFIG_INFO_IND
+ * Data Type
+ *  dmf_event_errc_b2_config_event_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_errc_b2_config_event_struct)
+ *
+ * Data Description
+ *  N/A
+ *****************************************************************************/
+    DMF_EVENT_ERRC_B2_CONFIG_EVENT,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_GMSS_HVOLTE_INFO_EVENT
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when receiving MSG_ID_EM_GMSS_HVOLTE_INFO_IND
+ * Data Type
+ *  dmf_event_gmss_hvolte_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_gmss_hvolte_info_struct)
+ *
+ * Data Description
+ *  N/A
+ *****************************************************************************/
+    DMF_EVENT_GMSS_HVOLTE_INFO_EVENT,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_RADIO_LINK_FAILURE_CAUSE_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when ERRC RADIO LINK FAILURE is received. 
+ *
+ * Data Type
+ *  dmf_event_radio_link_failure_event_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_radio_link_failure_event_struct)
+ *
+ * Data Description
+ *  N/A
+ *****************************************************************************/
+    DMF_COLLECT_ERRC_MEAS_RESULT_INFO,
+
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_RADIO_LINK_FAILURE_CAUSE_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when ERRC RADIO LINK FAILURE is received. 
+ *
+ * Data Type
+ *  dmf_event_radio_link_failure_event_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_radio_link_failure_event_struct)
+ *
+ * Data Description
+ *  N/A
+ *****************************************************************************/
+    DMF_COLLECT_ERRC_MEAS_REPORT_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_RADIO_LINK_FAILURE_CAUSE_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when ERRC RADIO LINK FAILURE is received. 
+ *
+ * Data Type
+ *  dmf_event_radio_link_failure_event_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_radio_link_failure_event_struct)
+ *
+ * Data Description
+ *  N/A
+ *****************************************************************************/
+    DMF_COLLECT_ERRC_SERVING_CELL_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_RADIO_LINK_FAILURE_CAUSE_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when ERRC RADIO LINK FAILURE is received. 
+ *
+ * Data Type
+ *  dmf_event_radio_link_failure_event_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_radio_link_failure_event_struct)
+ *
+ * Data Description
+ *  N/A
+ *****************************************************************************/
+    DMF_EVENT_RADIO_LINK_FAILURE_CAUSE_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_SCG_FAILURE_CAUSE_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when SCG FAILURE is received. 
+ *
+ * Data Type
+ *  dmf_event_scg_failure_event_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_scg_failure_event_struct)
+ *
+ * Data Description
+ *  N/A
+ *****************************************************************************/
+    DMF_EVENT_SCG_FAILURE_CAUSE_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_SECONDARY_CELL_HANDOVER_CAUSE_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when SCG FAILURE is received. 
+ *
+ * Data Type
+ *  dmf_event_second_cell_addition_event_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_second_cell_addition_event_struct)
+ *
+ * Data Description
+ *  N/A
+ *****************************************************************************/
+    DMF_EVENT_SCG_RECONFIGURATION_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ENDC_MODE_KPI_INFO_ERRC_STATE_CHANGE
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when ERRC STATE CHANGE is received. 
+ *
+ * Data Type
+ *  dmf_errc_state_change_info_v1_struct
+ *
+ * Data Size
+ *  sizeof(dmf_errc_state_change_info_v1_struct)
+ *
+ * Data Description
+ *  N/A
+ *****************************************************************************/
+    DMF_EVENT_ERRC_STATE_CHANGE_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ENDC_MODE_KPI_INFO_NRRC_STATE_CHANGE
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when NRRC STATE CHANGE is received. 
+ *
+ * Data Type
+ *  dmf_nrrc_state_change_info_v1_struct
+ *
+ * Data Size
+ *  sizeof(dmf_nrrc_state_change_info_v1_struct)
+ *
+ * Data Description
+ *  N/A
+ *****************************************************************************/
+    DMF_EVENT_NRRC_STATE_CHANGE_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ENDC_MODE_KPI_INFO_NL2_RLC_TPUT_UL
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when NL2 RLC TPUT UL is received. 
+ *
+ * Data Type
+ *  dmf_nl2_rlc_throughput_ul_v1_struct
+ *
+ * Data Size
+ *  sizeof(dmf_nl2_rlc_throughput_ul_v1_struct)
+ *
+ * Data Description
+ *  N/A
+ *****************************************************************************/
+    DMF_EVENT_NL2_RLC_TPUT_UL,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_ENDC_MODE_KPI_INFO_NL2_PDCP_CONFIG
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when NL2 PDCP CONFIG is received. 
+ *
+ * Data Type
+ *  dmf_nl2_pdcp_configuration_event_v1_struct
+ *
+ * Data Size
+ *  sizeof(dmf_nl2_pdcp_configuration_event_v1_struct)
+ *
+ * Data Description
+ *  N/A
+ *****************************************************************************/
+    DMF_EVENT_NL2_PDCP_CONFIG,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_OTHER_5G_KPI_INFO_ERRC_CA_CONFIG
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when ERRC CA CONFIG is received. 
+ *
+ * Data Type
+ *  dmf_errc_ca_config_info_v1_struct
+ *
+ * Data Size
+ *  sizeof(dmf_errc_ca_config_info_v1_struct)
+ *
+ * Data Description
+ *  N/A
+ *****************************************************************************/
+    DMF_EVENT_ERRC_CA_CONFIG_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_OTHER_5G_KPI_INFO_NRRC_SERVING_CELL
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when NRRC SERVING CELL is received. 
+ *
+ * Data Type
+ *  dmf_nrrc_serving_cell_info_v1_struct
+ *
+ * Data Size
+ *  sizeof(dmf_nrrc_serving_cell_info_v1_struct)
+ *
+ * Data Description
+ *  N/A
+ *****************************************************************************/
+    DMF_EVENT_NRRC_SERVING_CELL_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_PDCP_THROUGHPUT_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when PDCP THROUGHPUT event is received. 
+ *
+ * Data Type
+ *  dmf_event_pdcp_throughput_event_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_pdcp_throughput_event_struct)
+ *
+ * Data Description
+ *  N/A
+ *****************************************************************************/
+    DMF_EVENT_PDCP_THROUGHPUT_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *   DMF_EVENT_OTA_FAIL_REASON
+ *
+ * DESCRIPTION
+ *   This event is broadcasted when OTA FAIL event is received. 
+ *
+ * Data Type
+ *   dmf_em_errc_reest_by_l2_ind_struct
+ *
+ * Data Size
+ *   sizeof(dmf_em_errc_reest_by_l2_ind_struct)
+ *
+ * Data Description
+ *   N/A
+ *****************************************************************************/
+    DMF_EVENT_OTA_FAIL_REASON,
+
+/*****************************************************************************
+ * EVENT NAME
+ *   DMF_EVENT_NL1_FBRX
+ *
+ * DESCRIPTION
+ *   This event is broadcasted when NL1 FBRx event is received. 
+ *
+ * Data Type
+ *   dmf_event_nl1_fbrx_v1_struct
+ *
+ * Data Sizes
+ *   sizeof(dmf_event_nl1_fbrx_v1_struct)
+ *
+ * Data Description
+ *   N/A
+ *****************************************************************************/
+    DMF_EVENT_NL1_FBRX,
+ /*****************************************************************************
+ *  EVENT NAME
+ *  DMF_EVENT_CMCC_EPS_ATTACH_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EMM ATTACH related event occurs for ATTACH
+ *
+ * Data Type
+ *  dmf_event_cmcc_eps_attach_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_cmcc_eps_attach_struct)
+ *
+ * Data Description
+ *  attach_event - refer to the enum dmf_cmcc_eps_attach_event_enum
+ *  attach_reject_cause - attch reject cause
+ *****************************************************************************/
+     DMF_EVENT_CMCC_EPS_ATTACH_INFO,
+ /*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_CMCC_ESM_ACT_DEFAULT_BEARER_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when Default EPS Bearer Activation related event occurs
+ *
+ * Data Type
+ *  dmf_event_cmcc_eps_bearer_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_cmcc_eps_bearer_struct)
+ *
+ * Data Description
+ *  esm_eps_bearer_event - refer to the enum dmf_cmcc_esm_eps_bearer_event_enum
+ *  ebi -EPS Bearer ID
+ *  reject_cause - esm reject cause
+ *
+ *****************************************************************************/
+    DMF_EVENT_CMCC_ESM_ACT_DEFAULT_BEARER_INFO,
+ /*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_CMCC_ERRC_SUCC_RATE_KPI_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when Srvcc Handover Success Happens
+ *
+ * Data Type
+ *  dmf_event_cmcc_esrvcc_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_cmcc_esrvcc_struct) 
+ *
+ * Data Description
+ *  proc_id - refer to the enum em_errc_success_rate_kpi_proc_enum
+ *  status -refer to the enum em_kpi_status_enum
+ *  srvcc_ho_flag - used to remember the srvcc progress
+ *
+ *****************************************************************************/
+    DMF_EVENT_CMCC_ERRC_SUCC_RATE_KPI_INFO,
+ /*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_CMCC_ERRC_MFROM_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when Srvcc Handover Req received
+ *
+ * Data Type
+ *  dmf_event_cmcc_errc_mfrom_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_cmcc_errc_mfrom_struct) 
+ *
+ * Data Description
+ *  ir_ho_type - refer to the enum em_ho_from_lte_type_enum
+ *  srvcc_ho_flag - used to remember the srvcc progress
+ *
+ *****************************************************************************/
+    DMF_EVENT_CMCC_ERRC_MFROM_INFO,
+ /*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_CMCC_ERRC_SRVCC_FAIL_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when Srvcc Fail Happens
+ *
+ * Data Type
+ *  dmf_event_cmcc_errc_srvcc_fail_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_cmcc_errc_srvcc_fail_struct) 
+ *
+ * Data Description
+ *  srvcc_fail_cause - used to remember the srvcc fail cause
+ *
+ *****************************************************************************/
+    DMF_EVENT_CMCC_ERRC_SRVCC_FAIL_INFO,
+ /*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_CMCC_IMS_REG_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when IMS registration related event occurs
+ *
+ * Data Type
+ *  dmf_event_cmcc_imc_ims_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_cmcc_imc_ims_struct) 
+ *
+ * Data Description
+ *  sip_msg_type - request or response
+ *  sip_method -invite or other msgs
+ *  sip_resp_code -sip response code 
+ *  event_id -ims related event
+ *
+ *****************************************************************************/
+    DMF_EVENT_CMCC_IMS_REG_INFO,
+ /*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_CMCC_VOLTE_CALL_DROP_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when volte call drop related event occurs
+ *
+ * Data Type
+ *  dmf_event_cmcc_imc_ims_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_cmcc_imc_ims_struct) 
+ *
+ * Data Description
+ *  sip_msg_type - request or response
+ *  sip_method -invite or other msgs
+ *  sip_resp_code -sip response code 
+ *  event_id -ims related event
+ *
+ *****************************************************************************/
+    DMF_EVENT_CMCC_VOLTE_CALL_DROP_INFO,
+ /*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_CMCC_MO_VOLTE_CALL_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when mo volte call related event occurs
+ *
+ * Data Type
+ *  dmf_event_cmcc_imc_ims_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_cmcc_imc_ims_struct) 
+ *
+ * Data Description
+ *  sip_msg_type - request or response
+ *  sip_method -invite or other msgs
+ *  sip_resp_code -sip response code 
+ *  event_id -ims related event
+ *
+ *****************************************************************************/
+    DMF_EVENT_CMCC_MO_VOLTE_CALL_INFO,
+ /*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_CMCC_MT_VOLTE_CALL_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when mt volte call related event occurs
+ *
+ * Data Type
+ *  dmf_event_cmcc_imc_ims_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_cmcc_imc_ims_struct) 
+ *
+ * Data Description
+ *  sip_msg_type - request or response
+ *  sip_method -invite or other msgs
+ *  sip_resp_code -sip response code 
+ *  event_id -ims related event
+ *
+ *****************************************************************************/
+    DMF_EVENT_CMCC_MT_VOLTE_CALL_INFO,
+ /*****************************************************************************
+ *  EVENT NAME
+ *  DMF_EVENT_CMCC_TAU_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when EMM TAU related event occurs for TAU
+ *
+ * Data Type
+ *  dmf_event_cmcc_tau_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_cmcc_tau_struct)
+ *
+ * Data Description
+ *  tau_event - refer to the enum dmf_cmcc_tau_event_enum
+ *  tau_reject_cause - tau reject cause
+ *****************************************************************************/
+    DMF_EVENT_CMCC_TAU_INFO,
+ /*****************************************************************************
+ *  EVENT NAME
+ *  DMF_EVENT_CMCC_MO_CSFB_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when MO CSFB related event occurs 
+ *
+ * Data Type
+ *  dmf_event_cmcc_csfb_call_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_cmcc_csfb_call_info_struct)
+ *
+ * Data Description
+ *  call_event - refer to the enum dmf_cmcc_csfb_call_event_enum
+ *  fail_cause - csfb call fail cause
+ *****************************************************************************/
+    DMF_EVENT_CMCC_MO_CSFB_INFO,
+ /*****************************************************************************
+ *  EVENT NAME
+ *  DMF_EVENT_CMCC_MT_CSFB_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when MT CSFB related event occurs 
+ *
+ * Data Type
+ *  dmf_event_cmcc_csfb_call_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_cmcc_csfb_call_info_struct)
+ *
+ * Data Description
+ *  call_event - refer to the enum dmf_cmcc_csfb_call_event_enum
+ *  fail_cause - csfb call fail cause
+ *****************************************************************************/
+    DMF_EVENT_CMCC_MT_CSFB_INFO,
+ /*****************************************************************************
+ *  EVENT NAME
+ *  DMF_EVENT_CMCC_MO_SMS_OVER_SGS_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when MO_SMS_OVER_SGS related event occurs 
+ *
+ * Data Type
+ *  dmf_event_cmcc_sms_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_cmcc_sms_info_struct)
+ *
+ * Data Description
+ *  sms_event - refer to the enum dmf_cmcc_sms_event_enum
+ *  fail_cause - sms fail cause
+ *****************************************************************************/
+    DMF_EVENT_CMCC_MO_SMS_OVER_SGS_INFO,
+ /*****************************************************************************
+ *  EVENT NAME
+ *  DMF_EVENT_CMCC_MT_SMS_OVER_SGS_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when MT_SMS_OVER_SGS related event occurs 
+ *
+ * Data Type
+ *  dmf_event_cmcc_sms_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_cmcc_sms_info_struct)
+ *
+ * Data Description
+ *  sms_event - refer to the enum dmf_cmcc_sms_event_enum
+ *  fail_cause - sms fail cause
+ *****************************************************************************/
+    DMF_EVENT_CMCC_MT_SMS_OVER_SGS_INFO,
+ /*****************************************************************************
+ *  EVENT NAME
+ *  DMF_EVENT_CMCC_MO_SMS_OVER_IMS_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when MO_SMS_OVER_IMS related event occurs 
+ *
+ * Data Type
+ *  dmf_event_cmcc_sms_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_cmcc_sms_info_struct)
+ *
+ * Data Description
+ *  sms_event - refer to the enum dmf_cmcc_sms_event_enum
+ *  fail_cause - sms fail cause
+ *****************************************************************************/
+    DMF_EVENT_CMCC_MO_SMS_OVER_IMS_INFO,
+ /*****************************************************************************
+ *  EVENT NAME
+ *  DMF_EVENT_CMCC_MT_SMS_OVER_IMS_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when MT_SMS_OVER_IMS related event occurs 
+ *
+ * Data Type
+ *  dmf_event_cmcc_sms_info_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_cmcc_sms_info_struct)
+ *
+ * Data Description
+ *  sms_event - refer to the enum dmf_cmcc_sms_event_enum
+ *  fail_cause - sms fail cause
+ *****************************************************************************/
+    DMF_EVENT_CMCC_MT_SMS_OVER_IMS_INFO,
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_EL1_STATUS_EVENT
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when MSG_ID_EM_EL1_STATUS_IND received
+ *
+ * Data Type
+ *  dmf_event_el1_status_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_el1_status_struct) 
+ *
+ * Data Description
+ *
+ *****************************************************************************/
+    DMF_EVENT_EL1_STATUS_EVENT,
+ /*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_MAC_DRX_STATUS_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when ICD_NL2_MAC_DRX_STATUS_EVENT received
+ *
+ * Data Type
+ *  dmf_event_mac_drx_status_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_mac_drx_status_struct) 
+ *
+ * Data Description
+ *
+ *****************************************************************************/
+    DMF_EVENT_MAC_DRX_STATUS_INFO,
+ /*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_EL1_PUSCH_PWR_CTRL
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when ICD_EL1_PUSCH_POWER_CONTROL received
+ *
+ * Data Type
+ *  dmf_event_el1_pusch_power_control_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_el1_pusch_power_control_struct) 
+ *
+ * Data Description
+ *
+ *****************************************************************************/
+    DMF_EVENT_EL1_PUSCH_PWR_CTRL,
+    DMF_EVENT_NL1_SERVING_CELL_RSSI,
+	DMF_EVENT_NL1_SERVING_CELL_MEASUREMENT,
+	DMF_EVENT_NL1_NEIGHBOR_CELL_MEASUREMENT,
+	DMF_EVENT_EL1_PUSCH_REPORT,
+	DMF_EVENT_NL1_PUSCH_REPORT,
+	DMF_EVENT_NL1_SYNC_SSB_SNR,
+	DMF_EVENT_NL1_RACH_INFORMATION,
+	DMF_EVENT_NL1_SRS_TX_INFORMATION,
+	DMF_EVENT_NL1_PUCCH_POWER_CONTROL,
+	DMF_EVENT_NL1_PUSCH_POWER_CONTROL,
+	DMF_EVENT_NL1_DCI_INFO,
+	DMF_EVENT_NL1_DCI_STATS,
+	DMF_EVENT_NL1_CSI_REPORT,
+	DMF_EVENT_NL1_UL_THROUGHPUT,
+  	DMF_EVENT_NL1_MIMO_PDSCH_THROUGHPUT,
+  	DMF_EVENT_NL2_RLC_DL_STATS,
+  	DMF_EVENT_NL2_RLC_UL_STATS,
+  	DMF_EVENT_NL2_PDCP_DL_STATS,
+  	DMF_EVENT_NL2_PDCP_UL_STATS,
+  	DMF_EVENT_NL2_MAC_CELL_GROUP_CONFIG,
+	DMF_EVENT_ERRC_IR_NR_MEAS_RESULT_INFO,
+  	DMF_EVENT_VGNAS_MM_STATE_VALUE,              
+
+ /*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_3G_FDD_CSCE_SERV_CELL_S_STATUS
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when MSG_ID_FDD_EM_CSCE_SERV_CELL_S_STATUS_IND received
+ *
+ * Data Type
+ *  dmf_event_mac_drx_status_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_mac_drx_status_struct) 
+ *
+ * Data Description
+ *
+ *****************************************************************************/
+    DMF_EVENT_3G_FDD_CSCE_SERV_CELL_S_STATUS,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_3G_FDD_MEME_DCH_UMTS_CELL_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when MSG_ID_FDD_EM_MEME_DCH_UMTS_CELL_INFO_IND received
+ *
+ * Data Type
+ *  dmf_event_mac_drx_status_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_mac_drx_status_struct) 
+ *
+ * Data Description
+ *
+ *****************************************************************************/
+    DMF_EVENT_3G_FDD_MEME_DCH_UMTS_CELL_INFO,
+
+/*****************************************************************************
+ * EVENT NAME
+ *  DMF_EVENT_C2K_L4_RTT_RADIO_INFO
+ *
+ * DESCRIPTION
+ *  This event is broadcasted when MSG_ID_EM_C2K_L4_RTT_RADIO_INFO_IND received
+ *
+ * Data Type
+ *  dmf_event_mac_drx_status_struct
+ *
+ * Data Size
+ *  sizeof(dmf_event_mac_drx_status_struct) 
+ *
+ * Data Description
+ *
+ *****************************************************************************/
+    DMF_EVENT_C2K_L4_RTT_RADIO_INFO,
+    DMF_EVENT_GSM_UTAS_INFO,
+    DMF_EVENT_C2K_EVDO_SRV_INFO,
+    DMF_EVENT_GMM_INFO,
+    DMF_EVENT_ENAS_EMM_OTA_EVENT,
+    DMF_EVENT_RAC_INFO,
+    DMF_EVENT_RAC_REG_STATE_INFO,
+    DMF_EVENT_CM_SYS_SRV_INFO,
+    DMF_EVENT_RA_FAIL_OCCUR,
+    DMF_EVENT_IMS_380_DROP_INFO,
+    DMF_EVENT_EMERG_IMS_CALL_ANONYMOUS,
+    DMF_EVENT_ERRC_SRVCC_OCCUR,
+    DMF_EVENT_MM_LU_REJECT_OCCURS,
+    DMF_EVENT_MM_LU_FAILURE_OCCURS,
+    DMF_EVENT_ESM_ACTOVE_EPSB_INFO,
+    DMF_EVENT_TCM_PDP_INFO,
+    //DMF_EVENT_LTE_UL_PDCP_ABNORMAL_INFO,
+    DMF_EVENT_OOS_DELAY_INFO,
+    DMF_EVENT_OOS_USER_UNAWARE_RECOVERY_INFO,
+    DMF_EVENT_PLMN_CHANGE,
+    DMF_EVENT_TAU_RAU_LAU_INFO,
+    DMF_EVENT_EL2_RLC_STATUS,
+    DMF_EVENT_LTE_PDCP_STATUS,
+    DMF_EVENT_RF_STATE_CHANGE,
+    DMF_EVENT_SIGN_INFO,
+    DMF_EVENT_XAS_KPI_INFO,
+    DMF_EVENT_RR_STATE_TRANSITION,
+    DMF_EVENT_RRC_STATE_TRANSITION,
+    DMF_EVENT_l4C_SIG_UPDATE,
+    DMF_EVENT_ERRC_SEARCH,
+    DMF_EVENT_RRC_SEARCH,
+    DMF_EVENT_RR_SEARCH,
+    DMF_EVENT_IDLE_MEAS_TIME,
+    DMF_EVENT_LTE_NO_SLEEP,
+    DMF_EVENT_DRX_CNT_INFO,
+    DMF_EVENT_ENAS_EMM_CONTEXT_INFO,
+    DMF_EVENT_EL1_SRVING_CELL_MEAS,
+    DMF_EVENT_NL1_TPC_REPORT,
+    DMF_EVENT_EL1_TX_PDPOWER_REPORT,
+    DMF_EVENT_UL1_RFPD_AVG_INFO,
+    DMF_EVENT_LTECSR_RECV_STAT,
+    DMF_EVENT_VGSM_OTA_EVENT,
+    DMF_EVENT_CC_CALL_MT_SETUP_INFO,
+    DMF_EVENT_MM_EMM_PAGING_INFO,
+    DMF_EVENT_C2K_CS_CALL_SETUP_INFO,
+    DMF_EVENT_C2K_CS_PAGING_INFO,
+    DMF_EVENT_IMS_CALL_STATUS_EVENT,
+    DMF_EVENT_ERRC_PAGING_INFO,
+    DMF_EVENT_C2K_STATE_TRANSITION,
+    DMF_EVENT_EMM_CALL_EVENT,
+    DMF_EVENT_EMM_REG_EVENT,
+    DMF_EVENT_VDM_SSAC_BAR_EVENT,
+    DMF_EVENT_ERRC_AC_BAR_EVENT,
+	DMF_EVENT_XAS_IDLE_OOS_EVENT,
+	DMF_EVENT_ERRC_CDRX_INFO,
+	DMF_EVENT_NRRC_RLF_PARAM_CFG_EVENT,
+	DMF_EVENT_ERRC_MEAS_CONFIG_EVENT,
+    DMF_EVENT_NL2_MAC_RACH_ATMP_COMPLETE,
+    DMF_EVENT_NRRC_RLF,
+    DMF_EVENT_NRRC_CONN_REEST,
+    DMF_EVENT_NRRC_SEARCHING_INFO,
+    DMF_EVENT_VGNAS_MM_OTA,
+    DMF_EVENT_VGNAS_MM_FAIL_CAUSE,
+    DMF_EVENT_UL1_HSPA_INFO,
+    DMF_EVENT_GL1_RXD_INFO,
+    DMF_EVENT_MAX
+} dmf_event_id_enum;
+
+typedef struct
+{
+    dmf_event_id_enum event_id;
+    protocol_id_enum ps_id;
+    void *data;
+    kal_uint32 size;
+} dmf_event_struct;
+
+#endif // _DMF_PUBLIC_EVENT_H_
diff --git a/mcu/interface/protocol/general/gas_b3_general_struct.h b/mcu/interface/protocol/general/gas_b3_general_struct.h
new file mode 100644
index 0000000..8bd5e43
--- /dev/null
+++ b/mcu/interface/protocol/general/gas_b3_general_struct.h
@@ -0,0 +1,98 @@
+/*****************************************************************************
+*  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).
+*
+*****************************************************************************/
+/*******************************************************************************
+ *  Modification Notice:
+ *  --------------------------
+ *  This software is modified by MediaTek Inc. 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) 2001
+ *
+ *******************************************************************************/
+/*****************************************************************************
+ *
+ * Filename:
+ * ---------
+ *   gas_b3_general_struct.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef _GAS_B3_GENERAL_STRUCT_H
+#define _GAS_B3_GENERAL_STRUCT_H
+
+#include "kal_general_types.h"
+
+#define MULTIPLE_B3_INFO_NUM        (8)
+
+typedef struct
+{
+    kal_bool    is_working_freq; // TRUE: working freq, FALSE: BCCH/NBCCH freq
+    kal_uint8   index; // 0: 1850-60, 1: 1860-70, 2: 1870-75, 3: 1875-1880
+    kal_uint16  arfcn; // GSM freq
+    kal_int16   rssi;  // GSM rssi
+    kal_bool    is_neighbor;
+} gl1_b3_info_struct;
+
+
+#endif
+
+
diff --git a/mcu/interface/protocol/general/gas_eas_inter_core_enum.h b/mcu/interface/protocol/general/gas_eas_inter_core_enum.h
new file mode 100644
index 0000000..09fbc80
--- /dev/null
+++ b/mcu/interface/protocol/general/gas_eas_inter_core_enum.h
@@ -0,0 +1,86 @@
+/*****************************************************************************
+*  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) 2014
+*
+*  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:
+ * ---------
+ *   gas_eas_inter_core_enum.h
+ *
+ * Project:
+ * --------
+ *   UMOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * 
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef _GAS_EAS_INTER_CORE_ENUM_H
+#define _GAS_EAS_INTER_CORE_ENUM_H
+
+/* MACROS ******************************************************************/
+typedef enum {
+    IR_ERRC_INVALID,
+    IR_ERRC_IDLE,
+    IR_ERRC_CONNECTED_NON_DRX,
+    IR_ERRC_CONNECTED_DRX
+}te_ir_errc_state;
+
+typedef enum{
+    BSIC_ENH_STATUS_STOP,
+    BSIC_ENH_STATUS_START
+}te_ir_bsic_enh_status;
+
+#endif /* _GAS_EAS_INTER_CORE_ENUM_H */
diff --git a/mcu/interface/protocol/general/gas_eas_inter_core_struct.h b/mcu/interface/protocol/general/gas_eas_inter_core_struct.h
new file mode 100644
index 0000000..cb68787
--- /dev/null
+++ b/mcu/interface/protocol/general/gas_eas_inter_core_struct.h
@@ -0,0 +1,154 @@
+/*****************************************************************************
+*  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) 2014
+*
+*  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:
+ * ---------
+ *   gas_eas_inter_core_struct.h
+ *
+ * Project:
+ * --------
+ *   UMOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef _GAS_EAS_INTER_CORE_STRUCT_H
+#define _GAS_EAS_INTER_CORE_STRUCT_H
+
+#include "as_inter_core_struct.h"
+#include "gas_eas_inter_core_enum.h"
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   ts_ir_gsm_cell_bsic_info gsm_cell_bsic_info;
+   /* This value is for SRVCC  enhancement */
+   /* The RSSI is boosted by GL1 after a successful BSIC decode during a SRVCC process */
+   /* Unit: qdbm */
+   kal_int16   power_boosted;  
+#ifdef UNIT_TEST
+   kal_uint32 bsic_ind_ms_diff;
+#endif /* UNIT_TEST */
+} eas_gas_gcell_bsic_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_uint8 list_ref;
+   ts_ir_gsm_cell_rssi_info gsm_cell_rssi_info;
+   kal_bool is_long_period;
+#ifdef UNIT_TEST
+   kal_uint32 meas_ind_ms_diff;
+#endif /* UNIT_TEST */   
+} eas_gas_gcell_meas_ind_struct;
+
+/* LTE to GAS IR Measurement */
+typedef struct {
+  LOCAL_PARA_HDR
+  kal_uint8 list_ref;
+  te_ir_errc_state errc_state;
+  kal_int16 prio_meas_period;
+  ts_ir_gsm_cell_list gsm_cell_list;
+} eas_gas_config_gcell_prio_meas_req_struct;
+
+typedef struct {
+  LOCAL_PARA_HDR
+   te_ir_bsic_enh_status  bsic_enh_status;
+}eas_gas_bsic_enh_ind_struct;
+
+typedef struct {
+  LOCAL_PARA_HDR
+  kal_uint8 list_ref;
+  te_ir_errc_state errc_state;
+  ts_ir_gsm_cell_list gsm_cell_list;
+  /* This flag is used to indicate whether measurement period should be reset
+   * immediately. (TRUE:  meas is performed in the first DRX. 
+   *               FALSE: meas is performed in the first T-meas occasion)  
+   * In current design, the following rules should be followed.
+   * (1)If num of GSM cells != 0, this flag will be set as FALSE only if tmeas,gsm measurement 
+   *                              is triggered when priority measurement is on-going (i.e., at least 
+   *                              one of GSM cells hits priority reselection criteria for priority 
+   *                              based measurement reselection). For other case, this flag should 
+   *                              be set as TRUE. If any improvement is needed, the usage limitation 
+   *                              for this flag should be confirmed with GL1's colleague.
+   * (2) If num of GSM cells == 0, this flag will alwyas be set as FALSE;
+   */
+  kal_bool is_meas_period_reset;
+  
+  /* When this flag is set to TRUE, the standby measurement will be performed every T-meas without */
+  /* multiplying by N layers. So that there will be 2 measurement results within 10s OOS period, which */
+  /* increases the successful rate of finding a candidate during OOS */
+  kal_bool prohibit_apply_n_layer;
+  
+  #ifdef __LTE_RAT__
+	  /*eas configures gas to make use of idle rf to decode bsic in order to speed up srvcc to geran*/
+  kal_bool is_auto_gap_valid;
+  kal_int16 b1_b2_gsm_thresh;/* b1/b2 GSM threshold in qdbm, 0xffff is invalid, other value is valid*/
+#endif
+
+} eas_gas_config_gcell_meas_req_struct;
+#endif /* _GAS_EAS_INTER_CORE_STRUCT_H */
diff --git a/mcu/interface/protocol/general/gmss_public.h b/mcu/interface/protocol/general/gmss_public.h
new file mode 100644
index 0000000..0eba656
--- /dev/null
+++ b/mcu/interface/protocol/general/gmss_public.h
@@ -0,0 +1,352 @@
+/*****************************************************************************
+*  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).
+*
+*****************************************************************************/
+ 
+#ifndef _GMSS_PUBLIC_H
+#define _GMSS_PUBLIC_H
+
+#include "kal_general_types.h"
+
+#if (!defined(__MAUI_BASIC__)) && (!(defined(__NR_L1SIM__) || defined(__LTE_L1SIM__)))
+#include "mcd_l3_inc_struct.h"
+#include "sim_exported_enum.h"
+#include "l3_inc_enums_public.h"
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// bits: 0|N|Lf|Lt|W|C|T|G             
+#define GMSS_WM_ID_MASK_NR             0x40
+#define GMSS_WM_ID_MASK_LTE_FDD        0x20
+#define GMSS_WM_ID_MASK_LTE_TDD        0x10
+#define GMSS_WM_ID_MASK_LTE            (GMSS_WM_ID_MASK_LTE_FDD | GMSS_WM_ID_MASK_LTE_TDD)       
+#define GMSS_WM_ID_MASK_WCDMA          0x08
+#define GMSS_WM_ID_MASK_C2K            0x04
+#define GMSS_WM_ID_MASK_TDSCDMA        0x02
+#define GMSS_WM_ID_MASK_GSM            0x01
+
+#define GMSS_WM_LTTG    (GMSS_WM_ID_MASK_LTE_TDD | GMSS_WM_ID_MASK_TDSCDMA | GMSS_WM_ID_MASK_GSM)
+#define GMSS_WM_LWG     (GMSS_WM_ID_MASK_LTE_FDD | GMSS_WM_ID_MASK_LTE_TDD | GMSS_WM_ID_MASK_WCDMA | GMSS_WM_ID_MASK_GSM)
+#define GMSS_WM_LTG     (GMSS_WM_ID_MASK_LTE_FDD | GMSS_WM_ID_MASK_LTE_TDD | GMSS_WM_ID_MASK_TDSCDMA | GMSS_WM_ID_MASK_GSM)
+#define GMSS_WM_LWTG    (GMSS_WM_ID_MASK_LTE_FDD | GMSS_WM_ID_MASK_LTE_TDD | GMSS_WM_ID_MASK_WCDMA | GMSS_WM_ID_MASK_TDSCDMA | GMSS_WM_ID_MASK_GSM)
+#define GMSS_WM_LWCG    (GMSS_WM_ID_MASK_LTE_FDD | GMSS_WM_ID_MASK_LTE_TDD | GMSS_WM_ID_MASK_WCDMA | GMSS_WM_ID_MASK_C2K | GMSS_WM_ID_MASK_GSM)
+#define GMSS_WM_LWCTG   (GMSS_WM_ID_MASK_LTE_FDD | GMSS_WM_ID_MASK_LTE_TDD | GMSS_WM_ID_MASK_WCDMA | GMSS_WM_ID_MASK_C2K | GMSS_WM_ID_MASK_TDSCDMA | GMSS_WM_ID_MASK_GSM)
+#define GMSS_WM_LFWG    (GMSS_WM_ID_MASK_LTE_FDD | GMSS_WM_ID_MASK_WCDMA | GMSS_WM_ID_MASK_GSM)
+#define GMSS_WM_LFWCG   (GMSS_WM_ID_MASK_LTE_FDD | GMSS_WM_ID_MASK_WCDMA | GMSS_WM_ID_MASK_C2K | GMSS_WM_ID_MASK_GSM)
+#define GMSS_WM_LCTG    (GMSS_WM_ID_MASK_LTE_FDD | GMSS_WM_ID_MASK_LTE_TDD | GMSS_WM_ID_MASK_C2K | GMSS_WM_ID_MASK_TDSCDMA | GMSS_WM_ID_MASK_GSM)
+#define GMSS_WM_LTCTG   (GMSS_WM_ID_MASK_LTE_TDD | GMSS_WM_ID_MASK_C2K | GMSS_WM_ID_MASK_TDSCDMA | GMSS_WM_ID_MASK_GSM)
+#define GMSS_WM_LTWG    (GMSS_WM_ID_MASK_LTE_TDD | GMSS_WM_ID_MASK_WCDMA | GMSS_WM_ID_MASK_GSM)
+#define GMSS_WM_LTWCG   (GMSS_WM_ID_MASK_LTE_TDD | GMSS_WM_ID_MASK_WCDMA | GMSS_WM_ID_MASK_C2K | GMSS_WM_ID_MASK_GSM)
+#define GMSS_WM_LFTG    (GMSS_WM_ID_MASK_LTE_FDD | GMSS_WM_ID_MASK_TDSCDMA | GMSS_WM_ID_MASK_GSM)
+#define GMSS_WM_LFCTG   (GMSS_WM_ID_MASK_LTE_FDD | GMSS_WM_ID_MASK_C2K | GMSS_WM_ID_MASK_TDSCDMA | GMSS_WM_ID_MASK_GSM)
+
+#define GMSS_WM_NLTTG   (GMSS_WM_ID_MASK_NR | GMSS_WM_LTTG)
+#define GMSS_WM_NLWG    (GMSS_WM_ID_MASK_NR | GMSS_WM_LWG)
+#define GMSS_WM_NLTG    (GMSS_WM_ID_MASK_NR | GMSS_WM_LTG)
+#define GMSS_WM_NLWTG   (GMSS_WM_ID_MASK_NR | GMSS_WM_LWTG)
+#define GMSS_WM_NLWCG   (GMSS_WM_ID_MASK_NR | GMSS_WM_LWCG)
+#define GMSS_WM_NLWCTG  (GMSS_WM_ID_MASK_NR | GMSS_WM_LWCTG)
+#define GMSS_WM_NLFWG   (GMSS_WM_ID_MASK_NR | GMSS_WM_LFWG)
+#define GMSS_WM_NLFWCG  (GMSS_WM_ID_MASK_NR | GMSS_WM_LFWCG)
+#define GMSS_WM_NLCTG   (GMSS_WM_ID_MASK_NR | GMSS_WM_LCTG)
+#define GMSS_WM_NLTCTG  (GMSS_WM_ID_MASK_NR | GMSS_WM_LTCTG)
+#define GMSS_WM_NLTWG   (GMSS_WM_ID_MASK_NR | GMSS_WM_LTWG)
+#define GMSS_WM_NLTWCG  (GMSS_WM_ID_MASK_NR | GMSS_WM_LTWCG)
+#define GMSS_WM_NLFTG   (GMSS_WM_ID_MASK_NR | GMSS_WM_LFTG)
+#define GMSS_WM_NLFCTG  (GMSS_WM_ID_MASK_NR | GMSS_WM_LFCTG)
+
+#define GMSS_MAX_MCC_ENTRY_NUM 10
+
+/*************************************************************************
+* Area Configuration
+* - 
+* - 
+*************************************************************************/
+#define MAX_SIDE_NUM 10
+#define MAX_ZONE_NUM 5
+
+#ifdef UNIT_TEST
+#define GMSS_GEO_MAX_SUB_NUM 10
+#else
+#define GMSS_GEO_MAX_SUB_NUM 256
+#endif /* UNIT_TEST */
+
+typedef void *gmss_geo_sub_id;
+
+/****************************************************************************
+                                Enum Declarations 
+****************************************************************************/
+typedef enum 
+{
+    UMTS_WCDMA_DUPLEX_MODE, 
+    UMTS_TDSCDMA_DUPLEX_MODE
+} umts_duplex_mode_type;
+
+typedef enum 
+{
+    LTE_FDD_DUPLEX_MODE, 
+    LTE_TDD_DUPLEX_MODE, 
+    LTE_FDD_TDD_DUPLEX_MODE
+} lte_duplex_mode_type;
+
+typedef enum
+{
+    NR_FDD_DUPLEX_MODE,
+    NR_TDD_DUPLEX_MODE,
+    NR_FDD_TDD_DUPLEX_MODE
+} nr_duplex_mode_type;
+
+typedef enum
+{
+    GMSS_C2K_FLAG_FALSE,
+    GMSS_C2K_FLAG_TRUE,
+    GMSS_C2K_FLAG_UNKNOWN
+
+} gmss_c2k_flag_enum;
+
+typedef enum
+{
+    GEO_SERVICE_NONE,
+    GEO_SERVICE_GPS_DATA_STATUS,
+    GEO_SERVICE_GEO_AREA_STATUS,
+    GEO_SERVICE_DISTANCE_STATUS
+} geo_service_enum;
+
+typedef enum
+{
+    GEO_EVENT_NONE,
+    GEO_EVENT_NO_VALID_GPS_DATA,
+    GEO_EVENT_VALID_GPS_DATA,
+    GEO_EVENT_ENTER_GEO_AREA,
+    GEO_EVENT_LEAVE_GEO_AREA,
+    GEO_EVENT_FAR_DISTANCE,
+    GEO_EVENT_END
+} geo_event_enum;
+
+typedef enum
+{
+    AREA_STATUS_UNKNOWN,
+    AREA_STATUS_IN,
+    AREA_STATUS_OUT
+} geo_area_status_enum;
+
+typedef enum
+{
+    DATA_STATUS_INVALID,
+    DATA_STATUS_VALID
+} gps_data_status_enum;
+
+typedef enum
+{
+    NR_AVAIL_UNKNOWN,
+    NR_AVAIL_UNAVAIL,
+    NR_AVAIL_AVAIL,
+    NR_AVAIL_MAX
+} nr_avail_enum;
+
+/****************************************************************************
+                                Struct Declarations 
+****************************************************************************/
+typedef struct
+{
+    kal_bool              is_3g_fdd;
+    kal_bool              is_3g_tdd;
+    kal_bool              is_4g_fdd;
+    kal_bool              is_4g_tdd;
+} gmss_duplex_mode_type_struct;
+
+#if (!defined(__MAUI_BASIC__)) && (!(defined(__NR_L1SIM__) || defined(__LTE_L1SIM__)))
+typedef struct
+{
+    plmn_id_struct plmn;
+    kal_bool is_available_timer_running;
+    kal_uint32 remain_tick;
+} gmss_mcc_item_struct;
+#endif
+
+typedef struct {
+    double lon;
+    double lat;
+} geo_point_struct;
+
+typedef struct {
+    geo_point_struct s; //start point
+    geo_point_struct e; //end point
+} geo_line_struct;
+
+typedef struct {
+    kal_uint8           point_num;
+    geo_point_struct    point[MAX_SIDE_NUM];
+} geo_zone_struct;
+
+typedef struct
+{
+    kal_uint8           zone_num;
+    geo_zone_struct     zone[MAX_ZONE_NUM];
+} geo_area_struct;
+
+typedef struct
+{
+    geo_service_enum    service_type;
+    geo_area_struct     area;
+    kal_uint32          distance;
+    kal_uint8           sim_interface;
+    geo_event_enum      event;
+    gmss_geo_sub_id     sub_id;
+} gmss_geo_data_event_container_struct;
+
+#if (!defined(__MAUI_BASIC__)) && (!(defined(__NR_L1SIM__) || defined(__LTE_L1SIM__)))
+typedef struct 
+{
+    rat_enum rat;
+    plmn_id_struct plmn_id;
+    kal_uint64 cell_id;
+} gmss_cell_global_id_struct;
+
+typedef struct
+{
+    nr_avail_enum level1;
+    nr_avail_enum level2;
+} gmss_nr_avail_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    gmss_nr_avail_struct nr_avail;
+} gmss_nr_avail_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    nr_avail_enum level2;
+    kal_uint8 plmn_id_list_num;
+    plmn_id_struct plmn_id[MAX_NUM_MULTI_PLMN];
+    kal_uint8 cell_id[MAX_NUM_MULTI_PLMN][5];
+} gmss_nrrc_nr_avail_update_ind_struct;
+#endif
+
+/***************************
+Function Pointer Delarations 
+****************************/
+typedef void (*gmss_geo_callback_func)(gmss_geo_data_event_container_struct);
+
+/***************************
+Exported Function Prototypes 
+****************************/
+kal_bool gmss_is_wcdma_mode_activated(kal_uint8 sim_index);
+kal_bool gmss_is_tdscdma_mode_activated(kal_uint8 sim_index);
+kal_bool gmss_is_ltefdd_mode_activated(void);
+kal_bool gmss_is_ltetdd_mode_activated(void);
+
+extern void gmss_set_duplex_mode(umts_duplex_mode_type mode_3g, lte_duplex_mode_type mode_4g, kal_uint8 sim_index);
+
+kal_bool gmss_is_cdma2000_supported();
+
+kal_bool gmss_is_cdma2000_supported_public();
+
+kal_bool gmss_is_mode_switch_for_cmcc_mt_csfb_required(kal_uint8 sim_idx);
+
+kal_bool gmss_is_3gpp_mpsr_ongoing(kal_uint8 sim_idx);
+
+extern kal_bool gmss_is_ct_operation(kal_uint8 sim_index);
+
+#if (!defined(__MAUI_BASIC__)) && (!(defined(__NR_L1SIM__) || defined(__LTE_L1SIM__)))
+/**
+ * @brief Get the MCC list stored in MCC pool maintained by GMSS
+ * @param[in] ps_id is the protocol ID of target protocol
+ * @param[out] mcc_num is the number of MCCs
+ * @param[out] mcc_list is the list of MCCs (sorted by available timer: Not running > long remain tick > short remain tick)
+ */
+void gmss_get_mcc_list(protocol_id_enum ps_id, kal_uint32 *mcc_num, gmss_mcc_item_struct mcc_list[]);
+#endif
+
+/**
+ * @brief Check if current location data is in current geographic area of assigned geo area
+ * @param[in] assigned geo_area
+ * @param[out] IN: in geo area; OUT: not in geo area, UNKOWN: unknown(e.g. gps invalid).
+ */
+extern geo_area_status_enum gmss_is_in_geo_area(geo_area_struct *geo_area);
+
+/**
+ * @brief Subscribe geographic service notifications
+ * @param[in] subscription name
+ * @param[in] callback function
+ * @param[in] subscription information
+ * @param[out] GMSS will provide unique Subscription ID. It is used to un-subscription.
+ */
+extern void gmss_geo_service_sub(kal_char *sub_name, gmss_geo_callback_func callback_func, const gmss_geo_data_event_container_struct sub_info, gmss_geo_sub_id *sub_id);
+
+/**
+ * @brief Modify geographic service notifications
+ * @param[in] Subscription ID
+ * @param[in] callback function
+ * @param[in] subscription information
+ * @param[out] TRUE: modification success. FALSE: modification fail.
+ */
+extern kal_bool gmss_geo_service_modify(gmss_geo_sub_id *sub_id, gmss_geo_callback_func callback_func, const gmss_geo_data_event_container_struct sub_info);
+
+/**
+ * @brief Unsubscribe geographic service notifications
+ * @param[in] Subscription ID
+ * @param[out] Should be NULL(Invalid Subscription ID) 
+ */
+extern void gmss_geo_service_unsub(gmss_geo_sub_id *sub_id);
+
+/**
+ * @brief Get the latest GPS location in record. 
+ * @param[out] GPS location 
+ * @param[out] TRUE: The latest location exists. FALSE: No location exists. 
+ */
+extern kal_bool gmss_geo_get_latest_loc(geo_point_struct *loc);
+
+/**
+ * @brief Get the distance between two GPS locations
+ * @param[in] GPS location A
+ * @param[in] GPS location B
+ * @param[out] The geographic distance between A and B in kilometers.
+ */
+extern double gmss_geo_get_distance_in_kilometers(const geo_point_struct *loc_a, const geo_point_struct *loc_b);
+
+#ifdef __cplusplus
+}
+#endif
+
+#if (!defined(__MAUI_BASIC__)) && (!(defined(__NR_L1SIM__) || defined(__LTE_L1SIM__)))
+extern void gmss_nr_map_nr_avail_query(const gmss_cell_global_id_struct *cell_global_id, kal_uint8 sim_interface, gmss_nr_avail_struct *nr_avail);
+#endif
+
+#endif  /* _GMSS_PUBLIC_H_ */
+
diff --git a/mcu/interface/protocol/general/gnss_tc_common_struct.h b/mcu/interface/protocol/general/gnss_tc_common_struct.h
new file mode 100644
index 0000000..08fc8ff
--- /dev/null
+++ b/mcu/interface/protocol/general/gnss_tc_common_struct.h
@@ -0,0 +1,185 @@
+#ifndef _GNSS_TC_COMMON_STRUCT_H
+#define _GNSS_TC_COMMON_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+#define GNSS_TC_TIMEID_GPS 0
+#define GNSS_TC_TIMEID_SBAS 1
+#define GNSS_TC_TIMEID_QZSS 2
+#define GNSS_TC_TIMEID_GALILEO 3
+#define GNSS_TC_TIMEID_GLONASS 4
+#define GNSS_TC_TIMEID_BDS 5
+
+#define GNSS_TC_TIMETYPE_TOD 1
+#define GNSS_TC_TIMETYPE_TOW 2
+#define GNSS_TC_TIMETYPE_UTC 3
+
+#define GNSS_TC_RAT_GSM 0x01
+#define GNSS_TC_RAT_WCDMA 0x02
+#define GNSS_TC_RAT_TDSCDMA 0x03
+#define GNSS_TC_RAT_CDMA2000 0x04
+#define GNSS_TC_RAT_LTE 0x05
+#define GNSS_TC_RAT_NR_FR1 0x06
+#define GNSS_TC_RAT_NR_FR2 0x07
+
+#define GNSS_TC_TIME_INFO_SRC_LTE_SIB8 1 /* LTE SIB8 */
+#define GNSS_TC_TIME_INFO_SRC_LTE_SIB16 2  /* LTE SIB16 */
+#define GNSS_TC_TIME_INFO_SRC_NR_SIB9 3  /* NR SIB9 */
+#define GNSS_TC_TIME_INFO_SRC_GSM_GNSS_FT 8 /* reserved for GSM - GNSS fine time */
+#define GNSS_TC_TIME_INFO_SRC_WCDMA_GNSS_FT 9 /* reserved for WCDMA - GNSS fine time */
+#define GNSS_TC_TIME_INFO_SRC_TD_SCDMA_GNSS_FT 10 /* reserved for TD-SCDMA - GNSS fine time */
+#define GNSS_TC_TIME_INFO_SRC_CDMA2000_GNSS_FT 11 /* reserved for CDMA2000 - GNSS fine time */
+#define GNSS_TC_TIME_INFO_SRC_LTE_GNSS_FT 12 /* LTE - GNSS fine time */
+#define GNSS_TC_TIME_INFO_SRC_NR_FR1_GNSS_FT 13 /* NR FR1 - GNSS fine time */
+#define GNSS_TC_TIME_INFO_SRC_NR_FR2_GNSS_FT 14 /* reserved for NR FR2 - GNSS fine time */
+
+#define GNSS_TC_BIT_TRUE 1
+#define GNSS_TC_BIT_FALSE 0
+
+#define GNSS_TC_CTRL_FLAG_STOP 0 /* Disable/request to STOP */
+#define GNSS_TC_CTRL_FLAG_START 1 /* Enable/request to START */
+#define GNSS_TC_CTRL_FLAG_TEST_MODE 2 /* Test Mode Enable */
+
+#define GNSS_TC_RX_STATE_INVALID 0 /* Invalid value, default value */
+#define GNSS_TC_RX_STATE_IDLE 1 /* Indicate rx idle state */
+#define GNSS_TC_RX_STATE_CONNECT 2 /*Indicate rx connect state */
+#define GNSS_TC_RX_STATE_OUTOFSYNC 3 /* Indicate radio link fail scenario */
+
+#pragma pack(push)
+#pragma pack(8)  /* To avoid AP modem alignment issue */
+
+typedef struct
+{
+    kal_uint16 tac; /* 0...65535 */
+    kal_uint16 mnc; /* 0...999 */
+    kal_uint16 mcc; /* 0...999 */
+    kal_uint32 cellId; /* 0...0x0FFFFFFF */
+    kal_uint8 is_2_digit_mnc; /* refer to GNSS_TC_BIT_* (0...1)*/
+} globalCellId_struct;
+
+typedef struct
+{
+    kal_uint16 mnc; /* 0...999 */
+    kal_uint16 mcc; /* 0...999 */
+    kal_uint8 cellId[5]; /* The parameter is bit string of 36 bits. The MSB of 'cell_identity[0]' is the first bit of the bit string, and so on */
+    kal_uint8 is_2_digit_mnc; /* refer to GNSS_TC_BIT_* (0...1)*/
+} nrGlobalCellId_struct;
+
+typedef struct
+{
+    kal_uint8 ratMode; /* refer to GNSS_TC_RAT_* */
+    kal_uint8 isGciAvailable; /* refer to GNSS_TC_BIT_* (0: not available. 1: available.) */
+    globalCellId_struct globalCellId;
+    kal_uint8 isNrGciAvailable; /* refer to GNSS_TC_BIT_* (0: not available. 1: available.) */
+    nrGlobalCellId_struct nrGlobalCellId;
+    kal_uint8 isPciAvailable; /* refer to GNSS_TC_BIT_* (0: not available. 1: available.) */
+    kal_uint16 phyCellId; /* LTE = 0...503. NR = 0...1007 */
+    kal_uint8 isPscAvailable; /* refer to GNSS_TC_BIT_* (0: not available. 1: available.)*/
+    kal_uint16 psc; /* 0...512 */
+    kal_uint8  rxStatus;  /* refer to GNSS_TC_RX_STATE_*. Indicate EL1 and NL1 rx status  */
+} md_cellId_struct;
+
+typedef struct
+{
+    kal_uint16 md_frame_number; /* 0...1023 (10 milli-sec). The Frame number of target cells corresponding to the HW pulse (Used by LTE)*/
+    kal_uint8 md_subframe_number; /* 0...9 (milli-sec). The sub-frame number of target cells corresponding to the HW pulse (Used by LTE) */
+} md_sf_time_lte_struct;
+
+typedef struct
+{
+    kal_uint16 md_frame_number; /* 0...1023 (10 milli-sec). The Frame number of target cells corresponding to the HW pulse (Used by NR) */
+    kal_uint8 md_subframe_number; /* 0...9 (milli-sec). The sub-frame number of target cells corresponding to the HW pulse (Used by NR) */
+} md_sf_time_nr_struct;
+
+typedef struct
+{
+    kal_uint16 md_frame_number; /* 0...1023 (10 milli-sec). The Frame number of target cells corresponding to the HW pulse (Used by WCDMA)*/
+} md_sf_time_wcdma_struct;
+
+typedef struct
+{
+    kal_uint8 ratModeType; /* refer to GNSS_TC_RAT_* */
+    md_sf_time_lte_struct md_sf_time_lte;
+    md_sf_time_nr_struct md_sf_time_nr;
+    md_sf_time_wcdma_struct md_sf_time_wcdma; 
+} md_frameInformation_struct;
+
+typedef struct
+{
+    kal_uint8 md_propogationDelay_valid; /* refer to GNSS_TC_BIT_* (0: the PropogationDelay is not valid. 1: the PropogationDelay is valid.) */
+    kal_uint32 md_currentPropogationDelay; /* 0...4294967295 nano-sec. Propagation delay time(UINT32) from a particular cell to UE. Use Time advance to determine (equal to 1/2 TA) */
+    kal_uint64 md_absTimeOfPropogationDelay; /* MD abs-time with 64 bit corresponding to md receiving md-CurrentPropogationDelay. (Used by LTE and NR) */
+    kal_uint32 md_propogationDelayUncertainty; /* 0...4294967295 nano-sec. This filed specifis the uncertainty caused by the resolution of propogation delay */
+    kal_int32 md_propogationDelayChange; /* Propogation Delay Change. To be used by WCDMA only */
+} md_propagationInformation_struct;
+
+typedef struct
+{
+    kal_uint32 md_hwInferfaceUncertainty; /* 0...4294967295 nano-sec. The fields specifies the uncertainty caused by the HW interface between MD and GNSS and the uc */
+    kal_uint64 md_subframeboundary; /* 0...0xFFFFFFFFFFFFFFFF subframe boundary corresponding to HW pulse triggered. This field only user for NR and LTE */
+    kal_int32 md_scntToFrcFractionalPart; /* -2147483648...2147483647 fractional part due to scnt convert to FRC. For Marga and after Marga, this value is 0.  unit:nano-sec */
+    md_propagationInformation_struct md_propagationInfo;
+} md_pulseInformation_struct;
+
+typedef struct
+{
+    kal_uint16 md_cellHandOverNumber; /* 0...65535. Number of handovers UE experienced from cell which UE received the latest time synchronization information to the cell UE camp on currently */
+    kal_uint64 md_absTimeOrigin; /* 0...0xFFFFFFFFFFFFFFFF (milli-sec). MD abs-time with 64 bit corresponding to the latest GNSS timing feedback. (Used by LTE and NR) */
+    kal_uint64 md_absTimeStart; /* MD abs-time with 64 bit corresponding to start time of current cell UE camp on. (Used by LTE and NR) */
+    kal_uint64 md_absTimeTrigger; /* MD abs-time with 64 bit corresponding to the HW pulse.(Used by LTE and NR) */
+    kal_uint16 md_eNobeFreqDrift; /* 0...65535 (unit: 0.001ppm). This field specifies the maximum frequency bias of base station defined in 3GPP spec for each RAT. For LTE: 0.05ppm, NR: 0.05ppm */
+} md_cellUncertainty_struct;
+
+typedef struct
+{
+    kal_uint8 gnss_timeID; /* refer to GNSS_TC_TIMEID_* */
+    kal_uint16 gnss_dayNumber; /* 0...32767 (Day) */
+    kal_uint32 gnss_timeOfDay; /* 0...86399 sec */
+    kal_uint32 gnss_timeOfDayFrac_nsec; /* 0...999999999 nano-sec */
+    kal_uint8 gnss_leapSecond; /* 0...255 sec */
+} gnss_timeOfDay_struct;
+
+typedef struct
+{
+    kal_uint16 gnss_weekNum; /* unit: Week */
+    kal_uint32 gnss_timeOfWeek_ms; /* 0...604800000, unit: ms */
+    kal_uint32 gnss_timeOfWeek_subms_picosec; /* 0...999999999, uint: pico-sec */
+} gnss_timeOfWeek_struct;
+
+typedef struct
+{
+    kal_uint64 timeinfo_utc;  /*Follow 38.331, counts the number of UTC seconds in 10 ms units since 00:00:00 on Gregorian calendar date 1 January, 1990. */
+    kal_uint8  dayLightSavingTime[2]; /* Indicate if and how daylight-saving time is applied to obtain the local time */
+    kal_uint8  is_leap_seconds_valid;  /* Indicate the validity of ‘leap_sconds */
+    kal_int16 leap_seconds;  /* Number of leap seconds offset between GPS Time and UTC */
+    kal_int16 localTimeOffset; /* Offset between UTC and local time in units of 15 minutes.*/
+    kal_uint64 sib_time_diff; /* Time diff between pulse GPS timing and SIB frame boundary.Unit: microseconds */
+} gnss_tc_utc_time_struct;
+
+typedef struct
+{
+    kal_uint8 md_cellInfo_Valid;  /* 0: the cell-Information is not valid. 1: the cell-information is valid */
+    md_cellId_struct md_cellId;
+    md_pulseInformation_struct md_pulseInfo;
+    md_frameInformation_struct md_frameInfo;
+    md_cellUncertainty_struct md_cellUncertainty;
+} cell_information_struct;
+
+typedef struct
+{
+    kal_uint8 gnss_timeInfo_valid; /* 0: the GNSS-TimeInformation is not valid. 1: the GNSS-TimeInformation is valid. */
+    kal_uint8 time_info_source; /* 0: reserved. 1: LTE SIB8. 2: LTE SIB16. 3: NR SIB9. 4-7: reserved. 8: reserved for GSM - GNSS fine time.
+                                                              9: reserved for WCDMA - GNSS fine time. 10: reserved for TD-SCDMA - GNSS fine time. 11: reserved for CDMA2000 - GNSS fine time.
+                                                              12: LTE - GNSS fine time. 13: NR FR1 - GNSS fine time. 14: reserved for NR FR2-GNSS fine time.15: reserved */
+    kal_uint8 time_infoType;  /* 1: TOD time, 2: TOW time, 3: UTC time; refer to GNSS_TC_TIMETYPE_ . Indicate which time format is used */
+    gnss_timeOfDay_struct gnss_tod;
+    gnss_timeOfWeek_struct gnss_tow;
+    gnss_tc_utc_time_struct utc_time;
+    kal_uint32 gnss_timeUncertainty; /* 0...4294967295 nano-sec */
+} gnss_timeInformation_struct;
+
+#pragma pack(pop) /* Restore the alignment configuration */
+
+#endif /*_GNSS_TC_COMMON_STRUCT_H*/
+
diff --git a/mcu/interface/protocol/general/gnss_tc_lte_struct.h b/mcu/interface/protocol/general/gnss_tc_lte_struct.h
new file mode 100644
index 0000000..54ac158
--- /dev/null
+++ b/mcu/interface/protocol/general/gnss_tc_lte_struct.h
@@ -0,0 +1,40 @@
+#ifndef _GNSS_TC_LTE_STRUCT_H
+#define _GNSS_TC_LTE_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "gnss_tc_common_struct.h"
+
+
+/* GNSS_TC -> EL1 */
+/* This structure is for MSG_ID_GNSS_TC_EL1_SYNC_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 transactionID; /* 0...65535 */
+    kal_uint8 ctrlFlag; /* refer to GNSS_TC_CTRL_FLAG_* .Indicate the time Sync mode. */
+    md_cellId_struct md_cellId;
+} gnss_tc_el1_sync_req_struct;
+
+/* This structure is for MSG_ID_GNSS_TC_EL1_TIME_INFO_RSP */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 transactionID; /* 0...65535 */
+    cell_information_struct cell_info;
+    gnss_timeInformation_struct gnss_timeInfo;
+} gnss_tc_el1_time_info_rsp_struct;
+
+/* EL1 -> GNSS_TC */
+/* This structure is for MSG_ID_GNSS_TC_EL1_SYNC_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 transactionID; /* 0...65535 */
+    cell_information_struct cell_info;
+    gnss_timeInformation_struct gnss_timeInfo;
+} gnss_tc_el1_sync_cnf_struct;
+
+
+#endif /*_GNSS_TC_LTE_STRUCT_H*/
+
diff --git a/mcu/interface/protocol/general/gnss_tc_nr_struct.h b/mcu/interface/protocol/general/gnss_tc_nr_struct.h
new file mode 100644
index 0000000..507c560
--- /dev/null
+++ b/mcu/interface/protocol/general/gnss_tc_nr_struct.h
@@ -0,0 +1,63 @@
+#ifndef _GNSS_TC_NR_STRUCT_H
+#define _GNSS_TC_NR_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "gnss_tc_common_struct.h"
+
+
+/* GNSS_TC -> NL1 */
+/* This structure is for MSG_ID_GNSS_TC_NL1_SYNC_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 transactionID; /* 0...65535 */
+    kal_uint8 ctrlFlag; /* refer to GNSS_TC_CTRL_FLAG_* .Indicate the time Sync mode. */
+    md_cellId_struct md_cellId;
+} gnss_tc_nl1_sync_req_struct;
+
+/* This structure is for MSG_ID_GNSS_TC_NL1_TIME_INFO_RSP */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 transactionID; /* 0...65535 */
+    cell_information_struct cell_info;
+    gnss_timeInformation_struct gnss_timeInfo;
+} gnss_tc_nl1_time_info_rsp_struct;
+
+
+/* NL1 -> GNSS_TC */
+/* This structure is for MSG_ID_ GNSS_TC_NL1_SYNC_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 transactionID; /* 0...65535 */
+    cell_information_struct cell_info;
+    gnss_timeInformation_struct gnss_timeInfo;
+} gnss_tc_nl1_sync_cnf_struct;
+
+typedef enum {
+    NRRC_TIME_SIB_RESULT_OK =0, /* NRRC/NL1 reported useful info, check fields in lbs_errc_read_time_sib_ind_struct */
+    NRRC_TIME_SIB_RESULT_NOT_TRY =1, /* No valid SIB info, and LBS doesn??t need to try again */
+    NRRC_TIME_SIB_RESULT_RE_TRY =2, /* No valid SIB info, and LBS may try again */
+    NRRC_TIME_SIB_RESULT_TIMEOUT =3 /* While trying to read SIB for time sync, guard timer timeouts(2s), Can retry, ask ERRC for further check*/
+} nrrc_time_sib_result_enum;
+
+/* NRRC -> GNSS_TC */
+/* This structure is for MSG_ID_GNSS_TC_NRRC_READ_TIME_SIB_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    nrrc_time_sib_result_enum  result;
+    kal_uint64 time_info_utc;
+    kal_bool  is_day_light_saving_time_valid; 
+    kal_uint8 day_light_saving_time;
+    kal_bool  is_leap_seconds_valid;  
+    kal_int16 leap_seconds;
+    kal_bool  is_local_time_offset_valid;
+    kal_int16  local_Time_Offset;
+    kal_uint64 sib9_time_diff;   
+} gnss_tc_nrrc_read_time_sib_cnf_struct;
+
+#endif /*_GNSS_TC_NR_STRUCT_H*/
+
diff --git a/mcu/interface/protocol/general/gnss_tc_wcdma_struct.h b/mcu/interface/protocol/general/gnss_tc_wcdma_struct.h
new file mode 100644
index 0000000..6b17451
--- /dev/null
+++ b/mcu/interface/protocol/general/gnss_tc_wcdma_struct.h
@@ -0,0 +1,40 @@
+#ifndef _GNSS_TC_WCDMA_STRUCT_H
+#define _GNSS_TC_WCDMA_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "gnss_tc_common_struct.h"
+
+
+/* GNSS_TC -> UL1 */
+/* This structure is for MSG_ID_GNSS_TC_UL1_SYNC_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 transactionID; /* 0...65535 */
+    kal_uint8 ctrlFlag; /* refer to GNSS_TC_CTRL_FLAG_* .Indicate the time Sync mode. */
+    md_cellId_struct md_cellId;
+} gnss_tc_ul1_sync_req_struct;
+
+/* This structure is for MSG_ID_GNSS_TC_UL1_TIME_INFO_RSP */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 transactionID; /* 0...65535 */
+    cell_information_struct cell_info;
+    gnss_timeInformation_struct gnss_timeInfo;
+} gnss_tc_ul1_time_info_rsp_struct;
+
+/* UL1 -> GNSS_TC */
+/* This structure is for MSG_ID_GNSS_TC_UL1_SYNC_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 transactionID; /* 0...65535 */
+    cell_information_struct cell_info;
+    gnss_timeInformation_struct gnss_timeInfo;
+} gnss_tc_ul1_sync_cnf_struct;
+
+
+#endif /*_GNSS_TC_WCDMA_STRUCT_H*/
+
diff --git a/mcu/interface/protocol/general/gpd_lib.h b/mcu/interface/protocol/general/gpd_lib.h
new file mode 100644
index 0000000..4b9ea55
--- /dev/null
+++ b/mcu/interface/protocol/general/gpd_lib.h
@@ -0,0 +1,324 @@
+/*******************************************************************************
+*  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) 2011
+*
+*  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:
+ * ---------
+ *   gpd_lib.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   
+ *
+ * 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!
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ ******************************************************************************/
+
+#ifndef GPD_LIB_H
+#define GPD_LIB_H
+/******************************************************************************/
+
+/******************************************************************************
+* SAMPLE CODE                                                                                                              
+*******************************************************************************/
+
+// Basic
+/******************************************************************************
+// An example of combining two gpd linked lists and poll the first 3 nodes
+{
+    gpd_node*   gpd_nodes_a; //gpd linked list A with 5 items
+    gpd_node*   gpd_nodes_b; //gpd linked list B with 5 items
+
+    gpd_nodes_a = gpd_lib_add( gpd_nodes_a, gpd_nodes_b);
+    gpd_nodes_a = gpd_lib_poll( gpd_nodes_a, 3, &gpd_node_b);
+
+    gpd_lib_size( gpd_nodes_a); // 7
+    gpd_lib_size( gpd_nodes_b); // 3
+}
+*******************************************************************************/
+
+// List
+/******************************************************************************
+// An example of adding nodes to gpd_list and poll all items out
+{
+    gpd_list   node_list; //a gpd_list
+    gpd_node*   gpd_nodes; //gpd linked list with 5 items   
+
+    gpd_lib_list_create ( &node_list ); // Initialize gpd_list struct
+    gpd_lib_list_add( &node_list, gpd_nodes); // add nodes into gpd_list
+
+    gpd_lib_list_size( &node_list ); // 5
+
+    gpd_nodes = gpd_lib_list_pollAll( &node_list ); // Poll all gpd nodes out
+
+    gpd_lib_size(gpd_nodes); // 5
+    gpd_lib_list_size( &node_list ); // 0        
+}
+*******************************************************************************/
+
+// Iterator
+/******************************************************************************
+// An example of traversing a gpd linked list and remove nodes
+{
+    gpd_node*   gpd_nodes; //The gpd linked list which is going to be traversed
+
+    gpd_itr     itr;
+    gpd_node*   node;
+    gpd_lib_iterator_create( &itr, &gpd_nodes ); // Create an iterator
+    while( (node = gpd_lib_iterator_next(&itr))!= NULL )
+    {
+        if ( gpd_lib_data_size(node) > 1500 )
+        {
+            node = gpd_lib_iterator_remove(&itr); // Remove gpd with 1500+ data length
+        }
+    }
+}
+*******************************************************************************/
+
+// Umts GPD Header and Tail
+/******************************************************************************
+// An example of adding and removing a header and a tail to an umts gpd node
+{
+    gpd_node*   umts_dl_gpd; //A umts dl gpd node
+
+    kal_uint8   head[] = {0xAA,0xAA,0xAA};
+    kal_uint8   tail[] = {0xBB,0xBB,0xBB};
+
+    // Add header and tail
+    gpd_lib_umts_addHeader( umts_dl_gpd, head, 3 );
+    gpd_lib_umts_addTail( umts_dl_gpd, tail, 3 );
+
+    // Delete header and tail
+    gpd_lib_umts_delHeader( umts_dl_gpd, head, 3 );
+    gpd_lib_umts_delTail( umts_dl_gpd, tail, 3 );
+}
+*******************************************************************************/
+
+// Create Umts Single GPD and BD
+/******************************************************************************
+// An example of creating a single GPD with a single BD
+{
+    gpd_node*   umts_dl_gpd;
+
+    kal_uint8 mem[1024];
+    kal_uint8 data[] = { 1, 2, 3, 4 };
+
+    if( gpd_lib_umts_sizeSingleGpdBd() > 1024 ) ASSERT(0);
+
+    umts_dl_gpd = gpd_lib_umts_createSingleGpdBd( mem, data, 4 );
+
+    //You get a gpd_node umts_dl_gpd
+}
+*******************************************************************************/
+
+/******************************************************************************/
+
+#include "kal_general_types.h"
+
+/******************************************************************************/
+
+//#define __GPD_LIB_DUBUG__
+
+/******************************************************************************/
+
+#define GPD_LIB_GPD_RX_HEADER_SIZE  (0)
+#define GPD_LIB_GPD_RX_FOOTER_SIZE  (8)
+
+/******************************************************************************/
+
+typedef struct _gpd_node
+{
+    struct
+    {
+        kal_uint32  hwo:1;
+        kal_uint32  bdp:1;
+        kal_uint32  reserved:6;
+        kal_uint32  checksum:8;
+        kal_uint32  allow_buff_size:16;
+    } w0;
+    union
+    {
+        kal_uint32*         next_gpd_addr;
+        struct _gpd_node*   next_gpd_node;
+    } w1;
+    union
+    {
+        kal_uint8*  buff_addr;
+        kal_uint32* first_bd_addr;
+    } w2;
+    struct
+    {
+        kal_uint16  data_buff_size;
+        kal_uint16  reserved;
+    } w3;
+} gpd_node;
+
+/******************************************************************************/
+
+typedef struct _gpd_list
+{
+    gpd_node*   first;
+    gpd_node*   last;
+    
+} gpd_list;
+
+/******************************************************************************/
+
+typedef struct _gpd_itr
+{
+    gpd_node*   ptr;
+    gpd_node*   pre;
+    gpd_node**  root;
+    
+} gpd_itr;
+
+/******************************************************************************/
+
+extern gpd_node* gpd_lib_add( gpd_node* root, gpd_node* nodes );
+extern gpd_node* gpd_lib_poll( gpd_node* root, kal_uint16 num, gpd_node** nodes );
+extern kal_uint16 gpd_lib_size( gpd_node* root );
+extern kal_bool gpd_lib_scan( gpd_node* root, kal_uint16* size, gpd_node** last );
+
+/******************************************************************************/
+
+extern gpd_list* gpd_lib_list_create( void* mem_ptr );
+extern void gpd_lib_list_add( gpd_list* list, gpd_node* nodes );
+extern gpd_node* gpd_lib_list_poll( gpd_list* list, kal_uint16 num );
+extern void gpd_lib_list_add_ex( gpd_list* list, gpd_node* first, gpd_node* last );
+extern gpd_node* gpd_lib_list_poll_ex( gpd_list* list, gpd_node** last );
+extern kal_uint16 gpd_lib_list_size( gpd_list* list );
+
+/******************************************************************************/
+
+extern gpd_itr* gpd_lib_iterator_create( void* mem_ptr, gpd_node** nodes );
+extern gpd_node* gpd_lib_iterator_next( gpd_itr* itr );
+extern kal_bool gpd_lib_iterator_hasNext( gpd_itr* itr );
+extern gpd_node* gpd_lib_iterator_remove( gpd_itr* itr );
+extern gpd_node* gpd_lib_iterator_cut( gpd_itr* itr );
+
+/******************************************************************************/
+
+#define gpd_lib_data_size(np)           ((kal_uint16)((np)->w3.data_buff_size))
+#define gpd_lib_data_getAddr(np)        ((kal_uint8*)((np)->w2.buff_addr))
+#define gpd_lib_data_setSize(np,size)   ((np)->w3.data_buff_size = (kal_uint16)(size))
+extern kal_uint16 gpd_lib_data_totalsize( gpd_node* nodes );
+
+/******************************************************************************/
+
+extern void gpd_lib_umts_addHeader( gpd_node* node, kal_uint8* buff_ptr, 
+    kal_uint16 buff_len );
+extern void gpd_lib_umts_delHeader( gpd_node* node, kal_uint8** buff_ptr );
+extern kal_uint8* gpd_lib_umts_peekHeader( gpd_node* node );
+extern void gpd_lib_umts_addTail( gpd_node* node, kal_uint8* buff_ptr, 
+    kal_uint16 buff_len );
+extern void gpd_lib_umts_delTail( gpd_node* node, kal_uint8** buff_ptr );
+
+extern kal_uint8* gpd_lib_umts_getFirstBDDataPtr( gpd_node* node );
+extern kal_uint32* gpd_lib_umts_getFirstBDPeerBuffPtr( gpd_node* node );
+extern void gpd_lib_umts_clearFirstBDPeerBuffPtr( gpd_node* node );
+extern kal_uint8 gpd_lib_umts_getType( gpd_node* node );
+extern void gpd_lib_umts_setOutputAddr( gpd_node* node, kal_uint8* addr );
+
+/******************************************************************************/
+
+extern void gpd_lib_sdio_tx_initGpd(gpd_node * node);
+extern gpd_node* gpd_lib_sdio_tx_createGpd( void* mem_ptr, kal_uint8* buff_addr, 
+    kal_uint16 buff_len  );
+extern kal_uint8* gpd_lib_sdio_tx_getCCCIHeader( gpd_node* node );
+extern kal_uint8* gpd_lib_sdio_tx_getPayloadAddr(gpd_node * node);
+extern kal_uint16 gpd_lib_sdio_tx_getPayloadLen( gpd_node* node );
+extern kal_uint16 gpd_lib_sdio_tx_sizeGpd( void );
+
+/******************************************************************************/
+
+#if defined(__3G_NEW_DATA_PLANE_ARCH__) && defined(__GPD_LIB_TEST__)
+#include "uas_data_common.h"
+
+#define UMTSGPD_HEADER_BUFFER_SIZE 60  // used by module UPS
+#define UMTSGPD_FOOTER_BUFFER_SIZE 4   // used by module UPS
+
+typedef struct _umts_dl_gpd_flc
+{
+    umts_dl_gpd gpd;
+    
+    kal_uint32  header_buffer[(UMTSGPD_HEADER_BUFFER_SIZE+3)/4];
+    kal_uint32  footer_buffer[(UMTSGPD_FOOTER_BUFFER_SIZE+3)/4];
+   
+} umts_dl_gpd_flc;
+
+extern void gpd_lib_umts_initBd(umts_dl_bd * bd);
+extern void gpd_lib_umts_initGpd ( umts_dl_gpd* gpd );
+extern void gpd_lib_umts_initGpdFlc ( umts_dl_gpd_flc* gpd );
+extern void gpd_lib_umts_addBdtoGpd( umts_dl_gpd* gpd, umts_dl_bd* bd );
+extern gpd_node* gpd_lib_umts_createSingleGpdBd( void* mem_ptr, 
+    kal_uint8* buff_addr, kal_uint16 buff_len  );
+extern kal_uint16 gpd_lib_umts_sizeSingleGpdBd( void );
+#endif
+
+/******************************************************************************/
+#endif /* GPD_LIB_H */
+
diff --git a/mcu/interface/protocol/general/l4_ipc_msg_struct.h b/mcu/interface/protocol/general/l4_ipc_msg_struct.h
new file mode 100644
index 0000000..16c8b67
--- /dev/null
+++ b/mcu/interface/protocol/general/l4_ipc_msg_struct.h
@@ -0,0 +1,161 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *	l4_ipc_msg_struct.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   This file is intends for IPC message structures.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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 __L4_IPC_MSG_STRUCT_H__
+#define __L4_IPC_MSG_STRUCT_H__
+
+#include "kal_public_defs.h"
+#include "kal_general_types.h"
+#include "ps_public_enum.h"
+#include "ps_public_struct.h"
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} dhcp_mbci_ip_config_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint32  SessionId;
+    kal_uint32  IPv4ConfigurationAvaliable;
+    kal_uint32  IPv6ConfigurationAvaliable;
+    kal_uint32  IPv4AddressCount;
+    kal_uint32  IPv4AddressOffset;
+    kal_uint32  IPv6AddressCount;
+    kal_uint32  IPv6AddressOffset;
+    kal_uint32  IPv4GatewayOffset;
+    kal_uint32  IPv6GatewayOffset;
+    kal_uint32  IPv4DnsServerCount;
+    kal_uint32  IPv4DnsServerOffset;
+    kal_uint32  IPv6DnsServerCount;
+    kal_uint32  IPv6DnsServerOffset;        
+    kal_uint32  IPv4Mtu;
+    kal_uint32  IPv6Mtu;
+    kal_uint8   DataBuffer[88];
+} dhcp_mbci_ip_config_rsp_struct, dhcp_mbci_ip_config_ind_struct;
+
+/* for GPS desense */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 tx_freq[64]; //MAX_NUM_OF_HOPPING_FREQ defined in rr_mpal_interface.h
+} l4c_rf_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 mode;
+} l4c_rf_info_req_struct;
+
+#ifndef __MTK_TARGET__
+//for L4C UT MSG_ID_L4C_REGIONAL_PHONE_MODE_REQ, align to CCCI_COMMON_ILM_4B
+typedef struct
+{
+	kal_uint8		ref_count;
+	kal_uint16		msg_len;
+	kal_uint16		W0;
+} l4c_regional_phone_mode_req_struct;
+#endif //#ifndef __MTK_TARGET__
+
+#endif
diff --git a/mcu/interface/protocol/general/l4c2abm_struct.h b/mcu/interface/protocol/general/l4c2abm_struct.h
new file mode 100644
index 0000000..617e488
--- /dev/null
+++ b/mcu/interface/protocol/general/l4c2abm_struct.h
@@ -0,0 +1,463 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * L4C2ABM_STRUCT.H
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file describes the common struct of ABM and L4C.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _L4C2ABM_STRUCT_H
+#define _L4C2ABM_STRUCT_H
+//#include "ps_public_enum.h"
+#include "ps_public_struct.h"
+
+//#include "ps2sat_struct.h"
+//#include "kal_non_specific_general_types.h"
+//#include "custom_mmi_default_value.h"
+//#include "app_ltlcom.h"
+
+#include "kal_public_api.h"
+#include "tcm_api.h"
+#include "ps_public_enum.h"
+ 
+typedef struct {
+   kal_uint8 ref_count;
+   kal_uint16 msg_len;
+   kal_bool result;
+   kal_uint16 err_cause;
+   kal_uint8 profile_id;
+   /* for __APP_SECONDARY_PDP_SUPPORT__ */
+   kal_uint8 context_id;
+   kal_uint8 qos_id;	      // Qos Profile ID
+   kal_bool is_qos_fulfilled; // Flag indicates whether the requested QoS is fulfilled by established bearer
+   /* ~for __APP_SECONDARY_PDP_SUPPORT__ */
+   kal_uint8 ip_addr[4];
+   kal_uint8 pri_dns_addr[4];
+   kal_uint8 sec_dns_addr[4];    
+   nvram_editor_qos_struct nwk_neg_qos; //__GPRS_BEARER_REPORT_NEGOTIATED_QOS__
+} l4c_ps_abm_setup_rsp_struct;
+
+typedef struct {
+   kal_uint8 ref_count;
+   kal_uint16 msg_len;
+   kal_bool result;
+   kal_uint16 err_cause;
+   kal_uint8 profile_id;
+   /* Following is for __APP_SECONDARY_PDP_SUPPORT__ */
+   kal_uint8 qos_id;	      // Qos Profile ID
+   kal_uint8 context_id;
+} l4c_ps_abm_disc_rsp_struct;
+
+typedef struct {
+   kal_uint8 ref_count;
+   kal_uint16 msg_len;  
+   kal_uint8 profile_id;
+   /* Following is for __APP_SECONDARY_PDP_SUPPORT__ */
+   kal_uint8 qos_id;	      // Qos Profile ID
+   kal_uint8 context_id;
+   kal_uint16 err_cause;
+} l4c_ps_abm_disc_ind_struct;
+
+typedef struct {
+   kal_uint8    ref_count;
+   kal_uint16   msg_len;
+   kal_bool	    result; // result
+   kal_uint16	err_cause;  // error cause
+   kal_uint8	context_id; // context ID
+} l4c_ps_abm_qos_tft_modify_rsp_struct;
+
+typedef struct {
+   kal_uint8 ref_count;
+   kal_uint16 msg_len;
+   kal_bool result;
+   kal_uint16 err_cause;   
+   kal_uint8 ip_addr[4];
+   kal_uint8 pri_dns_addr[4];
+   kal_uint8 sec_dns_addr[4];
+   kal_uint16 mtu;    
+} l4c_cc_abm_setup_rsp_struct;
+
+typedef struct {
+   kal_uint8 ref_count;
+   kal_uint16 msg_len;
+   kal_bool result;
+   kal_uint16 err_cause;
+} l4c_cc_abm_disc_rsp_struct;   
+
+typedef struct {
+   kal_uint8 ref_count;
+   kal_uint16 msg_len;  
+   kal_uint8 csd_profile_id;
+   kal_uint16 err_cause;
+} l4c_cc_abm_disc_ind_struct;   
+
+typedef struct {
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    kal_uint8 src_id;
+} l4cabm_start_req_struct;
+
+typedef struct {
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    kal_bool result;
+} l4c_abm_disallow_gprs_and_csd_rsp_struct;
+
+
+typedef struct {
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    kal_bool result;
+} l4c_abm_allow_gprs_and_csd_rsp_struct;
+
+#ifdef __SATCE__
+typedef struct {
+    kal_uint8 ref_count;
+    kal_uint8 msg_len;
+    kal_uint8 nw_acct_id; //MAUI_02866379, mtk02285
+    kal_bool is_apn_valid;
+    kal_uint8 apn_length;
+    kal_uint8 apn[50];
+    kal_bool is_username_valid;
+    kal_uint8 no_username;
+    kal_uint8 username[16];
+    kal_uint8 dcs_of_username;
+    kal_bool is_passwd_valid;
+    kal_uint8 no_passwd;
+    kal_uint8 passwd[16];
+    kal_uint8 dcs_of_passwd;
+    kal_bool is_local_addr_valid;
+    kal_uint8 no_local_addr;
+    kal_uint8 local_addr[16];
+    kal_bool is_dest_addr_valid;
+    kal_uint8 no_dest_addr;
+    kal_uint8 dest_addr[16];
+    sat_gprs_bearer_para_struct gprs_bearer;
+} l4cabm_sate_set_gprs_account_info_req_struct;
+#endif /* __SATCE__ */
+
+typedef struct {
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    kal_uint8 src_id;
+    kal_uint8 profile_type;
+#ifdef __SATCE__
+    l4cabm_sate_set_gprs_account_info_req_struct sate_account_info;
+#endif /* __SATCE__ */
+} l4cabm_set_gprs_account_info_req_struct;
+
+typedef struct {
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    kal_uint8 src_id;
+    kal_uint8 profile_type;
+    kal_uint8 profile_id;
+} l4cabm_get_gprs_account_info_req_struct;
+
+typedef struct {
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    kal_uint8 src_id;
+    l4c_gprs_account_info_struct gprs_account_info;
+} l4cabm_get_gprs_account_info_rsp_struct;
+
+// Karen
+typedef struct {
+   kal_uint8 ref_count;
+   kal_uint16 msg_len;
+   kal_bool result;
+   kal_uint16 err_cause;
+   kal_uint8 profile_id;
+   kal_uint8 qos_id;	      // Qos Profile ID
+   kal_uint8 context_id;
+   kal_bool is_qos_fulfilled; // Flag indicates whether the requested QoS is fulfilled by established bearer
+} l4c_ps_abm_reactivate_rsp_struct;
+
+typedef struct
+{
+    kal_uint8 ref_count;
+	kal_uint16 msg_len;
+	kal_uint8 profile_id;
+	kal_uint8 context_id;
+	nvram_editor_qos_struct nwk_neg_qos;
+}l4c_ps_abm_pdp_modify_ind_struct; //__GPRS_BEARER_REPORT_NEGOTIATED_QOS__
+
+typedef struct  
+{
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    kal_uint8 connect_type;
+    kal_uint8 call_id;
+    kal_uint8 context_id;
+}l4c_abm_dialup_connect_ind_struct;
+
+typedef struct  
+{
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    kal_uint8 connect_type;
+    kal_uint8 call_id;
+    kal_uint8 context_id;
+}l4c_abm_dialup_connecting_ind_struct;
+
+typedef struct
+{
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    kal_uint8 context_id;
+    kal_uint64 tx_before_reset;
+    kal_uint64 rx_before_reset;
+}l4c_ps_abm_dialup_info_ind_struct;
+
+typedef struct  
+{
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    kal_uint8 connect_type;
+    kal_uint8 call_id;
+    kal_uint8 context_id;
+}l4c_abm_dialup_disc_ind_struct;
+
+typedef struct {  
+    kal_uint64 tx;
+    kal_uint64 rx;    
+    kal_uint8 context_id;    
+} l4c_ps_abm_single_pdp_call_history_info_struct;
+
+typedef struct {
+    kal_uint8 context_id;
+    kal_bool reset_tx;
+    kal_bool reset_rx;
+} l4c_ps_abm_single_pdp_call_history_reset_cmd_struct;
+
+typedef struct {
+    l4c_ps_abm_single_pdp_call_history_reset_cmd_struct original_cmd;
+    l4c_ps_abm_single_pdp_call_history_info_struct volume_before_reset;
+} l4c_ps_dialup_info_reset_result_struct;
+
+typedef struct  
+{
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    kal_uint8 serial_num;
+    kal_uint8 total_reset_num;
+    l4c_ps_dialup_info_reset_result_struct result[MAX_GPRS_DIALUP_NUM];
+}l4c_ps_abm_reset_dialup_info_rsp_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8	status; /* l4c_rac_response_enum */
+    kal_uint8	plmn[6+1];
+    kal_uint8	gsm_state;
+    kal_uint8	gprs_state;
+    kal_uint8	gprs_status; /* l4c_gprs_status_enum */
+    kal_uint8	rat;
+    kal_uint8	cell_support_egprs;
+    kal_uint8	lac[2];
+} l4c_ps_abm_nw_attach_ind_struct;
+
+typedef struct  
+{
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    kal_uint8 connect_type;
+    kal_uint8 call_id;
+    kal_uint8 context_id;
+    kal_bool  result;
+}l4c_abm_dialup_disc_rsp_struct;
+
+typedef struct  
+{
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    kal_uint8 serial_num;
+    kal_uint8 total_context_id;
+    l4c_ps_abm_single_pdp_call_history_info_struct result[MAX_GPRS_DIALUP_NUM];
+}l4c_ps_abm_get_dialup_info_rsp_struct;
+
+
+typedef struct  
+{
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    kal_uint8 gprs_status;
+}l4c_abm_gprs_status_ind_struct;
+
+#endif /* ~_L4C2ABM_STRUCT_H */
+
+
diff --git a/mcu/interface/protocol/general/l4c2sm_struct.h b/mcu/interface/protocol/general/l4c2sm_struct.h
new file mode 100644
index 0000000..2d75ba8
--- /dev/null
+++ b/mcu/interface/protocol/general/l4c2sm_struct.h
@@ -0,0 +1,115 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * L4C2SM_STRUCT.H
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file describes the common struct of SM and L4C.
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * 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 _L4C2SM_STRUCT_H
+#define _L4C2SM_STRUCT_H
+
+#include "kal_general_types.h"
+#include "irat_common_struct.h"
+#include "sm_esm_struct.h"
+
+
+#endif // ~ _L4C2SM_STRUCT_H
+
+
diff --git a/mcu/interface/protocol/general/l4c2tst_enum.h b/mcu/interface/protocol/general/l4c2tst_enum.h
new file mode 100644
index 0000000..f284b4a
--- /dev/null
+++ b/mcu/interface/protocol/general/l4c2tst_enum.h
@@ -0,0 +1,89 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *  l4c2tst_enum.h
+ *
+ * Project:
+ * --------
+ *  MAUI
+ *
+ * Description:
+ * ------------
+ *  
+ *
+ * Author:
+ * -------
+ *  
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *------------------------------------------------------------------------------
+ * 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 _L4C2TST_ENUM_H
+#define _L4C2TST_ENUM_H
+
+typedef enum
+{
+	L4C_PORT_NO_ERROR,
+	L4C_PORT_UNKNOWN_ERROR,
+	L4C_PORT_OPEN_FAIL_HOLDING_PORT, // is holding another port
+	L4C_PORT_OPEN_FAIL_PORT_ALREADY_OPEN, 
+	L4C_PORT_OPEN_FAIL_PORT_NOT_FREE, //the port is currently owned by other task.
+	L4C_PORT_CLOSE_FAIL_NOT_OWNER  	//is not the owner of the port
+}l4c_port_result_enum;
+
+#endif
+
+
diff --git a/mcu/interface/protocol/general/l4c2tst_struct.h b/mcu/interface/protocol/general/l4c2tst_struct.h
new file mode 100644
index 0000000..3f731a8
--- /dev/null
+++ b/mcu/interface/protocol/general/l4c2tst_struct.h
@@ -0,0 +1,137 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *  l4c2tst_struct.h
+ *
+ * Project:
+ * --------
+ *  MAUI
+ *
+ * Description:
+ * ------------
+ *  
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _L4C2TST_STRUCT_H
+#define _L4C2TST_STRUCT_H
+
+#include "dcl.h" 
+#include "kal_public_defs.h"
+#include "l4c2dhl_struct.h"
+
+typedef struct {
+    LOCAL_PARA_HDR
+    DCL_DEV port;
+    kal_uint32 baud_rate;
+} l4c_open_uart_port_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8	result;
+} l4c_open_uart_port_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    DCL_DEV port;
+} l4c_close_uart_port_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8	result;
+} l4c_close_uart_port_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+	DCL_DEV l1_port;
+	DCL_DEV ps_port;
+	kal_uint8 mode;
+} l4c_change_uart_port_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+	kal_uint8 result;
+} l4c_change_uart_port_cnf_struct;
+
+#endif
+
diff --git a/mcu/interface/protocol/general/l4c2uegw_struct.h b/mcu/interface/protocol/general/l4c2uegw_struct.h
new file mode 100644
index 0000000..c9d562a
--- /dev/null
+++ b/mcu/interface/protocol/general/l4c2uegw_struct.h
@@ -0,0 +1,140 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * L4C2UEGW_STRUCT.H
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file describes the common struct of UEGW and L4C.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _L4C2UEGW_STRUCT_H
+#define _L4C2UEGW_STRUCT_H
+
+#ifndef _TST_SAP_H
+#include "tst_sap.h"
+#endif
+
+typedef enum {
+    VMMI_URC_CHANNEL = 0,
+    VMMI_CHANNEL_START,
+    VMMI_DEFAULT_CHANNEL = VMMI_CHANNEL_START,
+    VMMI_EIF_CHANNEL,
+    VMMI_CHANNEL_END,
+} VmmiChannelEnum;
+
+#define MAX_VMMI_SIM_NUM 2
+#define MAX_VMMI_CHANNEL_NUM (VMMI_CHANNEL_END - VMMI_CHANNEL_START) //Not include URC channel
+
+typedef struct
+{
+    tst_module_string_inject_struct	tst_inject;
+    kal_uint8 ch_id;
+} l4uegw_at_response_ind_struct;
+
+typedef l4uegw_at_response_ind_struct l4vmmi_at_response_ind_struct;
+typedef l4uegw_at_response_ind_struct vmmi_atp_io_at_cmd_req_struct;
+
+#endif
+
diff --git a/mcu/interface/protocol/general/l4c2uem_struct.h b/mcu/interface/protocol/general/l4c2uem_struct.h
new file mode 100644
index 0000000..c2c1d78
--- /dev/null
+++ b/mcu/interface/protocol/general/l4c2uem_struct.h
@@ -0,0 +1,277 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   l4c2uem_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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.
+*
+********************************************************************************/
+
+
+/*******************************************************************************
+*  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) 2002
+*
+*******************************************************************************
+ *  FILENAME : l4c2uem_struct.h
+ *  SYNOPSIS : Functions for encoding/decoding.
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef _L4C2UEM_STRUCT_H
+#define _L4C2UEM_STRUCT_H
+
+#include "ps_public_struct.h"
+#ifdef __MULTI_LEVEL_BACKLIGHT_SUPPORT__
+#include "custom_hw_default.h"
+#endif
+#include "kal_public_defs.h"
+
+#define MAX_MELODY_FILE_NAME 50
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+} l4cuem_startup_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 response;
+    kal_uint8 cause;
+} l4cuem_startup_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 type;
+    kal_uint8 data1;
+    kal_uint8 data2;
+    kal_uint8 data3;
+} l4cuem_set_profile_req_struct;
+
+typedef struct {
+
+   kal_uint8 mode;
+   kal_uint8 melody[7];
+   kal_uint8 keytone[7];
+   kal_uint8 speech[7];
+   kal_uint8 mic;
+   kal_uint8 sidetone;
+   
+} l4cuem_audio_profile_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8	mode;
+	kal_uint8	melody[7];
+	kal_uint8	keytone[7];
+	kal_uint8	speech[7];
+	kal_uint8	mic;
+	kal_uint8	sidetone;
+
+} l4cuem_set_audio_profile_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 type;
+    kal_uint8 response;
+    kal_uint8 cause;
+} l4cuem_set_profile_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 response;
+    kal_uint8 cause;
+} l4cuem_set_audio_profile_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 response;
+    kal_uint8 cause;
+} l4cuem_set_audio_param_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 type;
+    kal_uint8 index;
+    kal_uint16 length;
+    kal_uint8 imelody[300];
+} l4cuem_store_imelody_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 response;
+    kal_uint8 cause;
+} l4cuem_store_imelody_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 index;
+} l4cuem_delete_imelody_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 response;
+    kal_uint8 cause;
+} l4cuem_delete_imelody_cnf_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8  src_id;
+   kal_uint16  file_name[MAX_MELODY_FILE_NAME];
+   kal_uint8   play_style;
+   kal_uint16  identifier;
+} 
+l4cuem_audio_play_by_name_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8  src_id;
+    kal_uint16  file_name[MAX_MELODY_FILE_NAME];
+} 
+l4cuem_audio_stop_by_name_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8  src_id;
+    kal_uint8   result;
+} 
+l4cuem_audio_play_by_name_cnf_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8  src_id;
+   kal_uint8   result;
+} 
+l4cuem_audio_stop_by_name_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+
+	kal_uint32 PWM1_freq_Level_Info[5];
+	kal_uint32 PWM1_duty_Level_Info[5]; 
+	kal_uint32 PWM2_freq_Level_Info[5]; 
+	kal_uint32 PWM2_duty_Level_Info[5];
+	kal_uint32 PWM3_freq_Level_Info[5]; 
+	kal_uint32 PWM3_duty_Level_Info[5]; 
+
+	kal_uint8   MainLCD_Contrast_Level_Info[15];
+	kal_uint8   MainLCD_Bias_Level_Info[5];
+	kal_uint8   MainLCD_Linerate_Level_Info[5];
+	kal_uint8   MainLCD_Temp_Level_Info[5];
+   
+	kal_uint8   SubLCD_Contrast_Level_Info[15];
+	kal_uint8   SubLCD_Bias_Level_Info[5];
+	kal_uint8   SubLCD_Linerate_Level_Info[5];
+	kal_uint8   SubLCD_Temp_Level_Info[5];
+
+	kal_uint32   Battery_Level_Info[10];
+#ifdef __MULTI_LEVEL_BACKLIGHT_SUPPORT__
+        kal_uint32 bl_PWM_freq_Level_Info[PWM_MAX_BACKLIGHT_LEVEL]; 
+	kal_uint32 bl_PWM_duty_Level_Info[PWM_MAX_BACKLIGHT_LEVEL]; 
+#endif
+} l4cuem_set_hw_level_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 response;
+    kal_uint8 cause;
+} l4cuem_set_hw_level_cnf_struct;
+
+
+#endif 
+
+
diff --git a/mcu/interface/protocol/general/l4c_as_inter_core_def.h b/mcu/interface/protocol/general/l4c_as_inter_core_def.h
new file mode 100644
index 0000000..ec3bda7
--- /dev/null
+++ b/mcu/interface/protocol/general/l4c_as_inter_core_def.h
@@ -0,0 +1,82 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2007
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ *   l4c_as_inter_core_def.h
+ *
+ * Project:
+ * --------
+ *   UMOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ *
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ******************************************************************************/
+
+#ifndef __L4C_AS_INTER_CORE_DEF_H__
+#define __L4C_AS_INTER_CORE_DEF_H__
+
+#define L4C_POWER_THRESHOLD_NUM 16
+#define MAX_L4C_CUSTOM_BAR_FREQ_NUM 3
+
+#ifndef UNIT_TEST
+  #define MAX_L4C_CUSTOM_BAR_CELL_NUM 10
+#else
+  #define MAX_L4C_CUSTOM_BAR_CELL_NUM 4
+#endif	
+
+#endif /* __L4C_AS_INTER_CORE_DEF_H__ */
diff --git a/mcu/interface/protocol/general/l4c_as_inter_core_struct.h b/mcu/interface/protocol/general/l4c_as_inter_core_struct.h
new file mode 100644
index 0000000..e87f4aa
--- /dev/null
+++ b/mcu/interface/protocol/general/l4c_as_inter_core_struct.h
@@ -0,0 +1,232 @@
+/*****************************************************************************
+*  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) 2014
+*
+*  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:
+ * ---------
+ *   l4c_as_inter_core_struct.h
+ *
+ * Project:
+ * --------
+ *   UMOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __L4C_AS_INTER_CORE_STRUCT_H__
+#define __L4C_AS_INTER_CORE_STRUCT_H__
+
+#include "kal_public_defs.h"
+#include "kal_general_types.h"
+#include "ps_public_def.h"
+#include "l4c_as_inter_core_def.h"
+
+typedef enum
+{
+    GSM_RSSI = 0,
+    UTRAN_RSCP,
+    UTRAN_ECNO,
+    LTE_RSRP,
+    LTE_RSRQ,
+    LTE_RSSNR,
+    C2K_1X_RSSI   = 6,
+    C2K_1X_ECIO,
+    C2K_EVDO_RSSI,
+    C2K_EVDO_ECIO = 9,
+    MAX_SIG_TYPE,
+}sig_type_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_power_level_on;
+} l4c_las_cell_power_meas_onoff_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    sig_type_enum sig_type;
+    kal_uint8 rsrp_threshold_num;
+    kal_uint8 rsrq_threshold_num;
+    kal_uint8 rs_snr_threshold_num;
+    kal_int16 rsrp_threshold[L4C_POWER_THRESHOLD_NUM];    
+    kal_int16 rsrq_threshold[L4C_POWER_THRESHOLD_NUM];
+    kal_int16 rs_snr_threshold[L4C_POWER_THRESHOLD_NUM]; /* Unit - qdbm */
+    kal_uint32 timer; /* Unit - ms*/
+} l4c_cell_power_threshold_config_req_struct;
+
+
+/* MSG_ID_L4C_ERRC_CUSTOM_BAR_LIST_REQ */
+/* action_enum*/
+typedef enum
+{
+	ERRC_CUSTOM_BAR_LIST_ADD,
+	ERRC_CUSTOM_BAR_LIST_DELETE,
+	ERRC_CUSTOM_BAR_LIST_QUERY
+}custom_bar_list_action_enum;
+
+/* cause_enum*/
+typedef enum
+{
+	ERRC_CUSTOM_BAR_CAUSE_IDLE_CONNECTED,		//ALPS05362947
+	ERRC_CUSTOM_BAR_CAUSE_CHECK_NEIGHBOR_SIGNAL,	//extended for ALPS05370680
+	ERRC_CUSTOM_BAR_CAUSE_MAX
+}custom_bar_cause_enum;
+
+typedef struct
+{
+	kal_uint32 earfcn;
+	kal_uint16 bar_time; /* Unit - sec*/
+}errc_bar_freq_info_struct;
+
+typedef struct
+{
+	kal_uint32 earfcn;
+	kal_uint16 pci;
+	kal_uint16 bar_time; /* Unit - sec*/
+}errc_bar_cell_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    custom_bar_list_action_enum action;
+	custom_bar_cause_enum bar_cause;
+
+	/*bar freq info*/
+	kal_bool bar_freq_list_valid;//could be ignored
+	kal_uint8	bar_freq_num;
+	errc_bar_freq_info_struct	bar_freq_info[MAX_L4C_CUSTOM_BAR_FREQ_NUM];//currently, max 3 earfcn
+	/*bar cell info*/
+	kal_bool bar_cell_list_valid;//could be ignored	
+	kal_uint8	bar_cell_num;
+	errc_bar_cell_info_struct	bar_cell_info[MAX_L4C_CUSTOM_BAR_CELL_NUM]; // max 4 lte cells for target
+} l4c_errc_custom_bar_list_req_struct;
+
+/* MSG_ID_L4C_ERRC_CUSTOM_BAR_LIST_CNF */
+typedef l4c_errc_custom_bar_list_req_struct l4c_errc_custom_bar_list_cnf_struct;//note that, barred freq/cell info is only provided when (req_action == LIST_QUERY)
+
+/*notify L4C about customer bar list clear by modem*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} l4c_errc_custom_bar_list_clear_ntf_struct;
+
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool ims_volte_support; /* 0 - VoLTE not supported, 1 - VoLTE supported*/
+    kal_bool ims_vonr_support; /* 0 - VoNR not supported, 1 - VoNR supported*/
+} l4c_errc_ims_config_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    sig_type_enum sig_type;
+    kal_uint8 num_thresholds;     // the number of thresholds
+    kal_int32 array_threshold[L4C_POWER_THRESHOLD_NUM];
+}l4cas_set_power_threshold_config_common_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 ssRsrp_threshold_num;
+    kal_uint8 ssRsrq_threshold_num;
+    kal_uint8 ssSinr_threshold_num;
+    kal_int16 ssRsrp_threshold[L4C_POWER_THRESHOLD_NUM];    
+    kal_int16 ssRsrq_threshold[L4C_POWER_THRESHOLD_NUM];
+    kal_int16 ssSinr_threshold[L4C_POWER_THRESHOLD_NUM]; /* Unit - qdbm */
+    kal_uint32 timer; /* Unit - ms*/
+} l4c_nrrc_cell_power_threshold_config_req_struct;
+
+
+#endif /* __L4C_AS_INTER_CORE_STRUCT_H__ */
diff --git a/mcu/interface/protocol/general/l4c_aux_struct.h b/mcu/interface/protocol/general/l4c_aux_struct.h
new file mode 100644
index 0000000..5aa7297
--- /dev/null
+++ b/mcu/interface/protocol/general/l4c_aux_struct.h
@@ -0,0 +1,266 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *	l4c_aux_struct.h
+ *
+ * Project:
+ * --------
+ *   MT6208
+ *
+ * Description:
+ * ------------
+ *   This file is intends for �K.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _L4C_AUX_STRUCT_H
+#define _L4C_AUX_STRUCT_H
+
+//#include "ps_public_enum.h"
+//#include "l4c2uem_struct.h"
+//#include "nvram_common_defs.h"
+//#include "ps_public_struct.h"
+
+//#include "l4c2phb_struct.h"
+//#include "kal_non_specific_general_types.h"
+//#include "l4c2abm_struct.h"
+//#include "l4c_common_enum.h"
+//#include "mcd_l4_common.h"
+//#include "nvram_common_defs.h"
+//#include "mmi_l3_enums.h"
+#include "kal_general_types.h"
+#include "ps_public_struct.h"
+#include "l1audio.h"
+
+#ifndef NVRAM_PHB_SIZE
+#define NVRAM_PHB_SIZE (54+MAX_PS_NAME_SIZE)
+#endif
+
+#ifndef PHB_EMAIL_SIZE
+#define PHB_EMAIL_SIZE 66
+#endif
+#ifndef PHB_ANR_SIZE
+#define PHB_ANR_SIZE 49
+#endif
+#ifndef GAS_MAX_ENTRIES_COUNT
+#define GAS_MAX_ENTRIES_COUNT          5
+#endif
+
+#ifndef RTT_STRING_SIZE
+#define RTT_STRING_SIZE          256
+#endif
+
+//#define DTMF_SEPARATOR     rmmi_char_p
+#define MAX_DTMF_LENGTH    10
+
+#define L4C_DEFAULT_NPI    1
+#define L4C_DEFAULT_ODD_EVEN_IND    1
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 codec;
+
+} l4c_med_voice_codec_ind_struct;
+
+typedef ilm_L4C_ERTT_STRING_t l4c_audio_erttstr_struct;
+
+#endif /* l4c_aux_struct.h*/
+
+
diff --git a/mcu/interface/protocol/general/l4c_ipcore_struct.h b/mcu/interface/protocol/general/l4c_ipcore_struct.h
new file mode 100644
index 0000000..683d16a
--- /dev/null
+++ b/mcu/interface/protocol/general/l4c_ipcore_struct.h
@@ -0,0 +1,89 @@
+/*****************************************************************************
+*  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) 2017
+*
+*  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:
+ * ---------
+ * l4c_ipcore_struct.h
+ *
+ * Project:
+ * --------
+ *   UMOLYA
+ *
+ * Description:
+ * ------------
+ *   This file describes the common struct between L4C and IPCORE
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef _L4C_IPCORE_STRUCT_H
+#define _L4C_IPCORE_STRUCT_H
+
+#include "kal_public_defs.h"
+#include "kal_general_types.h"
+#include "ps_public_enum.h"
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_ipcore_ul_throttle_action_enum ul_throttle_action;
+} l4c_ipcore_ul_throttle_req_struct;
+
+#endif /* _L4C_IPCORE_STRUCT_H */
diff --git a/mcu/interface/protocol/general/l4c_lbs_struct.h b/mcu/interface/protocol/general/l4c_lbs_struct.h
new file mode 100644
index 0000000..aae24d0
--- /dev/null
+++ b/mcu/interface/protocol/general/l4c_lbs_struct.h
@@ -0,0 +1,286 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *	l4c_lbs_struct.h
+ *
+ * Project:
+ * --------
+ *   MT6290
+ *
+ * Description:
+ * ------------
+ *   This file is intends for ...
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * 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 _L4C_LBS_STRUCT_H
+#define _L4C_LBS_STRUCT_H
+
+#include "kal_general_types.h"
+#include "l3_inc_enums_public.h"
+#if defined(__AGPS_CONTROL_PLANE__) && !defined(__MMI_FMI__)
+#include "ss_asn.h"
+#endif
+
+/* A-GPS Control Plane LCS Service */
+#if defined(__AGPS_CONTROL_PLANE__) && !defined(__MMI_FMI__)
+typedef struct
+{
+	LOCAL_PARA_HDR
+	SS2_LocationNotificationArg	notification;
+	kal_uint8	ss_id;
+} lbs_mtlr_begin_ind_struct;
+typedef struct
+{
+	LOCAL_PARA_HDR
+	SS2_LocationNotificationRes	response;
+	kal_uint8	ss_id;
+} lbs_mtlr_begin_res_req_struct;
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8	result;
+	kal_uint8	ss_id;
+} lbs_mtlr_begin_res_rsp_struct;
+typedef struct
+{
+	LOCAL_PARA_HDR
+	SS2_LCS_AreaEventRequestArg	aerq;
+	kal_uint8	ss_id;
+} lbs_aerq_begin_ind_struct;
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8	cause;
+	kal_uint8	ss_id;
+} lbs_aerq_begin_res_req_struct;
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8	result;
+	kal_uint8	ss_id;
+} lbs_aerq_begin_res_rsp_struct;
+typedef struct
+{
+    LOCAL_PARA_HDR
+    SS2_LCS_AreaEventReportArg	aerp;
+    kal_uint8	ss_id;
+    kal_uint8	is_initial;
+    kal_uint8   rat_info; //for CISS to recognize the operating rat: 0:2/3G, 1:4G
+} lbs_aerp_begin_req_struct;
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8	result;
+	kal_uint16	cause;
+	kal_uint8	ss_id;
+} lbs_aerp_begin_rsp_struct;
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8	cause;
+	kal_uint8	ss_id;
+} lbs_aerp_end_req_struct;
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8	result;
+} lbs_aerp_end_rsp_struct;
+typedef struct
+{
+	LOCAL_PARA_HDR
+	SS2_LCS_AreaEventCancellationArg	aecl;
+	kal_uint8	ss_id;
+} lbs_aecl_begin_ind_struct;
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8	cause;
+	kal_uint8	ss_id;
+} lbs_aecl_begin_res_req_struct;
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8	result;
+	kal_uint8	ss_id;
+} lbs_aecl_begin_res_rsp_struct;
+typedef struct
+{
+    LOCAL_PARA_HDR
+    SS2_LCS_MOLRArg molr;
+    kal_uint8	ss_id;
+    kal_uint8	is_initial;
+    kal_uint8   rat_info; //for CISS to recognize the operating rat: 0:2/3G, 1:4G
+} lbs_molr_begin_req_struct;
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8	result;
+	kal_uint16	cause;
+	SS2_LCS_MOLRRes	molr_res;
+	kal_uint8	ss_id;
+} lbs_molr_begin_rsp_struct;
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8	cause;
+	kal_uint8	ss_id;
+} lbs_molr_end_req_struct;
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8	result;
+} lbs_molr_end_rsp_struct;
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8	enable;
+} agps_enable_disable_req_struct;
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8	sib15_current_deciphering_key[7];
+	kal_uint8	sib15_next_deciphering_key[7];
+	kal_uint8	sib15_ciphering_key_flag;
+} agps_key_update_req_struct;
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8	is_abort_molr;
+} agps_cp_abort_req_struct;
+#endif /* defined(__AGPS_CONTROL_PLANE__) */
+
+#ifdef __AGPS_SUPPORT__
+/* below codes are for auto-test */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 mode;
+} agps_auto_test_ind_struct;
+
+typedef agps_auto_test_ind_struct agps_cp_up_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 response;
+} agps_mtlr_response_ind_struct;
+/* above are for GPS auto test */
+#endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 state;//0=out of service  1=in service
+} l4c_lbs_service_state_rsp_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 state;//0=local or unknown  1=roaming
+} l4c_lbs_roaming_state_rsp_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 state;//0=disconnected or unknown  1=connected
+} l4c_lbs_data_conn_state_rsp_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 rat_mode;//0=non-4G , 1=4G
+} l4c_lbs_current_rat_rsp_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 active_sim;
+    rat_enum  active_rat;
+} l4c_lbs_active_sim_rsp_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool emt_ongoing;
+} l4c_lbs_emt_info_ind_struct;
+
+#endif /* l4c_lbs_struct.h*/
+
+
diff --git a/mcu/interface/protocol/general/l4c_msg_hdlr_defs.h b/mcu/interface/protocol/general/l4c_msg_hdlr_defs.h
new file mode 100644
index 0000000..d022ce5
--- /dev/null
+++ b/mcu/interface/protocol/general/l4c_msg_hdlr_defs.h
@@ -0,0 +1,818 @@
+/*****************************************************************************
+*  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).
+*
+*****************************************************************************/
+ /*******************************************************************************
+ *  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) 2001
+ *
+ *******************************************************************************/
+
+ /*******************************************************************************
+ * Filename:
+ * ---------
+ *   l4c_msg_hdlr_defs.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   l4 related message / handler function mapping
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ ****************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+//#ifdef __MOD_CSM__
+L4C_CNF(MSG_ID_L4CCSM_CC_STARTUP_CNF, l4ccsm_cc_startup_cnf_hdlr) 
+//#ifdef __MOD_SMU__
+L4C_CNF(MSG_ID_L4CCSM_CC_ACM_RESET_CNF,l4ccsm_cc_acm_reset_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CC_ACMMAX_SET_CNF,l4ccsm_cc_acmmax_set_cnf_hdlr)
+//#endif /* __MOD_SMU__ */ 
+L4C_CNF(MSG_ID_L4CCSM_CC_LAST_CCM_RESET_CNF,l4ccsm_cc_ccm_reset_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CC_CRSS_CNF,l4ccsm_cc_crss_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CC_CALL_DEFLECTION_CNF,l4ccsm_cc_call_deflection_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CC_START_DTMF_CNF,l4ccsm_cc_start_dtmf_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CC_STOP_DTMF_CNF,l4ccsm_cc_stop_dtmf_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CC_CALL_ACCEPT_CNF,l4ccsm_cc_call_accept_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CC_CALL_MODIFY_CNF,l4ccsm_cc_call_modify_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CC_CALL_SETUP_CNF,l4ccsm_cc_call_setup_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CC_CALL_DISC_CNF,l4ccsm_cc_call_disc_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CC_EMERGENCY_CALL_SETUP_CNF,l4ccsm_cc_call_setup_cnf_hdlr) /* not implemented yet */
+L4C_CNF(MSG_ID_L4CCSM_CC_SAT_SETUP_CNF,l4ccsm_cc_sat_setup_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CC_SAT_SEND_DTMF_CNF,l4ccsm_cc_sat_send_dtmf_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CC_UPDATE_ALS_CNF,l4ccsm_cc_update_als_cnf_hdlr)
+#if defined(__IMS_SUPPORT__)
+L4C_CNF(MSG_ID_L4CCSM_CC_SRVCC_TRANSFER_CNF,l4ccsm_cc_srvcc_transfer_cnf_hdlr)
+#endif
+
+L4C_CNF(MSG_ID_L4CCSM_CISS_STARTUP_CNF,l4ccsm_ciss_startup_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CISS_SS_PARSE_CNF,l4ccsm_ciss_ss_parse_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CISS_CF_END_CNF,l4ccsm_ciss_cf_end_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CISS_CW_END_CNF,l4ccsm_ciss_cw_end_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CISS_CB_END_CNF,l4ccsm_ciss_cb_end_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CISS_EMLPP_END_CNF,l4ccsm_ciss_emlpp_end_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CISS_CLI_END_CNF,l4ccsm_ciss_cli_end_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CISS_CCBS_END_CNF,l4ccsm_ciss_ccbs_end_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CISS_PUSSR_END_CNF,l4ccsm_ciss_pussr_end_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CISS_USSR_END_CNF,l4ccsm_ciss_ussd_end_cnf_hdlr)           /* not implemented yet */
+L4C_CNF(MSG_ID_L4CCSM_CISS_USSN_END_CNF,l4ccsm_ciss_ussn_end_cnf_hdlr)
+//#ifdef __SAT__
+L4C_CNF(MSG_ID_L4CCSM_CISS_SIM_END_CNF,l4ccsm_ciss_sim_end_cnf_hdlr)
+//#endif
+
+//SSAGPS
+#ifdef __AGPS_CONTROL_PLANE__
+L4C_CNF(MSG_ID_L4CCSM_CISS_AERP_END_CNF,l4ccsm_ciss_aerp_end_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CCSM_CISS_MOLR_END_CNF,l4ccsm_ciss_molr_end_cnf_hdlr)
+#endif
+//#endif /* __MOD_CSM__ */ 
+
+//#ifdef __MOD_UEM__
+L4C_CNF(MSG_ID_L4CUEM_STARTUP_CNF,l4cuem_startup_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CUEM_SET_AUDIO_PROFILE_CNF,l4cuem_set_audio_profile_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CUEM_SET_AUDIO_PARAM_CNF,l4cuem_set_audio_param_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CUEM_SET_HW_LEVEL_CNF,l4cuem_set_hw_level_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CUEM_AUDIO_PLAY_BY_NAME_CNF,l4cuem_audio_play_by_name_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CUEM_AUDIO_STOP_BY_NAME_CNF,l4cuem_audio_stop_by_name_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CUEM_AUDIO_PLAY_BY_STRING_CNF,l4cuem_audio_play_by_string_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CUEM_AUDIO_STOP_BY_STRING_CNF,l4cuem_audio_stop_by_string_cnf_hdlr)
+//#endif /* __MOD_UEM__ */ 
+
+#ifdef __MOD_RAC__
+L4C_CNF(MSG_ID_L4CRAC_ACT_CNF,l4crac_act_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_REG_CNF,l4crac_reg_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_PS_REG_CNF,l4crac_ps_reg_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_DEREG_CNF,l4crac_dereg_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_PLMN_LIST_CNF,l4crac_plmn_list_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_CLASS_CHANGE_CNF,l4crac_class_change_cnf_hdlr)
+/* MOLY00083802 remove band related codes in RAC */
+L4C_CNF(MSG_ID_L4CRAC_RFOFF_CNF,l4crac_rfoff_cnf_hdlr)
+
+#ifdef __GEMINI__
+L4C_CNF(MSG_ID_L4CRAC_RSIM_AUTH_ABORT_CNF,l4crac_rsim_auth_abort_cnf_hdlr)
+L4C_IND(MSG_ID_L4CRAC_AUTH_FINISH_IND, l4crac_auth_finish_ind_hdlr)
+L4C_CNF(MSG_ID_L4C_AKA_RESOURCE_RELEASE_CNF,l4c_aka_resource_release_cnf_hdlr)
+L4C_IND(MSG_ID_L4CRAC_VIRTUAL_MODE_IND, l4crac_virtual_mode_ind_hdlr)
+#endif
+L4C_CNF(MSG_ID_L4CRAC_SET_ROAMING_MODE_CNF,l4crac_set_roaming_mode_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_PLMN_SEARCH_CNF,l4crac_plmn_search_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_SET_RAT_MODE_CNF,l4crac_set_rat_mode_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_PLMN_LIST_STOP_CNF,l4crac_plmn_list_stop_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_SET_PREFER_RAT_CNF,l4crac_set_prefer_rat_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_GET_PREFER_RAT_CNF,l4crac_get_prefer_rat_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_END_PS_DATA_SESSION_CNF,l4crac_end_ps_data_session_cnf_hdlr) //mtk02475: for Fast Dormancy
+L4C_CNF(MSG_ID_L4CRAC_CSG_LIST_CNF,l4crac_csg_list_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_CSG_LIST_STOP_CNF,l4crac_csg_list_stop_cnf_hdlr) 
+L4C_CNF(MSG_ID_L4CRAC_SET_SMS_PREFERENCE_CNF, l4crac_set_sms_preference_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_SET_VOICE_DOMAIN_PREFERENCE_CNF, l4crac_set_voice_domain_preference_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_SET_UE_USAGE_SETTING_CNF, l4crac_set_ue_usage_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_SET_UE_MODE_CNF, l4crac_set_ue_mode_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_SET_IMS_VOICE_AVAILABILITY_CNF, l4crac_set_ims_voice_availability_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_SET_IMS_SMS_AVAILABILITY_CNF, l4crac_set_ims_sms_availability_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_IMS_REG_STATUS_UPDATE_CNF, l4crac_ims_reg_status_update_cnf_hdlr)
+#if defined(__2STAGE_NW_SELECTION__)
+L4C_CNF(MSG_ID_L4CRAC_SUSP_RESU_UPDATE_CNF,l4crac_susp_resu_update_cnf_hdlr)
+#endif
+#ifdef __VOLTE_SUPPORT__
+L4C_CNF(MSG_ID_L4CRAC_SET_MM_IMS_VOICE_TERMINATION_CNF, l4crac_set_ims_voice_termination_cnf_hdlr)
+#endif /* __VOLTE_SUPPORT__ */
+L4C_CNF(MSG_ID_L4CRAC_SET_SMS_OVER_SGS_CNF, l4crac_set_sms_over_sgs_cnf_hdlr)
+
+L4C_CNF(MSG_ID_L4CRAC_DISABLE_EUTRAN_CNF, l4crac_disable_eutran_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_SET_HVOLTE_MODE_CNF, l4crac_set_hvolte_mode_cnf_hdlr)
+L4C_IND(MSG_ID_L4CRAC_REG_COMBINED_CAUSE_IND, l4crac_reg_combined_cause_ind_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_GET_CUSTOM_PLMN_LIST_CNF, l4crac_get_custom_plmn_list_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_VZWMRU_UPDATE_CNF, l4crac_vzwmru_update_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_OMADM_UPDATE_CNF, l4crac_omadm_update_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_IMS_SCM_CNF, l4crac_ims_scm_info_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_GET_LAST_RAT_SELECT_IND_CNF, l4c_nw_get_latest_rat_select_ind_cnf_hdlr)
+L4C_IND(MSG_ID_L4CRAC_RAT_CHANGE_START_IND, l4crac_rat_change_start_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_RAT_CHANGE_FINISH_IND, l4crac_rat_change_finish_ind_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_VG_OPTION_UPDATE_CNF, l4crac_e5gopt_set_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_UAC_PARAM_CHECK_CNF, l4crac_uac_para_check_cnf_hdlr)
+L4C_IND(MSG_ID_L4CRAC_UAC_ALLEVIATION_IND, l4crac_uac_alleviation_ind_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_SUSPEND_EGREG_UPDATE_CNF, l4crac_suspend_egreg_update_cnf_hdlr)
+
+L4C_IND(MSG_ID_L4CRAC_EMERGENCY_SERVICE_IND, l4crac_emergency_service_ind_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_EMERGENCY_SERVICE_CNF, l4crac_emergency_service_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_EMERGENCY_SERVICE_FALLBACK_CNF, l4crac_emergency_service_fallback_cnf_hdlr)
+
+L4C_CNF(MSG_ID_L4CRAC_GET_NSSAI_CNF, l4crac_get_nssai_list_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_SET_NSSAI_CNF, l4crac_set_nssai_list_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_SET_PREF_NSSAI_CNF, l4crac_set_pref_nssai_list_cnf_hdlr)
+
+#ifdef __MBIM_MS_NETWORK_BLACKLIST__
+L4C_CNF(MSG_ID_L4CRAC_FPLMN_ACTION_CNF, l4crac_fplmn_action_cnf_hdlr)
+L4C_IND(MSG_ID_L4CRAC_NW_BLACK_LIST_STATE_IND, l4crac_nw_black_list_state_ind_hdlr)
+#endif
+
+#endif /* __MOD_RAC__ */
+
+
+//#ifdef __MOD_PHB__
+L4C_CNF(MSG_ID_L4CPHB_STARTUP_CNF,l4cphb_startup_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CPHB_SEARCH_CNF,l4cphb_search_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CPHB_READ_CNF,l4cphb_read_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CPHB_WRITE_CNF,l4cphb_write_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CPHB_DELETE_CNF,l4cphb_delete_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CPHB_APPROVE_CNF,l4cphb_approve_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CPHB_WRITE_USIM_CNF,l4cphb_write_usim_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CPHB_READ_USIM_CNF,l4cphb_read_usim_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CPHB_DELETE_USIM_CNF,l4cphb_delete_usim_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CPHB_CHECK_WRITE_USIM_ENTRY_CNF,l4cphb_check_write_usim_entry_cnf_hdlr)
+//#endif /* __MOD_PHB__ */ 
+
+//#ifdef __MOD_SMU__
+L4C_CNF(MSG_ID_L4CSMU_START_CNF,l4csmu_start_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_APP_START_CNF, l4csmu_app_start_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_SECURITY_CNF,l4csmu_security_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_APP_SECURITY_CNF, l4csmu_app_security_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_SET_PERSONALIZATION_CNF,l4csmu_set_personalization_cnf_hdlr) /* SML */
+L4C_CNF(MSG_ID_L4CSMU_GET_SHARED_KEY_CNF,l4csmu_get_shared_key_cnf_hdlr) /* SML */
+L4C_CNF(MSG_ID_L4CSMU_UPDATE_SLB_CNF,l4csmu_update_slb_cnf_hdlr) /* SML */
+L4C_CNF(MSG_ID_L4CSMU_RESET_SLB_CNF,l4csmu_reset_slb_cnf_hdlr) /* SML */
+L4C_CNF(MSG_ID_L4CSMU_GET_SLB_VERSION_CNF,l4csmu_get_slb_version_cnf_hdlr) /* SML */
+L4C_CNF(MSG_ID_L4CSMU_GET_SIM_LOCK_STATUS_CNF,l4csmu_get_sim_lock_status_cnf_hdlr) /* SML */
+L4C_CNF(MSG_ID_L4CSMU_SML_EVENT_IND,l4csmu_sml_event_ind_hdlr) /* SML */
+L4C_CNF(MSG_ID_L4CSMU_SML_STATUS_CNF,l4csmu_sml_status_cnf_hdlr) /* SML */
+L4C_CNF(MSG_ID_L4CSMU_PLMN_SEL_WRITE_CNF,l4csmu_plmn_sel_write_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_SIM_ACCESS_CNF,l4csmu_sim_access_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_PUCT_WRITE_CNF,l4csmu_puct_write_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_CSP_READ_CNF,l4c_null_hdlr)
+#if defined (__SMS_DEPERSONALIZATION__)
+L4C_CNF(MSG_ID_L4CSMU_SMS_DEPERSONALIZATION_CNF,l4csmu_sms_depersonalization_cnf_hdlr)
+#endif
+L4C_CNF(MSG_ID_L4CSMU_DIAL_MODE_CNF,l4csmu_dial_mode_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_PUCT_READ_CNF,l4c_null_hdlr)
+L4C_IND(MSG_ID_L4CSMU_UICC_UNLOCK_CODE_IND,l4csmu_uicc_unlock_code_ind_hdlr)
+#ifdef __CARRIER_RESTRICTION__
+L4C_CNF(MSG_ID_L4CSMU_SET_CARRIER_RESTRICTION_CNF,l4csmu_set_carrier_restriction_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_CARRIER_RESTRICTION_STATUS_CNF,l4csmu_carrier_restriction_status_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_SET_CRRST_SECURE_DATA_CNF,l4csmu_set_crrst_secure_data_cnf_hdlr)
+#endif
+L4C_CNF(MSG_ID_L4CSMU_VZW_RSU_INITIATE_CNF,l4csmu_vzw_rsu_initiate_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_VZW_RSU_RESPONSE_CNF,l4csmu_vzw_rsu_response_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_VZW_RSU_DELAY_TIMER_CNF,l4csmu_vzw_rsu_delay_timer_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_VZW_RSU_DATA_RESET_CNF,l4csmu_vzw_rsu_data_reset_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_OP129_UPDATE_SIMLOCK_SETTING_CNF,l4csmu_op129_update_simlock_setting_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_OP129_GET_SIMLOCK_DATA_CNF,l4csmu_op129_get_simlock_data_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_GET_MODEM_CONFIG_CNF,l4csmu_get_modem_config_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_GET_API_VERSION_CNF,l4csmu_get_api_version_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_TMO_RSU_CREATE_UNLOCK_MSG_CNF,l4csmu_tmo_rsu_create_unlock_msg_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_TMO_RSU_PROCESS_MSG_CNF,l4csmu_tmo_rsu_process_msg_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_TMO_RSU_GET_SML_STATUS_CNF,l4csmu_tmo_rsu_get_sml_status_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_TMO_RSU_GET_REG_MSG_CNF,l4csmu_tmo_rsu_get_reg_msg_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_TMO_RSU_GET_ADAPTER_CONFIG_CNF,l4csmu_tmo_rsu_get_adapter_config_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMU_TMO_RSU_UPDATE_BLOB_CNF,l4csmu_tmo_rsu_update_blob_cnf_hdlr)
+#ifdef __MBIM_MS_NETWORK_BLACKLIST__
+L4C_CNF(MSG_ID_L4CSMU_SET_NW_BLACK_LIST_CNF, l4csmu_set_nw_black_list_cnf_hdlr)
+L4C_IND(MSG_ID_L4CSMU_NW_BLACK_LIST_STATE_IND, l4csmu_nw_black_list_state_ind_hdlr)
+#endif
+//#endif /* __MOD_SMU__ */ 
+
+//#ifdef __SAT__
+L4C_CNF(MSG_ID_SAT_MENU_SELECT_CNF,l4csat_menu_select_cnf_hdlr)
+//#endif
+/* SATcE End */
+
+//#ifdef __MOD_SMSAL__
+L4C_CNF(MSG_ID_L4CSMSAL_INIT_CNF,l4csmsal_init_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMSAL_READ_CNF,l4csmsal_read_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMSAL_SEND_CNF,l4csmsal_send_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMSAL_WRITE_CNF,l4csmsal_write_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMSAL_DELETE_CNF,l4csmsal_delete_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMSAL_SEND_FROM_STORAGE_CNF,l4csmsal_send_storage_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMSAL_SEND_ABORT_CNF,l4csmsal_send_abort_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMSAL_SEND_DELIVER_REPORT_CNF,l4csmsal_send_deliver_report_cnf_hdlr) 
+//#ifdef __SAT__
+L4C_CNF(MSG_ID_L4CSMSAL_SAT_SEND_CNF,l4csmsal_sat_send_cnf_hdlr)
+//#endif
+//#ifdef __CB__
+L4C_CNF(MSG_ID_L4CSMSAL_CB_UPDATE_CNF,l4csmsal_cb_update_cnf_hdlr)
+//#endif
+L4C_CNF(MSG_ID_L4CSMSAL_SET_COMMON_PARA_CNF,l4csmsal_set_common_para_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMSAL_SET_PROFILE_PARA_CNF,l4csmsal_set_profile_para_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMSAL_COPY_MSG_CNF,l4csmsal_copy_msg_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMSAL_SET_STATUS_CNF,l4csmsal_set_status_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMSAL_GET_MAILBOX_NUM_CNF,l4csmsal_get_mailbox_num_cnf_hdlr)
+#ifdef __CANCEL_LOCK_POWERON__           
+L4C_CNF(MSG_ID_L4CSMSAL_INIT_ME_SMS_CNF,l4csmsal_init_me_sms_cnf_hdlr)
+#endif
+L4C_CNF(MSG_ID_L4CSMSAL_SET_MSG_WAITING_CNF,l4csmsal_set_msg_waiting_cnf_hdlr)
+#ifdef __SMS_RAW_DATA_ACCESS_SUPPORT__           
+L4C_CNF(MSG_ID_L4CSMSAL_READ_RAW_DATA_CNF,l4csmsal_read_raw_data_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMSAL_WRITE_RAW_DATA_CNF,l4csmsal_write_raw_data_cnf_hdlr)
+#endif
+#if defined(__IMS_SUPPORT__) || defined(__SMS_IMS_SUPPORT__)
+L4C_CNF(MSG_ID_L4CSMSAL_IMS_SEND_CNF,l4csmsal_ims_send_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMSAL_IMS_SMS_DELIVER_CNF,l4csmsal_ims_receive_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMSAL_IMS_SMS_STATUS_CNF,l4csmsal_ims_status_report_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMSAL_IMS_SEND_SMMA_CNF,l4csmsal_ims_send_smma_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMSAL_IMS_SEND_FROM_STORAGE_CNF,l4csmsal_ims_send_from_storage_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CSMSAL_IMS_UPDATE_MSGBOX_CNF, l4csmsal_ims_update_msgbox_cnf_hdlr)
+#endif
+//#endif /* __MOD_SMSAL__ */ 
+
+//#ifdef __MOD_TCM__
+L4C_CNF(MSG_ID_TCM_PDP_ACTIVATE_CNF,tcm_pdp_activate_cnf_hdlr)
+L4C_CNF(MSG_ID_TCM_PDP_ACTIVATE_REJ,tcm_pdp_activate_rej_hdlr)
+
+L4C_CNF(MSG_ID_L4C_TCM_EPS_ATTACH_CNF,l4c_tcm_eps_attach_cnf_hdlr)
+L4C_CNF(MSG_ID_L4C_TCM_EPS_ATTACH_REJ,l4c_tcm_eps_attach_rej_hdlr)
+L4C_IND(MSG_ID_L4C_TCM_EPS_ATTACH_PDN_ACT_IND,l4c_tcm_eps_attach_pdn_act_ind_hdlr)
+
+L4C_CNF(MSG_ID_TCM_PDP_DEACTIVATE_CNF,tcm_pdp_deactivate_cnf_hdlr)
+L4C_CNF(MSG_ID_TCM_PDP_MODIFY_CNF,tcm_pdp_modify_cnf_hdlr)
+L4C_CNF(MSG_ID_TCM_PDP_MODIFY_REJ,tcm_pdp_modify_rej_hdlr)
+L4C_CNF(MSG_ID_L4CTCM_START_CNF,l4ctcm_start_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CTCM_SET_PRI_PDP_INFO_CNF,l4ctcm_set_context_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CTCM_SET_EXTENDED_PDP_INFO_CNF,l4ctcm_set_context_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CTCM_SYNC_APN_INFO_CNF, l4ctcm_set_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CTCM_SET_SEC_PDP_INFO_CNF,l4ctcm_set_context_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CTCM_SET_QOS_INFO_CNF,l4ctcm_set_context_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CTCM_SET_EQOS_INFO_CNF,l4ctcm_set_context_cnf_hdlr) /* CH_Liang 2005/08/04 R99 feature */
+L4C_CNF(MSG_ID_L4CTCM_SET_EPS_QOS_INFO_CNF, l4ctcm_set_context_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CTCM_SET_VGQOS_INFO_CNF, l4ctcm_set_context_cnf_hdlr)
+L4C_IND(MSG_ID_L4CTCM_LADN_INFO_UPDATE_IND, l4ctcm_ladn_info_update_hdlr)
+
+//L4C_CNF(MSG_ID_L4CTCM_SET_TFT_INFO_CNF,l4ctcm_set_cnf_hdlr)
+//L4C_CNF(MSG_ID_L4CTCM_SET_GPRS_STATISTICS_INFO_CNF,l4ctcm_set_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CTCM_SET_PPP_AUTH_CNF,l4ctcm_set_context_cnf_hdlr) //tommy add 031015 for danny 
+L4C_CNF(MSG_ID_L4CTCM_SET_MSQ_MODE_CNF,l4ctcm_set_cnf_hdlr) /* __MEDIATEK_SMART_QOS__ */
+L4C_CNF(MSG_ID_L4CTCM_SET_MSQ_ENTRY_CNF,l4ctcm_set_cnf_hdlr) /* __MEDIATEK_SMART_QOS__ */
+
+L4C_CNF(MSG_ID_L4CTCM_UNDEFINE_PDP_INFO_CNF,l4ctcm_set_context_cnf_hdlr) //mtk00714 w0633: AT definition
+L4C_CNF(MSG_ID_L4CTCM_SET_ACL_MODE_CNF,l4c_null_hdlr)
+L4C_CNF(MSG_ID_L4CTCM_GET_ACL_ENTRIES_CNF,l4c_null_hdlr)
+L4C_CNF(MSG_ID_L4CTCM_SET_ACL_ENTRY_CNF,l4c_null_hdlr)
+L4C_CNF(MSG_ID_L4CTCM_ADD_ACL_ENTRY_CNF,l4c_null_hdlr)
+L4C_CNF(MSG_ID_L4CTCM_DEL_ACL_ENTRY_CNF,l4c_null_hdlr)
+#if defined(__EXT_PDP_CONTEXT_ON__) && defined(__PS_DIALUP__)
+L4C_CNF(MSG_ID_L4CPPP_ACTIVATE_CNF,l4cppp_activate_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CPPP_DEACTIVATE_CNF,l4cppp_deactivate_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CPPP_RESUME_CNF,l4cppp_resume_cnf_hdlr)
+#else
+L4C_CNF(MSG_ID_L4CPPP_ACTIVATE_CNF,l4c_null_hdlr)
+L4C_CNF(MSG_ID_L4CPPP_DEACTIVATE_CNF,l4c_null_hdlr)
+L4C_CNF(MSG_ID_L4CPPP_RESUME_CNF,l4c_null_hdlr)
+#endif
+L4C_CNF(MSG_ID_L4CTCM_ENTER_DATA_MODE_CNF,l4ctcm_enter_data_mode_cnf_handler)
+L4C_CNF(MSG_ID_L4CTCM_LEAVE_DATA_MODE_CNF,l4ctcm_leave_data_mode_cnf_handler)
+L4C_CNF(MSG_ID_L4CTCM_SET_CGAUTH_INFO_CNF,l4ctcm_set_cgauth_info_cnf_handler) 
+L4C_CNF(MSG_ID_L4CTCM_QUERY_EXT_GPRS_HISTORY_RSP,l4c_null_hdlr) // R6 optimization
+L4C_CNF(MSG_ID_L4CTCM_RESET_EXT_GPRS_HISTORY_CNF,l4c_null_hdlr) // R6 optimization
+L4C_CNF(MSG_ID_L4CTCM_GET_GPRS_STATISTICS_INFO_RSP,l4c_null_hdlr)
+L4C_CNF(MSG_ID_L4CTCM_SET_MULTIPLE_PDN_INFO_CNF,l4ctcm_set_multiple_pdn_info_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CTCM_SET_SPECIFIC_CONTEXT_CNF,l4ctcm_set_specific_context_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CTCM_SET_EGPCO_CNF,l4ctcm_set_context_cnf_hdlr)
+
+//#endif /* __MOD_TCM__ */ 
+
+#ifdef __TCPIP__
+L4C_CNF(MSG_ID_L4CABM_START_CNF,l4c_ps_abm_start_cnf_hdlr) //modify in W04.11 for ask abm start after phonebook startup
+#else
+L4C_CNF(MSG_ID_L4CABM_START_CNF,l4c_null_hdlr) //modify in W04.11 for ask abm start after phonebook startup
+#endif
+
+
+
+L4C_CNF(MSG_ID_L4C_OPEN_UART_PORT_CNF,l4c_open_uart_port_cnf_hdlr)
+L4C_CNF(MSG_ID_L4C_CLOSE_UART_PORT_CNF,l4c_close_uart_port_cnf_hdlr)
+
+L4C_CNF(MSG_ID_L4C_CHANGE_UART_PORT_CNF,l4c_change_uart_port_cnf_hdlr)
+
+/*MSG from DT*/
+L4C_CNF(MSG_ID_L4CDT_DOWNLOAD_CNF,l4c_null_hdlr)
+L4C_CNF(MSG_ID_L4CDT_UPLOAD_CNF,l4c_null_hdlr)
+L4C_CNF(MSG_ID_L4CDT_FILELIST_CNF,l4c_null_hdlr)
+L4C_CNF(MSG_ID_L4CDT_FILECOUNT_CNF,l4c_null_hdlr)
+L4C_CNF(MSG_ID_L4CDT_DISKINFO_CNF,l4c_null_hdlr)
+
+#ifdef __NBR_CELL_INFO__
+L4C_CNF(MSG_ID_L4CPS_NBR_CELL_INFO_START_CNF,l4cps_nbr_cell_info_start_cnf_hdlr)  /*  081107 Lexel: for Cell info */
+L4C_CNF(MSG_ID_L4CPS_NBR_CELL_INFO_STOP_CNF,l4cps_nbr_cell_info_stop_cnf_hdlr)   /*  081107 Lexel: for Cell info */
+#endif
+
+/* MSG from EXT_MODEM */
+
+#if defined(__LTE_RAT__)
+
+L4C_CNF(MSG_ID_L4C_EVAL_NBR_CELL_INFO_START_CNF, l4c_null_hdlr)
+L4C_CNF(MSG_ID_L4C_EVAL_NBR_CELL_INFO_STOP_CNF, l4c_null_hdlr)
+L4C_IND(MSG_ID_L4C_EVAL_TIME_INFO_IND, l4c_eval_time_info_ind_hdlr)
+L4C_CNF(MSG_ID_L4C_EVAL_LTECA_BAND_SETTING_CNF, l4c_eval_lteca_band_update_cnf_hdlr)
+L4C_CNF(MSG_ID_L4C_EVAL_LTECA_MODE_SETTING_CNF, l4c_eval_lteca_mode_setting_cnf_hdlr)
+L4C_CNF(MSG_ID_L4C_EVAL_OMADM_UPDATE_CNF, l4c_eval_omadm_update_cnf_hdlr)
+L4C_CNF(MSG_ID_L4C_EVAL_MODULATION_UPDATE_CNF, l4c_eval_modulation_update_cnf_hdlr)
+L4C_CNF(MSG_ID_L4C_EVAL_GET_SSAC_PARAM_CNF, l4c_eval_get_ssac_param_cnf_hdlr)
+L4C_CNF(MSG_ID_L4C_EVAL_CA_BAND_COMB_LIST_CNF, l4c_nw_lteca_band_comb_list_cnf_hdlr)
+
+#ifdef __VOLTE_SUPPORT__
+L4C_IND(MSG_ID_L4C_EVAL_IMS_SYS_INFO_IND, l4c_eval_ims_sys_info_ind_hdlr)
+L4C_IND(MSG_ID_L4C_EVAL_BARRING_STATUS_IND, l4c_eval_barring_status_ind_hdlr)
+#endif /* __VOLTE_SUPPORT__ */
+L4C_IND(MSG_ID_L4C_EVAL_ERLM_REPORT_IND,l4c_eval_erlm_report_ind_hdlr)
+L4C_IND(MSG_ID_L4C_EVAL_ERLQ_REPORT_IND,l4c_eval_erlq_report_ind_hdlr)
+L4C_IND(MSG_ID_L4C_EVAL_EMM_MSG_IND,l4c_eval_emm_msg_ind_hdlr)
+L4C_CNF(MSG_ID_L4C_EVAL_LTE_TM9_FDD_TDD_SETTING_CNF, l4c_eval_lte_tm9_fdd_tdd_setting_cnf_hdlr)
+L4C_IND(MSG_ID_L4C_EVAL_PHY_CFG_INFO_IND, l4c_eval_nw_physical_config_info_ind_hdlr)
+L4C_CNF(MSG_ID_L4C_EL1_OMADM_UPDATE_CNF, l4c_el1_omadm_update_cnf_hdlr)
+#endif
+
+/* NEW CNF MSG for MMDC */
+L4C_CNF(MSG_ID_L4CRAC_SET_RECOVERY_SEARCH_TIMER_CNF, l4crac_set_recovery_search_timer_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_GET_RECOVERY_SEARCH_TIMER_CNF, l4crac_get_recovery_search_timer_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_SET_CT_MODE_CNF, l4crac_set_ct_mode_cnf_hdlr)
+
+//#ifdef __MOD_CSM__
+L4C_IND(MSG_ID_L4CCSM_CC_ATTACH_IND,l4ccsm_cc_attach_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CC_DETACH_IND,l4ccsm_cc_detach_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CC_CCM_IND,l4ccsm_cc_ccm_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CC_CALL_MODIFY_IND,l4ccsm_cc_call_modify_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CC_CALL_SETUP_IND,l4ccsm_cc_call_setup_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CC_CALL_ALERT_IND,l4ccsm_cc_call_alert_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CC_CALL_CONNECT_IND,l4ccsm_cc_call_connect_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CC_CALL_DISC_IND,l4ccsm_cc_call_disc_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CC_CALL_REL_IND,l4ccsm_cc_call_rel_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CC_PROGRESS_IND,l4c_null_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CC_CALL_PROC_IND,l4c_null_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CC_NOTIFY_SS_IND,l4ccsm_cc_notify_ss_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CC_AUTO_DTMF_START_IND,l4ccsm_cc_auto_dtmf_start_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CC_AUTO_DTMF_COMPLETE_IND,l4ccsm_cc_auto_dtmf_compl_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CC_CCBS_CALL_DEACTIVATE_IND,l4c_null_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CC_CALL_PREEMPT_IND,l4c_null_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CC_UART_TRANSFER_IND,l4ccsm_cc_uart_transfer_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CC_CSD_EST_IND,l4ccsm_cc_csd_est_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CPHS_DISPLAY_ALS_IND,l4ccsm_cphs_display_als_ind_hdlr) /* tommy 030722 add for ripple CPHS feature*/
+L4C_IND(MSG_ID_L4CCSM_CC_CALL_INFO_IND,l4ccsm_cc_call_info_ind_hdlr) /* tommy add 031002 for aux turn off loudspeaker and adc pool */
+L4C_IND(MSG_ID_L4CCSM_CC_CPI_IND,l4ccsm_cc_cpi_ind_hdlr) //mtk00714 add 20041210 for +ECPI
+L4C_IND(MSG_ID_L4CCSM_CC_CALL_SYNC_IND,l4ccsm_cc_call_sync_ind_hdlr) /*mtk00924 add 050727 for indicate MMI to get call info*/
+L4C_IND(MSG_ID_L4CCSM_CC_VIDEO_CALL_STATUS_IND,l4ccsm_cc_video_call_status_ind_hdlr)	
+L4C_IND(MSG_ID_L4CCSM_CC_UPDATE_CALL_STATE_IND,l4ccsm_cc_update_call_state_ind_hdlr) /* MAUI_01315252, update call state */
+L4C_IND(MSG_ID_L4CCSM_CC_CALL_PRESENT_IND,l4ccsm_cc_call_present_ind_hdlr)
+
+
+L4C_IND(MSG_ID_L4CCSM_CISS_USSR_BEGIN_IND,l4ccsm_ciss_ussr_begin_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CISS_USSN_BEGIN_IND,l4ccsm_ciss_ussn_begin_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CISS_USSR_FAC_IND,l4ccsm_ciss_ussr_fac_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CISS_USSN_FAC_IND,l4ccsm_ciss_ussn_fac_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CISS_CB_FAC_IND,l4c_null_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CPHS_DISPLAY_CFU_IND,l4ccsm_cphs_display_cfu_ind_hdlr) /* tommy 030602 add for paul CPHS feature*/
+//SSAGPS
+#ifdef __AGPS_CONTROL_PLANE__
+L4C_IND(MSG_ID_L4CCSM_CISS_MTLR_BEGIN_IND,l4ccsm_ciss_mtlr_begin_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CISS_AERQ_BEGIN_IND,l4ccsm_ciss_aerq_begin_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CISS_AERP_FAC_IND,l4ccsm_ciss_aerp_fac_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CISS_AECL_BEGIN_IND,l4ccsm_ciss_aecl_begin_ind_hdlr)
+L4C_IND(MSG_ID_L4CCSM_CISS_MOLR_FAC_IND,l4ccsm_ciss_molr_fac_ind_hdlr)
+#endif
+//#endif /* __MOD_CSM__ */ 
+
+#ifdef __MOD_RAC__
+//L4C_IND(MSG_ID_L4CRAC_REG_IND,)
+L4C_IND(MSG_ID_L4CRAC_REG_STATE_IND,l4crac_reg_state_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_REG_CAUSE_IND,l4crac_reg_cause_ind_hdlr) // __NW_REG_CAUSE_REPORT__ mtk02285 20090310
+L4C_IND(MSG_ID_L4CRAC_INVALID_SIM_RECOVER_IND,l4crac_invalid_sim_recover_hdlr)
+// L4C_IND(MSG_ID_L4CRAC_RX_LEVEL_IND,) //rx_level, mtk02285, remove old interface
+L4C_IND(MSG_ID_L4CRAC_NW_INFO_IND,l4crac_nw_info_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_CIPHER_IND,l4crac_cipher_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_NW_ECC_IND,l4crac_nw_ecc_ind_hdlr)//mtk01616_070905: for R5 ECC category
+L4C_IND(MSG_ID_L4CRAC_PS_EVENT_REPORT_IND,l4crac_ps_event_report_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_MT_PAGE_IND,l4crac_mt_paging_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_SEND_ESR_IND,l4crac_send_esr_ind_hdlr)
+#ifdef __TC10__
+L4C_IND(MSG_ID_L4CRAC_GPRS_TRAFFIC_CHANNEL_STATUS_IND,l4crac_gprs_traffic_channel_status_ind_hdlr)
+#endif
+#ifdef __HOMEZONE_SUPPORT__
+L4C_IND(MSG_ID_L4CRAC_HZ_CELL_INFO_UPDATE_IND,l4crac_hz_cell_info_update_ind_hdlr) /* CH_Liang 2005.05.31 Homezone feature */
+L4C_IND(MSG_ID_L4CRAC_HZ_DEDICATED_MODE_IND,l4crac_hz_dedicated_mode_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_HZ_PKT_TRANSFER_MODE_IND,l4crac_hz_pkt_transfer_mode_ind_hdlr)
+#endif /* __HOMEZONE_SUPPORT__ */ 
+#ifdef __GEMINI__
+L4C_IND(MSG_ID_L4CRAC_SEARCH_NORMAL_FINISH_IND,l4crac_search_normal_finish_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_MMRR_SERVICE_STATUS_IND,l4crac_mmrr_service_status_ind_hdlr)	// for solving emergecy call issue in Gemini
+#endif /* __GEMINI__ */ 
+
+#if defined(__REPORT_AVAILABLE_PLMN__)
+L4C_IND(MSG_ID_L4CRAC_PLMN_LIST_IND,l4crac_plmn_list_ind_hdlr)
+#endif
+#if defined(__2STAGE_NW_SELECTION__)
+L4C_IND(MSG_ID_L4CRAC_SUSPEND_STATUS_IND,l4crac_suspend_status_ind_hdlr)
+#endif
+
+L4C_IND(MSG_ID_L4CRAC_PLMN_STATUS_IND, l4crac_plmn_status_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_NW_FEATURE_IND, l4crac_nw_feature_ind_hdlr)
+
+#ifdef __LTE_RAT__
+L4C_IND(MSG_ID_L4CRAC_EPS_ATTACH_NEEDED_IND, l4crac_eps_attach_needed_ind_hdlr)
+
+L4C_IND(MSG_ID_L4C_EVAL_NBR_CELL_INFO_IND, l4c_null_hdlr)
+L4C_IND(MSG_ID_L4CRAC_PEER_REJECT_IND, l4c_null_hdlr)
+#ifdef __IMS_SUPPORT__
+L4C_IND(MSG_ID_L4CRAC_UPDATE_SMS_PREFERENCE_IND, l4crac_update_sms_preference_ind_hdlr)
+L4C_IND(MSG_ID_L4C_NAS_SV_SRVCC_STATUS_UPDATE_IND, l4c_nas_sv_srvcc_status_update_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_IMS_SERVICE_IND, l4crac_ims_service_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_IMS_REG_TIMEOUT_IND, l4crac_ims_reg_timeout_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_UEMODE_PARAM_UPDATE_IND, l4crac_uemode_param_update_ind_hdlr)
+#endif /* __IMS_SUPPORT__ */
+#endif /* __LTE_RAT__ */
+
+L4C_IND(MSG_ID_L4CRAC_RAT_SELECT_IND, l4crac_rat_select_ind_hdlr)
+
+L4C_IND(MSG_ID_L4CRAC_REPORTED_RAT_CHANGE_IND, l4crac_reported_rat_change_ind_hdlr)
+
+L4C_IND(MSG_ID_L4CRAC_RESTART_CLEAR_CODE_33_PROC_IND, l4crac_restart_clear_code_33_proc_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_UPDATE_SMS_OVER_SGS_CFG_IND, l4crac_update_sms_over_sgs_cfg_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_LTE_BANDWIDTH_IND, l4crac_lte_bandwidth_ind_hdlr)
+
+L4C_IND(MSG_ID_L4CRAC_C2K_SERVICE_IND, l4crac_c2k_service_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_C2K_CELL_INFO_IND, l4crac_c2k_cell_info_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_1X_CONN_STATUS_IND, l4crac_1x_conn_status_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_EMC_DETACH_IND,l4crac_emc_detach_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_ACTIVE_RAT_IND, l4crac_active_rat_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_SUSPEND_EGREG_UPDATE_IND, l4crac_suspend_egreg_update_ind_hdlr)
+
+//#if defined(__FAST_ROAMING_SEARCH__)
+L4C_IND(MSG_ID_L4CRAC_PLMN_FOUND_IND, l4crac_plmn_found_ind_hdlr) /*First found PLMN information, Sent even before camping*/
+//#endif
+L4C_IND(MSG_ID_L4CRAC_NON_3GPP_NW_POLICIES_IND,l4crac_non_3gpp_nw_policies_ind_hdlr) /* Non-3GPP NW provided policies IE */
+L4C_IND(MSG_ID_L4CRAC_ILLEGAL_ME_IND, l4crac_illegal_me_ind_hdlr)
+
+L4C_IND(MSG_ID_L4CRAC_VGMM_PROC_FAILURE_IND, l4crac_vgmm_proc_failure_ind_hdlr)
+
+L4C_REQ(MSG_ID_L4BNW_L4C_SUSPEND_EGREG_UPDATE_REQ, l4crac_suspend_egreg_update_req_hdlr)
+
+L4C_IND(MSG_ID_L4CRAC_CAMP_UI_IND,l4crac_camp_ui_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_NW_REG_REJ_IND, l4crac_nw_reg_rej_ind_hdlr)
+
+L4C_IND(MSG_ID_L4CRAC_NAS_SV_T3402_STOP_IND, l4crac_nas_sv_t3402_stop_ind_hdlr)
+
+#endif /* __MOD_RAC__ */
+
+#ifdef __CDMA2000_RAT__
+L4C_IND(MSG_ID_L4C_CSS_ACTIVE_RAT_IND, l4c_css_active_rat_ind_hdlr)
+#endif
+
+L4C_IND(MSG_ID_L4CRAC_NRRC_STATE_IND, l4crac_nrrc_state_ind_hdlr)
+
+/* SIM BEGIN */	
+L4C_IND(MSG_ID_L4CSMU_SECURITY_IND,l4csmu_security_cnf_hdlr)
+L4C_IND(MSG_ID_L4CSMU_MMRR_READY_IND,l4csmu_mmrr_ready_ind_hdlr) // 030822 tommy add for power on enhance for Paul	
+L4C_IND(MSG_ID_L4CSMU_MMI_INFO_IND,l4csmu_mmi_info_ind_hdlr) // 030609 tommy add for CPHS feature for Paul
+L4C_IND(MSG_ID_L4CSMU_APP_READY_IND,l4csmu_app_ready_ind_hdlr)
+L4C_IND(MSG_ID_L4CSMU_EVENT_IND,l4csmu_event_ind_hdlr)
+#if defined (__SMS_DEPERSONALIZATION__)
+L4C_IND(MSG_ID_L4CSMU_SML_STATUS_NOTIFY_IND,l4csmu_sml_status_notify_ind_hdlr)
+#endif
+L4C_IND(MSG_ID_L4CSMU_ICCID_READY_IND,l4csmu_iccid_ready_ind_hdlr)
+
+/* SAT BEGIN */	
+//#ifdef __SAT__
+L4C_IND(MSG_ID_SAT_DSPL_TEXT_IND,l4csat_dspl_text_ind_hdlr)
+L4C_IND(MSG_ID_SAT_GET_INKEY_IND,l4csat_get_inkey_ind_hdlr)
+L4C_IND(MSG_ID_SAT_GET_INPUT_IND,l4csat_get_input_ind_hdlr)
+L4C_IND(MSG_ID_SAT_SETUP_MENU_IND,l4csat_setup_menu_ind_hdlr)
+L4C_IND(MSG_ID_SAT_SELECT_ITEM_IND,l4csat_select_item_ind_hdlr)
+L4C_IND(MSG_ID_SAT_PLAY_TONE_IND,l4csat_play_tone_ind_hdlr)
+L4C_IND(MSG_ID_SAT_SETUP_CALL_IND,l4csat_setup_call_ind_hdlr)
+L4C_IND(MSG_ID_SAT_SEND_SMS_IND,l4csat_send_sms_ind_hdlr)
+L4C_IND(MSG_ID_SAT_SEND_SS_IND,l4csat_send_ss_ind_hdlr)
+L4C_IND(MSG_ID_SAT_SEND_USSD_IND,l4csat_send_ussd_ind_hdlr)
+L4C_IND(MSG_ID_SAT_MMI_INFO_IND,l4csat_mmi_info_ind_hdlr)
+/* tommy 030602 add for paul new indication */
+L4C_IND(MSG_ID_SAT_SETUP_IDLE_DSPL_IND,l4csat_setup_idle_dspl_ind_hdlr) 
+L4C_IND(MSG_ID_SAT_RUN_AT_COMMAND_IND,l4csat_run_at_command_ind_hdlr)
+L4C_IND(MSG_ID_SAT_SEND_DTMF_IND,l4csat_send_dtmf_ind_hdlr)
+L4C_IND(MSG_ID_SAT_LANG_NOTIFY_IND,l4csat_lang_notify_ind_hdlr)
+L4C_IND(MSG_ID_SAT_LAUNCH_BROWSER_IND,l4csat_launch_browser_ind_hdlr)
+L4C_IND(MSG_ID_SAT_NO_OTHER_CMD_IND,l4csat_no_other_cmd_ind_hdlr)
+L4C_IND(MSG_ID_SAT_REFRESH_NOTIFY_IND,l4csat_refresh_notify_ind_hdlr)
+#ifdef __TC10__
+L4C_IND(MSG_ID_SAT_REFRESH_NOTI_IND,l4csat_refresh_noti_ind_hdlr)
+L4C_IND(MSG_ID_SAT_REFRESH_VOTING_IND,l4csat_refresh_voting_ind_hdlr)
+L4C_IND(MSG_ID_SAT_CALL_CTRL_RESULT_NOTI_IND,l4csat_call_ctrl_result_noti_ind_hdlr)
+#endif
+/* End Benson SATcE */
+//#endif /* __SAT__ */ 
+
+
+//#ifdef __CB__
+L4C_IND(MSG_ID_L4CSMSAL_CB_MSG_TEXT_IND,l4csmsal_cb_msg_text_ind_hdlr)
+L4C_IND(MSG_ID_L4CSMSAL_CB_MSG_PDU_IND,l4csmsal_cb_msg_pdu_ind_hdlr)
+L4C_IND(MSG_ID_L4CSMSAL_CB_DL_IND,l4c_null_hdlr)
+//#endif /* __CB__ */ 
+L4C_IND(MSG_ID_L4CSMSAL_MT_SMS_FINAL_ACK_IND,l4csmsal_mt_sms_final_ack_ind_hdlr) 
+L4C_IND(MSG_ID_L4CSMSAL_MEM_FULL_IND,l4csmsal_mem_full_ind_hdlr)
+L4C_IND(MSG_ID_L4CSMSAL_MEM_EXCEED_IND,l4csmsal_mem_exceed_ind_hdlr)
+L4C_IND(MSG_ID_L4CSMSAL_MEM_AVAILABLE_IND,l4csmsal_mem_available_ind_hdlr)
+L4C_IND(MSG_ID_L4CSMSAL_MSG_WAITING_IND,l4csmsal_msg_waiting_ind_hdlr)
+L4C_IND(MSG_ID_L4CSMSAL_ENHANCED_VOICE_MAIL_IND,l4csmsal_enhanced_voice_mail_ind_hdlr)  
+L4C_IND(MSG_ID_L4CSMSAL_NEW_MSG_PDU_IND,l4csmsal_new_msg_pdu_ind_hdlr)
+L4C_IND(MSG_ID_L4CSMSAL_NEW_MSG_TEXT_IND,l4csmsal_new_msg_text_ind_hdlr)
+L4C_IND(MSG_ID_L4CSMSAL_NEW_MSG_INDEX_IND,l4csmsal_new_msg_index_ind_hdlr)
+L4C_IND(MSG_ID_L4CSMSAL_APP_DATA_IND,l4csmsal_app_data_ind_hdlr)
+L4C_IND(MSG_ID_L4CSMSAL_SYNC_MSG_IND,l4csmsal_sync_msg_ind_hdlr)
+L4C_IND(MSG_ID_L4CSMSAL_STARTUP_READ_MSG_IND,l4csmsal_startup_read_msg_ind_hdlr)
+L4C_IND(MSG_ID_L4CSMSAL_STARTUP_BEGIN_IND,l4csmsal_startup_begin_ind_hdlr)
+L4C_IND(MSG_ID_L4CSMSAL_STARTUP_FINISH_IND,l4csmsal_startup_finish_ind_hdlr)
+L4C_IND(MSG_ID_L4CSMSAL_FDN_CHECK_IND,l4csmsal_fdn_check_ind_hdlr)
+#if defined (__SMS_DEPERSONALIZATION__)
+L4C_IND(MSG_ID_L4CSMSAL_SMS_DEPERSONALIZATION_IND,l4csmsal_depersonalization_ind_hdlr)
+#endif
+#ifdef __HOMEZONE_SUPPORT__
+L4C_IND(MSG_ID_L4CSMSAL_HZ_CB_MSG_IND,l4csmsal_hz_cb_msg_ind_hdlr) /* temp use */
+#endif 
+L4C_IND(MSG_ID_L4CSMSAL_CB_GS_CHANGE_IND,l4csmsal_cb_gs_change_ind_hdlr)
+
+
+//#ifdef __MOD_TCM__
+L4C_IND(MSG_ID_TCM_PDP_ACTIVATE_IND,tcm_pdp_activate_ind_hdlr)
+#ifdef __TURN_ON_GENERAL_SECONDARY_PDP__
+L4C_IND(MSG_ID_TCM_SEC_PDP_ACTIVATE_IND,tcm_sec_pdp_activate_ind_hdlr)
+#endif
+L4C_IND(MSG_ID_TCM_PDP_DEACTIVATE_IND,tcm_pdp_deactivate_ind_hdlr)
+L4C_IND(MSG_ID_TCM_PDP_MODIFY_IND,tcm_pdp_modify_ind_hdlr) // __GPRS_BEARER_REPORT_NEGOTIATED_QOS__	
+L4C_IND(MSG_ID_TCM_MOBILITY_STATUS_IND,l4c_null_hdlr)     // mtk02126: NOT USED
+L4C_IND(MSG_ID_TCM_EVENT_REP_IND,l4c_null_hdlr)           // mtk02126: Only found in comments
+//#if defined(__SP_RIL_SUPPORT__) //TCM should wrapped the code more well
+L4C_IND(MSG_ID_L4CTCM_PS_EVENT_REPORT_IND,l4ctcm_ps_event_report_ind_hdlr)
+//#endif 
+#if defined(__HSDPA_SUPPORT__)
+L4C_IND(MSG_ID_L4CTCM_BEARER_CAPABILITY_IND,l4ctcm_bearer_capability_ind_hdlr) //hspa_mmi_h2, mtk02285
+#endif 
+#if defined(__EXT_PDP_CONTEXT_ON__) && defined(__PS_DIALUP__)    
+L4C_IND(MSG_ID_L4CPPP_DEACTIVATE_IND,l4cppp_deactivate_ind_hdlr)
+L4C_IND(MSG_ID_L4CPPP_ESCAPE_IND,l4cppp_escape_ind_hdlr)
+#else
+L4C_IND(MSG_ID_L4CPPP_DEACTIVATE_IND,l4c_null_hdlr)
+L4C_IND(MSG_ID_L4CPPP_ESCAPE_IND,l4c_null_hdlr)
+#endif
+L4C_IND(MSG_ID_L4CPPP_PPPTYPEPDP_ACTIVATED_IND,l4c_null_hdlr) // Carlson 2009.04.18 PPP Type PDP Dialup Feature
+#if defined(__EXT_PDP_CONTEXT_ON__) && defined(__PS_DIALUP__)
+L4C_IND(MSG_ID_L4CPPP_IPV4V6_FALLBACK_IND,l4cppp_ipv4v6_fallback_ind_hdlr)
+L4C_IND(MSG_ID_L4CPPP_INITIAL_IP_TYPE_IND,l4cppp_initial_ip_type_ind_hdlr)
+#else
+L4C_IND(MSG_ID_L4CPPP_IPV4V6_FALLBACK_IND,l4c_null_hdlr)
+L4C_IND(MSG_ID_L4CPPP_INITIAL_IP_TYPE_IND,l4c_null_hdlr)
+#endif    
+
+//#endif /* __MOD_TCM__ */ 
+
+L4C_IND(MSG_ID_L4CPHB_STARTUP_BEGIN_IND,l4cphb_startup_begin_ind_hdlr) 
+L4C_IND(MSG_ID_FLC_STATUS_REPORT_IND,l4c_null_hdlr)
+
+#ifdef __NBR_CELL_INFO__
+L4C_IND(MSG_ID_L4CPS_NBR_CELL_INFO_IND,l4cps_nbr_cell_info_ind_hdlr)   /* 081107 Lexel: for Cell info*/
+#endif
+
+L4C_IND(MSG_ID_L4CPS_GAS_CELL_POWER_LEVEL_IND,l4cps_gas_cell_power_level_ind_hdlr) //rx_level, mtk02285
+#ifdef __UMTS_RAT__
+L4C_IND(MSG_ID_L4CPS_UAS_CELL_POWER_LEVEL_IND,l4cps_uas_cell_power_level_ind_hdlr)
+#endif
+#ifdef __LTE_RAT__
+L4C_IND(MSG_ID_L4C_EVAL_CELL_POWER_LEVEL_IND, l4c_eval_cell_power_level_ind_hdlr)
+L4C_IND(MSG_ID_L4C_EVAL_CONNECTED_DRB_IND, l4c_eval_connected_drb_ind_hdlr)
+
+#endif
+
+#ifdef __NR_RAT__
+L4C_IND(MSG_ID_L4C_NRRC_CELL_POWER_LEVEL_IND, l4c_nrrc_cell_power_level_ind_hdlr)
+L4C_CNF(MSG_ID_L4C_NRRC_CA_BAND_COMB_LIST_CNF, l4c_nw_nrrc_band_comb_list_cnf_hdlr)
+L4C_IND(MSG_ID_L4C_NRRC_DRB_INFO_IND, l4c_nrrc_drb_info_ind_hdlr)
+#endif /* __NR_RAT__ */
+
+#ifdef __IMS_SUPPORT__
+L4C_IND(MSG_ID_L4CPS_GAS_AUTO_FAST_RETURN_IND, l4cps_gas_auto_fast_return_ind_hdlr)
+L4C_IND(MSG_ID_L4CPS_UAS_AUTO_FAST_RETURN_IND, l4cps_uas_auto_fast_return_ind_hdlr)
+#endif
+
+/* MSG from EXT_MODEM */
+
+#if defined(__NO_PSDATA_SEND_SCRI__) || defined(__FAST_DORMANCY__)
+L4C_IND(MSG_ID_L4CRAC_END_PS_DATA_SESSION_IND, l4crac_end_ps_data_session_ind_hdlr)
+#endif
+
+#if defined(__ACMT_SUPPORT__)
+L4C_IND(MSG_ID_L4C_PROTOCOL_REJ_IND, l4c_protocol_rej_ind_hdlr)
+#endif
+
+L4C_REQ(MSG_ID_L4C_OPEN_UART_PORT_REQ,l4c_null_hdlr)
+L4C_REQ(MSG_ID_L4C_CLOSE_UART_PORT_REQ,l4c_null_hdlr)
+
+L4C_REQ(MSG_ID_L4C_CHANGE_UART_PORT_REQ,l4c_null_hdlr)
+
+#if defined(__IMS_SUPPORT__) || defined(__SMS_IMS_SUPPORT__)
+L4C_IND(MSG_ID_L4CSMSAL_IMS_NEW_MSG_PDU_IND,l4csmsal_ims_new_msg_pdu_ind_hdlr)
+L4C_IND(MSG_ID_L4CSMSAL_IMS_NEW_MSG_TEXT_IND,l4csmsal_ims_new_msg_text_ind_hdlr)
+L4C_IND(MSG_ID_L4CSMSAL_IMS_DELIVER_REPORT_ACK_IND, l4csmsal_ims_deliver_report_ack_ind_hdlr)
+L4C_IND(MSG_ID_L4CSMSAL_IMS_DELIVER_REPORT_NACK_IND, l4csmsal_ims_deliver_report_nack_ind_hdlr)
+L4C_IND(MSG_ID_L4CSMSAL_IMS_SEND_SMMA_IND, l4csmsal_ims_send_smma_ind_hdlr)
+#endif
+
+L4C_IND(MSG_ID_L4C_MED_VOICE_CODEC_IND,l4c_med_voice_codec_ind_hdlr)
+
+//SS LBS
+#ifdef __AGPS_CONTROL_PLANE__ //the following msg will be forwarded to l4c_lbs_message_dispatch()
+L4C_REQ(MSG_ID_LBS_MTLR_BEGIN_RES_REQ,l4c_null_hdlr)
+L4C_REQ(MSG_ID_LBS_AERQ_BEGIN_RES_REQ,l4c_null_hdlr)
+L4C_REQ(MSG_ID_LBS_AERP_BEGIN_REQ,l4c_null_hdlr)
+L4C_REQ(MSG_ID_LBS_AERP_END_REQ,l4c_null_hdlr)
+L4C_REQ(MSG_ID_LBS_AECL_BEGIN_RES_REQ,l4c_null_hdlr)
+L4C_REQ(MSG_ID_LBS_MOLR_BEGIN_REQ,l4c_null_hdlr)
+L4C_REQ(MSG_ID_LBS_MOLR_END_REQ,l4c_null_hdlr)
+L4C_REQ(MSG_ID_AGPS_ENABLE_DISABLE_REQ,l4c_null_hdlr)
+L4C_REQ(MSG_ID_AGPS_KEY_UPDATE_REQ,l4c_null_hdlr)
+L4C_REQ(MSG_ID_AGPS_CP_ABORT_REQ,l4c_null_hdlr)
+#endif
+//#ifdef __AGPS_SUPPORT__
+L4C_REQ(MSG_ID_L4C_LBS_SERVICE_STATE_REQ,l4c_lbs_service_state_req_hdlr)
+L4C_REQ(MSG_ID_L4C_LBS_ROAMING_STATE_REQ,l4c_lbs_roaming_state_req_hdlr)
+L4C_REQ(MSG_ID_L4C_LBS_DATA_CONN_STATE_REQ,l4c_lbs_data_conn_state_req_hdlr)
+L4C_REQ(MSG_ID_L4C_LBS_CURRENT_RAT_REQ,l4c_lbs_current_rat_req_hdlr)
+L4C_REQ(MSG_ID_L4C_LBS_ACTIVE_SIM_REQ,l4c_lbs_active_sim_req_hdlr)
+//#endif
+
+#ifdef __CDMA2000_RAT__
+L4C_IND(MSG_ID_L4CRAC_GMSS_STOP_SEARCH_IND, l4crac_gmss_stop_search_ind_hdlr)
+#else
+L4C_IND(MSG_ID_L4CRAC_GMSS_STOP_SEARCH_IND, l4c_null_hdlr)
+#endif
+L4C_IND(MSG_ID_L4C_C2K_UT_CHECK_CONTEXT_IND,l4c_null_hdlr)
+L4C_IND(MSG_ID_L4C_C2K_UT_CHECK_LWCG_CONTEXT_IND, l4c_null_hdlr)
+
+L4C_CNF(MSG_ID_SAT_PROFILE_ACTIVATE_CNF, l4c_sat_profile_activate_cnf_hdlr)
+
+L4C_IND(MSG_ID_SAT_UICC_STATE_IND,l4c_sat_uicc_state_ind_hdlr)
+
+L4C_CNF(MSG_ID_SAT_PROFILE_WRITE_CNF, l4c_sat_profile_write_cnf_hdlr)
+
+L4C_CNF(MSG_ID_TCM_PAM_SET_VZW_APN_TABLE_CNF,l4ctcm_set_cnf_hdlr) /* VzW support */
+L4C_CNF(MSG_ID_TCM_PAM_SET_VZW_PARAMS_CNF,l4ctcm_set_cnf_hdlr) /* VzW support */
+L4C_CNF(MSG_ID_TCM_PAM_GET_VZW_APN_TABLE_CNF,l4ctcm_get_vzw_apn_table_cnf_hdlr) /* VzW support */
+L4C_CNF(MSG_ID_TCM_PAM_GET_VZW_PARAMS_CNF,l4ctcm_get_vzw_params_cnf_hdlr) /* VzW support */  
+L4C_CNF(MSG_ID_TCM_PAM_GET_APN_BLOCKING_TIMER_LENGTH_CNF,l4c_ps_get_apn_rdp_cnf_hdlr) /* VzW support */
+L4C_IND(MSG_ID_TCM_PAM_CANCEL_APN_BLOCKING_TIMER_IND,l4c_ps_cancel_apn_blocking_ind_hdlr)
+
+L4C_CNF(MSG_ID_L4CRAC_CLEAR_MRU_CNF,l4crac_clear_mru_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_SET_MRU_CNF,l4crac_set_mru_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_SET_AUX_PLMN_CNF,l4crac_set_aux_plmn_cnf_hdlr)
+L4C_IND(MSG_ID_L4CRAC_DUPLEX_MODE_CHANGE_IND,l4crac_duplex_mode_change_ind_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_DUPLEX_MODE_CHANGE_CNF,l4crac_duplex_mode_change_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_SET_WM_POLICY_CNF,l4c_null_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_ACTIVE_SIM_CNF, l4crac_active_sim_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_DUPLEX_MODE_REQUIRED_CNF,l4crac_duplex_mode_required_cnf_hdlr)
+
+L4C_IND(MSG_ID_L4CTCM_ECC_REJ_BY_NW_IN_ATTACH_IND,l4ctcm_ecc_rej_by_nw_in_attach_ind)
+
+L4C_REQ(MSG_ID_L4C_PS_UT_ALREADY_ASSERT_IND,l4c_null_hdlr)
+
+L4C_IND(MSG_ID_L4CRAC_C2K_CSFB_START_IND,l4crac_c2k_csfb_start_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_HVOLTE_MODE_CHANGE_IND,l4crac_hvolte_mode_change_ind_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_GMSS_SET_PLMN_BARRING_TIMER_CNF, l4crac_gmss_set_plmn_barring_timer_cnf_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_GMSS_GET_PLMN_BARRING_TIMER_CNF, l4crac_gmss_get_plmn_barring_timer_cnf_hdlr)
+L4C_IND(MSG_ID_L4CRAC_IMS_CALL_END_STATUS_IND,l4crac_ims_call_end_status_ind_hdlr)
+
+L4C_IND(MSG_ID_L4C_RATCM_LBM_INFO_IND,l4c_rb_test_mode_info_ind_hdlr)
+L4C_IND(MSG_ID_L4C_EVAL_LBM_INFO_IND,l4c_rb_test_mode_info_ind_hdlr)
+L4C_CNF(MSG_ID_L4CRAC_RESET_OTA_CTXT_CNF, l4crac_reset_ota_ctxt_cnf_hdlr)
+
+L4C_REQ(MSG_ID_L4BNW_L4C_PS_TYPE_CONFIG_REQ, l4c_nw_l4bnw_ps_type_config_req_hdlr)
+L4C_REQ(MSG_ID_L4BNW_L4C_PS_REATTACH_CONFIG_REQ, l4c_nw_ps_reattach_config_req_hdlr)
+
+L4C_IND(MSG_ID_L4C_PEER_PLMN_FOUND_IND,l4c_peer_plmn_found_ind_hdlr)
+L4C_REQ(MSG_ID_L4BPWR_L4C_OP01_LOCK_REQ,l4c_op01_lock_req_hdlr)
+L4C_REQ(MSG_ID_L4BNW_L4C_IMEI_MEID_LOCK_REQ,l4c_imei_meid_lock_req_hdlr)
+
+
+L4C_IND(MSG_ID_L4CRAC_PS_BEARER_IND, l4crac_ps_bearer_ind_hdlr)
+
+L4C_IND(MSG_ID_L4C_NRRC_TIME_INFO_IND, l4c_nrrc_time_info_ind_hdlr)
+
+L4C_IND(MSG_ID_L4C_MSPM_GEMINI_STATUS_UPDATE_IND, l4c_mspm_gemini_status_update_ind_hdlr)
+
+// ATP
+L4C_REQ(MSG_ID_ATP_L4C_EN3GPECP_REQ, l4c_atp_en3gpecp_req_hdlr)
+L4C_REQ(MSG_ID_ATP_L4C_E5GOPT_SET_REQ, l4c_atp_e5gopt_set_req_hdlr)
+L4C_REQ(MSG_ID_ATP_L4C_E5GOPT_READ_REQ, l4c_atp_e5gopt_read_req_hdlr)
+L4C_REQ(MSG_ID_ATP_L4C_ANBR_REQ, l4c_atp_anbr_req_hdlr)
+
+L4C_IND(MSG_ID_L4CRAC_C2K_SILENT_REDIAL_IND,l4crac_c2k_silent_redial_ind_hdlr)
+
+// L4BPWR
+L4C_REQ(MSG_ID_L4BPWR_L4C_POWER_ON_SIM_REQ, l4c_l4bpwr_power_on_sim_req_hdlr)
+#if defined(__NR_SA__) && defined(__NR_PLUS_L_ONLY__)
+L4C_REQ(MSG_ID_L4BPWR_L4C_5GOPT_SET_REQ, l4c_l4bpwr_5gopt_set_req_hdlr)
+#endif
+
+L4C_IND(MSG_ID_L4CRAC_CSFB_PAGE_IND, l4crac_csfb_page_ind_hdlr)
+L4C_IND(MSG_ID_L4CRAC_CSFB_RESULT_IND, l4crac_csfb_result_ind_hdlr)
+
+L4C_IND(MSG_ID_L4CSMU_SML_LOCK_STATUS_UPDATE_IND,l4csmu_sml_lock_status_update_ind_hdlr)
+
+L4C_REQ(MSG_ID_L4BPWR_L4C_SERVICE_MODE_REQ, l4c_l4bpwr_service_mode_req_hdlr)
+L4C_REQ(MSG_ID_L4BNW_L4C_SERVICE_MODE_REQ, l4c_l4bnw_service_mode_req_hdlr)
+
+L4C_IND(MSG_ID_L4C_NRRC_SCG_EVENT_IND, l4c_nrrc_scg_event_ind_hdlr)
+
+L4C_IND(MSG_ID_L4CRAC_TRY_SWITCH_RAT_RESULT_IND, l4crac_try_switch_rat_result_ind_hdlr)
+
+L4C_IND(MSG_ID_L4CRAC_CAP_UPDATE_IND, l4crac_cap_update_ind_hdlr)
+
+L4C_IND(MSG_ID_L4CAS_CELL_POWER_THRESHOLD_IND, l4cas_cell_power_thres_ind_hdlr)
+
+L4C_CNF(MSG_ID_SASE_L4C_VG_OPTION_CHECK_RSP, l4c_sase_vg_option_check_rsp_hdlr)
+L4C_REQ(MSG_ID_SASE_L4C_VG_OPTION_UPDATE_REQ, l4c_sase_vg_option_update_req_hdlr)
+#ifdef __NG_ECALL_SUPPORT__
+L4C_CNF(MSG_ID_L4C_EVAL_ECALL_TEST_CALL_ATTACH_CNF, l4c_eval_ecall_test_call_attach_cnf_hdlr)
+L4C_CNF(MSG_ID_L4C_EVAL_ECALL_ABORT_TEST_CALL_ATTACH_CNF, l4c_eval_ecall_abort_test_call_attach_cnf_hdlr)
+#endif
diff --git a/mcu/interface/protocol/general/l4c_mt_struct.h b/mcu/interface/protocol/general/l4c_mt_struct.h
new file mode 100644
index 0000000..0d14a99
--- /dev/null
+++ b/mcu/interface/protocol/general/l4c_mt_struct.h
@@ -0,0 +1,64 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *  l4c_mt_struct.h
+ *
+ *
+ * Description:
+ * ------------
+ *  This file defines message structures of L4C_MT interface
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ ****************************************************************************/
+#ifndef _L4C_MT_STRUCT_H_
+#define _L4C_MT_STRUCT_H_
+
+typedef struct 
+{  
+    LOCAL_PARA_HDR 
+    kal_bool is_screen_on;
+
+} l4c_mt_screen_state_ind_struct;
+
+
+#endif /* _L4C_MT_STRUCT_H_ */
diff --git a/mcu/interface/protocol/general/l4c_ps_msg_hdlr_defs.h b/mcu/interface/protocol/general/l4c_ps_msg_hdlr_defs.h
new file mode 100644
index 0000000..d702da8
--- /dev/null
+++ b/mcu/interface/protocol/general/l4c_ps_msg_hdlr_defs.h
@@ -0,0 +1,61 @@
+
+            /* MSG_ID */                    /* test_mode */             /* read_mode */             /* set_mode */              /* active_mode */
+// M1: H
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGACT_REQ,     l4c_ps_null_test_mode,      l4c_ps_cgact_read_mode,     l4c_ps_cgact_set_mode,      l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGDCONT_REQ,   l4c_ps_null_test_mode,      l4c_ps_cgdcont_read_mode,   l4c_ps_cgdcont_set_mode,    l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGPADDR_REQ,   l4c_ps_null_test_mode,      l4c_ps_null_read_mode,      l4c_ps_cgpaddr_set_mode,    l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGEREP_REQ,    l4c_ps_null_test_mode,      l4c_ps_cgerep_read_mode,    l4c_ps_cgerep_set_mode,     l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGAUTH_REQ,    l4c_ps_null_test_mode,      l4c_ps_cgauth_read_mode,    l4c_ps_cgauth_set_mode,     l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_ECNCFG_REQ,    l4c_ps_null_test_mode,      l4c_ps_null_read_mode,      l4c_ps_ecncfg_set_mode,     l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_PSBEARER_REQ,  l4c_ps_psbearer_read_mode,  l4c_ps_psbearer_read_mode,  l4c_ps_psbearer_set_mode,   l4c_ps_psbearer_read_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_EGPCO_REQ,     l4c_ps_null_test_mode,      l4c_ps_egpco_read_mode,     l4c_ps_egpco_set_mode,      l4c_ps_null_active_mode)
+
+// M2: M
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_EGACT_REQ,     l4c_ps_null_test_mode,      l4c_ps_null_read_mode,      l4c_ps_egact_set_mode,      l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGDSCONT_REQ,  l4c_ps_null_test_mode,      l4c_ps_cgdscont_read_mode,  l4c_ps_cgdscont_set_mode,   l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGTFT_REQ,     l4c_ps_null_test_mode,      l4c_ps_cgtft_read_mode,     l4c_ps_cgtft_set_mode,      l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_EGDELPF_REQ,   l4c_ps_null_test_mode,      l4c_ps_egdelpf_read_mode,   l4c_ps_egdelpf_set_mode,    l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_EGLNKPF_REQ,   l4c_ps_null_test_mode,      l4c_ps_eglnkpf_read_mode,   l4c_ps_eglnkpf_set_mode,    l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_EGFB_REQ,      l4c_ps_null_test_mode,      l4c_ps_null_read_mode,      l4c_ps_egfb_set_mode,       l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_VZWAPNE_REQ,   l4c_ps_null_test_mode,      l4c_ps_vzwapne_read_mode,   l4c_ps_vzwapne_set_mode,    l4c_ps_vzwapne_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_VZWAPNETMR_REQ,l4c_ps_null_test_mode,      l4c_ps_vzwapnetmr_read_mode,l4c_ps_vzwapnetmr_set_mode, l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_EGDCONT_REQ,   l4c_ps_null_test_mode,      l4c_ps_null_read_mode,      l4c_ps_egdcont_set_mode,    l4c_ps_null_active_mode)
+//EGPCAP
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGSCONTRDP_REQ,l4c_ps_null_test_mode,      l4c_ps_null_read_mode,      l4c_ps_cgscontrdp_set_mode, l4c_ps_cgscontrdp_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGEQOSRDP_REQ, l4c_ps_null_test_mode,      l4c_ps_null_read_mode,      l4c_ps_cgeqosrdp_set_mode,  l4c_ps_cgeqosrdp_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGTFTRDP_REQ,  l4c_ps_null_test_mode,      l4c_ps_null_read_mode,      l4c_ps_cgtftrdp_set_mode,   l4c_ps_cgtftrdp_active_mode)
+//
+
+// M3: L
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGCMOD_REQ,    l4c_ps_null_test_mode,      l4c_ps_null_read_mode,      l4c_ps_cgcmod_set_mode,     l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGEQMIN_REQ,   l4c_ps_null_test_mode,      l4c_ps_cgeqmin_read_mode,   l4c_ps_cgeqmin_set_mode,    l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGEQREQ_REQ,   l4c_ps_null_test_mode,      l4c_ps_cgeqreq_read_mode,   l4c_ps_cgeqreq_set_mode,    l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGANS_REQ,     l4c_ps_null_test_mode,      l4c_ps_null_read_mode,      l4c_ps_cgans_set_mode,      l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGAUTO_REQ,    l4c_ps_null_test_mode,      l4c_ps_cgauto_read_mode,    l4c_ps_cgauto_set_mode,     l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_EGPAU_REQ,     l4c_ps_null_test_mode,      l4c_ps_null_read_mode,      l4c_ps_egpau_set_mode,      l4c_ps_null_active_mode)
+
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGPIAF_REQ,    l4c_ps_null_test_mode,      l4c_ps_cgpiaf_read_mode,    l4c_ps_cgpiaf_set_mode,     l4c_ps_null_active_mode)
+
+//
+
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGEQOS_REQ,    l4c_ps_null_test_mode,      l4c_ps_cgeqos_read_mode,    l4c_ps_cgeqos_set_mode,     l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGDEL_REQ,     l4c_ps_null_test_mode,      l4c_ps_null_read_mode,      l4c_ps_cgdel_set_mode,      l4c_ps_null_active_mode)
+
+// M3: EM
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGQMIN_REQ,    l4c_ps_null_test_mode,      l4c_ps_cgqmin_read_mode,    l4c_ps_cgqmin_set_mode,     l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGQREQ_REQ,    l4c_ps_null_test_mode,      l4c_ps_cgqreq_read_mode,    l4c_ps_cgqreq_set_mode,     l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGSDATA_REQ,   l4c_ps_null_test_mode,      l4c_ps_null_read_mode,      l4c_ps_cgsdata_set_mode,    l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_ACTTEST_REQ,   l4c_ps_null_test_mode,      l4c_ps_null_read_mode,      l4c_ps_acttest_set_mode,    l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CGEQNEG_REQ,   l4c_ps_null_test_mode,      l4c_ps_null_read_mode,      l4c_ps_cgeqneg_set_mode,    l4c_ps_null_active_mode)
+
+// Other:
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_EDALLOW_REQ,   l4c_ps_null_test_mode,      l4c_ps_null_read_mode,      l4c_ps_edallow_set_mode,    l4c_ps_null_active_mode)
+
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_EAPNSYNC_REQ,   l4c_ps_null_test_mode,     l4c_ps_eapnsync_read_mode,  l4c_ps_eapnsync_set_mode,   l4c_ps_eapnsync_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_EVZWAPFCIA_REQ, l4c_ps_null_test_mode,     l4c_ps_evzwapfcia_read_mode,l4c_ps_evzwapfcia_set_mode, l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_EGGRNTRSPT_REQ, l4c_ps_null_test_mode,     l4c_ps_eggrntrspt_read_mode,l4c_ps_eggrntrspt_set_mode, l4c_ps_null_active_mode)
+
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_C5GQOS_REQ,    l4c_ps_null_test_mode,      l4c_ps_c5gqos_read_mode,    l4c_ps_c5gqos_set_mode,     l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_C5GQOSRDP_REQ, l4c_ps_null_test_mode,      l4c_ps_null_read_mode,      l4c_ps_c5gqosrdp_set_mode,  l4c_ps_c5gqosrdp_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_CLADN_REQ,     l4c_ps_null_test_mode,      l4c_ps_cladn_read_mode,     l4c_ps_cladn_set_mode,      l4c_ps_null_active_mode)
+L4C_PS_REQ(MSG_ID_L4BPDN_L4C_ESCONTIND_REQ, l4c_ps_null_test_mode,      l4c_ps_null_read_mode,      l4c_ps_escontind_set_mode,  l4c_ps_null_active_mode)
diff --git a/mcu/interface/protocol/general/l4c_rsat_msg_struct.h b/mcu/interface/protocol/general/l4c_rsat_msg_struct.h
new file mode 100644
index 0000000..be42671
--- /dev/null
+++ b/mcu/interface/protocol/general/l4c_rsat_msg_struct.h
@@ -0,0 +1,122 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *	l4c_rsat_msg_struct.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   This file is intends for RSAT message structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef __L4C_RSAT_MSG_STRUCT_H__
+#define __L4C_RSAT_MSG_STRUCT_H__
+
+#include "kal_public_defs.h"
+#include "kal_general_types.h"
+#include "ps_public_enum.h"
+#include "ps_public_struct.h"
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8   is_sms_packed_required;
+    kal_uint8   no_addr;
+    kal_uint8   addr[MAX_CC_ADDR_BCD_LEN];
+    kal_uint8   tpdu_length;
+    kal_uint8   tpdu[175];
+} mmi_sat_send_sms_stage1_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8   input[MAX_DIGITS_USSD];
+    kal_uint8   dcs;
+    kal_uint8   length;
+    kal_uint8   type_of_modification;
+} mmi_sat_send_ss_stage1_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8   input[MAX_DIGITS_USSD];
+    kal_uint8   dcs;
+    kal_uint8   length;
+    kal_uint8   type_of_modification;
+} mmi_sat_send_ussd_stage1_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8   sat_call_type;
+    kal_uint8   no_addr;
+    kal_uint8   addr[MAX_CC_ADDR_BCD_LEN];
+    kal_uint8   no_sub_addr;
+    kal_uint8   sub_addr[MAX_CC_SUB_ADDR_BCD_LEN];
+    kal_uint8   no_ccp;
+    kal_uint8   ccp[MAX_SAT_SIZE_OF_CCP];
+    kal_uint8   type_of_modification;
+} mmi_sat_call_setup_stage1_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8   dtmf_digit[MAX_CC_DTMF_BCD_LEN];
+    kal_uint8   no_digit;
+} mmi_sat_send_dtmf_stage1_req_struct;
+
+#endif
diff --git a/mcu/interface/protocol/general/l4crac_enums.h b/mcu/interface/protocol/general/l4crac_enums.h
new file mode 100644
index 0000000..2b2cedf
--- /dev/null
+++ b/mcu/interface/protocol/general/l4crac_enums.h
@@ -0,0 +1,152 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *	l4rac_enums.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for enum definition between RAC and L4C.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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  _L4CRAC_ENUMS_H
+#define  _L4CRAC_ENUMS_H
+
+#include "ps_public_enum.h"
+
+typedef enum
+{
+   MS_CLASS_A,
+   MS_CLASS_B,   
+   MS_CLASS_CG,
+   MS_CLASS_CC
+} ms_mobile_class_enum;
+
+typedef enum
+{
+   REG_LA_RA_CHANGED,
+   REG_NO_PLMN,
+   REG_ON_PLMN,
+   REG_LIMITED_SERVICE
+} reg_status_cause_enum;
+
+//#ifdef __GEMINI__
+typedef enum 
+{
+  L4C_SERVICE_INACTIVE_DUE_TO_RR_SUSPEND = 0,
+  L4C_SERVICE_ACTIVE = 1
+}l4c_rac_mmrr_service_status_enum;//GEMINI, 20080217
+//#endif
+
+typedef enum
+{
+    NOT_PREFER_SMS_OVER_IP,
+    PREFER_SMS_OVER_IP
+} l4c_rac_sms_preference_enum;
+
+#endif /* _L4CRAC_ENUMS_H */
+
+
diff --git a/mcu/interface/protocol/general/l5_common.h b/mcu/interface/protocol/general/l5_common.h
new file mode 100644
index 0000000..2251a47
--- /dev/null
+++ b/mcu/interface/protocol/general/l5_common.h
@@ -0,0 +1,252 @@
+#ifndef _L5_COMMON_H_
+#define _L5_COMMON_H_
+
+#include "kal_public_defs.h"
+#include "md_sap.h"
+#include "svc_sap.h"
+#include "dcl.h"
+#include "dcl_uart.h"
+
+#define L5_LOCAL_PARA_HDR \
+    LOCAL_PARA_HDR \
+    kal_uint32 l5seq_id;
+
+#define L5_LOCAL_PARA_HDR8 \
+    LOCAL_PARA_HDR \
+    kal_uint8 l5seq_id8;
+
+#define L5IO_L5U_LOCAL_PARA_HDR \
+    LOCAL_PARA_HDR \
+    kal_uint32 l5seq_id;
+
+#define L5IO_L5U_LOCAL_PARA_HDR8 \
+    LOCAL_PARA_HDR \
+    kal_uint8 l5seq_id8;
+
+typedef struct {
+    L5IO_L5U_LOCAL_PARA_HDR
+} l5io_l5u_struct;
+
+typedef struct {
+    L5IO_L5U_LOCAL_PARA_HDR8
+} l5io_l5u_struct8;
+
+//////////////////////////////////////////////////////////////////////////////////////
+#define GMC_LOCAL_PARA_HDR \
+    LOCAL_PARA_HDR \
+    kal_uint32 src_id;
+
+typedef struct {
+    GMC_LOCAL_PARA_HDR
+    kal_char config_type[32];
+    kal_uint8 buffer_type;    // 0 : local param buffer, 1 : peer buffer
+    kal_uint32 buffer_length;
+    kal_uint8 buffer[4096];
+} l5_general_modem_configure_set_req_struct;
+
+typedef struct {
+    GMC_LOCAL_PARA_HDR
+    kal_uint8 buffer_type;    // 0 : local param buffer, 1 : peer buffer
+    kal_uint32 buffer_length;
+    kal_uint8 buffer[4096];
+} l5_general_modem_configure_set_cnf_struct;
+
+typedef struct {
+    GMC_LOCAL_PARA_HDR
+    kal_char config_type[32];
+} l5_general_modem_configure_get_req_struct;
+
+typedef struct {
+    GMC_LOCAL_PARA_HDR
+    kal_uint8 buffer_type;    // 0 : local param buffer, 1 : peer buffer
+    kal_uint32 buffer_length;
+    kal_uint8 buffer[4096];
+} l5_general_modem_configure_get_cnf_struct;
+
+#define L5_RES_SEG_NUM (0x3FFFF)
+//18 bit for every user
+typedef enum {
+    //common result put here
+    L5_RES_COMMON_BEGIN = 0x00000000,
+        L5_RES_COMMON_SUCCESS = L5_RES_COMMON_BEGIN,
+    L5_RES_COMMON_END = L5_RES_COMMON_BEGIN + L5_RES_SEG_NUM,
+    //L5IO common result put in here(except XXXH's cause)
+    L5_RES_L5IO_BEGIN,
+    L5_RES_L5IO_END = L5_RES_L5IO_BEGIN + L5_RES_SEG_NUM,
+    L5_RES_CAT_BEGIN,
+    L5_RES_CAT_END = L5_RES_CAT_BEGIN + L5_RES_SEG_NUM,
+    L5_RES_CC_BEGIN,
+    L5_RES_CC_END = L5_RES_CC_BEGIN + L5_RES_SEG_NUM,
+    L5_RES_NW_BEGIN,
+    L5_RES_NW_END = L5_RES_NW_BEGIN + L5_RES_SEG_NUM,
+    L5_RES_PDN_BEGIN,
+        INVALID_PARA = L5_RES_PDN_BEGIN + 0x01,
+        NOT_FIND_APN_TO_ACT = L5_RES_PDN_BEGIN + 0x02,
+        NO_APN_INFO_TO_ABORT = L5_RES_PDN_BEGIN + 0x03,
+        APN_PROFILE_IS_DISABLED = L5_RES_PDN_BEGIN + 0x04,
+        NOT_FIND_CALL_INFO = L5_RES_PDN_BEGIN + 0x05,
+        REACH_MAX_USER = L5_RES_PDN_BEGIN + 0x06,
+        PROFILE_COUNT_ERROR = L5_RES_PDN_BEGIN + 0x07,
+        WRONG_APN_TYPE_OR_NO_APN = L5_RES_PDN_BEGIN + 0x08,
+        BUILT_IN_APN_NOT_READY = L5_RES_PDN_BEGIN + 0x09,
+        L5UPDN_ACT_CALL_RES = L5_RES_PDN_BEGIN + 0x70,
+        L5UPDN_FAIL_ABORT = L5UPDN_ACT_CALL_RES + 0x01,
+        L5UPDN_SUCC_ABORT = L5UPDN_ACT_CALL_RES + 0x02,
+        L5UPDN_FAIL_CONT = L5UPDN_ACT_CALL_RES + 0x03,
+        L5UPDN_SUCC_CONT = L5UPDN_ACT_CALL_RES + 0x04,
+        L5UPDN_REUSE = L5UPDN_ACT_CALL_RES + 0x05,
+        L5UPDN_ERROR_END = L5_RES_PDN_BEGIN + 0x7F,
+    L5_RES_PDN_END = L5_RES_PDN_BEGIN + L5_RES_SEG_NUM,
+    L5_RES_RF_BEGIN,
+    L5_RES_RF_END = L5_RES_RF_BEGIN + L5_RES_SEG_NUM,
+    L5_RES_SIM_BEGIN,
+    L5_RES_SIM_END = L5_RES_SIM_BEGIN + L5_RES_SEG_NUM,
+    L5_RES_SMS_BEGIN,
+        L5_RES_SMS_U_BEGIN = L5_RES_SMS_BEGIN,
+        L5_RES_SMS_U_UNKNOWN_ACK_MODE = L5_RES_SMS_U_BEGIN,
+        L5_RES_SMS_U_INVALID_MEMORY_INDEX,
+        L5_RES_SMS_U_MMS_TYPE_ERROR,
+        L5_RES_SMS_U_STATUS_NOT_SUPPORT,
+        L5_RES_SMS_U_FAILURE,
+        L5_RES_SMS_U_FILTER_NOT_SUPPORTED,
+        L5_RES_SMS_U_FORMAT_NOT_SUPPORTED,
+        L5_RES_SMS_U_SET_SCA_INVALID,
+        L5_RES_SMS_U_NOT_INITIALIZED,
+        L5_RES_SMS_U_INVALID_SMSC_ADDRESS,
+        L5_RES_SMS_U_INVALID_PDU,
+        L5_RES_SMS_U_PREFER_STORAGE_NO_SUPPORT,
+        L5_RES_SMS_U_MMS_TYPE_INVALID,
+        L5_RES_SMS_U_SEND_TWO_SOURCE_EXIST,
+        L5_RES_SMS_U_OP_ONLY_ALLOWED_WITH_AT_IN_NON_PDU_MODE,
+        L5_RES_SMS_U_UNKNOWN_CPMS,
+        L5_RES_SMS_U_UNKNOWN_CNMI,
+        L5_RES_SMS_U_CPMS_UNSYNC,
+        L5_RES_SMS_U_SEND_C5GUSMS_FAIL,
+        L5_RES_SMS_U_MEMORY_FULL,
+        L5_RES_SMS_U_SEND_EMEMS_FAIL,
+        L5_RES_SMS_U_END = L5_RES_SMS_BEGIN + 0xFFFF,
+        //SMS AT is fixed with TS27.005
+        L5_RES_SMS_AT_BEGIN,
+        L5_RES_SMS_AT_UNASSIGNED_UNALLOCATED_NUMBER_1 =  L5_RES_SMS_AT_BEGIN + 1,
+        L5_RES_SMS_AT_OPERATOR_DETERMINED_BARRING_8 =  L5_RES_SMS_AT_BEGIN + 8,
+        L5_RES_SMS_AT_CALL_BARRED_10 =  L5_RES_SMS_AT_BEGIN + 10,
+        L5_RES_SMS_AT_SHORT_MESSAGE_TRANSFER_REJECTED_21 =  L5_RES_SMS_AT_BEGIN + 21,
+        L5_RES_SMS_AT_DESTINATION_OUT_OF_SERVICE_27 =  L5_RES_SMS_AT_BEGIN + 27,
+        L5_RES_SMS_AT_UNIDENTIFIED_SUBSCRIBER_28 =  L5_RES_SMS_AT_BEGIN + 28,
+        L5_RES_SMS_AT_FACILITY_REJECTED_29 =  L5_RES_SMS_AT_BEGIN + 29,
+        L5_RES_SMS_AT_UNKNOWN_SUBSCRIBER_30 =  L5_RES_SMS_AT_BEGIN + 30,
+        L5_RES_SMS_AT_NETWORK_OUT_OF_ORDER_38 =  L5_RES_SMS_AT_BEGIN + 38,
+        L5_RES_SMS_AT_TEMPORARY_FAILURE_41 =  L5_RES_SMS_AT_BEGIN + 41,
+        L5_RES_SMS_AT_CONGESTION_42 =  L5_RES_SMS_AT_BEGIN + 42,
+        L5_RES_SMS_AT_RESOURCES_UNAVAILABLE_UNSPECIFIED_47 =  L5_RES_SMS_AT_BEGIN + 47,
+        L5_RES_SMS_AT_REQUESTED_FACILITY_NOT_SUBSCRIBED_50 =  L5_RES_SMS_AT_BEGIN + 50,
+        L5_RES_SMS_AT_REQUESTED_FACILITY_NOT_IMPLEMENTED_69 =  L5_RES_SMS_AT_BEGIN + 69,
+        L5_RES_SMS_AT_INVALID_SHORT_MESSAGE_TRANSFER_REFERENCE_VALUE_81 =  L5_RES_SMS_AT_BEGIN + 81,
+        L5_RES_SMS_AT_INVALID_MESSAGE_UNSPECIFIED_95 =  L5_RES_SMS_AT_BEGIN + 95,
+        L5_RES_SMS_AT_INVALID_MANDATORY_INFORMATION_96 =  L5_RES_SMS_AT_BEGIN + 96,
+        L5_RES_SMS_AT_MESSAGE_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENTED_97 =  L5_RES_SMS_AT_BEGIN + 97,
+        L5_RES_SMS_AT_MESSAGE_NOT_COMPATIBLE_WITH_SHORT_MESSAGE_PROTOCOL_STATE_98 =  L5_RES_SMS_AT_BEGIN + 98,
+        L5_RES_SMS_AT_INFORMATION_ELEMENT_NON_EXISTENT_OR_NOT_IMPLEMENTED_99 =  L5_RES_SMS_AT_BEGIN + 99,
+        L5_RES_SMS_AT_PROTOCOL_ERROR_UNSPECIFIED_111 =  L5_RES_SMS_AT_BEGIN + 111,
+        L5_RES_SMS_AT_INTERWORKING_UNSPECIFIED_127 =  L5_RES_SMS_AT_BEGIN + 127,
+        L5_RES_SMS_AT_TELEMATIC_INTERWORKING_NOT_SUPPORTED_0x80 =  L5_RES_SMS_AT_BEGIN + 0x80,              //0x80-0x8F: TP-PID errors
+        L5_RES_SMS_AT_SHORT_MESSAGE_TYPE_0_NOT_SUPPORTED_0x81 =  L5_RES_SMS_AT_BEGIN + 0x81,
+        L5_RES_SMS_AT_CANNOT_REPLACE_SHORT_MESSAGE_0x82 =  L5_RES_SMS_AT_BEGIN + 0x82,
+        L5_RES_SMS_AT_UNSPECIFIED_TP_PID_ERROR_0x8F =  L5_RES_SMS_AT_BEGIN + 0x8F,
+        L5_RES_SMS_AT_DATA_CODING_SCHEME_ALPHABET_NOT_SUPPORTED_0x90 =  L5_RES_SMS_AT_BEGIN + 0x90,         //0x90-0x9F: TP-DCS errors
+        L5_RES_SMS_AT_MESSAGE_CLASS_NOT_SUPPORTED_0x91 =  L5_RES_SMS_AT_BEGIN + 0x91,
+        L5_RES_SMS_AT_UNSPECIFIED_TP_DCS_ERROR_0x9F =  L5_RES_SMS_AT_BEGIN + 0x9F,
+        L5_RES_SMS_AT_COMMAND_CANNOT_BE_ACTIONED_0xA0 =  L5_RES_SMS_AT_BEGIN + 0xA0,                        //0xA0-0xAF: TP-Command errors
+        L5_RES_SMS_AT_COMMAND_UNSUPPORTED_0xA1 =  L5_RES_SMS_AT_BEGIN + 0xA1,
+        L5_RES_SMS_AT_UNSPECIFIED_TP_COMMAND_ERROR_0xAF =  L5_RES_SMS_AT_BEGIN + 0xAF,
+        L5_RES_SMS_AT_TPDU_NOT_SUPPORTED_0xB0 =  L5_RES_SMS_AT_BEGIN + 0xB0,
+        L5_RES_SMS_AT_SC_BUSY_0xC0 =  L5_RES_SMS_AT_BEGIN + 0xC0,
+        L5_RES_SMS_AT_NO_SC_SUBSCRIPTION_0xC1 =  L5_RES_SMS_AT_BEGIN + 0xC1,
+        L5_RES_SMS_AT_SC_SYSTEM_FAILURE_0xC2 =  L5_RES_SMS_AT_BEGIN + 0xC2,
+        L5_RES_SMS_AT_INVALID_SME_ADDRESS_0xC3 =  L5_RES_SMS_AT_BEGIN + 0xC3,
+        L5_RES_SMS_AT_DESTINATION_SME_BARRED_0xC4 =  L5_RES_SMS_AT_BEGIN + 0xC4,
+        L5_RES_SMS_AT_SM_REJECTED_DUPLICATE_SM_0xC5 =  L5_RES_SMS_AT_BEGIN + 0xC5,
+        L5_RES_SMS_AT_TP_VPF_NOT_SUPPORTED_0xC6 =  L5_RES_SMS_AT_BEGIN + 0xC6,
+        L5_RES_SMS_AT_TP_VP_NOT_SUPPORTED_0xC7 =  L5_RES_SMS_AT_BEGIN + 0xC7,
+        L5_RES_SMS_AT_SIM_SMS_STORAGE_FULL_0xD0 =  L5_RES_SMS_AT_BEGIN + 0xD0,
+        L5_RES_SMS_AT_NO_SMS_STORAGE_CAPABILITY_IN_SIM_0xD1 =  L5_RES_SMS_AT_BEGIN + 0xD1,
+        L5_RES_SMS_AT_ERROR_IN_MS_0xD2 =  L5_RES_SMS_AT_BEGIN + 0xD2,
+        L5_RES_SMS_AT_MEMORY_CAPACITY_EXCEEDED_0xD3 =  L5_RES_SMS_AT_BEGIN + 0xD3,
+        L5_RES_SMS_AT_SIM_APPLICATION_TOOLKIT_BUSY_0xD4 =  L5_RES_SMS_AT_BEGIN + 0xD4,
+        L5_RES_SMS_AT_SIM_DATA_DOWNLOAD_ERROR_0xD5 =  L5_RES_SMS_AT_BEGIN + 0xD5,
+        L5_RES_SMS_AT_SPECIFIC_APPLICATION_ERROR_0xE0 =  L5_RES_SMS_AT_BEGIN + 0xE0,                        //0xE0-0xEF: Specific to an application
+        L5_RES_SMS_AT_UNSPECIFIED_ERROR_CAUSE_0xFF =  L5_RES_SMS_AT_BEGIN + 0xFF,
+        L5_RES_SMS_AT_ME_FAILURE_300 =  L5_RES_SMS_AT_BEGIN + 300,
+        L5_RES_SMS_AT_SMS_SERVICE_OF_ME_RESERVED_301 =  L5_RES_SMS_AT_BEGIN + 301,
+        L5_RES_SMS_AT_OPERATION_NOT_ALLOWED_302 =  L5_RES_SMS_AT_BEGIN + 302,
+        L5_RES_SMS_AT_OPERATION_NOT_SUPPORTED_303 =  L5_RES_SMS_AT_BEGIN + 303,
+        L5_RES_SMS_AT_INVALID_PDU_MODE_PARAMETER_304 =  L5_RES_SMS_AT_BEGIN + 304,
+        L5_RES_SMS_AT_INVALID_TEXT_MODE_PARAMETER_305 =  L5_RES_SMS_AT_BEGIN + 305,
+        L5_RES_SMS_AT_SIM_NOT_INSERTED_310 =  L5_RES_SMS_AT_BEGIN + 310,
+        L5_RES_SMS_AT_SIM_PIN_REQUIRED_311 =  L5_RES_SMS_AT_BEGIN + 311,
+        L5_RES_SMS_AT_PH_SIM_PIN_REQUIRED_312 =  L5_RES_SMS_AT_BEGIN + 312,
+        L5_RES_SMS_AT_SIM_FAILURE_313 =  L5_RES_SMS_AT_BEGIN + 313,
+        L5_RES_SMS_AT_SIM_BUSY_314 =  L5_RES_SMS_AT_BEGIN + 314,
+        L5_RES_SMS_AT_SIM_WRONG_315 =  L5_RES_SMS_AT_BEGIN + 315,
+        L5_RES_SMS_AT_SIM_PUK_REQUIRED_316 =  L5_RES_SMS_AT_BEGIN + 316,
+        L5_RES_SMS_AT_SIM_PIN2_REQUIRED_317 =  L5_RES_SMS_AT_BEGIN + 317,
+        L5_RES_SMS_AT_SIM_PUK2_REQUIRED_318 =  L5_RES_SMS_AT_BEGIN + 318,
+        L5_RES_SMS_AT_MEMORY_FAILURE_320 =  L5_RES_SMS_AT_BEGIN + 320,
+        L5_RES_SMS_AT_INVALID_MEMORY_INDEX_321 =  L5_RES_SMS_AT_BEGIN + 321,
+        L5_RES_SMS_AT_MEMORY_FULL_322 =  L5_RES_SMS_AT_BEGIN + 322,
+        L5_RES_SMS_AT_SMSC_ADDRESS_UNKNOWN_330 =  L5_RES_SMS_AT_BEGIN + 330,
+        L5_RES_SMS_AT_NO_NETWORK_SERVICE_331 =  L5_RES_SMS_AT_BEGIN + 331,
+        L5_RES_SMS_AT_NETWORK_TIMEOUT_332 =  L5_RES_SMS_AT_BEGIN + 332,
+        L5_RES_SMS_AT_NO_CNMA_ACKNOWLEDGEMENT_EXPECTED_340 =  L5_RES_SMS_AT_BEGIN + 340,
+        L5_RES_SMS_AT_UNKNOWN_ERROR_500 =  L5_RES_SMS_AT_BEGIN + 500,
+        L5_RES_SMS_AT_END = L5_RES_SMS_AT_BEGIN + 0xFFFF,
+    L5_RES_SMS_END = L5_RES_SMS_BEGIN + L5_RES_SEG_NUM,
+    L5_RES_SS_BEGIN,
+    L5_RES_SS_END = L5_RES_SS_BEGIN + L5_RES_SEG_NUM,
+    L5_RES_SWITCH_BEGIN,
+    L5_RES_SWITCH_END = L5_RES_SWITCH_BEGIN + L5_RES_SEG_NUM,
+    L5_RES_SYS_BEGIN,
+    L5_RES_SYS_ERR_OPERATION_NOT_ALLOWED,
+    L5_RES_SYS_ERR_PEROID_EXCEED,
+    L5_RES_SYS_END = L5_RES_SYS_BEGIN + L5_RES_SEG_NUM,
+    //common l5u result put here
+    L5_RES_L5U_BEGIN,
+        L5_RES_L5U_SIM_NOT_INSERT,
+        L5_RES_L5U_AT_CMD_ENCODE_FAIL,
+        L5_RES_L5U_AT_CNF_DECODE_FAIL,
+        L5_RES_L5U_AT_CNF_TYPE_ERROR,
+        L5_RES_L5U_FAIL,
+    L5_RES_L5U_END = L5_RES_L5U_BEGIN + L5_RES_SEG_NUM,
+} l5_res_enum;
+
+typedef struct {
+    kal_bool is_standard;
+    kal_char name[32];
+    union {
+        kal_uint8 c[16];
+        kal_uint32 i[4];
+    } uuid;
+    kal_uint32 cid_count;
+    void *cid_table_ptr;
+
+    kal_uint32 is_custom_service;
+    kal_uint32 has_custom_service;
+} mbci_service_t;
+
+typedef kal_uint32 (*DSS_SERVICE_OPEN)(UART_PORT port);
+typedef kal_uint32 (*DSS_SERVICE_CLOSE)(UART_PORT port);
+
+typedef struct {
+    kal_char name[32];
+    union {
+        kal_uint8 c[16];
+        kal_uint32 i[4];
+    } uuid;
+
+    DSS_SERVICE_OPEN open_func;
+    DSS_SERVICE_CLOSE close_func;
+} mbci_dss_service_t;
+
+typedef void (*CUSTOM_L5_TIMER_CB)(void *cb_priv);
+
+#endif
diff --git a/mcu/interface/protocol/general/l5_public_utility.h b/mcu/interface/protocol/general/l5_public_utility.h
new file mode 100644
index 0000000..2fe55c5
--- /dev/null
+++ b/mcu/interface/protocol/general/l5_public_utility.h
@@ -0,0 +1,64 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *	l5_public_utility.h
+ *
+ *
+ * Description:
+ * ------------
+ *  This file contains the function prototype for 
+ *  AT PROXY module utility functions.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *******************************************************************************/
+
+
+#ifndef _L5_PUBLIC_UTILITY_H
+#define _L5_PUBLIC_UTILITY_H
+
+#include "kal_general_types.h"
+#include "atp_public_defs.h"
+#include "sim_exported_enum.h"
+
+kal_uint8 l5io_get_urc_report_mode_by_ps_id(protocol_id_enum ps_id, atp_urc_report_mode_enum urc_type);
+kal_uint32 l5_get_l5seqid();
+kal_uint8 l5_get_current_rat_mode(kal_uint8 ps_id);
+#endif /* _l5_PUBLIC_UTILITY_H */
diff --git a/mcu/interface/protocol/general/l5_structs.h b/mcu/interface/protocol/general/l5_structs.h
new file mode 100644
index 0000000..63ee5c0
--- /dev/null
+++ b/mcu/interface/protocol/general/l5_structs.h
@@ -0,0 +1,276 @@
+/*****************************************************************************
+*  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).
+*
+*****************************************************************************/
+
+#ifndef _L5_STRUCTS_H_
+#define _L5_STRUCTS_H_
+
+#include "ps_public_struct.h"
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "kal_public_api.h"
+#include "atp_public_defs.h"
+#ifndef __MTK_TARGET__
+#include "dcl_uart.h"
+#endif
+#include "l5_common.h"
+
+#define L5_TABLE_DATA_SIZE (20)
+#define L5_L5IO_MBCI_MAX_PENDING_NUM (16)
+#define L5_L5IO_MBCI_MAX_CONTROL_TRANSFER (4096)
+#define L5_L5IO_MBCI_SUPPORT_VERSION (0x0100)
+#define L5_L5IO_MBCI_SUPPORT_EXT_VERSION (0x0300)
+
+#define L5SEQ_ID_URC (0xffffffff)
+/**********L5IO<->L5U***************/
+
+#define L5IO_AT_CMD_REQ_LOCAL_PARA_HDR\
+    L5IO_L5U_LOCAL_PARA_HDR \
+    atp_channel_enum      md_ch_id;
+
+#define L5IO_AT_CMD_CNF_LOCAL_PARA_HDR\
+    L5IO_L5U_LOCAL_PARA_HDR \
+    atp_channel_enum        md_ch_id; \
+    proxy_cmd_result_enum   result; \
+    atp_err_id_enum         cause; \
+    kal_bool                stuff;
+
+#define L5IO_AT_URC_IND_LOCAL_PARA_HDR\
+    L5IO_L5U_LOCAL_PARA_HDR \
+    atp_channel_enum        md_ch_id; \
+    kal_bool                stuff;
+
+typedef struct {
+    L5IO_AT_CMD_REQ_LOCAL_PARA_HDR
+}l5io_at_cmd_req_struct;
+
+typedef struct {
+    L5IO_AT_CMD_CNF_LOCAL_PARA_HDR
+}l5io_at_cmd_cnf_struct;
+
+typedef struct {
+    L5IO_AT_URC_IND_LOCAL_PARA_HDR
+}l5io_at_urc_ind_struct;
+
+/**********L5U<->ATP***************/
+
+#define L5U_ATP_CMD_REQ_LOCAL_PARA_HDR\
+    LOCAL_PARA_HDR \
+    atp_channel_enum md_ch_id;
+
+#define L5U_ATP_CMD_CNF_LOCAL_PARA_HDR\
+    LOCAL_PARA_HDR \
+    atp_channel_enum        md_ch_id; \
+    proxy_cmd_result_enum   result; \
+    atp_err_id_enum         cause; \
+    kal_bool                stuff;
+
+#define L5U_ATP_URC_IND_LOCAL_PARA_HDR\
+    LOCAL_PARA_HDR \
+    atp_channel_enum        md_ch_id; \
+    kal_bool                stuff;
+
+
+typedef struct {
+    L5U_ATP_CMD_REQ_LOCAL_PARA_HDR
+}l5u_atp_at_cmd_req_struct;
+
+
+
+typedef struct {
+    L5U_ATP_CMD_CNF_LOCAL_PARA_HDR
+}l5u_atp_at_cmd_cnf_struct;
+
+typedef struct {
+    L5U_ATP_URC_IND_LOCAL_PARA_HDR
+}l5u_atp_at_urc_ind_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    UART_PORT port;
+    kal_uint8 client_name[16];
+}l5io_l5io_mipc_dump_struct;
+typedef l5io_l5io_mipc_dump_struct l5io_l5io_mipc_recv_dump_struct;
+typedef l5io_l5io_mipc_dump_struct l5io_l5io_mipc_send_dump_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    kal_uint8 context_id;
+    kal_uint8 is_frag_msg;
+    kal_uint16 mbim_ver;
+    kal_uint16 mbim_ext_ver;
+}l5io_l5io_mbci_dump_struct;
+typedef l5io_l5io_mbci_dump_struct l5io_l5io_mbci_recv_dump_struct;
+typedef l5io_l5io_mbci_dump_struct l5io_l5io_mbci_send_dump_struct;
+
+/***** UT begin *****/
+#define L5IO_UT_MAX_UART_LENGTH (128)
+
+/* MSG_ID_L5IO_UT_AT_CMD_CNF */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 ch_id;
+    kal_bool stuff;
+    kal_uint8 at_string[L5IO_UT_MAX_UART_LENGTH];
+} l5io_ut_at_cmd_cnf_struct;
+
+#ifndef __MTK_TARGET__
+/* MSG_ID_L5IO_UT_UART_RTR_IND */
+typedef struct {
+    LOCAL_PARA_HDR
+    UART_PORT port;
+    kal_uint16 at_length;
+    kal_uint8 at_string[L5IO_UT_MAX_UART_LENGTH];
+} l5io_ut_uart_rtr_ind_struct;
+
+/* MSG_ID_L5IO_UT_UART_RTW_IND */
+typedef struct {
+    LOCAL_PARA_HDR
+    UART_PORT port;
+} l5io_ut_uart_rtw_ind_struct;
+
+/* MSG_ID_L5IO_UT_AT_CMD_REQ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 ch_id;
+    kal_uint8 at_string[L5IO_UT_MAX_UART_LENGTH];
+} l5io_ut_at_cmd_req_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 mode[ATP_REPORT_MODE_MAX];
+} l5io_ut_urc_report_mode_ind_struct;
+
+//MSG_ID_L5_UT_IO_CONTEXT_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 cid;
+    kal_uint16 head;
+    kal_uint16 length;
+    kal_uint8 data[ATP_MAX_DATA_QUEUE_LENGTH];
+    kal_uint8 uart_sim_mapping[ATP_CHANNEL_NUMBER];
+} l5io_ut_io_context_req_struct;
+
+#endif /* __MTK_TARGET__ */
+/***** UT end *****/
+
+#define MAX_CELL_NUM_3G (1)
+#define MAX_CELL_NUM_4G (8)
+#define MAX_CELL_NUM_5G (8)
+
+typedef struct {
+    kal_bool activated;
+    kal_uint32 ul_arfcn;
+    kal_uint32 dl_arfcn;
+    kal_uint32 dl_center_frequency;
+    //kal_uint32 ul_center_frequency;
+    kal_uint32 ul_bandwidth;
+    kal_uint32 dl_bandwidth;
+    kal_bool is_connected;
+    kal_uint32 pci;
+} l5_cell_info1_t; //if changed, need to notify L5IO
+
+typedef struct {
+    kal_bool configured;
+    kal_int16 rsrp; //in dbm,range[-162, 22], -32768 means invalid
+    kal_int8 rsrq; //in db,range[-40, 10], -128 means invalid
+    kal_int8 sinr; //in db,range[-20, 40], -128 means invalid
+    kal_int16 rssi; //in dbm,range[-150, -10], -32768 means invalid
+    kal_uint32 pci;
+} l5_cell_info2_t; //if changed, no need to notify L5IO
+
+
+extern kal_uint32 eifconfig[1];
+
+
+
+typedef enum
+{
+    L5IO_TABLE_CMD_MODE_QUEUE, // AT commands in Whitelist need to be queued
+    L5IO_TABLE_CMD_MODE_EXE, // AT commands in Whitelist need to be executed
+    L5IO_TABLE_CMD_MODE_ERROR, // AT commands in Whitelist need to return Error
+    L5IO_TABLE_CMD_MODE_NONBLOCK,
+
+} l5io_table_cmd_mode_enum;
+
+typedef struct 
+{
+    kal_uint16 cmd_id;
+    atp_cmd_mode_enum cmd_mode;
+    l5io_table_cmd_mode_enum mode;
+
+} l5io_list_table_item;
+
+typedef struct
+{
+    kal_uint8 urc[L5_TABLE_DATA_SIZE];
+    atp_urc_report_mode_enum rpt_mode;
+
+} l5io_urc_rpt_mode_chk_tbl_item;
+
+typedef struct
+{
+    LOCAL_PARA_HDR 
+    kal_uint32 src_id;
+    kal_char apn[APN_STRING_LEN];
+}l5updn_get_disabled_apn_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR 
+    kal_uint32 src_id;
+    kal_bool disabled; // TRUE means apn is disabled
+}l5updn_get_disabled_apn_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 ctx_id;
+    kal_uint32 mbim_msg_len;
+} mbim_l5io_mbci_command_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 ctx_id;
+    kal_uint32 mbim_msg_len;
+} mbim_l5io_mbci_command_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 ctx_id;
+    kal_uint32 mbim_msg_len;
+} mbim_l5io_mbci_status_ind_struct;
+
+#endif
diff --git a/mcu/interface/protocol/general/l5mipc_struct.h b/mcu/interface/protocol/general/l5mipc_struct.h
new file mode 100644
index 0000000..e770dc8
--- /dev/null
+++ b/mcu/interface/protocol/general/l5mipc_struct.h
@@ -0,0 +1,127 @@
+#ifndef _L5MIPC_STRUCT_H_
+#define _L5MIPC_STRUCT_H_
+
+#include "l5_common.h"
+
+/** Filter rule */
+#define IPC_FILTER_BY_PROTOCOL      (0x0001 << 0)
+#define IPC_FILTER_BY_SRC_PORT      (0x0001 << 1)
+#define IPC_FILTER_BY_DST_PORT      (0x0001 << 2)
+#define IPC_FILTER_BY_SRC_IPV4      (0x0001 << 3)
+#define IPC_FILTER_BY_DST_IPV4      (0x0001 << 4)
+#define IPC_FILTER_BY_SRC_IPV6      (0x0001 << 5)
+#define IPC_FILTER_BY_DST_IPV6      (0x0001 << 6)
+#define IPC_FILTER_BY_ICMPV4_TYPE   (0x0001 << 7)
+#define IPC_FILTER_BY_ICMPV6_TYPE   (0x0001 << 8)
+#define IPC_FILTER_BY_EBI           (0x0001 << 9)
+#define IPC_FILTER_BY_PDN_ID        (0x0001 << 10)
+#define IPC_FILTER_BY_NETIF_ID      (0x0001 << 11)
+#define IPC_FILTER_BY_TCP_FLAGS     (0x0001 << 12)
+#define IPC_FILTER_BY_SPI           (0x0001 << 13)
+
+#define IPC_IP_TYPE_IPV4            1
+#define IPC_IP_TYPE_IPV6            2
+
+/*
+ * IANA IP Protocol Numbers.
+ * Ref: http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml
+ */
+#define IPC_HDR_PROT_IPV6_HOP           0 /* IPv6 Hop-by-Hop Option */
+#define IPC_HDR_PROT_ICMP               1 /* Internet Control Message */
+#define IPC_HDR_PROT_IPV4_ENC           4 /* IPv4 encapsulation */
+#define IPC_HDR_PROT_TCP                6 /* Transmission Control */
+#define IPC_HDR_PROT_UDP                17 /* User Datagram */
+#define IPC_HDR_PROT_IPV6_ENC           41 /* IPv6 encapsulation */
+#define IPC_HDR_PROT_IPV6_ROUTE         43 /* Routing Header for IPv6 */
+#define IPC_HDR_PROT_IPV6_FRAG          44 /* Fragment Header for IPv6 */
+#define IPC_HDR_PROT_ESP                50 /* Encap Security Payload */
+#define IPC_HDR_PROT_AH                 51 /* Authentication Header */
+#define IPC_HDR_PROT_ICMPV6             58 /* ICMP for IPv6 */
+#define IPC_HDR_PROT_IPV6_NONEXT        59 /* No Next Header for IPv6 */
+#define IPC_HDR_PROT_IPV6_DEST          60 /* Destination Options for IPv6 */
+
+/*
+ * TCP_FLAG.
+ */
+#define IPC_HDR_TCP_FLAG_FIN    0x01
+#define IPC_HDR_TCP_FLAG_SYN    0x02
+#define IPC_HDR_TCP_FLAG_RST    0x04    // Reset
+#define IPC_HDR_TCP_FLAG_PUSH   0x08
+#define IPC_HDR_TCP_FLAG_ACK    0x10
+#define IPC_HDR_TCP_FLAG_URG    0x20    // Urgent
+#define IPC_HDR_TCP_FLAG_ECE    0x40    // ECN Echo
+#define IPC_HDR_TCP_FLAG_CWR    0x80    // Congestion Window Reduced
+#define IPC_HDR_TCP_FLAG_NS     0x100   // ECN-nonce concealment protection (added to header by RFC 3540)
+
+typedef struct {
+    L5IO_L5U_LOCAL_PARA_HDR
+   
+    kal_uint8 nccmni_net_if; //kal_uint8
+    kal_uint8 reserve1;
+    kal_uint16 nccmni_seq;
+
+    kal_uint32 valid_field; //mandatory, a bitmap, refer to IPC_FILTER_BY_XXX
+    kal_uint8 ip_type; //IPC_IP_TYPE_IPV4 or IPC_IP_TYPE_IPV6
+    kal_uint8 ctrl_protocol; //IPC_HDR_PROT_XXX
+    kal_uint16 src_port;
+    kal_uint16 dst_port;
+    kal_uint16 tcp_flags; //IPC_HDR_TCP_FLAG_XXX
+    kal_uint32 spi; //
+    union{
+        kal_uint8 addr8[4];
+        kal_uint32 addr32;
+    } src_ipv4; // Source IPv4 address to filter.
+    union{
+        kal_uint8 addr8[4];
+        kal_uint32 addr32;
+    } dst_ipv4; // Destination IPv4 address to filter.
+
+    union{
+        kal_uint8 addr8[16];
+        kal_uint32 addr32[4];
+    } src_ipv6; // Source IPv6 address to filter.
+    union{
+        kal_uint8 addr8[16];
+        kal_uint32 addr32[4];
+    } dst_ipv6; // Destination IPv6 address to filter.
+
+    kal_uint8 icmpv4_type;    // Type field of ICMPv4 header to filter.
+    kal_uint8 icmpv6_type;    // Type field of ICMPv6 header to filter.
+    kal_uint16 reserve2;
+    kal_uint32 features;
+} l5io_set_filter_req_struct;
+
+typedef struct {
+    L5IO_L5U_LOCAL_PARA_HDR
+   
+    kal_uint8 nccmni_net_if; //kal_uint8
+    kal_uint8 reserve1;
+    kal_uint16 nccmni_seq;
+
+    kal_int32 filter_id; //>=0: filter id, <0: set failed
+} l5io_set_filter_cnf_struct;
+
+typedef struct {
+    L5IO_L5U_LOCAL_PARA_HDR
+   
+    kal_uint8 nccmni_net_if; //kal_uint8
+    kal_uint8 reserve1;
+    kal_uint16 nccmni_seq;
+
+    kal_int32 is_deregister_all_filter; //0: deregister the filter id only, 1: deregister all filter
+    kal_int32 filter_id; //filter id to deregister
+} l5io_reset_filter_req_struct;
+
+typedef struct {
+    L5IO_L5U_LOCAL_PARA_HDR
+   
+    kal_uint8 nccmni_net_if; //kal_uint8
+    kal_uint8 reserve1;
+    kal_uint16 nccmni_seq;
+
+    kal_int32 is_success; //1: succes
+} l5io_reset_filter_cnf_struct;
+
+
+#endif
+
diff --git a/mcu/interface/protocol/general/las_utility.h b/mcu/interface/protocol/general/las_utility.h
new file mode 100644
index 0000000..ec01abd
--- /dev/null
+++ b/mcu/interface/protocol/general/las_utility.h
@@ -0,0 +1,111 @@
+/*****************************************************************************
+*  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) 2014
+*
+*  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:
+ * ---------
+ *   las_utility.h
+ *
+ * Project:
+ * --------
+ *   UMOLY
+ *
+ * Description:
+ * ------------
+ *   Common header file for utility function provided by LAS.
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+
+#ifndef  __LAS_UTILITY_H__
+#define  __LAS_UTILITY_H__
+
+extern kal_uint8 las_get_gas_sys_mode_by_sim_index(kal_uint8 sim_index);
+
+#endif /* __LAS_UTILITY_H__ */
diff --git a/mcu/interface/protocol/general/lbs_gnss_tc_struct.h b/mcu/interface/protocol/general/lbs_gnss_tc_struct.h
new file mode 100644
index 0000000..acda334
--- /dev/null
+++ b/mcu/interface/protocol/general/lbs_gnss_tc_struct.h
@@ -0,0 +1,98 @@
+#ifndef _LBS_GNSS_TC_STRUCT_H
+#define _LBS_GNSS_TC_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "gnss_tc_common_struct.h"
+#include "ps_public_utility.h"
+
+#pragma pack(push)
+#pragma pack(8)  /* To avoid AP modem alignment issue */
+
+typedef struct
+{
+    kal_uint16 transactionID;   /* 0...65535 */
+    kal_uint8 ctrlFlag;         /* 0: Disable/request to STOP. 1: Enable/request to START. 2: Test Mode Enable */
+    kal_uint32 pulsePeriod;     /* 100~300000 msec, effective when ctrlFlag:2 */
+    kal_uint16 pulseNumber;     /* 0,1~7200. 0: Periodic mode, 1~7200 none-Periodic Number of pulse */
+} mnl_md_time_sync_req_struct;
+
+typedef struct
+{
+    kal_uint16 transactionID; /* 0...65535 */
+} mnl_md_time_sync_rsp_struct;
+
+typedef struct
+{
+    kal_uint16 transactionID; /* 0...65535 */
+    cell_information_struct cell_info;
+    gnss_timeInformation_struct gnss_timeInfo;
+} mnl_md_time_info_rsp_struct;
+
+typedef struct
+{
+    kal_uint16 transactionID; /* 0...65535 */
+} mnl_md_time_sync_cnf_struct;
+
+typedef struct
+{
+    kal_uint16 transactionID; /* 0...65535 */
+    cell_information_struct cell_info;
+    gnss_timeInformation_struct gnss_timeInfo;
+} mnl_md_time_sync_ind_struct;
+
+#pragma pack(pop) /* Restore the alignment configuration */
+
+/* LBS -> GNSS_TC */
+/* This structure is for MSG_ID_LBS_GNSS_TC_TIME_SYNC_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    mnl_md_time_sync_req_struct  timeSyncReq;
+} lbs_gnss_tc_time_sync_req_struct;
+
+/* This structure is for MSG_ID_LBS_GNSS_TC_TIME_SYNC_RSP */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    mnl_md_time_sync_rsp_struct timeSyncRsp; 
+} lbs_gnss_tc_time_sync_rsp_struct;
+
+/* This structure is for MSG_ID_LBS_GNSS_TC_TIME_INFO_RSP */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    mnl_md_time_info_rsp_struct timeInfoRsp; 
+} lbs_gnss_tc_time_info_rsp_struct;
+
+/* This structure is for MSG_ID_LBS_GNSS_TC_ACTIVE_SIM_RSP */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 active_sim;
+    rat_enum active_rat;
+} lbs_gnss_tc_active_sim_rsp_struct;
+
+
+/* GNSS_TC -> LBS */
+/* This structure is for MSG_ID_LBS_GNSS_TC_TIME_SYNC_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    mnl_md_time_sync_cnf_struct timeSyncCnf;
+} lbs_gnss_tc_time_sync_cnf_struct;
+
+/* This structure is for MSG_ID_LBS_GNSS_TC_TIME_SYNC_IND */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    mnl_md_time_sync_ind_struct  timeSyncInd;
+} lbs_gnss_tc_time_sync_ind_struct;
+
+#endif /*_LBS_GNSS_TC_STRUCT_H*/
+
diff --git a/mcu/interface/protocol/general/lpp_lbs_msg_struct.h b/mcu/interface/protocol/general/lpp_lbs_msg_struct.h
new file mode 100644
index 0000000..9dc9fbc
--- /dev/null
+++ b/mcu/interface/protocol/general/lpp_lbs_msg_struct.h
@@ -0,0 +1,945 @@
+/******************************************************************************
+*  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) 2013
+*
+*  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:
+ * --------------------------------------------------------
+ *   lpp_lbs_msg_struct.h
+ *
+ * Project:
+ * --------------------------------------------------------
+ *   LTE project
+ *
+ * Description:
+ * --------------------------------------------------------
+ *   LTE Positioning Protocol - LBS Message Structure Definition
+ *
+ * Author:
+ * --------------------------------------------------------
+ * -------
+ *
+ * --------------------------------------------------------
+ * $Log$
+ *
+ * 04 15 2020 jie-yu.wang
+ * [MOLY00499242] [LPP][Gen97] MP5 feature- Inter RAT eCID
+ * [NR15.R3.MP][LPP] inter-RAT eCID.
+ *
+ * 06 20 2019 jie-yu.wang
+ * [MOLY00415205] [AGPS] [LBS] NR Neighbor cell information for SUPL
+ * [OA][LBS] SUPL Nbr Cell Interface.
+ *
+ * 03 28 2019 jie-yu.wang
+ * [MOLY00394881] [LPP] Inter RAT OTDOA modification
+ * [LPP] InterRAT OTDOA interface.
+ *
+ * 11 29 2018 roland.li
+ * [MOLY00363204] [Gen97] NR positioning interface check-in
+ * [LPP] 5G positioning interface.
+ *
+ * 03 09 2018 jie-yu.wang
+ * [MOLY00306235] [UMOLYE] LPP ASN Release 14 upgrade
+ * [LPP] LPP SWIP R14 upgrade.
+ *
+ * 10 20 2017 jie-yu.wang
+ * [MOLY00284367] [LPP] LR12 Earlyfix Development
+ * [LPP] Earlyfix Modification.
+ *
+ * 07 07 2017 jie-yu.wang
+ * [MOLY00261827] [UMOYLA] LPPe development
+ * [LPP] LPPe code change check-in.
+ *
+ * 10 28 2016 wynne.chu
+ * [MOLY00192824] [LBS/GPS] L+L development
+ * 	
+ * 	.
+ *
+ * 01 14 2015 roland.li
+ * [MOLY00092193] [UMOLY][LPP]LPP R10R11 feature checkin
+ * .
+ *
+ * 09 26 2014 roland.li
+ * [MOLY00079521] [LPP][User Plane]OTDOA assistance data size reduction
+ * .
+ *
+ *
+ *****************************************************************************/
+
+#ifndef _LPP_LBS_MSG_STRUCT_H
+#define _LPP_LBS_MSG_STRUCT_H
+
+#include "kal_public_api.h"
+#include "kal_public_defs.h"
+#include "kal_general_types.h"
+
+/* LPP and LPPe common interface */
+#include "lpp_lppe_def.h"
+#include "lpp_lppe_struct.h"
+#include "lbs_common_enum.h"
+
+//#if defined(__LPP_CP_SUPPORT__) || defined(__LPP_UP_SUPPORT__)
+
+/*****************************************************************************
+ * Macros Without Parameters
+ *****************************************************************************/
+#define LPP_PEER_OTDOA_MAX_NBR_CELL_FREQ_LAYER_NUM   3   /* inherit LPP_OTDOA_MAX_NBR_CELL_FREQ_LAYER_NUM */
+#define LPP_PEER_OTDOA_MAX_NBR_CELL_LIST_NUM        24   /* inherit LPP_OTDOA_MAX_NBR_CELL_LIST_NUM */
+
+#define LPP_PEER_ECID_MAX_MEASURED_CELL_INFO_NUM    32   /* inherit LPP_ECID_MAX_MEASURED_CELL_INFO_NUM */
+
+#define LPP_PEER_MAX_BANDS                          64   /* inherit LPP_MAX_BANDS */
+#define MAX_ENUM_VALUE       2147483647   /* To align AP structure */
+/* Define of peerNbrCellBitmap*/
+#define LPP_PEER_OTDOA_NBR_CELL_BIT_EARFCNVALID              0x80
+#define LPP_PEER_OTDOA_NBR_CELL_BIT_ISCPLENGTHEXTENDEDVALID  0x40
+#define LPP_PEER_OTDOA_NBR_CELL_BIT_ISCPLENGTHEXTENDED       0x20
+#define LPP_PEER_OTDOA_NBR_CELL_BIT_ISFOURANTPORTCONFIGVALID 0x10
+#define LPP_PEER_OTDOA_NBR_CELL_BIT_ISFOURANTPORTCONFIG      0x08
+#define LPP_PEER_OTDOA_NBR_CELL_BIT_PRSINFOVALID             0x04
+#define LPP_PEER_OTDOA_NBR_CELL_BIT_SLOTNUMBEROFFSETVALID    0x02
+#define LPP_PEER_OTDOA_NBR_CELL_BIT_PRSSUBFRAMEOFFSETVALID   0x01
+/*****************************************************************************
+ * Macros With Parameters
+ *****************************************************************************/
+/*Macros for peerNbrCellBitmap*/
+#define LPP_PEER_OTDOA_NBR_CELL_GET_EARFCNVALID(pPeerNbr)              (((pPeerNbr)->peerNbrCellBitmap & LPP_PEER_OTDOA_NBR_CELL_BIT_EARFCNVALID             )? KAL_TRUE : KAL_FALSE)
+#define LPP_PEER_OTDOA_NBR_CELL_GET_ISCPLENGTHEXTENDEDVALID(pPeerNbr)  (((pPeerNbr)->peerNbrCellBitmap & LPP_PEER_OTDOA_NBR_CELL_BIT_ISCPLENGTHEXTENDEDVALID )? KAL_TRUE : KAL_FALSE)
+#define LPP_PEER_OTDOA_NBR_CELL_GET_ISCPLENGTHEXTENDED(pPeerNbr)       (((pPeerNbr)->peerNbrCellBitmap & LPP_PEER_OTDOA_NBR_CELL_BIT_ISCPLENGTHEXTENDED      )? KAL_TRUE : KAL_FALSE)
+#define LPP_PEER_OTDOA_NBR_CELL_GET_ISFOURANTPORTCONFIGVALID(pPeerNbr) (((pPeerNbr)->peerNbrCellBitmap & LPP_PEER_OTDOA_NBR_CELL_BIT_ISFOURANTPORTCONFIGVALID)? KAL_TRUE : KAL_FALSE)
+#define LPP_PEER_OTDOA_NBR_CELL_GET_ISFOURANTPORTCONFIG(pPeerNbr)      (((pPeerNbr)->peerNbrCellBitmap & LPP_PEER_OTDOA_NBR_CELL_BIT_ISFOURANTPORTCONFIG     )? KAL_TRUE : KAL_FALSE)
+#define LPP_PEER_OTDOA_NBR_CELL_GET_PRSINFOVALID(pPeerNbr)             (((pPeerNbr)->peerNbrCellBitmap & LPP_PEER_OTDOA_NBR_CELL_BIT_PRSINFOVALID            )? KAL_TRUE : KAL_FALSE)
+#define LPP_PEER_OTDOA_NBR_CELL_GET_SLOTNUMBEROFFSETVALID(pPeerNbr)    (((pPeerNbr)->peerNbrCellBitmap & LPP_PEER_OTDOA_NBR_CELL_BIT_SLOTNUMBEROFFSETVALID   )? KAL_TRUE : KAL_FALSE)
+#define LPP_PEER_OTDOA_NBR_CELL_GET_PRSSUBFRAMEOFFSETVALID(pPeerNbr)   (((pPeerNbr)->peerNbrCellBitmap & LPP_PEER_OTDOA_NBR_CELL_BIT_PRSSUBFRAMEOFFSETVALID  )? KAL_TRUE : KAL_FALSE)
+
+#define LPP_PEER_OTDOA_NBR_CELL_SET_EARFCNVALID(pPeerNbr)              ((pPeerNbr)->peerNbrCellBitmap |= LPP_PEER_OTDOA_NBR_CELL_BIT_EARFCNVALID             )
+#define LPP_PEER_OTDOA_NBR_CELL_SET_ISCPLENGTHEXTENDEDVALID(pPeerNbr)  ((pPeerNbr)->peerNbrCellBitmap |= LPP_PEER_OTDOA_NBR_CELL_BIT_ISCPLENGTHEXTENDEDVALID )
+#define LPP_PEER_OTDOA_NBR_CELL_SET_ISCPLENGTHEXTENDED(pPeerNbr)       ((pPeerNbr)->peerNbrCellBitmap |= LPP_PEER_OTDOA_NBR_CELL_BIT_ISCPLENGTHEXTENDED      )
+#define LPP_PEER_OTDOA_NBR_CELL_SET_ISFOURANTPORTCONFIGVALID(pPeerNbr) ((pPeerNbr)->peerNbrCellBitmap |= LPP_PEER_OTDOA_NBR_CELL_BIT_ISFOURANTPORTCONFIGVALID)
+#define LPP_PEER_OTDOA_NBR_CELL_SET_ISFOURANTPORTCONFIG(pPeerNbr)      ((pPeerNbr)->peerNbrCellBitmap |= LPP_PEER_OTDOA_NBR_CELL_BIT_ISFOURANTPORTCONFIG     )
+#define LPP_PEER_OTDOA_NBR_CELL_SET_PRSINFOVALID(pPeerNbr)             ((pPeerNbr)->peerNbrCellBitmap |= LPP_PEER_OTDOA_NBR_CELL_BIT_PRSINFOVALID            )
+#define LPP_PEER_OTDOA_NBR_CELL_SET_SLOTNUMBEROFFSETVALID(pPeerNbr)    ((pPeerNbr)->peerNbrCellBitmap |= LPP_PEER_OTDOA_NBR_CELL_BIT_SLOTNUMBEROFFSETVALID   )
+#define LPP_PEER_OTDOA_NBR_CELL_SET_PRSSUBFRAMEOFFSETVALID(pPeerNbr)   ((pPeerNbr)->peerNbrCellBitmap |= LPP_PEER_OTDOA_NBR_CELL_BIT_PRSSUBFRAMEOFFSETVALID  )
+
+#define LPP_PEER_OTDOA_NBR_CELL_CLEAR_EARFCNVALID(pPeerNbr)              ((pPeerNbr)->peerNbrCellBitmap &= ~LPP_PEER_OTDOA_NBR_CELL_BIT_EARFCNVALID             )
+#define LPP_PEER_OTDOA_NBR_CELL_CLEAR_ISCPLENGTHEXTENDEDVALID(pPeerNbr)  ((pPeerNbr)->peerNbrCellBitmap &= ~LPP_PEER_OTDOA_NBR_CELL_BIT_ISCPLENGTHEXTENDEDVALID )
+#define LPP_PEER_OTDOA_NBR_CELL_CLEAR_ISCPLENGTHEXTENDED(pPeerNbr)       ((pPeerNbr)->peerNbrCellBitmap &= ~LPP_PEER_OTDOA_NBR_CELL_BIT_ISCPLENGTHEXTENDED      )
+#define LPP_PEER_OTDOA_NBR_CELL_CLEAR_ISFOURANTPORTCONFIGVALID(pPeerNbr) ((pPeerNbr)->peerNbrCellBitmap &= ~LPP_PEER_OTDOA_NBR_CELL_BIT_ISFOURANTPORTCONFIGVALID)
+#define LPP_PEER_OTDOA_NBR_CELL_CLEAR_ISFOURANTPORTCONFIG(pPeerNbr)      ((pPeerNbr)->peerNbrCellBitmap &= ~LPP_PEER_OTDOA_NBR_CELL_BIT_ISFOURANTPORTCONFIG     )
+#define LPP_PEER_OTDOA_NBR_CELL_CLEAR_PRSINFOVALID(pPeerNbr)             ((pPeerNbr)->peerNbrCellBitmap &= ~LPP_PEER_OTDOA_NBR_CELL_BIT_PRSINFOVALID            )
+#define LPP_PEER_OTDOA_NBR_CELL_CLEAR_SLOTNUMBEROFFSETVALID(pPeerNbr)    ((pPeerNbr)->peerNbrCellBitmap &= ~LPP_PEER_OTDOA_NBR_CELL_BIT_SLOTNUMBEROFFSETVALID   )
+#define LPP_PEER_OTDOA_NBR_CELL_CLEAR_PRSSUBFRAMEOFFSETVALID(pPeerNbr)   ((pPeerNbr)->peerNbrCellBitmap &= ~LPP_PEER_OTDOA_NBR_CELL_BIT_PRSSUBFRAMEOFFSETVALID  )
+
+
+/*****************************************************************************
+ * Enums without tags
+ *****************************************************************************/
+
+
+/*****************************************************************************
+ * Type Definitions
+ *****************************************************************************/
+
+/* LPP -> LBS */
+/* This structure for MSG_ID_LPP_LBS_SESSION_START_IND */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} lpp_lbs_session_start_ind_struct;
+
+
+/* This structure for MSG_ID_LPP_LBS_SESSION_END_IND */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} lpp_lbs_session_end_ind_struct;
+
+
+typedef enum
+{
+    LPP_POS_METHOD_TYPE_NONE,
+    LPP_POS_METHOD_TYPE_AGNSS,
+    LPP_POS_METHOD_TYPE_OTDOA,
+    LPP_POS_METHOD_TYPE_ECID,
+    LPP_POS_METHOD_TYPE_LPPE
+} lpp_pos_method_type_enum;
+
+typedef enum
+{
+    LPP_ACTIVATE_RAT_NONE,
+    LPP_ACTIVATE_RAT_GSM,
+    LPP_ACTIVATE_RAT_UMTS,
+    LPP_ACTIVATE_RAT_LTE,
+    LPP_ACTIVATE_RAT_NR,
+    LPP_ACTIVATE_RAT_MAX = MAX_ENUM_VALUE,
+} lpp_activate_rat_enum;
+
+typedef struct {
+    kal_uint8 mcc1;
+    kal_uint8 mcc2;
+    kal_uint8 mcc3;
+    kal_uint8 mnc1;
+    kal_uint8 mnc2;
+    kal_uint8 mnc3;
+} lbs_plmn_id_struct;
+
+/* This structure for MSG_ID_LPP_LBS_POS_METHOD_IND */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    lpp_pos_method_type_enum  posMethod;
+} lpp_lbs_pos_method_ind_struct;
+
+
+/*---LPPe interface---*/
+/*Assistance Data*/
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+
+/* MSG_ID_LPP_LBS_EXT_WLAN_POS_ASSIST_DATA_PROVIDE_IND: transfer the assist data to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    kal_bool    result;   /* indicate the LPP/LPPe can initiate an AD request to the network */
+    //lpp_lppe_wlan_ap_ad_struct  wlanAP;
+} lpp_lbs_ext_wlan_pos_assist_data_provide_ind_struct;
+
+/* MSG_ID_LPP_LBS_EXT_BT_POS_ASSIST_DATA_PROVIDE_IND: transfer the assist data to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    kal_bool    result;   /* indicate the LPP/LPPe can initiate an AD request to the network */
+    //lpp_lppe_srn_ad_struct      srn;
+} lpp_lbs_ext_bt_pos_assist_data_provide_ind_struct;
+
+/* MSG_ID_LPP_LBS_EXT_SENSOR_POS_ASSIST_DATA_PROVIDE_IND: transfer the assist data to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    kal_bool    result;   /* indicate the LPP/LPPe can initiate an AD request to the network */
+    //lpp_lppe_sensor_ad_struct   sensor;
+} lpp_lbs_ext_sensor_pos_assist_data_provide_ind_struct;
+
+
+/*Location Information*/
+/*Original design*/
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+
+/* MSG_ID_LPP_LBS_EXT_WLAN_START_IND: transfer the start message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    lpp_lppe_wlan_meas_req_struct   wlanAPReq;
+} lpp_lbs_ext_wlan_start_ind_struct;
+
+/* MSG_ID_LPP_LBS_EXT_BT_START_IND: transfer the start message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    lpp_lppe_bt_meas_req_struct   btReq;
+} lpp_lbs_ext_bt_start_ind_struct;
+
+/* MSG_ID_LPP_LBS_EXT_SENSOR_START_IND: transfer the start message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    lpp_lppe_sensor_meas_req_struct   sensorReq;
+} lpp_lbs_ext_sensor_start_ind_struct;
+
+/* MSG_ID_LPP_LBS_EXT_NETWORK_START_IND: transfer the start message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+} lpp_lbs_ext_network_start_ind_struct;
+
+/* MSG_ID_LPP_LBS_EXT_WLAN_MEAS_QUERY_REQ: transfer the query message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+} lpp_lbs_ext_wlan_meas_query_req_struct;
+
+/* MSG_ID_LPP_LBS_EXT_BT_MEAS_QUERY_REQ: transfer the query message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+} lpp_lbs_ext_bt_meas_query_req_struct;
+
+/* MSG_ID_LPP_LBS_EXT_SENSOR_MEAS_QUERY_REQ: transfer the query message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+} lpp_lbs_ext_sensor_meas_query_req_struct;
+
+/* MSG_ID_LPP_LBS_EXT_NETWORK_MEAS_QUERY_REQ: transfer the query message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+} lpp_lbs_ext_network_meas_query_req_struct;
+
+/* MSG_ID_LPP_LBS_EXT_IPADDRESS_MEAS_QUERY_REQ: transfer the query message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+} lpp_lbs_ext_ipaddress_meas_query_req_struct;
+
+
+/* MSG_ID_LPP_LBS_EXT_WLAN_STOP_IND: transfer the stop message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+} lpp_lbs_ext_wlan_stop_ind_struct;
+
+/* MSG_ID_LPP_LBS_EXT_BT_STOP_IND: transfer the stop message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+} lpp_lbs_ext_bt_stop_ind_struct;
+
+/* MSG_ID_LPP_LBS_EXT_SENSOR_STOP_IND: transfer the stop message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+} lpp_lbs_ext_sensor_stop_ind_struct;
+
+/* MSG_ID_LPP_LBS_EXT_NETWORK_STOP_IND: transfer the stop message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+} lpp_lbs_ext_network_stop_ind_struct;
+
+
+/*Capability*/
+/*TBD: AP provide capabilities without request*/
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+/* LBS -> LPP */
+/* This structure for MSG_ID_LPP_LBS_SESSION_END_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} lpp_lbs_session_end_req_struct;
+
+
+/* This structure for MSG_ID_LPP_LBS_CAPABILITY_UPDATE_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    /* TBD: only allow change positioning method support capability */
+    kal_bool  agnssSupport;
+    kal_bool  otdoaSupport;
+    kal_bool  ecidSupport;
+} lpp_lbs_capability_update_req_struct;
+
+
+/* This structure for MSG_ID_LPP_LBS_RESET_UE_STORED_POS_INFO_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool  resetAgnss;
+    kal_bool  resetOtdoa;
+} lpp_lbs_reset_ue_stored_pos_info_req_struct;
+
+
+/*---LPPe Interface---*/
+/*Assistance Data*/
+/*Orignal design*/
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+
+/* MSG_ID_LPP_LBS_EXT_WLAN_POS_ASSIST_DATA_REQUEST_IND: AP connectivity module requests to assist data request */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    void* ptr;
+} lpp_lbs_ext_wlan_pos_assist_data_request_ind_struct;
+
+/* MSG_ID_LPP_LBS_EXT_BT_POS_ASSIST_DATA_REQUEST_IND: AP connectivity module requests to assist data request */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    void* ptr;
+} lpp_lbs_ext_bt_pos_assist_data_request_ind_struct;
+
+/* MSG_ID_LPP_LBS_EXT_SENSOR_POS_ASSIST_DATA_REQUEST_IND: AP connectivity module requests to assist data request */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    void* ptr;
+} lpp_lbs_ext_sensor_pos_assist_data_request_ind_struct;
+
+
+/*Location Information*/
+/*Orignal design*/
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+/* MSG_ID_LPP_LBS_EXT_WLAN_MEAS_QUERY_CNF: provide location information of specified positioning methods */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    lpp_lppe_wlan_meas_struct  wlanAPCnf;
+} lpp_lbs_ext_wlan_meas_query_cnf_struct;
+
+/* MSG_ID_LPP_LBS_EXT_BT_MEAS_QUERY_CNF: provide location information of specified positioning methods */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    lpp_lppe_bt_meas_struct  btCnf;
+} lpp_lbs_ext_bt_meas_query_cnf_struct;
+
+/* MSG_ID_LPP_LBS_EXT_SENSOR_MEAS_QUERY_CNF: provide location information of specified positioning methods */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    lpp_lppe_sensor_meas_struct  sensorCnf;
+} lpp_lbs_ext_sensor_meas_query_cnf_struct;
+
+/* MSG_ID_LPP_LBS_EXT_NETWORK_MEAS_QUERY_CNF: provide location information of specified positioning methods */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    lpp_lppe_network_meas_struct  networkCnf;
+} lpp_lbs_ext_network_meas_query_cnf_struct;
+
+/* MSG_ID_LPP_LBS_EXT_IPADDRESS_MEAS_QUERY_CNF: provide location information of specified positioning methods */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    lpp_lppe_ipaddress_meas_struct  ipAddressCnf;
+} lpp_lbs_ext_ipaddress_meas_query_cnf_struct;
+
+/*Capability*/
+/*Original design*/
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+/* MSG_ID_LPP_LBS_EXT_WLAN_CAPABILITY_IND: unsolicited capability indications from AP connectivity module */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    wlan_ap_capability_struct   wlanAPCapa;
+} lpp_lbs_ext_wlan_capability_ind_struct;
+
+/* MSG_ID_LPP_LBS_EXT_BT_CAPABILITY_IND: unsolicited capability indications from AP connectivity module */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    bt_capability_struct       btCapa;
+} lpp_lbs_ext_bt_capability_ind_struct;
+
+/* MSG_ID_LPP_LBS_EXT_SENSOR_CAPABILITY_IND: unsolicited capability indications from AP connectivity module */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+   sensor_capability_struct    sensorCapa;
+} lpp_lbs_ext_sensor_capability_ind_struct;
+
+/* MSG_ID_LPP_LBS_EXT_NETWORK_CAPABILITY_IND: unsolicited capability indications from AP connectivity module */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    kal_bool  networkLocationSupported;
+} lpp_lbs_ext_network_capability_ind_struct;
+
+/* MSG_ID_LPP_LBS_EXT_IPADDRESS_CAPABILITY_IND: unsolicited capability indications from AP connectivity module */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 padding[4];
+    ipaddress_capability_struct  ipAddressCapa;
+} lpp_lbs_ext_ipaddress_capability_ind_struct;
+
+
+/* LPP (SWIP) -> LPP */
+/* This structure for MSG_ID_LPP_PEER_OTDOA_MEAS_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    /* refer to lpp_el1_otdoa_meas_req_struct, for UP forward only */
+    kal_uint16  transactionID;
+    kal_uint8   responseTime;     /* [1..128], unit in seconds, for EL1 knowing about how long it will take for OTDOA measurement, but LPP still controls the response timer */
+    kal_uint8   sim_source;      /* CP only element. It's for L+L */
+    kal_bool   isResponseTimeEarlyFixValid;
+    kal_uint8   earlyResponseTime;     /* [1..128], unit in seconds, for EL1 knowing about how long it will take for OTDOA measurement early Fix, but LPP still controls the response timer */
+    lpp_activate_rat_enum active_rat;
+} lpp_peer_otdoa_meas_req_struct;
+
+
+/* this structure is dedicated for UP peer forward */
+typedef struct
+{
+   kal_uint8   prsBandwidth;  /* map to lpp_otdoa_prs_info_bandwidth_enum */
+   kal_uint8   numDLFrames;   /* map to lpp_otdoa_prs_info_num_dl_frame_enum */
+   kal_uint8   prsMutingInfoValid; /* map to kal_bool */
+   kal_uint8   prsMutingInfoType;  /* map to lpp_otdoa_prs_info_muting_po_enum */
+   kal_uint16  prsConfigIndex;     /* [0..4095] */
+   kal_uint16  prsMutingInfoBits;  /* Position Occasion: PO-2: 2 bits, PO-4: 4 bits, PO-8: 8 bits, PO-16: 16 bits */
+} lpp_peer_otdoa_prs_info;
+
+
+/* this structure is dedicated for UP peer forward */
+typedef struct
+{
+    kal_uint8                earfcnValid;               /* map to kal_bool, FALSE: indicate this is a intra-freq cell, EL1 should use current serving cell's earfcn; TRUE: indicate this is a inter-freq cell */
+    kal_uint8                isFourAntPortConfigValid;  /* map to kal_bool */
+    kal_uint8                isFourAntPortConfig;       /* map to kal_bool, TRUE: 4 antenna ports for CRS are used in the assistance data reference cell, FALSE: 1 (or 2) antenna port(s) */
+    kal_uint8                isCPLengthExtended;        /* map to kal_bool, TRUE: cyclic prefix length of PRS or CRS is extended, FALSE: cyclic prefix length is normal */
+    kal_uint8                prsInfoValid;              /* map to kal_bool */
+    kal_uint16               phyCellId;                 /* [0..503] */
+    kal_uint32               earfcn;                    /* [0..262143], 65535 is invalid to indicate ARFCN-ValueEUTRA-v9a0 present; LPP assign reference cell if received message IE does not present */
+    lpp_peer_otdoa_prs_info  prsInfo;
+} lpp_peer_otdoa_ref_cell_info_struct;
+
+
+/* this structure is dedicated for UP peer forward */
+typedef struct
+{
+    kal_uint8                peerNbrCellBitmap;         /*earfcnValid; isCPLengthExtendedValid; isCPLengthExtended; isFourAntPortConfigValid; isFourAntPortConfig; prsInfoValid; slotNumberOffsetValid; prsSubFrameOffsetValid;*/
+    kal_uint8                slotNumberOffset;          /* [0..19] */
+    kal_uint16               phyCellId;                 /* [0..503] */
+    kal_uint16               prsSubFrameOffset;         /* [0..1279] */
+    kal_uint16               expectedRSTD;              /* [0..16383] */
+    kal_uint16               expectedRSTDUnc;           /* [0..1023] */
+    kal_uint32               earfcn;                    /* [0..262143], 65535 is invalid to indicate ARFCN-ValueEUTRA-v9a0 present; LPP assign reference cell if received message IE does not present */
+    lpp_peer_otdoa_prs_info  prsInfo;
+} lpp_peer_otdoa_nbr_cell_info_struct;
+
+
+/* this structure is dedicated for UP peer forward */
+typedef struct
+{
+    kal_uint8                            numCellInfo;
+    lpp_peer_otdoa_nbr_cell_info_struct  cellInfo[LPP_PEER_OTDOA_MAX_NBR_CELL_LIST_NUM];
+} lpp_peer_otdoa_nbr_cell_info_list_struct;
+
+
+/* this structure is dedicated for UP peer forward */
+typedef struct
+{
+    kal_uint8                                 numFreqInfo;
+    lpp_peer_otdoa_nbr_cell_info_list_struct  freqInfo[LPP_PEER_OTDOA_MAX_NBR_CELL_FREQ_LAYER_NUM]; 
+}  lpp_peer_otdoa_nbr_freq_info_list_struct;
+
+
+/* This structure for MSG_ID_LPP_PEER_OTDOA_ASSIST_DATA_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    /* refer to lpp_el1_otdoa_assist_data_req_struct, for UP forward only */
+    kal_uint16                                transactionID;
+    kal_uint8                                 refCellInfoValid;  /* map to kal_bool */
+    lpp_peer_otdoa_ref_cell_info_struct       refCellInfo;
+    kal_uint8                                 nbrCellInfoValid;  /* map to kal_bool */
+    lpp_peer_otdoa_nbr_freq_info_list_struct  nbrCellInfo;
+    kal_uint8   sim_source;
+    kal_uint8   isNrLteSfnOffsetValid;   /* The validity of following parameter nrLteSfnOffset. */
+    kal_uint16   nrLteSfnOffset;   /* [0...1023], specifies the SFN offset between the serving NR cell and the assistance data reference cell. */
+    kal_uint8     isNrLteFineTimingOffsetValid;  /* The validity of following parameter NrLteFineTimingOffset. */
+    kal_uint8    NrLteFineTimingOffset;   /* [0...19],unit in 0.5ms. specifies the frame boundary offset between the NR serving cell and the LTE assistance data reference cell. */
+    lpp_activate_rat_enum active_rat;
+    /* optional field  */
+    kal_uint8   isRefGlobalCellIdValid;
+    lbs_plmn_id_struct  plmnId;
+    kal_uint32  refCellId; /* eutra 28 bits*/
+} lpp_peer_otdoa_assist_data_req_struct;
+
+
+/* This structure for MSG_ID_LPP_PEER_OTDOA_MEAS_ABORT_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    /* refer to lpp_el1_otdoa_meas_abort_req_struct, for UP forward only */
+    kal_uint16  transactionID;
+    kal_uint8   sim_source;
+    lpp_activate_rat_enum active_rat;
+} lpp_peer_otdoa_meas_abort_req_struct;
+
+
+/* This structure for MSG_ID_LPP_PEER_ECID_MEAS_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    /* refer to lpp_errc_ecid_meas_req_struct, for UP forward only */
+    kal_uint16  transactionID;
+    kal_uint8   rsrpReq;            /* map to kal_bool */
+    kal_uint8   rsrqReq;            /* map to kal_bool */
+    kal_uint8   ueRxTxTimeDiffReq;  /* map to kal_bool */
+    kal_uint8   sim_source;
+    kal_uint8   ueRxTxSupTDD;
+    lpp_activate_rat_enum active_rat;
+    kal_uint8   ueNRLPPSup;
+} lpp_peer_ecid_meas_req_struct;
+
+
+/* This structure for MSG_ID_LPP_PEER_ECID_MEAS_ABORT_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    /* refer to lpp_errc_ecid_abort_req_struct, for UP forward only */
+    kal_uint16  transactionID;
+    kal_uint8   sim_source;
+    lpp_activate_rat_enum active_rat;
+} lpp_peer_ecid_meas_abort_req_struct;
+
+
+/* LPP -> LPP (SWIP) */
+
+/* this structure is dedicated for UP peer forward */
+typedef struct
+{
+    kal_uint8  errResolution;     /* 2 bits, refer description as above */
+    kal_uint8  errValue;          /* 5 bits, refer description as above */
+    kal_uint8  errSamplesValid;   /* map to kal_bool */
+    kal_uint8  errSamples;        /* 3 bits, refer description as above */
+} lpp_peer_otdoa_measured_quality_struct;
+
+
+/* this structure is dedicated for UP peer forward */
+typedef struct
+{
+    kal_uint16                              phyCellId;
+    kal_uint32                              earfcn;        /* [0..262143], 65535 is invalid to indicate ARFCN-ValueEUTRA-v9a0 present */
+    kal_uint16                              rstd;          /* [0..12711], mapping refer to TS 36.133 table 9.1.10.3-1 */
+    lpp_peer_otdoa_measured_quality_struct  rstdQuality;
+} lpp_peer_otdoa_measured_nbr_cell_struct;
+
+
+/* this structure is dedicated for UP peer forward */
+typedef struct
+{
+    kal_uint16                               sysFrameNumber;      /* 10 bits */
+    kal_uint16                               refPhyCellId;        /* [0..503] */
+    kal_uint32                               refEarfcn;           /* [0..262143], 65535 is invalid to indicate ARFCN-ValueEUTRA-v9a0 present */
+    kal_uint8                                refQualityValid;     /* map to kal_bool */
+    lpp_peer_otdoa_measured_quality_struct   refQuality;
+    kal_uint8                                numMeasuredNbrCell;
+    lpp_peer_otdoa_measured_nbr_cell_struct  measuredNbrCell[LPP_PEER_OTDOA_MAX_NBR_CELL_LIST_NUM];
+}  lpp_peer_otdoa_measured_info_struct;
+
+
+/* This structure for MSG_ID_LPP_PEER_OTDOA_MEAS_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR    
+    /* refer to lpp_el1_otdoa_meas_cnf_struct, for UP forward only */
+    kal_uint16                           transactionID;
+    lpp_peer_otdoa_measured_info_struct  measurementResult;
+    kal_bool                        isEarlyFixReport;
+} lpp_peer_otdoa_meas_cnf_struct;
+
+
+/* This structure for MSG_ID_LPP_PEER_OTDOA_ASSIST_DATA_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    /* refer to lpp_el1_otdoa_assist_data_cnf_struct, for UP forward only */
+    kal_uint16  transactionID;
+} lpp_peer_otdoa_assist_data_cnf_struct;
+
+
+/* This structure for MSG_ID_LPP_PEER_OTDOA_ADDITIONAL_ASSIST_DATA_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16  transactionID;   /* assoicated measurement transaction ID */
+    kal_uint16  physCellId;      /* [0..503] */
+} lpp_peer_otdoa_additional_assist_data_req_struct;  /* same as lpp_el1_otdoa_additional_assist_data_ind_struct */
+
+
+/* this structure is dedicated for UP peer forward */
+typedef struct
+{
+    kal_uint16          phyCellId;            /* [0..503] */
+    kal_uint8           plmnIdValid;          /* map to kal_bool */
+    lbs_plmn_id_struct  plmnId;
+    kal_uint8           cellIdValid;          /* map to kal_bool */
+    kal_uint32          cellId;               /* eutra 28 bits */
+    kal_uint32          earfcn;               /* [0..262143], 65535 is invalid to indicate ARFCN-ValueEUTRA-v9a0 present */
+    kal_uint8           sysFrameNumberValid;  /* map to kal_bool */
+    kal_uint16          sysFrameNumber;       /* 10 bits */
+    /* measured result */
+    kal_uint8           rsrpResultValid;      /* map to kal_bool */
+    kal_uint8           rsrpResult;           /* [0..97] */
+    kal_uint8           rsrqResultValid;      /* map to kal_bool */
+    kal_uint8           rsrqResult;           /* [0..34] */
+    kal_uint8           ueRxTxTimeDiffValid;  /* map to kal_bool */
+    kal_uint16          ueRxTxTimeDiff;       /* [0..4095] */
+} lpp_peer_ecid_cell_measured_info_struct;
+
+
+/* this structure is dedicated for UP peer forward */
+typedef struct
+{
+    /**
+     * Please note that the interface here is more straight-forward then ECID-SignalMeasurementInformation IE of LPP Message:
+     * when ERRC has measured primary cell, the result will place at primaryCellMeasuredResult;
+     * (if serving (primary) cell is not present, the whole measured info should be ignored since result will be error)
+     *
+     * in addition to primary cell, if ERRC also measured neighbor cells, they will be put into the array of measuredCellResult[],
+     * and the number of neighbor will specify in numMeasuredCellResult
+     */
+    lpp_peer_ecid_cell_measured_info_struct  primaryCellMeasuredResult;
+    kal_uint8                                numMeasuredCellResult;
+    lpp_peer_ecid_cell_measured_info_struct  measuredCellResult[LPP_PEER_ECID_MAX_MEASURED_CELL_INFO_NUM];
+    kal_uint8  noPrimaryCellMeasuredResult;
+} lpp_peer_ecid_measured_info_struct;
+
+
+/* This structure for MSG_ID_LPP_PEER_ECID_MEAS_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    /* refer to lpp_errc_ecid_meas_cnf_struct, for UP forward only */
+    kal_uint16                          transactionID;
+    kal_uint8                           result;  /* map to lpp_loc_ecid_result_enum */
+    lpp_peer_ecid_measured_info_struct  measurementResult;
+} lpp_peer_ecid_meas_cnf_struct;
+
+
+/* This structure for MSG_ID_LPP_PEER_EUTRAN_BAND_UPDATE_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8   sim_source;
+    lpp_activate_rat_enum active_rat;
+} lpp_peer_eutran_band_update_req_struct;
+
+/* This structure for MSG_ID_LPP_PEER_OTDOA_RESET_UE_STORED_POS_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8   sim_source;
+    lpp_activate_rat_enum active_rat;
+} lpp_peer_otdoa_reset_ue_stored_pos_req_struct;
+
+/* This structure for MSG_ID_LPP_PEER_EUTRAN_BAND_UPDATE_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8   supportEutraBandListNum;
+    kal_uint16  supportEutraBandList[LPP_PEER_MAX_BANDS];
+} lpp_peer_eutran_band_update_cnf_struct;
+
+//#endif  /* #if defined(__LPP_CP_SUPPORT__) || defined(__LPP_UP_SUPPORT__) */
+
+#endif /* _LPP_LBS_MSG_STRUCT_H */
diff --git a/mcu/interface/protocol/general/lpp_lppe_def.h b/mcu/interface/protocol/general/lpp_lppe_def.h
new file mode 100644
index 0000000..24480b4
--- /dev/null
+++ b/mcu/interface/protocol/general/lpp_lppe_def.h
@@ -0,0 +1,352 @@
+/******************************************************************************
+*  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) 2016
+*
+*  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:
+ * --------------------------------------------------------
+ *   lpp_lppe_def.h
+ *
+ * Project:
+ * --------------------------------------------------------
+ *
+ *
+ * Description:
+ * --------------------------------------------------------
+ *   LPP/LPP Extension Interface - Macro Definition
+ *
+ * Author:
+ * --------------------------------------------------------
+ * -------
+ *
+ * --------------------------------------------------------
+ * $Log$
+ *
+ * 09 07 2018 jie-yu.wang
+ * [MOLY00350925] [LPPe] AT&T v18.2 requirement for LPPe MAC Address
+ * [VMOLY][LPPe] AT&T MAC Address report.
+ *
+ * 03 15 2018 jie-yu.wang
+ * [MOLY00311925] Code sync from R3.
+ *
+ * 10 20 2017 roland.li
+ * [MOLY00284361] [LPPe][VzW] LPPe early fix feature
+ * 	
+ * 	.
+ *
+ * 09 06 2016 doug.shih
+ * [LPPe] interface design
+ * .
+ *
+ * 08 24 2016 doug.shih
+ * [LPPe] interface design
+ * .
+ *
+ *
+ *****************************************************************************/
+
+#ifndef _LPP_LPPE_DEF_H
+#define _LPP_LPPE_DEF_H
+
+#include "kal_public_api.h"
+#include "kal_public_defs.h"
+#include "kal_general_types.h"
+
+/**
+ * Nine LPPe sessions in parallel should be the worst case:
+ * AD/LI procedure for HA GNSS, WLAN AP, SENSOR PRESSURE, SRN BT and plus on CAPA proceudre
+ */
+#define LPP_EXT_MAX_SESSION_COUNT                 9
+#define LPP_EXT_SESSION_MAX_POS_METHOD_COUNT      4  /* HA GNSS, WLAN AP, SENSOR PRESSURE, SRN BT */
+
+#define LPP_EXT_RESPONSE_TIMER_MAX_SUPPORT_NUM    3  /* for maximum two parallel transactions which need response time control (WLAN, BT, SENSOR), NETWORK has another timer ID */
+
+
+#define LPP_EXT_MAX_DL_EPDU_BUFFER_COUNT         1  /* for multiple segmented downlink AD EPDU received in a short time */
+#define LPP_EXT_MAX_UL_EPDU_BUFFER_COUNT         1  /* for multiple segmented uplink EPDU sent in a short time */
+
+/* LPPe version and compatible level */
+#define LPP_EXT_MAX_SUPPORT_VER_MAJOR_VER        1  /* fill capability when init, and check when receive message */
+#define LPP_EXT_MAX_SUPPORT_VER_MINOR_VER        0  /* fill capability when init, and check when receive message */
+#define LPP_EXT_SUPPORT_COMPATIBILITY_LEVEL      0  /* fill capability when init, and check when receive message */
+
+/* location soruce method bitmask, 8 bit presentation */
+#define LOC_SRC_METHOD_AGNSS     0x01
+#define LOC_SRC_METHOD_WLAN_AP   0x02
+#define LOC_SRC_METHOD_SRN       0x04
+#define LOC_SRC_METHOD_SENSOR    0x08
+
+#define WLAN_MAX_DATA_SET_ELEMENT             8  /* maxWLANDataSets */
+#define WLAN_AP_MAX_DATA_ELEMENT            128  /* maxWLANAPs */
+#define WLAN_AP_MAX_TYPE_DATA_ELEMENT         5  /* maxWLANTypes */
+#define WLAN_FEMTO_MAX_AREA_ELEMENT          16
+
+/* SRN assistance data element */
+#define SRN_MAX_SRN_GROUP_ELEMENT            64  /* one SRN group might consist of all the SRNs located in one floor of a building. Up to 64 groups can be provided in the same IE */
+#define SRN_MAX_SRN_INFO_ELEMENT           1024
+#define SRN_MAX_GROUP_UPDATE_RSP_ELEMENT      8
+#define SRN_MAX_TARGET_DEVICE_ERR_ELEMENT    16
+#define SRN_MAX_CATEGORY_ELEMENT             16
+#define SRN_MAX_GROUP_ELEMENT               256
+#define SRN_MAX_GROUP_UPDATE_REQ_ELEMENT     64
+#define SRN_MAX_ANTENNA_REQ_ELEMENT           8
+
+/* SRN location request info category, for save memory and buffer usage set 16->2 */
+#define SRN_MAX_LOC_REQ_INFO_CATEGORY_ELEMENT     2
+
+/* IP address list */
+#define LOC_IP_ADDR_MAX_ELEMENT                    5
+
+/* WLAN location info list */
+#define WLAN_AP_MAX_LOC_INFO_LIST_ELEMENT         64
+#define WLAN_AP_MAX_SSID_OCTET                    32
+
+/* Sensor motion state list */
+#define SENSOR_MAX_MOTION_STATE_ELEMENT            8
+#define SENSOR_MAX_CALIBRATION_POINT              10
+
+/* SRN measurement list */
+#define SRN_MAX_MEASUREMENT_ELEMENT               64
+#define SRN_MAX_SRN_MEASUREMENT_ELEMENT           64
+
+
+#define WLAN_AP_LOC_DATA_LCI_LATITUDE_RESOLUTION_BITMASK    0x3F                /*  6 bits, IE use 1 byte */
+#define WLAN_AP_LOC_DATA_LCI_LATITUDE_BITMASK               0x00000003FFFFFFFF  /* 34 bits, IE use 8 byte */
+#define WLAN_AP_LOC_DATA_LCI_LONGITUDE_RESOLUTION_BITMASK   0x3F                /*  6 bits, IE use 1 byte */
+#define WLAN_AP_LOC_DATA_LCI_LONGITUDE_BITMASK              0x00000003FFFFFFFF  /* 34 bits, IE use 8 byte */
+#define WLAN_AP_LOC_DATA_LCI_ALTITUDE_TYPE_BITMASK          0x0F                /*  4 bits, IE use 1 byte */
+#define WLAN_AP_LOC_DATA_LCI_ALTITUDE_RESOLUTION_BITMASK    0x3F                /*  6 bits, IE use 1 byte */
+#define WLAN_AP_LOC_DATA_LCI_ALTITUDE_BITMASK               0x3FFFFFFF          /* 30 bits, IE use 4 byte */
+#define WLAN_AP_LOC_DATA_LCI_DATUM_BITMASK                  0xFF                /*  8 bits, IE use 1 byte */
+
+
+#define WLAP_AP_ID_MAC_ADDR_BITMASK    0xFFFFFFFFFFFF   /* WLAN AP MAC Address contains 48 bits */
+#define BT_ID_MAC_ADDR_BITMASK         0xFFFFFFFFFFFF   /* the MAC address of the SRN for BT and BT LE as per [IEEE 802.15.1] */
+
+
+/* for wlan_ap_location_server_err_cause_struct = not all AD available, 16 bit presentation */
+#define WLAN_AP_LOC_SRV_ERR_AP_MANDATORY_DATA_UNAVAILABLE        0x0800
+#define WLAN_AP_LOC_SRV_ERR_AP_LOCATIONS_UNAVAILABLE             0x0400
+#define WLAN_AP_LOC_SRV_ERR_AP_LOCATION_RELIABILITY_UNAVAILABLE  0x0200
+#define WLAN_AP_LOC_SRV_ERR_AP_TRANSMIT_POWER_UNAVAILABLE        0x0100
+#define WLAN_AP_LOC_SRV_ERR_AP_ANTENNA_GAIN_UNAVAILABLE          0x0080
+#define WLAN_AP_LOC_SRV_ERR_AP_COVERAGE_AREA_UNAVAILABLE         0x0040
+#define WLAN_AP_LOC_SRV_ERR_NON_SERVING_AD_UNAVAILABLE           0x0020
+#define WLAN_AP_LOC_SRV_ERR_AP_TP_NOT_AVAILABLE                  0x0010
+#define WLAN_AP_LOC_SRV_ERR_AP_AG_NOT_AVAILABLE                  0x0008
+#define WLAN_AP_LOC_SRV_ERR_UE_SN_NOT_AVAILABLE                  0x0004
+#define WLAN_AP_LOC_SRV_ERR_UE_RSSI_NOT_AVAILABLE                0x0002
+#define WLAN_AP_LOC_SRV_ERR_OC_NOT_AVAILABLE                     0x0001
+
+
+/* for wlan_ap_target_device_err_cause_struct = not all requested measurement possible, 32 bit presentation */
+#define WLAN_AP_TGT_DEV_ERR_AP_SSID_NOT_AVAILABLE                  0x00010000
+#define WLAN_AP_TGT_DEV_ERR_AP_SN_MEASUREMENT_NOT_POSSIBLE         0x00008000
+#define WLAN_AP_TGT_DEV_ERR_AP_DEV_TYPE_NOT_AVAILABLE              0x00004000
+#define WLAN_AP_TGT_DEV_ERR_AP_PHY_TYPE_NOT_AVAILABLE              0x00002000
+#define WLAN_AP_TGT_DEV_ERR_AP_RSSI_MEASUREMENT_NOT_POSSIBLE       0x00001000
+#define WLAN_AP_TGT_DEV_ERR_AP_CHAN_FREQ_NOT_AVAILABLE             0x00000800
+#define WLAN_AP_TGT_DEV_ERR_AP_RTD_MEASUREMENT_NOT_POSSIBLE        0x00000400
+#define WLAN_AP_TGT_DEV_ERR_UE_TP_NOT_AVAILABLE                    0x00000200
+#define WLAN_AP_TGT_DEV_ERR_UE_AG_NOT_AVAILABLE                    0x00000100
+#define WLAN_AP_TGT_DEV_ERR_AP_REC_LOC_NOT_AVAILABLE               0x00000080
+#define WLAN_AP_TGT_DEV_ERR_NON_SERVING_MEASUREMENT_NOT_AVAILABLE  0x00000040
+#define WLAN_AP_TGT_DEV_ERR_HISTORIC_MEASUREMENT_NOT_AVAILABLE     0x00000020
+#define WLAN_AP_TGT_DEV_ERR_AP_TP_NOT_AVAILABLE                    0x00000010
+#define WLAN_AP_TGT_DEV_ERR_AP_AG_NOT_AVAILABLE                    0x00000008
+#define WLAN_AP_TGT_DEV_ERR_UE_SN_NOT_AVAILABLE                    0x00000004
+#define WLAN_AP_TGT_DEV_ERR_UE_RSSI_NOT_AVAILABLE                  0x00000002
+#define WLAN_AP_TGT_DEV_ERR_OC_NOT_AVAILABLE                       0x00000001
+
+
+/* for srn_target_device_error_element_struct = not all requested measurement possible, 8 bit presentation */
+#define SRN_TGT_DEV_ERR_RSSI_NOT_AVAILABLE                         0x08
+#define SRN_TGT_DEV_ERR_RTD_NOT_AVAILABLE                          0x04
+#define SRN_TGT_DEV_ERR_MULTIPLE_SETS_NOT_AVAILABLE                0x02
+#define SRN_TGT_DEV_ERR_HISTORIC_MEASUREMENTS_NOT_AVAILABLE        0x01
+
+
+/* WLAN AP AD request bitmask, 16 bit presentation */
+#define WLAN_AP_REQ_AD_BIT_AP_LIST                (1 << 0)  /* 0x0001 */
+#define WLAN_AP_REQ_AD_BIT_AP_LOCATION            (1 << 1)  /* 0x0002 */
+#define WLAN_AP_REQ_AD_BIT_LOCATION_RELIABILITY   (1 << 2)  /* 0x0004 */
+#define WLAN_AP_REQ_AD_BIT_TRANSMIT_POWER         (1 << 3)  /* 0x0008 */
+#define WLAN_AP_REQ_AD_BIT_ANTENNA_GAIN           (1 << 4)  /* 0x0010 */
+#define WLAN_AP_REQ_AD_BIT_COVERAGE_AREA          (1 << 5)  /* 0x0020 */
+#define WLAN_AP_REQ_AD_BIT_NON_SERVING            (1 << 6)  /* 0x0040 */
+
+
+/* WLAN AP AD support bitmask, 16 bit presentation */
+#define WLAN_AP_SUPP_AD_BIT_AP_LIST                (1 << 0)  /* 0x0001 */
+#define WLAN_AP_SUPP_AD_BIT_AP_LOCATION            (1 << 1)  /* 0x0002 */
+#define WLAN_AP_SUPP_AD_BIT_LOCATION_RELIABILITY   (1 << 2)  /* 0x0004 */
+#define WLAN_AP_SUPP_AD_BIT_TRANSMIT_POWER         (1 << 3)  /* 0x0008 */
+#define WLAN_AP_SUPP_AD_BIT_ANTENNA_GAIN           (1 << 4)  /* 0x0010 */
+#define WLAN_AP_SUPP_AD_BIT_COVERAGE_AREA          (1 << 5)  /* 0x0020 */
+#define WLAN_AP_SUPP_AD_BIT_NON_SERVING            (1 << 6)  /* 0x0040 */
+
+
+/* WLAN AP type bitmask, 16 bit presentation */
+#define WLAN_AP_TYPE_LIST_BIT_IEEE802_11A         (1 << 0)  /* 0x0001 */
+#define WLAN_AP_TYPE_LIST_BIT_IEEE802_11B         (1 << 1)  /* 0x0002 */
+#define WLAN_AP_TYPE_LIST_BIT_IEEE802_11G         (1 << 2)  /* 0x0004 */
+#define WLAN_AP_TYPE_LIST_BIT_IEEE802_11N         (1 << 3)  /* 0x0008 */
+#define WLAN_AP_TYPE_LIST_BIT_IEEE802_11AC        (1 << 4)  /* 0x0010 */
+#define WLAN_AP_TYPE_LIST_BIT_IEEE802_11AD        (1 << 5)  /* 0x0020 */
+
+/* WLAN AP requested measurement type bitmask, 32 bit presentation */
+#define WLAN_AP_MEAS_REQ_TYPE_BIT_AP_SSID         (1 <<  15)  /* 0x00008000 */  /* SSID of the WLAN */
+#define WLAN_AP_MEAS_REQ_TYPE_BIT_AP_SN           (1 <<  14)  /* 0x00004000 */  /* AP S/N received at the target */
+#define WLAN_AP_MEAS_REQ_TYPE_BIT_AP_DEV_TYPE     (1 <<  13)  /* 0x00002000 */  /* AP Device type */
+#define WLAN_AP_MEAS_REQ_TYPE_BIT_AP_PHY_TYPE     (1 <<  12)  /* 0x00001000 */  /* AP PHY type */
+#define WLAN_AP_MEAS_REQ_TYPE_BIT_AP_RSSI         (1 <<  11)  /* 0x00000800 */  /* AP signal strength at the target (both LPP and LPPe) */
+#define WLAN_AP_MEAS_REQ_TYPE_BIT_AP_CH_FREQ      (1 <<  10)  /* 0x00000400 */  /* AP channel/frequency of Tx/Rx */
+#define WLAN_AP_MEAS_REQ_TYPE_BIT_AP_RTD          (1 <<  9)  /* 0x00000200 */  /* Round Trip Delay between target and AP (both LPP and LPPe) */
+#define WLAN_AP_MEAS_REQ_TYPE_BIT_UE_TRANS_PWR    (1 <<  8)  /* 0x00000100 */  /* target transmit power */
+#define WLAN_AP_MEAS_REQ_TYPE_BIT_UE_ANT_GAIN     (1 <<  7)  /* 0x00000080 */  /* target antenna gain */
+#define WLAN_AP_MEAS_REQ_TYPE_BIT_AP_RPT_LOC      (1 <<  6)  /* 0x00000040 */  /* AP Location as reported by AP */
+#define WLAN_AP_MEAS_REQ_TYPE_BIT_NON_SERVING     (1 <<  5)  /* 0x00000020 */  /* measurements for a non-serving WLAN AP (in addition to a serving WLAN AP) */
+#define WLAN_AP_MEAS_REQ_TYPE_BIT_HISTORIC_MEAS   (1 <<  4)  /* 0x00000010 */  /* historic WLAN AP measurements */
+#define WLAN_AP_MEAS_REQ_TYPE_BIT_AP_TRANS_PWR    (1 <<  3)  /* 0x00000008 */  /* AP transmit power */
+#define WLAN_AP_MEAS_REQ_TYPE_BIT_AP_ANT_GAIN     (1 <<  2)  /* 0x00000004 */  /* AP antenna gain */
+#define WLAN_AP_MEAS_REQ_TYPE_BIT_UE_SNR          (1 <<  1)  /* 0x00000002 */  /* UE signal to noise ratio received at the AP */
+#define WLAN_AP_MEAS_REQ_TYPE_BIT_UE_RSSI         (1 <<  0)  /* 0x00000001 */  /* target signal strength at the AP */
+#define WLAN_AP_MEAS_REQ_TYPE_BIT_OP_CLASS        (1 << 19)  /* 0x00080000 */  /* operating class */
+#define WLAN_AP_MEAS_REQ_TYPE_BIT_UE_MAC_ADDRESS      (1 << 18)  /* 0x00040000 */  /* ue mac address */
+
+/* WLAN AP measurmenet capability type bitmask, 32 bit presentation */
+#define WLAN_AP_MEAS_CAPA_TYPE_BIT_AP_SSID         (1 <<  15)  /* 0x00008000 */  /* SSID of the WLAN */
+#define WLAN_AP_MEAS_CAPA_TYPE_BIT_AP_SN           (1 <<  14)  /* 0x00004000 */  /* AP S/N received at the target */
+#define WLAN_AP_MEAS_CAPA_TYPE_BIT_AP_DEV_TYPE     (1 <<  13)  /* 0x00002000 */  /* AP Device type */
+#define WLAN_AP_MEAS_CAPA_TYPE_BIT_AP_PHY_TYPE     (1 <<  12)  /* 0x00001000 */  /* AP PHY type */
+#define WLAN_AP_MEAS_CAPA_TYPE_BIT_AP_RSSI         (1 <<  11)  /* 0x00000800 */  /* AP signal strength at the target (both LPP and LPPe) */
+#define WLAN_AP_MEAS_CAPA_TYPE_BIT_AP_CH_FREQ      (1 <<  10)  /* 0x00000400 */  /* AP channel/frequency of Tx/Rx */
+#define WLAN_AP_MEAS_CAPA_TYPE_BIT_AP_RTD          (1 <<  9)  /* 0x00000200 */  /* Round Trip Delay between target and AP (both LPP and LPPe) */
+#define WLAN_AP_MEAS_CAPA_TYPE_BIT_UE_TRANS_PWR    (1 <<  8)  /* 0x00000100 */  /* target transmit power */
+#define WLAN_AP_MEAS_CAPA_TYPE_BIT_UE_ANT_GAIN     (1 <<  7)  /* 0x00000080 */  /* target antenna gain */
+#define WLAN_AP_MEAS_CAPA_TYPE_BIT_AP_RPT_LOC      (1 <<  6)  /* 0x00000040 */  /* AP Location as reported by AP */
+#define WLAN_AP_MEAS_CAPA_TYPE_BIT_NON_SERVING     (1 <<  5)  /* 0x00000020 */  /* measurements for a non-serving WLAN AP (in addition to a serving WLAN AP) */
+#define WLAN_AP_MEAS_CAPA_TYPE_BIT_HISTORIC_MEAS   (1 <<  4)  /* 0x00000010 */  /* historic WLAN AP measurements */
+#define WLAN_AP_MEAS_CAPA_TYPE_BIT_AP_TRANS_PWR    (1 <<  3)  /* 0x00000008 */  /* AP transmit power */
+#define WLAN_AP_MEAS_CAPA_TYPE_BIT_AP_ANT_GAIN     (1 <<  2)  /* 0x00000004 */  /* AP antenna gain */
+#define WLAN_AP_MEAS_CAPA_TYPE_BIT_UE_SNR          (1 <<  1)  /* 0x00000002 */  /* UE signal to noise ratio received at the AP */
+#define WLAN_AP_MEAS_CAPA_TYPE_BIT_UE_RSSI         (1 <<  0)  /* 0x00000001 */  /* target signal strength at the AP */
+#define WLAN_AP_MEAS_CAPA_TYPE_BIT_OP_CLASS        (1 << 16)  /* 0x00010000 */  /* operating class */
+
+/* WLAN AP additional requested measurement type bitmask, 8 bit presentation */
+#define WLAN_AP_ADD_MEAS_REQ_TYPE_BIT_OP_CLASS    (1 <<  0)  /* 0x0001 */
+
+/* WLAN MAC Address size */
+#define WLAN_MAC_ADDRESS_SIZE  6
+
+/* BT MAC Address size */
+#define BT_MAC_ADDRESS_SIZE  6
+
+/* SRN measurement type bitmask, 8 bit presentation */
+#define SRN_MEAS_TYPE_BIT_RSSI                    (1 <<  0)  /* 0x01 */
+#define SRN_MEAS_TYPE_BIT_RTD                     (1 <<  1)  /* 0x02 */
+
+
+/* SRN assistance data type bitmask, 8 bit presentation */
+#define SRN_AD_TYPE_BIT_SRN_GROUP                 (1 <<  0)  /* 0x01 */
+#define SRN_AD_TYPE_BIT_ANTENNA_PATTERN           (1 <<  1)  /* 0x02 */
+
+
+/* wireless access type (similar to data bearer) bitmask, 8 bit presentation */
+#define WIRELESS_ACCESS_TYPE_GSM                  (1 <<  0)  /* 0x01 */
+#define WIRELESS_ACCESS_TYPE_UTRA                 (1 <<  1)  /* 0x02 */
+#define WIRELESS_ACCESS_TYPE_LTE                  (1 <<  2)  /* 0x04 */
+#define WIRELESS_ACCESS_TYPE_WIFI                 (1 <<  3)  /* 0x08 */
+#define WIRELESS_ACCESS_TYPE_OTHER                (1 <<  4)  /* 0x10 */
+
+
+/* WLAN AP location info validity bitmask, 32 bit presentation */
+#define WLAN_AP_LOC_INFO_TYPE_VALID_BIT_AP_SSID                    (1 <<  0)  /* 0x00000001 */
+#define WLAN_AP_LOC_INFO_TYPE_VALID_BIT_AP_SIGNAL_TO_NOISE         (1 <<  1)  /* 0x00000002 */
+#define WLAN_AP_LOC_INFO_TYPE_VALID_BIT_AP_DEVICE_TYPE             (1 <<  2)  /* 0x00000004 */
+#define WLAN_AP_LOC_INFO_TYPE_VALID_BIT_AP_PHY_TYPE                (1 <<  3)  /* 0x00000008 */
+#define WLAN_AP_LOC_INFO_TYPE_VALID_BIT_AP_SIGNAL_STRENGTH         (1 <<  4)  /* 0x00000010 */
+#define WLAN_AP_LOC_INFO_TYPE_VALID_BIT_AP_CH_FREQ                 (1 <<  5)  /* 0x00000020 */
+#define WLAN_AP_LOC_INFO_TYPE_VALID_BIT_AP_ROUND_TRIP_DELAY        (1 <<  6)  /* 0x00000040 */
+#define WLAN_AP_LOC_INFO_TYPE_VALID_BIT_UE_TRANSMIT_POWER          (1 <<  7)  /* 0x00000080 */
+#define WLAN_AP_LOC_INFO_TYPE_VALID_BIT_UE_ANTENNA_GAIN            (1 <<  8)  /* 0x00000100 */
+#define WLAN_AP_LOC_INFO_TYPE_VALID_BIT_AP_REPORTED_LOC            (1 <<  9)  /* 0x00000200 */
+#define WLAN_AP_LOC_INFO_TYPE_VALID_BIT_AP_TRANSMIT_POWER          (1 << 10)  /* 0x00000400 */
+#define WLAN_AP_LOC_INFO_TYPE_VALID_BIT_AP_ANTENNA_GAIN            (1 << 11)  /* 0x00000800 */
+#define WLAN_AP_LOC_INFO_TYPE_VALID_BIT_UE_SIGNAL_TO_NOISE         (1 << 12)  /* 0x00001000 */
+#define WLAN_AP_LOC_INFO_TYPE_VALID_BIT_UE_SIGNAL_STRENGTH         (1 << 13)  /* 0x00002000 */
+#define WLAN_AP_LOC_INFO_TYPE_VALID_BIT_AP_SIGNAL_STRENGTH_DELTA   (1 << 14)  /* 0x00004000 */
+#define WLAN_AP_LOC_INFO_TYPE_VALID_BIT_UE_SIGNAL_STRENGTH_DELTA   (1 << 15)  /* 0x00008000 */
+#define WLAN_AP_LOC_INFO_TYPE_VALID_BIT_AP_SIGNAL_TO_NOISE_DELTA   (1 << 16)  /* 0x00010000 */
+#define WLAN_AP_LOC_INFO_TYPE_VALID_BIT_UE_SIGNAL_TO_NOISE_DELTA   (1 << 17)  /* 0x00020000 */
+#define WLAN_AP_LOC_INFO_TYPE_VALID_BIT_OPERATING_CLASS            (1 << 18)  /* 0x00040000 */
+
+
+/* Sensor motion state bitmask, 16 bit presentation */
+#define SENSOR_SEC_MOTION_STATE_STATIONARY     (1 <<  0)  /* 0x0001 */
+#define SENSOR_SEC_MOTION_STATE_PEDESTRIAN     (1 <<  1)  /* 0x0002 */
+#define SENSOR_SEC_MOTION_STATE_RUNNING        (1 <<  2)  /* 0x0004 */
+#define SENSOR_SEC_MOTION_STATE_CYCLING        (1 <<  3)  /* 0x0008 */
+#define SENSOR_SEC_MOTION_STATE_CAR            (1 <<  4)  /* 0x0010 */
+#define SENSOR_SEC_MOTION_STATE_TRAIN          (1 <<  5)  /* 0x0020 */
+#define SENSOR_SEC_MOTION_STATE_AEROPLANE      (1 <<  6)  /* 0x0040 */
+#define SENSOR_SEC_MOTION_STATE_BOAT           (1 <<  7)  /* 0x0080 */
+#define SENSOR_SEC_MOTION_STATE_FIDGETING      (1 <<  8)  /* 0x0100 */
+
+
+/* IP address type bitmask, 8 bit presentation */
+#define IP_ADDR_TYPE_BIT_IP_V4      (1 <<  0)  /* 0x01 */
+#define IP_ADDR_TYPE_BIT_IP_V6      (1 <<  1)  /* 0x02 */
+
+/* To align AP structure*/
+#define MAX_ENUM_VALUE    2147483647
+
+/* LPPe session type bitmask, use one-byte representation */
+#define LPPE_SERVICE_SUPPORT_TYPE_BITMASK_NONE               0x00
+#define LPPE_SERVICE_SUPPORT_TYPE_BITMASK_WLAN               0x01
+#define LPPE_SERVICE_SUPPORT_TYPE_BITMASK_BT                      0x02
+#define LPPE_SERVICE_SUPPORT_TYPE_BITMASK_SENSOR            0x04
+#define LPPE_SERVICE_SUPPORT_TYPE_BITMASK_NETWORK       0x08
+#define LPPE_SERVICE_SUPPORT_TYPE_BITMASK_IPADDRESS     0x10
+#define LPPE_SERVICE_SUPPORT_TYPE_BITMASK_MAX                  0xff
+
+/* LPPe DBH results source bitmask */
+#define LPPE_LOCATION_SOURCE_BITMASK_AGNSS               0x00000001
+#define LPPE_LOCATION_SOURCE_BITMASK_SENSOR            0x00000002
+#define LPPE_LOCATION_SOURCE_BITMASK_ECIDLTE          0x00000004
+#define LPPE_LOCATION_SOURCE_BITMASK_ECIDGSM         0x00000008
+#define LPPE_LOCATION_SOURCE_BITMASK_ECIDUTRA       0x00000010
+#define LPPE_LOCATION_SOURCE_BITMASK_WLANAP           0x00000020
+#define LPPE_LOCATION_SOURCE_BITMASK_SRN                    0x00000040
+#endif /* _LPP_LPPE_DEF_H */
diff --git a/mcu/interface/protocol/general/lpp_lppe_enum.h b/mcu/interface/protocol/general/lpp_lppe_enum.h
new file mode 100644
index 0000000..d4f61f2
--- /dev/null
+++ b/mcu/interface/protocol/general/lpp_lppe_enum.h
@@ -0,0 +1,444 @@
+/******************************************************************************
+*  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) 2016
+*
+*  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:
+ * --------------------------------------------------------
+ *   lpp_lppe_enum.h
+ *
+ * Project:
+ * --------------------------------------------------------
+ *
+ *
+ * Description:
+ * --------------------------------------------------------
+ *   LPP/LPP Extension Interface - Structure Enumeration
+ *
+ * Author:
+ * --------------------------------------------------------
+ * -------
+ *
+ * --------------------------------------------------------
+ * $Log$
+ *
+ * 10 20 2017 jie-yu.wang
+ * [MOLY00284367] [LPP] LR12 Earlyfix Development
+ * [LPP] Earlyfix Modification.
+ *
+ * 10 04 2016 doug.shih
+ * [LPPe] interface design
+ * Fix enum type redefinition
+ * .
+ *
+ * 09 30 2016 doug.shih
+ * [LPPe] interface design
+ * .
+ *
+ * 08 24 2016 doug.shih
+ * [LPPe] interface design
+ * .
+ *
+ *
+ *****************************************************************************/
+
+#ifndef _LPP_LPPE_ENUM_H
+#define _LPP_LPPE_ENUM_H
+
+#include "kal_public_api.h"
+#include "kal_public_defs.h"
+#include "kal_general_types.h"
+
+#include "lpp_lppe_def.h"
+
+typedef enum
+{
+    LPP_LPPE_MSG_TYPE_NULL,
+    LPP_LPPE_MSG_TYPE_REQUEST_CAPABILITIES,
+    LPP_LPPE_MSG_TYPE_PROVIDE_CAPABILITIES,
+    LPP_LPPE_MSG_TYPE_REQUEST_ASSISTANCE_DATA,
+    LPP_LPPE_MSG_TYPE_PROVIDE_ASSISTANCE_DATA,
+    LPP_LPPE_MSG_TYPE_REQUEST_LOCATION_INFORMATION,
+    LPP_LPPE_MSG_TYPE_PROVIDE_LOCATION_INFORMATION,
+    LPP_LPPE_MSG_TYPE_ABORT,
+    LPP_LPPE_MSG_TYPE_ERROR
+} lpp_lppe_msg_type_enum;
+
+typedef enum
+{
+    LPPE_LOC_RESULT_NULL,
+    LPPE_LOC_RESULT_NO_ERROR,
+    LPPE_LOC_RESULT_UNDEFINED,
+    LPPE_LOC_RESULT_REQ_TIMEOUT,
+    LPPE_LOC_RESULT_EARLY_FIX,      /* Early fix result */
+    LPPE_LOC_RESULT_EARLY_FIX_NO_RESULT  /* Early fix no result */
+} lppe_result_enum;
+
+typedef enum
+{
+    LPP_LPPE_POS_TYPE_INVALID,
+    LPP_LPPE_POS_TYPE_HA_GNSS,
+    LPP_LPPE_POS_TYPE_WLAN_AP,
+    LPP_LPPE_POS_TYPE_SENSOR_PRESSURE,
+    LPP_LPPE_POS_TYPE_SRN_BT,
+
+    //... below are not supported pos tech
+    //LPP_LPPE_POS_TYPE_EUTRA_OTDOA,
+    //LPP_LPPE_POS_TYPE_GSM_EOTD,
+    //LPP_LPPE_POS_TYPE_UTRA_OTDOA,
+    //LPP_LPPE_POS_TYPE_LTE_ECID,
+    //LPP_LPPE_POS_TYPE_GSM_ECID,
+    //LPP_LPPE_POS_TYPE_UTRA_ECID
+} lpp_lppe_pos_type_enum;
+
+
+typedef enum
+{
+    LPP_LPPE_HA_GNSS_AD_TYPE_COMMON,
+    LPP_LPPE_HA_GNSS_AD_TYPE_GENERIC
+} lpp_lppe_ha_gnss_ad_type_enum;
+
+typedef enum
+{
+    LPP_LPPE_GNSS_HA_ASSIST_DATA_TYPE_NULL,
+    LPP_LPPE_GNSS_HA_COMMON_ASSIST_DATA_TYPE_IONO_MODEL,
+    LPP_LPPE_GNSS_HA_COMMON_ASSIST_DATA_TYPE_TROPO_MODEL,
+    LPP_LPPE_GNSS_HA_COMMON_ASSIST_DATA_TYPE_ALTITUDE,
+    LPP_LPPE_GNSS_HA_COMMON_ASSIST_DATA_TYPE_SOLAR_RAD,
+    LPP_LPPE_GNSS_HA_COMMON_ASSIST_DATA_TYPE_CCP_ASSIST,
+    
+    LPP_LPPE_GNSS_HA_GENERIC_ASSIST_DATA_TYPE_WA_ION_SURF,
+    LPP_LPPE_GNSS_HA_GENERIC_ASSIST_DATA_TYPE_SV_MECHANICS,
+    LPP_LPPE_GNSS_HA_GENERIC_ASSIST_DATA_TYPE_SV_DCB,
+    LPP_LPPE_GNSS_HA_GENERIC_ASSIST_DATA_TYPE_DEGRAD_MODEL,
+    LPP_LPPE_GNSS_HA_GENERIC_ASSIST_DATA_TYPE_CCP_ASSIST,
+    LPP_LPPE_GNSS_HA_GENERIC_ASSIST_DATA_TYPE_NAV_MODEL,
+} lpp_lppe_ha_gnss_assist_data_type_enum;
+
+
+typedef enum
+{
+    LPP_LPPE_ABORT_CAUSE_UNDEFINED,
+    LPP_LPPE_ABORT_CAUSE_TARGET_DEVICE_ABORT,
+    LPP_LPPE_ABORT_CAUSE_NETWORK_ABORT,
+    LPP_LPPE_ABORT_CAUSE_STOP_PERIODIC_REPORTING
+} lpp_lppe_abort_cause_enum;
+
+typedef enum
+{
+    LPP_LPPE_ERROR_CAUSE_UNDEFINED,
+    LPP_LPPE_ERROR_CAUSE_TARGET_DEVICE_ERROR,
+    LPP_LPPE_ERROR_CAUSE_NETWORK_ERROR
+} lpp_lppe_error_cause_enum;
+
+
+typedef enum
+{
+    WLAN_AP_ERROR_TYPE_LOCATION_SERVER_CAUSE,
+    WLAN_AP_ERROR_TYPE_TARGET_DEVICE_CAUSE
+} wlan_ap_error_type_enum;
+
+
+typedef enum
+{
+    WLAN_AP_LOC_SRV_ERR_CAUSE_UNDEFINED,
+    WLAN_AP_LOC_SRV_ERR_CAUSE_REQ_AD_NOT_AVAILABLE,
+    WLAN_AP_LOC_SRV_ERR_CAUSE_NOT_ALL_REQ_AD_AVAILABLE
+} wlan_ap_loc_srv_err_cause_enum;
+
+
+typedef enum
+{
+    WLAN_AP_TGT_DEV_ERR_CAUSE_CAUSE_UNDEFINED,
+    WLAN_AP_TGT_DEV_ERR_CAUSE_CAUSE_REQ_MEASUREMENT_NOT_AVAILABLE,
+    WLAN_AP_TGT_DEV_ERR_CAUSE_CAUSE_NOT_ALL_REQ_MEASUREMENT_POSSIBLE
+} wlan_ap_tgt_dev_err_cause_enum;
+
+
+typedef enum
+{
+    WLAN_AP_TYPE_IEEE802_11A,
+    WLAN_AP_TYPE_IEEE802_11B,
+    WLAN_AP_TYPE_IEEE802_11G,
+    WLAN_AP_TYPE_IEEE802_11N,
+    WLAN_AP_TYPE_IEEE802_11AC,
+    WLAN_AP_TYPE_IEEE802_11AD
+} wlan_ap_type_enum;
+
+
+typedef enum
+{
+    WLAN_AP_PHY_TYPE_UNKNOWN,
+    WLAN_AP_PHY_TYPE_ANY,
+    WLAN_AP_PHY_TYPE_FHSS,
+    WLAN_AP_PHY_TYPE_DSSS,
+    WLAN_AP_PHY_TYPE_IRBASEBAND,
+    WLAN_AP_PHY_TYPE_OFDM,
+    WLAN_AP_PHY_TYPE_HRDSSS,
+    WLAN_AP_PHY_TYPE_ERP,
+    WLAN_AP_PHY_TYPE_HT,
+    WLAN_AP_PHY_TYPE_IHV
+} wlan_ap_phy_type_enum;
+
+
+typedef enum
+{
+    WLAN_AP_RTD_UNIT_MICROSECONDS,
+    WLAN_AP_RTD_UNIT_HUNDREDS_OF_NANOSECONDS,
+    WLAN_AP_RTD_UNIT_TENS_OF_NANOSECONDS,
+    WLAN_AP_RTD_UNIT_NANOSECONDS,
+    WLAN_AP_RTD_UNIT_TENTHS_OF_NANOSECONDS,
+    WLAN_AP_RTD_UNIT_MAX = MAX_ENUM_VALUE,
+} wlan_ap_rtd_unit_enum;
+
+
+typedef enum
+{
+   WLAN_FEMTO_COVER_AREA_TYPE_GAUSSIAN,
+   WLAN_FEMTO_COVER_AREA_TYPE_BINARY_DISTRIBUTION
+} wlan_femto_cover_area_type_enum;
+
+
+typedef enum
+{
+    WLAN_FEMTO_COVER_AREA_ELEMENT_TYPE_INDOOR,
+    WLAN_FEMTO_COVER_AREA_ELEMENT_TYPE_OUTDOOR,
+    WLAN_FEMTO_COVER_AREA_ELEMENT_TYPE_MIXED
+} wlan_femto_cover_area_element_type_enum;
+
+
+typedef enum
+{
+    WLAN_FEMTO_COVER_AREA_REF_LOC_TYPE_ANTENNA,
+    WLAN_FEMTO_COVER_AREA_REF_LOC_TYPE_REF_POINT
+} wlan_femto_cover_area_ref_loc_type_enum;
+
+
+typedef enum
+{
+    SRN_GROUP_TYPE_GROUP_LIST,
+    SRN_GROUP_TYPE_GROUP_UPDATE_RESPONSE
+} srn_group_type_enum;
+
+
+typedef enum
+{
+    SRN_ID_TYPE_MAC_ADDR,  /* BT, BT LE */
+    //... below are not supported id type
+    //SRN_ID_TYPE_NFC,
+    //SRN_ID_TYPE_MOBILECODE,
+    //SRN_ID_TYPE_OTHER
+} srn_id_type_enum;
+
+
+typedef enum
+{
+    SRN_TECH_TYPE_BT,
+    SRN_TECH_TYPE_BTLE,
+    //... below are not supported pos tech
+    //SRN_TECH_TYPE_NFC,
+    //SRN_TECH_TYPE_MOBILECODE,
+    //SRN_TECH_TYPE_OTHER
+} srn_tech_type_enum;
+
+typedef enum
+{
+    BLUETOOTH_RTD_UNIT_MICROSECONDS,
+    BLUETOOTH_RTD_UNIT_HUNDREDS_OF_NANOSECONDS,
+    BLUETOOTH_RTD_UNIT_TENS_OF_NANOSECONDS,
+    BLUETOOTH_RTD_UNIT_NANOSECONDS,
+    BLUETOOTH_RTD_UNIT_TENTHS_OF_NANOSECONDS,
+    BLUETOOTH_RTD_UNIT_MAX = MAX_ENUM_VALUE,
+}bt_rtd_unit_enum;
+
+typedef enum
+{
+    SRN_TARGET_DATA_VALID_TYPE_VALID,
+    SRN_TARGET_DATA_VALID_TYPE_VALID_UPDATED_DATA_WILL_BE_PROVIDED,
+    SRN_TARGET_DATA_VALID_TYPE_VALID_BUT_SERVER_WILL_NOT_PROVIDE_NEW_DATA
+} srn_target_data_valid_type_enum;
+
+
+typedef enum
+{
+    SRN_ERROR_TYPE_LOCATION_SERVER_CAUSE,
+    SRN_ERROR_TYPE_TARGET_DEVICE_CAUSE
+} srn_error_type_enum;
+
+
+typedef enum
+{
+    SRN_LOCATION_SERVER_GROUP_ERR_CAUSE_UNDEFINED,
+    SRN_LOCATION_SERVER_GROUP_ERR_CAUSE_SOME_GROUP_CATEGORY_SRNID_UNKNOWN_UNSUPPORTED,
+    SRN_LOCATION_SERVER_GROUP_ERR_CAUSE_ALL_GROUP_CATEGORY_SRNID_UNKNOWN_UNSUPPORTED,
+    SRN_LOCATION_SERVER_GROUP_ERR_CAUSE_NO_SRN_GROUPS_NEARBY
+} srn_loc_server_group_err_cause_enum;
+
+
+typedef enum
+{
+    SRN_LOC_SERVER_GROUP_UPT_ERR_CAUSE_UNDEFINED,
+    SRN_LOC_SERVER_GROUP_UPT_ERR_CAUSE_ALL_SRN_GROUPIDS_UNKNOWN,
+    SRN_LOC_SERVER_GROUP_UPT_ERR_CAUSE_ALL_SRN_GROUPIDS_KNOWN_SOME_SRN_GROUP_VERSIONS_UNKNOWN,
+    SRN_LOC_SERVER_GROUP_UPT_ERR_CAUSE_ALL_SRN_GROUPIDS_KNOWN_ALL_SRN_GROUP_VERSIONS_UNKNOWN,
+    SRN_LOC_SERVER_GROUP_UPT_ERR_CAUSE_SOME_SRN_GROUPIDS_UNKNOWN,
+    SRN_LOC_SERVER_GROUP_UPT_ERR_CAUSE_SOME_SRN_GROUP_VERSIONS_UNKNOWN_ALL_SRN_GROUP_VERSIONS_UNKNOWN,
+    SRN_LOC_SERVER_GROUP_UPT_ERR_CAUSE_SOME_SRN_GROUPIDS_SOME_SRN_GROUP_VERSIONS_UNKNOWN,
+    SRN_LOC_SERVER_GROUP_UPT_ERR_CAUSE_INFO_NOT_MATCH_WITH_GROUPID
+} srn_loc_server_group_upt_err_cause_enum;
+
+
+typedef enum
+{
+    SRN_LOC_SERVER_ANTENNA_ERR_CAUSE_UNDEFINED,
+    SRN_LOC_SERVER_ANTENNA_ERR_CAUSE_SOME_ANTENNA_PATTERNIDS_UNKNOWN,
+    SRN_LOC_SERVER_ANTENNA_ERR_CAUSE_ALL_ANTENNA_PATTERNIDS_UNKNOWN
+} srn_loc_server_antenna_err_cause_enum;
+
+
+typedef enum
+{
+    SRN_TARGET_DEVICE_ERR_CAUSE_UNDEFINED,
+    SRN_TARGET_DEVICE_ERR_CAUSE_REQUESTED_MEASUREMENTS_NOT_AVAILABLE,
+    SRN_TARGET_DEVICE_ERR_CAUSE_NOT_ALL_REQUESTED_MEASUREMENTS_POSSIBLE,
+    SRN_TARGET_DEVICE_ERR_CAUSE_CATEGORY_NOT_SUPPORTED
+} srn_target_device_err_cause_enum;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+/*Mapping to LPPeBluetooth_BluetoothMultipleMeasurement*/
+typedef enum
+{
+    SRN_REQ_LOC_MULTI_MEAS_FORBIDDEN,
+    SRN_REQ_LOC_MULTI_MEAS_ALLOWED,
+    SRN_REQ_LOC_MULTI_MEAS_REQUESTED,
+    SRN_REQ_LOC_MULTI_MEAS_MAX = MAX_ENUM_VALUE,
+} srn_req_loc_multi_meas_enum;
+
+
+typedef enum
+{
+    IP_ADDRESS_TYPE_IP_V4,
+    IP_ADDRESS_TYPE_IP_V6
+} ip_address_type_enum;
+
+
+/* Mapping to LPPeIpAddress_Bearer*/
+typedef enum
+{
+    DATA_BEARER_TYPE_UNKNOWN,
+    DATA_BEARER_TYPE_GSM,
+    DATA_BEARER_TYPE_UTRAN,
+    DATA_BEARER_TYPE_LTE,
+    DATA_BEARER_TYPE_WLAN,
+        /* others type will not be used in mobile devices */
+    DATA_BEARER_TYPE_MAX = MAX_ENUM_VALUE,
+} data_bearer_type_enum;
+
+
+typedef enum
+{
+    SCHEDULED_LOC_DISPOS_TYPE_WITHIN_WINDOW,
+    SCHEDULED_LOC_DISPOS_TYPE_OUTSIDE_WINDOW_NOWINDOW,
+    SCHEDULED_LOC_DISPOS_TYPE_NOT_SUPPORTED_NO_CAPABILITY,
+    SCHEDULED_LOC_DISPOS_TYPE_NOT_SUPPORTED_NO_TIME_REFERENCE,
+    SCHEDULED_LOC_DISPOS_TYPE_NOT_SUPPORTED__CONFLICT_ANOTHER_REQUEST,
+    SCHEDULED_LOC_DISPOS_TYPE_NOT_SUPPORTED_OTHER_REASONS
+} scheduled_loc_dispos_type_enum;
+
+
+typedef enum
+{
+    LOC_TIME_STAMP_TYPE_GNSS_TIME,
+    LOC_TIME_STAMP_TYPE_NETWORK_TIME,
+    LOC_TIME_STAMP_TYPE_RELATIVE_TIME,
+} loc_time_stamp_type_enum;
+
+
+typedef enum
+{
+    SENSOR_PRIMARY_MOTION_STATE_UNKNOWN,
+    SENSOR_PRIMARY_MOTION_STATE_STATIONARY,
+    SENSOR_PRIMARY_MOTION_STATE_PEDESTRIAN,
+    SENSOR_PRIMARY_MOTION_STATE_RUNNING,
+    SENSOR_PRIMARY_MOTION_STATE_CYCLING,
+    SENSOR_PRIMARY_MOTION_STATE_CAR,
+    SENSOR_PRIMARY_MOTION_STATE_TRAIN,
+    SENSOR_PRIMARY_MOTION_STATE_AEROPLANE,
+    SENSOR_PRIMARY_MOTION_STATE_BOAT,
+    SENSOR_PRIMARY_MOTION_STATE_FIDGETING
+} sensor_primary_motion_state_enum;
+
+
+typedef enum
+{
+    SENSOR_TGT_PRI_MOTION_STATE_ERR_CAUSE_NOT_AVAILABLE,
+    SENSOR_TGT_PRI_MOTION_STATE_ERR_CAUSE_NOT_SUPPORTED
+} sensor_tgt_pri_motion_state_err_cause_enum;
+
+
+typedef enum
+{
+    SENSOR_TGT_SEC_MOTION_STATE_ERR_CAUSE_NOT_AVAILABLE,
+    SENSOR_TGT_SEC_MOTION_STATE_ERR_CAUSE_NOT_SUPPORTED
+} sensor_tgt_sec_motion_state_err_cause_enum;
+
+
+typedef enum
+{
+    SENSOR_TGT_PRESSURE_ERR_CAUSE_NOT_AVAILABLE,
+    SENSOR_TGT_PRESSURE_ERR_CAUSE_NOT_SUPPORTED
+} sensor_tgt_pressure_err_cause_enum;
+
+
+typedef enum
+{
+    LPPE_SERVICE_SUPPORT_TYPE_NULL,
+    LPPE_SERVICE_SUPPORT_TYPE_WLAN,
+    LPPE_SERVICE_SUPPORT_TYPE_BT,
+    LPPE_SERVICE_SUPPORT_TYPE_SENSOR,
+    LPPE_SERVICE_SUPPORT_TYPE_NETWORK,
+    LPPE_SERVICE_SUPPORT_TYPE_IPADDRESS,
+} lppe_service_support_type_enum;
+
+
+
+#endif /* _LPP_LPPE_ENUM_H */
diff --git a/mcu/interface/protocol/general/lpp_lppe_struct.h b/mcu/interface/protocol/general/lpp_lppe_struct.h
new file mode 100644
index 0000000..61c54d0
--- /dev/null
+++ b/mcu/interface/protocol/general/lpp_lppe_struct.h
@@ -0,0 +1,1672 @@
+/******************************************************************************
+*  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) 2016
+*
+*  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:
+ * --------------------------------------------------------
+ *   lpp_lppe_struct.h
+ *
+ * Project:
+ * --------------------------------------------------------
+ *
+ *
+ * Description:
+ * --------------------------------------------------------
+ *   LPP/LPP Extension Interface - Structure Definition
+ *
+ * Author:
+ * --------------------------------------------------------
+ * -------
+ *
+ * --------------------------------------------------------
+ * $Log$
+ *
+ * 11 29 2019 jie-yu.wang
+ * [MOLY00461947] [LPP] Patch back from 1001.DEV to VMOLY
+ * [SWRD] LPP patch back
+ *
+ * 03 15 2018 jie-yu.wang
+ * [MOLY00311925] Code sync from R3.
+ *
+ * 10 04 2016 doug.shih
+ * [LPPe] interface design
+ * Fix enum type redefinition
+ * .
+ *
+ * 10 03 2016 doug.shih
+ * [LPPe] interface design
+ * ASN.1 structure down size
+ * .
+ *
+ * 10 03 2016 doug.shih
+ * [LPPe] interface design
+ * .
+ *
+ * 09 09 2016 doug.shih
+ * [LPPe] interface design
+ * .
+ *
+ * 09 06 2016 doug.shih
+ * [LPPe] interface design
+ * .
+ *
+ * 08 24 2016 doug.shih
+ * [LPPe] interface design
+ * .
+ *
+ *
+ *****************************************************************************/
+
+#ifndef _LPP_LPPE_STRUCT_H
+#define _LPP_LPPE_STRUCT_H
+
+#include "kal_public_api.h"
+#include "kal_public_defs.h"
+#include "kal_general_types.h"
+
+#include "lpp_lppe_enum.h"
+#include "lpp_lppe_def.h"
+#include "gnss2lcsp_enum.h"
+#include "gnss2lcsp_struct.h"
+/*****************************************************************************
+ * Macros Without Parameters
+ *****************************************************************************/
+
+
+/*****************************************************************************
+ * Macros With Parameters
+ *****************************************************************************/
+
+
+/*****************************************************************************
+ * Type Definitions
+ *****************************************************************************/
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+/* Mapping to LPPeIpAddress_IpAddress*/
+typedef struct {
+    kal_bool      ipv4Valid;
+    kal_char      ipv4[4];
+    kal_int32     ipv4_size;
+
+    kal_bool      ipv6Valid;
+    kal_char      ipv6[16];
+    kal_int32     ipv6_size;
+
+    data_bearer_type_enum    bearer;
+
+    kal_bool      natValid;
+    kal_bool      nat;
+} ip_address_element_struct;
+
+/*Mapping to LPPeIpAddress_IpAddressInformation*/
+typedef struct
+{
+    ip_address_element_struct  ipAddrElement[LOC_IP_ADDR_MAX_ELEMENT];
+    kal_int32          numIPAddrElement;
+} lpp_lppe_ipaddress_meas_struct;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+/* ---LPP -> LPP_EXT--- */
+/* MSG_ID_LPP_LPPE_EPDU_DATA_IND: transfer downlink LPPe message raw data */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                epduDLSN;    /* unique sequence number to identify a EPDU in DL, only used between LPP and LPP_EXT */
+    kal_uint16                lppTransID;  /* binded LPP transactio ID of this EPDU */
+    lpp_lppe_msg_type_enum    msgType;     /* pre-decode LPPE message type of this EPDU */
+    kal_uint8                  posMethodBitmask;   /*if LPP has AGNSS position, LPPe also need to comprase the result into LPPe element */
+    /* raw data is in peer buffer */
+} lpp_lppe_epdu_data_ind_struct;
+
+
+/* MSG_ID_LPP_LPPE_EPDU_DATA_NTF: indicate certain uplink LPPe message acknowledge status */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16    epduULSN;   /* unique sequence number to identify a EPDU in UL, only used between LPP and LPP_EXT */
+    kal_bool      ackStatus;  /* LPP acknowledge status for specified uplink EPDU, TRUE: acked, FALSE: nacked(sent failure) */
+} lpp_lppe_epdu_data_ntf_struct;
+
+
+/* MSG_ID_LPP_LPPE_EPDU_DATA_CNF: indicate uplink LPPe message transferring status */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16    epduULSN;    /* unique sequence number to identify a EPDU in UL, only used between LPP and LPP_EXT */
+    kal_bool      sentStatus;  /* LPP sent status (LPP recieved CNF) for specified uplink EPDU, TRUE: sent, FALSE: failure */
+} lpp_lppe_epdu_data_cnf_struct;
+
+
+/* MSG_ID_LPP_LPPE_STATUS_SYNC_IND: inform LPP status, such as connection status, SUPL/LPP session */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool    isConnected;          /* indicate signaling connection status, TRUE: connected, FALSE: released */
+    kal_bool    isSUPLSessionActive;  /* indicate SUPL/LPP session active status, TRUE: active, FALSE: idle */
+} lpp_lppe_status_sync_ind_struct;
+
+/* Assistanda Data*/
+/* MSG_ID_LPP_LPPE_WLAN_POS_ASSIST_DATA_REQUEST_IND: AP connectivity module requests to assist data request */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                          sessionID;   /* indicate the associated AD session ID of this relay AD message */
+    kal_uint16                          lppTransID;  /* binded LPP transactio ID of this AD request */
+    void* ptr;
+} lpp_lppe_wlan_pos_assist_data_request_ind_struct;
+
+/* MSG_ID_LPP_LPPE_BT_POS_ASSIST_DATA_REQUEST_IND: AP connectivity module requests to assist data request */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                          sessionID;   /* indicate the associated AD session ID of this relay AD message */
+    kal_uint16                          lppTransID;  /* binded LPP transactio ID of this AD request */
+    void* ptr;
+} lpp_lppe_bt_pos_assist_data_request_ind_struct;
+
+/* MSG_ID_LPP_LPPE_SENSOR_POS_ASSIST_DATA_REQUEST_IND: AP connectivity module requests to assist data request */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                          sessionID;   /* indicate the associated AD session ID of this relay AD message */
+    kal_uint16                          lppTransID;  /* binded LPP transactio ID of this AD request */
+    void* ptr;
+} lpp_lppe_sensor_pos_assist_data_request_ind_struct;
+
+/* MSG_ID_LPP_LPPE_HA_AGNSS_POS_ASSIST_DATA_REQUEST_IND: AP connectivity module requests to assist data request */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                          sessionID;   /* indicate the associated AD session ID of this relay AD message */
+    kal_uint16                          lppTransID;  /* binded LPP transactio ID of this AD request */
+} lpp_lppe_ha_agnss_pos_assist_data_request_ind_struct;
+
+
+/* MSG_ID_LPP_LPPE_PMTK_DONE_IND: LPP finish the AGNSS assistance data transmission */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                          sessionID;   /* indicate the associated AD session ID of this relay AD message */
+    kal_uint16                          lppTransID;  /* binded LPP transactio ID of this AD request */
+} lpp_lppe_pmtk_done_ind_struct;
+
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef struct
+{
+    srn_tech_type_enum                                  srnTechType;         /* identify the SRN RF technology */
+
+   // kal_bool                                            srnVendorInfoValid;
+   // LPP_EXT_OMA_LPPe_SRN_Category_srnVendorInformation  srnVendorInfo;       /* TBD: redefine internal structure? */  /* provide information about an associated SRN vendor */
+} srn_category_struct;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+/* Location Information*/
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+
+typedef struct
+{
+    kal_int32             rtdValue;     /* [0..16777215], the measured round trip delay between the target and WLAN AP, unit refer below rtdUnits */
+    wlan_ap_rtd_unit_enum  rTdUnits;     /* units for each of these are 1000ns(1ms), 100ns, 10ns, 1ns or 0.1ns */
+
+    kal_int16              rtdAccuracy;  /* [0..255], accuracy expressed as the standard deviation of the delay */
+} wlan_rtd_struct;
+
+
+/* Mapping to LPPeWlan_WlanApMeasurement*/
+typedef struct
+{
+    /**
+     * apRSSI = 0x1
+     * apChanFreq = 0x2
+     * apRtd = 0x4
+     */
+    kal_int32      valid; 
+    kal_bool      servingFlag; /*     * This parameter indicates whether a set of WLAN AP measurements were obtained for a serving WLAN AP (TRUE) or a non-serving WLAN AP (FALSE) */
+
+    kal_char    apMacAddr[WLAN_MAC_ADDRESS_SIZE];  /* This field provides the 48 bit MAC address of the reported WLAN AP */
+    kal_int32   apMACAddress_size;
+    /**
+     * This field provides the AP signal strength of a beacon frame, probe
+     * response frame or measurement pilot frame measured at the target in dBm
+     * on the channel indicated by apChannelFrequency field
+     * -127..128
+     */
+    float     apRSSI;    
+    kal_int16     apChanFreq;   /* This field provides the AP channel number identification of the reported WLAN AP 0..256 */
+    wlan_rtd_struct     apRtd;
+
+    /**     * This field provides the SSID of the wireless network served by the AP     */    
+    kal_char apSSID[WLAN_AP_MAX_SSID_OCTET];
+    kal_int32 apSSID_size;
+} wlan_meas_query_info_list_struct; //wlan_ap_loc_info_list_struct;
+
+
+/* Mapping to LPPeWlan_WlanProvideMeasurement */
+typedef struct
+{
+    /**
+     * This parameter provides measurements for one or more WLAN APs at
+     * the current time and/or for historic times
+     */
+    wlan_meas_query_info_list_struct  listElement[WLAN_AP_MAX_LOC_INFO_LIST_ELEMENT];
+    kal_int32            meas_size;
+} wlan_meas_query_comb_struct; //wlan_ap_loc_info_comb_struct;
+
+
+typedef struct
+{
+    wlan_ap_tgt_dev_err_cause_enum  cause;
+    kal_uint32                      notAllAvailableBitmap;  /* use WLAN_AP_TGT_DEV_ERR_*, only valud when cause = NOT_ALL_REQ_MEASUREMENT_POSSIBLE */
+} wlan_ap_tgt_dev_err_cause_struct;
+
+
+/*Mapping to lppe_stack_wlan_meas */
+typedef struct
+{
+    kal_bool     isValid;
+    kal_int64    relativeTime; //milliseconds
+
+    wlan_meas_query_comb_struct   meas;
+} lpp_lppe_wlan_meas_struct;    //lpp_lppe_wlan_ap_pos_loc_cnf_struct;
+
+
+typedef struct
+{
+    kal_bool                                    priMotionStateErrValid;
+    sensor_tgt_pri_motion_state_err_cause_enum  priMotionStateErr;
+
+    kal_bool                                    secMotionStateErrValid;
+    sensor_tgt_sec_motion_state_err_cause_enum  secMotionStateErr;
+
+    kal_bool                                    pressureErrValid;
+    sensor_tgt_pressure_err_cause_enum          pressureErr;
+} sensor_tgt_err_struct;
+
+
+/* Mapping to LPPeSensor_SensorPressureMeasurement*/
+typedef struct
+{
+    kal_int32                       sensorMeas;        /* [30000..115000], specify the measured atmospheric pressure in units of Pa
+                                                           (corresponding to a numerical altitude resolution of about 0.1m at sea level) */
+    kal_bool                         adjustmentValid;
+    kal_int16                        adjustment;        /* [-5000..5000], specify any adjustment in units of Pa applied by a target to the output of the sensor(s) to produce a more accurate atmospheric pressure */
+
+    kal_bool                         pressureUncRangeValid;
+    kal_int16                        pressureUncRang;
+    
+    kal_bool                         pressureUncConfidenceValid;
+    kal_char                         pressureUncConfidence;
+
+    kal_bool                         temperatureValid;
+    kal_int16                        temperature;       /* [-100..150], provide the temperature in degrees Celsius associated with the sensor(s) used for the pressure measurement and shall be provided if available */
+} sensor_pressure_meas_struct;
+
+
+typedef struct
+{
+    kal_bool     isValid;
+    kal_int64    relativeTime; //milliseconds
+
+    sensor_pressure_meas_struct    meas; 
+} lpp_lppe_sensor_meas_struct;
+
+
+ /* Mapping to LPPeBluetooth_BluetoothRTD */
+typedef struct
+{
+    kal_int32             rtdValue;     /* [0..16777215], the measured round trip delay between the target and WLAN AP, unit refer below rtdUnits */
+    bt_rtd_unit_enum  rTdUnits;     /* units for each of these are 1000ns(1ms), 100ns, 10ns, 1ns or 0.1ns */
+
+    kal_int16              rtdAccuracy;  /* [0..255], accuracy expressed as the standard deviation of the delay */
+}bt_rtd_struct;
+
+typedef struct
+{
+   #define LPPE_STACK_BT_MEAS_ELEMENT_VALID_RSSI 0x1
+   #define LPPE_STACK_BT_MEAS_ELEMENT_VALID_RTD 0x2
+    kal_int32    valid;
+    kal_int32    deviceRelativeTime; // milliseconds, actual time = currentTime - relativeTime
+
+    kal_int16     rssi;
+    bt_rtd_struct     rtd;
+} bt_meas_element_struct;
+
+
+ /*Mapping to lppe_stack_bt_meas_device*/
+typedef struct
+{
+    kal_char     mac[BT_MAC_ADDRESS_SIZE];
+    
+    #define LPPE_BT_MEAS_DEVICE_CATEGORY_UNKNOWN   0
+    #define LPPE_BT_MEAS_DEVICE_CATEGORY_BT   1
+    #define LPPE_BT_MEAS_DEVICE_CATEGORY_BTLE   2
+    kal_char     category;
+    bt_meas_element_struct    meas;
+}bt_meas_list_struct; //srn_meas_list_struct;
+
+typedef struct
+{
+    srn_category_struct               category;
+    srn_target_device_err_cause_enum  cause;
+
+    kal_uint8                         notAllAvailableBitmap;  /* use SRN_TGT_DEV_ERR_*, only valud when cause = NOT_ALL_REQ_MEASUREMENT_POSSIBLE */
+} srn_tgt_dev_error_element_struct;
+
+
+typedef struct
+{
+    kal_uint8                         numTgtErrElement;
+    srn_tgt_dev_error_element_struct  tgtErrElement[SRN_MAX_TARGET_DEVICE_ERR_ELEMENT];
+} srn_tgt_dev_error_struct;
+
+
+typedef struct
+{
+    kal_bool     isValid;
+    kal_int64    relativeTime; //milliseconds
+
+    bt_meas_list_struct  devices[SRN_MAX_MEASUREMENT_ELEMENT]; 
+    kal_int32     devices_size;
+}lpp_lppe_bt_meas_struct; 
+
+/* Mapping to LPPeNetwork_NetworkLocationMeasurement*/
+typedef struct {
+    kal_int64       time;  /*UTC time of this fix, in milliseconds since January 1, 1970*/
+    double          latitude;  /*in degrees*/
+    double          longitude;   /*in degrees*/
+    kal_bool       accuracyValid;  /*the estimated accuracy of this location, in meters*/
+    float             accuracy;
+    kal_bool       altitudeValid;  /*in meters above the WGS 84 reference ellipsoid*/
+    double          altitude;
+    kal_bool       confidenceHorizontalValid;
+    kal_uint8       confidenceHorizontal;       /* The horizontal confidence percentage associated with the CEP or Uncerainty Ellipse depending upon withci is included. [0...99] */
+    kal_bool       locationSourceValid;
+    /**
+     * location source bit array for locationSource
+     * locationSourceAgnss = 0x1
+     * locationSourceSensor = 0x2
+     * locationSourceEcidLTE = 0x4
+     * locationSourceEcidGSM = 0x8
+     * locationSourceEcidUTRA = 0x10
+     * locationSourceWlanAP = 0x20
+     * locationSourceSrn = 0x40
+     */
+    kal_int32        locationSource;
+    
+    kal_bool     verticalAccuracyValid;    /* the vertical accuracy of this location, in meters */
+    float     verticalAccuracy;    
+    kal_bool     confidenceVerticalValid;    
+    kal_uint8     confidenceVertical;         /* provide the location vertical accuracy confidence, range 0 - 99 */
+} network_meas_element_struct;
+
+/* Mapping to lppe_stack_network_meas*/
+typedef struct
+{
+    kal_bool     isValid;
+    kal_int64    relativeTime; //milliseconds
+
+    network_meas_element_struct   meas;
+}lpp_lppe_network_meas_struct;
+
+/* MSG_ID_LPP_LPPE_WLAN_MEAS_QUERY_CNF: provide location information of specified positioning methods */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           sessionID;     /* indicate the associated LI session ID of this message */
+    kal_uint16                           lppTransID;    /* binded LPP transactio ID of this LI */
+    lpp_lppe_wlan_meas_struct  wlanAPCnf;
+} lpp_lppe_wlan_meas_query_cnf_struct;
+
+/* MSG_ID_LPP_LPPE_BT_MEAS_QUERY_CNF: provide location information of specified positioning methods */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           sessionID;     /* indicate the associated LI session ID of this message */
+    kal_uint16                           lppTransID;    /* binded LPP transactio ID of this LI */   
+    lpp_lppe_bt_meas_struct    btCnf;
+} lpp_lppe_bt_meas_query_cnf_struct;
+
+/* MSG_ID_LPP_LPPE_SENSOR_MEAS_QUERY_CNF: provide location information of specified positioning methods */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           sessionID;     /* indicate the associated LI session ID of this message */
+    kal_uint16                           lppTransID;    /* binded LPP transactio ID of this LI */
+    lpp_lppe_sensor_meas_struct  sensorCnf;
+} lpp_lppe_sensor_meas_query_cnf_struct;
+
+/* MSG_ID_LPP_LPPE_NETWORK_MEAS_QUERY_CNF: provide location information of specified positioning methods */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           sessionID;     /* indicate the associated LI session ID of this message */
+    kal_uint16                           lppTransID;    /* binded LPP transactio ID of this LI */
+    lpp_lppe_network_meas_struct  networkCnf;
+} lpp_lppe_network_meas_query_cnf_struct;
+
+/* MSG_ID_LPP_LPPE_IPADDRESS_MEAS_QUERY_CNF: provide location information of specified positioning methods */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           sessionID;     /* indicate the associated LI session ID of this message */
+    kal_uint16                           lppTransID;    /* binded LPP transactio ID of this LI */
+    lpp_lppe_ipaddress_meas_struct  ipAddressCnf;
+} lpp_lppe_ipaddress_meas_query_cnf_struct;
+
+
+/* Capability*/
+/* Mapping to LPPeWlan_WlanMeasurements */
+typedef struct 
+{
+    kal_bool nonServing;     /* Measurements for a non-serving WLAN AP (in addition to a serving WLAN AP)*/
+    kal_bool apSSID;          /* SSID of the WLAN */
+    kal_bool apSN;              /* AP S/N received at the target */
+    kal_bool apDevType;    /* AP Device type */
+    kal_bool apPhyType;    /* AP PHY type */
+    kal_bool apRSSI;         /* AP signal strength at the target */
+    kal_bool apChanFreq;  /*AP channel/frequency of Tx/Rx */
+    kal_bool apRTD;          /* Round Trip Delay between target and AP */
+    kal_bool apRepLoc;     /* AP Location as reported by AP */
+    kal_bool apTP;             /* AP transmit power */
+    kal_bool apAG;            /* AP antenna gain */
+    kal_bool ueTP;             /* Target transmit power */
+    kal_bool ueAG;            /* Target antenna gain */
+    kal_bool ueSN;             /* UE S/N received at the AP */
+    kal_bool ueRSSI;          /* Target signal strength at the AP */
+    kal_bool oc;                   /* operating class */
+} wlan_meas_capa_type_struct;
+
+
+typedef struct {
+    kal_bool ieee802_11a;
+    kal_bool ieee802_11b;
+    kal_bool ieee802_11g;
+    kal_bool ieee802_11n;
+    kal_bool ieee802_11ac;
+    kal_bool ieee802_11ad;
+} wlan_ap_type_struct;
+
+
+/*Mapping to LPPeWlan_WlanApCapability */
+typedef struct
+{
+    kal_char    apMacAddr[WLAN_MAC_ADDRESS_SIZE];  /* provide the MAC address of the target */
+    kal_int32   apMACAddress_size;
+
+    wlan_ap_type_struct   apTypes;    /* provide the WLAN types supported when functioning as an AP, mapping to LPPeWlan_WlanTypesSupported */
+} wlan_ap_route_capability_struct;
+
+/* Mapping to LPPeWlan_WlanApADSupported */
+typedef struct 
+{
+    kal_bool aplist;     /*mandatory WLAN AP data*/
+    kal_bool aplocation;    /*location of each WLAN AP*/
+    kal_bool locationreliability;  /*reliability of WLAN AP location*/
+    kal_bool transmitPower;    /*transmit power for each WLAN AP*/
+    kal_bool antennaGain;    /*antenna gain for each WLAN AP*/
+    kal_bool coverageArea;  /*coverage area for each WLAN AP*/
+    /**
+     * information for WLAN APs belonging to a different operator than
+     * the serving WLAN AP or information for multiple WLAN AP data sets if
+     * the serving WLAN AP is not associated with a PLMN operator or if the
+     * target device is not served by a WLAN AP
+     */
+    kal_bool nonServing;
+
+} wlan_ap_ad_support_struct;
+
+
+/*align AP*/
+typedef struct
+{
+    kal_bool             isWlanSupported;   /* This parameter indicates whether DUT can support WLAN functionality*/
+    kal_bool             apCapabilityValid;/*This parameter if present indicates that the target can function as a WLAN AP*/
+    wlan_ap_route_capability_struct apCapability;
+
+    kal_bool              wlanTypesSupportedValid; /*This field provides the WLAN AP types supported by the target device when functioning as a WLAN station*/
+    wlan_ap_type_struct                   wlanTypesSupport;   /* indicate the WLAN AP types supported by the target device when functioning as a WLAN station, mapping to WLAN_AP_TYPE_LIST_BIT_* */
+
+    wlan_ap_ad_support_struct       apADSupported;    /* This field specifies the WLAN AP assistance data supported by the target device */
+
+    kal_char    ueMacAddr[WLAN_MAC_ADDRESS_SIZE];  /* This field specifies the MAC Address of the UE. This field should be included for location for an emergency call and may be included in other cases */
+    kal_int32   ueMACAddress_size;
+
+    wlan_meas_capa_type_struct    measSupported; /* This field specifies the E-CID measurements supported by the target device when accessing a WLAN AP*/
+} wlan_ap_capability_struct;
+
+
+typedef struct
+{
+    kal_bool  motionStateSupport;     /* TRUE if the target supports motion state measurements */
+    kal_bool  secMotionStateSupport;  /* TRUE if the target supports secondary motion state measurements */
+    kal_bool  pressureADSupport;      /* TRUE if the target supports atmosphericc pressure assistance data */
+    kal_bool  PressureSupport;        /* TRUE if the target supports atmospheric pressure measurements */
+} sensor_capability_struct;
+
+
+typedef struct
+{
+    srn_category_struct  srnCategory;        /* specify the supported SRN category */
+    kal_uint8            supportMeas;        /* specify the SRN measurements the target can provide, mapping to SRN_MEAS_TYPE_BIT_* */
+    kal_uint8            supportAssistData;  /* specify the SRN assistance data types supported by the target device for target based mode, mapping to SRN_AD_TYPE_BIT_* */
+} srn_capability_category_element_struct;
+
+/* Align to AP: LPPeBluetooth_BluetoothProvideCapabilities (do we need to kepp for LPPe context)*/
+typedef struct
+{
+    kal_uint8                               numCateElement;
+    srn_capability_category_element_struct  cateElement[SRN_MAX_CATEGORY_ELEMENT];  /* specify the target capabilities for each supported SRN category */
+} srn_capability_struct;
+
+typedef struct 
+{
+    kal_bool     btSupported; /*Whether target supports bluetooth*/
+    kal_bool     btRssi;
+    kal_bool     btRtd;
+    kal_bool     btGroup; /* This field specifies the BT assistance data types supported by the target device for target based mode*/
+    kal_bool     btAntennaPattern;  /* This field specifies the BT assistance data types supported by the target device for target based mode */
+    
+    kal_bool     btleSupported; /* * Whether target supports bluetooth low energy*/
+    kal_bool     btleRssi;
+    kal_bool     btleRtd;
+    kal_bool     btleGroup; /*This field specifies the BTLE assistance data types supported by the target device for target based mode*/
+    kal_bool     btleAntennaPattern;  /* This field specifies the BTLE assistance data types supported by the target device for target based mode */
+} bt_capability_struct;
+
+/* Mapping to LPPeIpAddress_IpAddressCapabilities */
+typedef struct 
+{
+    kal_bool ipv4;  /* support to report Internet Protocol version 4 */
+    kal_bool ipv6;  /* support to report Internet Protocol version 6 */
+    kal_bool nat;  /* support to report Network Address Translation */
+} ipaddress_capability_struct;
+
+/* MSG_ID_LPP_LPPE_WLAN_CAPABILITY_IND: unsolicited capability indications from AP connectivity module */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    wlan_ap_capability_struct   wlanAPCapa;
+} lpp_lppe_wlan_capability_ind_struct;
+
+/* MSG_ID_LPP_LPPE_BT_CAPABILITY_IND: unsolicited capability indications from AP connectivity module */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    bt_capability_struct       btCapa;
+} lpp_lppe_bt_capability_ind_struct;
+
+/* MSG_ID_LPP_LPPE_SENSOR_CAPABILITY_IND: unsolicited capability indications from AP connectivity module */
+typedef struct
+{
+    LOCAL_PARA_HDR
+   sensor_capability_struct    sensorCapa;
+} lpp_lppe_sensor_capability_ind_struct;
+
+/* MSG_ID_LPP_LPPE_NETWORK_CAPABILITY_IND: unsolicited capability indications from AP connectivity module */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool  networkLocationSupported;
+} lpp_lppe_network_capability_ind_struct;
+
+/* MSG_ID_LPP_LPPE_IPADDRESS_CAPABILITY_IND: unsolicited capability indications from AP connectivity module */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ipaddress_capability_struct  ipAddressCapa;
+} lpp_lppe_ipaddress_capability_ind_struct;
+
+/* MSG_ID_LPP_LPPE_GNSS_POS_IND: un-solicited POS indication from LPP */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           transactionID;
+    gnss_loc_result_enum                 resultStatus;
+    gnss_pos_result_type_enum            type; 
+    gnss_pos_result_struct           posResult;      /* only valid when resultStatus = GNSS_LOC_RESULT_NO_ERROR */
+} lpp_lppe_gnss_pos_ind_struct;
+
+/* MSG_ID_LPP_LPPE_GNSS_MEAS_IND: un-solicited POS indication from LPP */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           transactionID;
+    gnss_loc_result_enum                 resultStatus;
+    gnss_meas_result_type_enum           type;
+    gnss_measured_result_struct      measuredResult;  /* only valid when resultStatus = GNSS_LOC_RESULT_NO_ERROR */
+} lpp_lppe_gnss_meas_ind_struct;
+
+
+/* MSG_ID_LPP_LPPE_ABORT_IND: un-solicited ABORT indication from LPP */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           transactionID;
+    kal_bool                             abortAll; /* Also can use on LPP clear all session */
+    lpp_lppe_abort_cause_enum            cause;
+} lpp_lppe_abort_ind_struct;
+
+/* MSG_ID_LPP_LPPE_ERROR_IND: un-solicited ERROR indication from LPP */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           transactionID;
+
+    lpp_lppe_error_cause_enum            cause;
+} lpp_lppe_error_ind_struct;
+
+/* ---LPP_EXT -> LPP--- */
+/* MSG_ID_LPP_LPPE_EPDU_DATA_REQ: transfer uplink LPPe message raw data */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                epduULSN;         /* unique sequence number to identify a EPDU in UL, only used between LPP and LPP_EXT */
+    kal_bool                  lppTransIDValid;  /* LPP transaction ID validity */
+    kal_uint16                lppTransID;       /* binded LPP transactio ID of this EPDU (optional) */
+    lpp_lppe_msg_type_enum    msgType;          /* LPPE message type of this EPDU */
+    kal_bool                  ackRequired;      /* specify if this EPDU requires LPP acknowledge, TRUE: required, FALSE: not needed */
+    lppe_result_enum         resultStatus;  
+    /* raw data is in peer buffer */
+} lpp_lppe_epdu_data_req_struct;
+
+
+/* MSG_ID_LPP_LPPE_EPDU_DATA_RSP: indicate downlink LPPe message process status */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16    epduDLSN;       /* unique sequence number to identify a EPDU in DL, only used between LPP and LPP_EXT */
+    kal_bool      processStatus;  /* LPPe process status for specified downlink EPDU, TRUE: sent, FALSE: failure, e.g., AD receive RSP from AP module, LI REQ is sent to AP module */
+} lpp_lppe_epdu_data_rsp_struct;
+
+
+/* Assistance Data Procedure*/
+/* MSG_ID_LPP_LPPE_WLAN_POS_ASSIST_DATA_PROVIDE_IND,: transfer the assist data to LPP*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                      sessionID;   /* indicate the associated AD session ID of this relay AD message */
+    kal_uint16                      lppTransID;  /* binded LPP transactio ID of this AD */
+    kal_bool    result;   /* indicate the LPP/LPPe can initiate an AD request to the network */
+} lpp_lppe_wlan_pos_assist_data_provide_ind_struct;
+
+/* MSG_ID_LPP_LPPE_BT_POS_ASSIST_DATA_PROVIDE_IND,: transfer the assist data to LPP*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                      sessionID;   /* indicate the associated AD session ID of this relay AD message */
+    kal_uint16                      lppTransID;  /* binded LPP transactio ID of this AD */
+    kal_bool    result;   /* indicate the LPP/LPPe can initiate an AD request to the network */
+} lpp_lppe_bt_pos_assist_data_provide_ind_struct;
+
+/* MSG_ID_LPP_LPPE_SENSOR_POS_ASSIST_DATA_PROVIDE_IND,: transfer the assist data to LPP*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                      sessionID;   /* indicate the associated AD session ID of this relay AD message */
+    kal_uint16                      lppTransID;  /* binded LPP transactio ID of this AD */
+    kal_bool    result;   /* indicate the LPP/LPPe can initiate an AD request to the network */
+} lpp_lppe_sensor_pos_assist_data_provide_ind_struct;
+
+/* MSG_ID_LPP_LPPE_HA_AGNSS_POS_ASSIST_DATA_PROVIDE_IND,: transfer the assist data to LPP*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                      sessionID;   /* indicate the associated AD session ID of this relay AD message */
+    kal_uint16                      lppTransID;  /* binded LPP transactio ID of this AD */
+    kal_bool    result;   /* indicate the LPP/LPPe can initiate an AD request to the network */
+} lpp_lppe_ha_agnss_pos_assist_data_provide_ind_struct;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+
+/*Location Information*/
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef struct
+{
+    kal_bool nonServing;    /* Measurements for a non-serving WLAN AP (in addition to a serving WLAN AP)*/
+    kal_bool apSSID;         /* SSID of the WLAN*/
+    kal_bool apSN;             /* AP S/N received at the target*/
+    kal_bool apDevType;   /* AP Device type*/
+    kal_bool apPhyType;    /* AP PHY type*/
+    kal_bool apRSSI;         /*  AP signal strength at the target*/
+    kal_bool apChanFreq;  /* AP channel/frequency of Tx/Rx*/
+    kal_bool apRTD;          /* Round Trip Delay between target and AP*/
+    kal_bool apRepLoc;     /* AP Location as reported by AP*/
+    kal_bool apTP;             /* AP transmit power */
+    kal_bool apAG;            /* AP antenna gain */
+    kal_bool ueTP;             /* Target transmit power */
+    kal_bool ueAG;            /* Target antenna gain */
+    kal_bool ueSN;            /*UE S/N received at the AP */
+    kal_bool ueRSSI;        /* Target signal strength at the AP */
+    kal_bool oc;                 /*operating class*/
+} lpp_lppe_wlan_meas_req_struct;
+
+/* Mapping to LPPeSensor_SensorMeasurementRequest*/
+typedef struct
+{
+    kal_bool  motionStateReq;      /* request for primary motion state measurements */
+    kal_bool  secMotionStateReq;   /* request the secondary motion state of the target */
+    kal_bool  pressureReq;         /* request for atmospheric pressure measurements */
+} lpp_lppe_sensor_meas_req_struct; //lpp_lppe_sensor_pos_loc_req_struct;
+
+
+/*Mapping to LPPeBluetooth_BluetoothMeasurementRequest*/
+typedef struct
+{
+    srn_req_loc_multi_meas_enum   btMultipleMeasurement; /* This field specifies if the target is forbidded, allowed, or requested to provide multiple measurement sets per BT*/
+    kal_bool btRtd;  /*Request BT round trip delay*/
+    srn_req_loc_multi_meas_enum  btleMultipleMeasurement; /* This field specifies if the target is forbidden, allowed, or requested to provide multiple measurement sets per BTLE*/
+    kal_bool btleRtd;  /*Request BTLE round trip delay*/
+} lpp_lppe_bt_meas_req_struct;
+
+
+/* MSG_ID_LPP_LPPE_WLAN_START_IND: transfer the start message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           sessionID;     /* indicate the associated LI session ID of this message */
+    kal_uint16                           lppTransID;    /* binded LPP transactio ID of this LI */
+    lpp_lppe_wlan_meas_req_struct   wlanAPReq;
+} lpp_lppe_wlan_start_ind_struct;
+
+/* MSG_ID_LPP_LPPE_BT_START_IND: transfer the start message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           sessionID;     /* indicate the associated LI session ID of this message */
+    kal_uint16                           lppTransID;    /* binded LPP transactio ID of this LI */
+    lpp_lppe_bt_meas_req_struct   btReq;
+} lpp_lppe_bt_start_ind_struct;
+
+/* MSG_ID_LPP_LPPE_SENSOR_START_IND: transfer the start message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           sessionID;     /* indicate the associated LI session ID of this message */
+    kal_uint16                           lppTransID;    /* binded LPP transactio ID of this LI */
+    lpp_lppe_sensor_meas_req_struct   sensorReq;
+} lpp_lppe_sensor_start_ind_struct;
+
+/* MSG_ID_LPP_LPPE_NETWORK_START_IND: transfer the start message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           sessionID;     /* indicate the associated LI session ID of this message */
+    kal_uint16                           lppTransID;    /* binded LPP transactio ID of this LI */
+} lpp_lppe_network_start_ind_struct;
+
+/* MSG_ID_LPP_LPPE_WLAN_MEAS_QUERY_REQ: transfer the query message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           sessionID;     /* indicate the associated LI session ID of this message */
+    kal_uint16                           lppTransID;    /* binded LPP transactio ID of this LI */
+} lpp_lppe_wlan_meas_query_req_struct;
+
+/* MSG_ID_LPP_LPPE_BT_MEAS_QUERY_REQ: transfer the query message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           sessionID;     /* indicate the associated LI session ID of this message */
+    kal_uint16                           lppTransID;    /* binded LPP transactio ID of this LI */
+} lpp_lppe_bt_meas_query_req_struct;
+
+/* MSG_ID_LPP_LPPE_SENSOR_MEAS_QUERY_REQ: transfer the query message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           sessionID;     /* indicate the associated LI session ID of this message */
+    kal_uint16                           lppTransID;    /* binded LPP transactio ID of this LI */
+} lpp_lppe_sensor_meas_query_req_struct;
+
+/* MSG_ID_LPP_LPPE_NETWORK_MEAS_QUERY_REQ: transfer the query message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           sessionID;     /* indicate the associated LI session ID of this message */
+    kal_uint16                           lppTransID;    /* binded LPP transactio ID of this LI */
+} lpp_lppe_network_meas_query_req_struct;
+
+/* MSG_ID_LPP_LPPE_IPADDRESS_MEAS_QUERY_REQ: transfer the query message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           sessionID;     /* indicate the associated LI session ID of this message */
+    kal_uint16                           lppTransID;    /* binded LPP transactio ID of this LI */
+} lpp_lppe_ipaddress_meas_query_req_struct;
+
+
+/* MSG_ID_LPP_LPPE_WLAN_STOP_IND: transfer the stop message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           sessionID;     /* indicate the associated LI session ID of this message */
+    kal_uint16                           lppTransID;    /* binded LPP transactio ID of this LI */
+} lpp_lppe_wlan_stop_ind_struct;
+
+/* MSG_ID_LPP_LPPE_BT_STOP_IND: transfer the stop message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           sessionID;     /* indicate the associated LI session ID of this message */
+    kal_uint16                           lppTransID;    /* binded LPP transactio ID of this LI */
+} lpp_lppe_bt_stop_ind_struct;
+
+/* MSG_ID_LPP_LPPE_SENSOR_STOP_IND: transfer the stop message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           sessionID;     /* indicate the associated LI session ID of this message */
+    kal_uint16                           lppTransID;    /* binded LPP transactio ID of this LI */
+} lpp_lppe_sensor_stop_ind_struct;
+
+/* MSG_ID_LPP_LPPE_NETWORK_STOP_IND: transfer the stop message to LBS*//* LPPe only */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                           sessionID;     /* indicate the associated LI session ID of this message */
+    kal_uint16                           lppTransID;    /* binded LPP transactio ID of this LI */
+} lpp_lppe_network_stop_ind_struct;
+
+/* MSG_ID_LPP_LPPE_CAPABILITY_REQ: solicited capability request to AP connectivity module */
+//TBD: AP automaticlly transfer the capability
+
+/* MSG_ID_LPP_LPPE_ABORT_RSP: unsolicted ABORT request from LPP*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16  transactionID;
+} lpp_lppe_abort_rsp_struct;
+
+/* MSG_ID_LPP_LPPE_ERROR_RSP: un-solicited ERROR indication from LPP */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16  transactionID;
+} lpp_lppe_error_rsp_struct;
+
+
+
+/************** LBS -> LPP_EXT  *************/
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    lpp_lppe_ha_gnss_assist_data_type_enum           type;       /* assistance data type for ack */
+} lppe_lbs_gnss_assist_data_rsp_struct; /* define for MSG_ID_LPPE_LBS_GNSS_ASSIST_DATA_RSP */
+
+#endif /* _LPP_LPPE_STRUCT_H */
diff --git a/mcu/interface/protocol/general/lpp_msg_enum.h b/mcu/interface/protocol/general/lpp_msg_enum.h
new file mode 100644
index 0000000..6f4631e
--- /dev/null
+++ b/mcu/interface/protocol/general/lpp_msg_enum.h
@@ -0,0 +1,190 @@
+/******************************************************************************
+*  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) 2013
+*
+*  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:
+ * --------------------------------------------------------
+ *   lpp_msg_enum.h
+ *
+ * Project:
+ * --------------------------------------------------------
+ *   LTE project
+ *
+ * Description:
+ * --------------------------------------------------------
+ *   LTE Positioning Protocol - Message Structure Enumeration
+ *
+ * Author:
+ * --------------------------------------------------------
+ * -------
+ *
+ * --------------------------------------------------------
+ * $Log$
+ *
+ * 11 29 2018 roland.li
+ * [MOLY00363204] [Gen97] NR positioning interface check-in
+ * [LPP] 5G positioning interface.
+ *
+ * 09 20 2017 yung-chun.lin
+ * [MOLY00278366] LPP OTDOA new procedure architecture development
+ * 	
+ * 	[MOB][OTDOA][OA] 
+ * 	- ERRC-LPP OTDOA API
+ * 	- enum for OTDOA STOP cause
+ *
+ * 10 28 2016 jie-yu.wang
+ * [MOLY00206577] [Gen92] A-BeiDou feature development
+ * .
+ *
+ * 01 13 2015 roland.li
+ * [MOLY00092193] [UMOLY][LPP]LPP R10R11 feature checkin
+ * 	.
+ *
+ * 08 04 2014 doug.shih
+ * [MOLY00073990] [LPP CP] LPP code check-in for OTDOA feature
+ * .
+ *
+ * 06 20 2014 jinghan.wang
+ * [MOLY00070034] [LCS][LPP] Always turn on reset UE stored pos info in CP for UP testing reference
+ * Turn on LPP CP option for UP SUPL usage.
+ *
+ *
+ *****************************************************************************/
+
+#ifndef _LPP_MSG_ENUM_H
+#define _LPP_MSG_ENUM_H
+
+#include "kal_public_api.h"
+#include "kal_public_defs.h"
+#include "kal_general_types.h"
+
+//#if defined(__LPP_CP_SUPPORT__) || defined(__LPP_UP_SUPPORT__) || defined(__L1EDPS_ENABLE__)
+
+#define LPP_OTDOA_MAX_NBR_CELL_FREQ_LAYER_NUM   3
+#define LPP_OTDOA_MAX_NBR_CELL_LIST_NUM        24
+#define LPP_OTDOA_MAX_NBR_CELL_LIST_NUM_TOTAL  3*24
+
+
+#define LPP_ECID_MAX_MEASURED_CELL_INFO_NUM    32
+
+#define LPP_MAX_BANDS                          64 // should align LPP_maxBands
+
+/* LPP procedure enum mapped to bitmask (BIT position equals to enum value) */
+typedef enum
+{
+    LPP_PROC_TYPE_NULL,
+    LPP_PROC_TYPE_CAPABILITY_TRANSFER_INDICATION,
+    LPP_PROC_TYPE_ASSIST_DATA_TRANSFER_DELIVERY,
+    LPP_PROC_TYPE_LOC_INFO_TRANSFER_DELIVERY,
+    LPP_PROC_TYPE_ERROR,
+    LPP_PROC_TYPE_ABORT
+} lpp_procedure_type_enum;
+
+
+typedef enum
+{
+    LPP_LOC_OTDOA_RESULT_NULL,
+    LPP_LOC_OTDOA_RESULT_NO_ERROR,
+    LPP_LOC_OTDOA_RESULT_UNDEFINED,
+    LPP_LOC_OTDOA_RESULT_ASSIST_DATA_MISSING,          /* TBD: used for timeout without assist data case */
+    LPP_LOC_OTDOA_RESULT_UNABLE_MEASURE_REF_CELL,      /* LPP_OTDOA_TargetDeviceErrorCauses_cause_unableToMeasureReferenceCell */
+    LPP_LOC_OTDOA_RESULT_UNABLE_MEASURE_ANY_NBR_CELL,  /* LPP_OTDOA_TargetDeviceErrorCauses_cause_unableToMeasureAnyNeighbourCell */
+    LPP_LOC_OTDOA_RESULT_UNABLE_MEASURE_SOME_NBR_CELL  /* LPP_OTDOA_TargetDeviceErrorCauses_cause_attemptedButUnableToMeasureSomeNeighbourCells */
+} lpp_loc_otdoa_result_enum;
+
+
+typedef enum
+{
+    LPP_LOC_ECID_RESULT_NULL,
+    LPP_LOC_ECID_RESULT_NO_ERROR,
+    LPP_LOC_ECID_RESULT_UNDEFINED,
+    LPP_LOC_ECID_RESULT_REQUESTED_MEASUREMENT_NOT_AVAILABLE,      /* LPP_ECID_TargetDeviceErrorCauses_cause_requestedMeasurementNotAvailable, e.g. RRC connection reestablishment */
+    LPP_LOC_ECID_RESULT_NOT_ALL_REQUESTED_MEASUREMENTS_POSSIBLE   /* LPP_ECID_TargetDeviceErrorCauses_cause_notAllrequestedMeasurementsPossible */
+} lpp_loc_ecid_result_enum;
+
+
+typedef enum
+{
+    LPP_OTDOA_PRS_INFO_BANDWIDTH_N6,
+    LPP_OTDOA_PRS_INFO_BANDWIDTH_N15,
+    LPP_OTDOA_PRS_INFO_BANDWIDTH_N25,
+    LPP_OTDOA_PRS_INFO_BANDWIDTH_N50,
+    LPP_OTDOA_PRS_INFO_BANDWIDTH_N75,
+    LPP_OTDOA_PRS_INFO_BANDWIDTH_N100
+} lpp_otdoa_prs_info_bandwidth_enum;
+
+
+typedef enum
+{
+    LPP_OTDOA_PRS_INFO_NUM_DL_FRAME_SF_1,
+    LPP_OTDOA_PRS_INFO_NUM_DL_FRAME_SF_2,
+    LPP_OTDOA_PRS_INFO_NUM_DL_FRAME_SF_4,
+    LPP_OTDOA_PRS_INFO_NUM_DL_FRAME_SF_6
+} lpp_otdoa_prs_info_num_dl_frame_enum;
+
+
+typedef enum
+{
+    LPP_OTDOA_PRS_INFO_MUTING_PO_2,
+    LPP_OTDOA_PRS_INFO_MUTING_PO_4,
+    LPP_OTDOA_PRS_INFO_MUTING_PO_8,
+    LPP_OTDOA_PRS_INFO_MUTING_PO_16,
+} lpp_otdoa_prs_info_muting_po_enum;
+
+typedef enum
+{
+    LPP_OTDOA_NORMAL_STOP,        /*Timer Timeout or ERRC Conn Release*/
+    LPP_OTDOA_PROC_CONFLICT_SUS,  /*REQ does not stop for proc conflict, possible restart within a short time period*/
+    LPP_OTDOA_PROC_CONFLICT_STOP  /*REQ does not stop for proc conflict, possible restart after a longer time period*/
+} lpp_otdoa_req_stop_enum;
+
+typedef enum {
+    UE_POS_TECH_AGNSS = 0,
+    UE_POS_TECH_OTDOA = 1
+} ue_pos_tech_enum;
+
+
+typedef enum {
+    NRRC_ABORT_CAUSE_IRAT = 0,      /* NRRC mobility from NR to others RAT, NRRC MAIN */
+    NRRC_ABORT_CAUSE_CONN_REL,      /* NRRC connection release (CONN -> IDLE), NRRC MAIN */
+    NRRC_ABORT_CAUSE_CONN_RE_EST,   /* NRRC re-establishment (CONN -> CONN), NRRC NCONN */
+    NRRC_ABORT_CAUSE_GEMINI_SUS,    /* NRRC Gemini suspend, NRRC MAIN */
+    NRRC_ABORT_CAUSE_VC_START,      /* NRRC virtual connected start, NRRC MAIN */
+} lpp_nrrc_abort_cause_enum;
+
+
+//#endif  /* #if defined(__LPP_CP_SUPPORT__) || defined(__LPP_UP_SUPPORT__) || defined(__L1EDPS_ENABLE__) */
+
+#endif /* _LPP_MSG_ENUM_H */
diff --git a/mcu/interface/protocol/general/lpp_msg_struct.h b/mcu/interface/protocol/general/lpp_msg_struct.h
new file mode 100644
index 0000000..c3a7e44
--- /dev/null
+++ b/mcu/interface/protocol/general/lpp_msg_struct.h
@@ -0,0 +1,620 @@
+/******************************************************************************
+*  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) 2013
+*
+*  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:
+ * --------------------------------------------------------
+ *   lpp_msg_struct.h
+ *
+ * Project:
+ * --------------------------------------------------------
+ *   LTE project
+ *
+ * Description:
+ * --------------------------------------------------------
+ *   LTE Positioning Protocol - Message Structure Definition
+ *
+ * Author:
+ * --------------------------------------------------------
+ * -------
+ *
+ * --------------------------------------------------------
+ * $Log$
+ *
+ * 05 12 2021 jie-yu.wang
+ * [MOLY00628543] [A32 5G NA] request to fix OTDOA issue
+ * 	
+ * 	[SWRD][NR15.R3.MD700] OTDOA response
+ *
+ * 11 10 2020 jie-yu.wang
+ * [MOLY00589182] [Gen97][MP7][Memory reduction] Stage V - LTE POS preempt LTE/NR HARQ buffer
+ * 	
+ * 	[Interface][LPP].
+ *
+ * 11 29 2019 jie-yu.wang
+ * [MOLY00461947] [LPP] Patch back from 1001.DEV to VMOLY
+ * [SWRD] LPP patch back
+ *
+ * 06 20 2019 jie-yu.wang
+ * [MOLY00415205] [AGPS] [LBS] NR Neighbor cell information for SUPL
+ * [OA][LBS] SUPL Nbr Cell Interface.
+ *
+ * 06 12 2019 jie-yu.wang
+ * [MOLY00413168] [LPP] Inter RAT OTDOA modification for adding NRRC IND
+ * [OA][LPP] InterRAT OTDOA interface change for NRRC.
+ *
+ * 05 29 2019 jie-yu.wang
+ * [MOLY00394881] [LPP] Inter RAT OTDOA modification
+ * [OA][LPP] OTDOA RefCell Global ID.
+ *
+ * 05 15 2019 andrew.wu
+ * [MOLY00406240] [VGMM] DL NAS TRANSPORT with type multiple payload
+ * DL NAS TRANSPORT with type multiple payload.
+ *
+ * 03 28 2019 jie-yu.wang
+ * [MOLY00394881] [LPP] Inter RAT OTDOA modification
+ * [LPP] InterRAT OTDOA interface.
+ *
+ * 11 29 2018 roland.li
+ * [MOLY00363204] [Gen97] NR positioning interface check-in
+ * [LPP] 5G positioning interface.
+ *
+ * 02 05 2018 jie-yu.wang
+ * [MOLY00306235] [UMOLYE] LPP ASN Release 14 upgrade
+ * [LPP] R14 ASN upgrade.
+ *
+ * 12 01 2017 lawrence.chen
+ * [MOLY00292511] [Coverity Scanned Code Defect]CID:2540031 code defect happened in /mcu/l1core/modem/el1/el1c/meas/src/el1_lpp.c
+ * Coverity warning fix.
+ *
+ * 09 20 2017 lawrence.chen
+ * [MOLY00278366]LPP OTDOA new procedure architecture development.
+ *
+ * 07 07 2017 jie-yu.wang
+ * [MOLY00261827] [UMOYLA] LPPe development
+ * [LPP] LPPe code change check-in.
+ *
+ * 06 27 2016 jie-yu.wang
+ * [MOLY00183642] new task EL1_MPC definition for 6293
+ * (LPP) UMOLYA MessageID change.
+ *
+ * 01 14 2015 roland.li
+ * [MOLY00092193] [UMOLY][LPP]LPP R10R11 feature checkin
+ * .
+ *
+ * 01 13 2015 roland.li
+ * [MOLY00092193] [UMOLY][LPP]LPP R10R11 feature checkin
+ * 	.
+ *
+ * 10 08 2014 roland.li
+ * [MOLY00080296] [LPP] Always trun on LPP CP options for L1 stand alone build
+ * 	.
+ *
+ * 08 04 2014 doug.shih
+ * [MOLY00073990] [LPP CP] LPP code check-in for OTDOA feature
+ * .
+ *
+ *
+ *****************************************************************************/
+
+#ifndef _LPP_MSG_STRUCT_H
+#define _LPP_MSG_STRUCT_H
+
+#include "kal_public_api.h"
+#include "kal_public_defs.h"
+#include "kal_general_types.h"
+
+/*Always trun on LPP CP options for L1 stand alone build*/
+
+#include "lpp_msg_enum.h"
+#include "ps_public_struct.h"  /* for L4C SS struct */
+#include "as2l4c_struct.h"     /* for L4CPS NBR cell info */
+#include "mcd_l3_inc_struct.h" /* for PLMN id */
+#include "l3_inc_enums.h"      /* for LCS/EMM enum */
+#include "l3_inc_local.h"      /* for VGMM struct */
+
+/*****************************************************************************
+ * Macros Without Parameters
+ *****************************************************************************/
+
+
+/*****************************************************************************
+ * Macros With Parameters
+ *****************************************************************************/
+
+
+/*****************************************************************************
+ * Enums without tags
+ *****************************************************************************/
+
+
+/*****************************************************************************
+ * Type Definitions
+ *****************************************************************************/
+/* LPP -> ERRC */
+/* This structure for MSG_ID_LPP_EL1MPC_OTDOA_MEAS_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16  transactionID;
+    kal_uint8   responseTime;     /* [1..128], unit in seconds, for EL1 knowing about how long it will take for OTDOA measurement, but LPP still controls the response timer */
+} lpp_el1mpc_otdoa_meas_req_struct;
+
+typedef struct
+{
+   lpp_otdoa_prs_info_bandwidth_enum     prsBandwidth;
+   kal_uint16                            prsConfigIndex;     /* [0..4095] */
+   lpp_otdoa_prs_info_num_dl_frame_enum  numDLFrames;
+   kal_bool                              prsMutingInfoValid;
+   lpp_otdoa_prs_info_muting_po_enum     prsMutingInfoType;
+   kal_uint16                            prsMutingInfoBits;  /* Position Occasion: PO-2: 2 bits, PO-4: 4 bits, PO-8: 8 bits, PO-16: 16 bits */
+} lpp_otdoa_prs_info;
+
+
+typedef struct
+{
+    kal_uint16          phyCellId;                 /* [0..503] */
+    kal_uint32          earfcn;                    /* [0..262143], 65535 is invalid to indicate ARFCN-ValueEUTRA-v9a0 present; LPP assign reference cell if received message IE does not present */
+    kal_bool            isFourAntPortConfig;       /* TRUE: 4 antenna ports for CRS are used in the assistance data reference cell, FALSE: 1 (or 2) antenna port(s) */
+    kal_bool            isCPLengthExtended;        /* TRUE: cyclic prefix length of PRS or CRS is extended, FALSE: cyclic prefix length is normal */
+    lpp_otdoa_prs_info  prsInfo;
+    /* ECGI info */
+    kal_bool            isRefGlobalCellIdValid;    /*Indecate the validity of ECGI element, including plmnId and refCellId*/
+    plmn_id_struct      plmnId;
+    kal_uint32          refCellId;                    /* eutra 28 bits */
+} lpp_otdoa_ref_cell_info_struct;
+
+
+typedef struct
+{
+    kal_uint16          phyCellId;                 /* [0..503] */
+    kal_uint32          earfcn;                    /* [0..262143], 65535 is invalid to indicate ARFCN-ValueEUTRA-v9a0 present; LPP assign reference cell if received message IE does not present */
+    kal_bool            isCPLengthExtended;        /* TRUE: cyclic prefix length of PRS or CRS is extended, FALSE: cyclic prefix length is normal */
+    kal_bool            isFourAntPortConfig;       /* TRUE: 4 antenna ports for CRS are used in the assistance data reference cell, FALSE: 1 (or 2) antenna port(s) */
+    lpp_otdoa_prs_info  prsInfo;
+    kal_uint8           slotNumberOffset;          /* [0..19] */
+    kal_uint16          prsSubFrameOffset;         /* [0..1279] */
+    kal_uint16          expectedRSTD;              /* [0..16383] */
+    kal_uint16          expectedRSTDUnc;           /* [0..1023] */
+} lpp_otdoa_nbr_cell_info_struct;
+
+typedef struct
+{
+    /**
+        * Number of neighbor frequency layers
+        * - Range  :  1 .. 3
+        */
+    kal_uint8                       numCellInfo;
+   /**
+        * OTDOA assistant data neighbor cell for neighbor frequency layer
+        */
+    lpp_otdoa_nbr_cell_info_struct  cellInfo[LPP_OTDOA_MAX_NBR_CELL_LIST_NUM];
+} lpp_otdoa_nbr_cell_info_list_struct;
+
+
+typedef struct
+{
+    kal_uint8                            numFreqInfo;
+    lpp_otdoa_nbr_cell_info_list_struct  freqInfo[LPP_OTDOA_MAX_NBR_CELL_FREQ_LAYER_NUM+1];
+}  lpp_otdoa_nbr_freq_info_list_struct;
+
+typedef struct
+{
+    /**
+        * OTDOA assistant data reference cell received from location server. LPP shall ensure all IEs are present when sending it to ERRC/EL1.
+        */
+    lpp_otdoa_ref_cell_info_struct       refCellInfo;
+    /**
+        * OTDOA assistant data neighbor cell received from location server. LPP shall ensure all IEs are present when sending it to ERRC/EL1.
+        */
+    lpp_otdoa_nbr_freq_info_list_struct  nbrCellInfo;
+} lpp_otdoa_assist_data_struct;
+
+
+/* This structure for MSG_ID_LPP_ERRC_OTDOA_MEAS_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16  transactionID;
+    kal_bool    isResponseTimeEarlyFixValid;
+    kal_uint8   earlyResponseTime;     /* [1..128], unit in seconds, for EL1 knowing about how long it will take for OTDOA measurement early Fix, but LPP still controls the response timer */
+    kal_uint8   responseTime;     /* [1..128], unit in seconds, for EL1 knowing about how long it will take for OTDOA measurement, but LPP still controls the response timer */
+    lpp_otdoa_assist_data_struct otdoaAssistData;
+    kal_uint32  responseTimeinTick;
+} lpp_errc_otdoa_meas_req_struct;
+
+/* This structure for MSG_ID_LPP_NRRC_OTDOA_MEAS_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16  transactionID;
+    kal_bool    isResponseTimeEarlyFixValid;
+    kal_uint8   earlyResponseTime;     /* [1..128], unit in seconds, for EL1 knowing about how long it will take for OTDOA measurement early Fix, but LPP still controls the response timer */
+    kal_uint8   responseTime;     /* [1..128], unit in seconds, for EL1 knowing about how long it will take for OTDOA measurement, but LPP still controls the response timer */
+    lpp_otdoa_assist_data_struct otdoaAssistData;
+    kal_bool   isNrLteSfnOffsetValid;   /* The validity of following parameter nrLteSfnOffset. */
+    kal_uint16   nrLteSfnOffset;   /* [0...1023], specifies the SFN offset between the serving NR cell and the assistance data reference cell. */
+    kal_bool     isNrLteFineTimingOffsetValid;  /* The validity of following parameter NrLteFineTimingOffset. */
+    kal_uint8    NrLteFineTimingOffset;   /* [0...19],unit in 0.5ms. specifies the frame boundary offset between the NR serving cell and the LTE assistance data reference cell. */
+	kal_uint32   responseTimeinTick;
+} lpp_nrrc_otdoa_meas_req_struct;
+
+
+/* This structure for MSG_ID_LPP_ERRC_OTDOA_MEAS_ABORT_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16  transactionID;
+} lpp_errc_otdoa_meas_abort_req_struct;
+
+/* This structure for MSG_ID_LPP_NRRC_OTDOA_MEAS_ABORT_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16  transactionID;
+} lpp_nrrc_otdoa_meas_abort_req_struct;
+
+/* This structure for MSG_ID_LPP_ERRC_ECID_MEAS_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16  transactionID;
+    kal_bool    rsrpReq;
+    kal_bool    rsrqReq;
+    kal_bool    ueRxTxTimeDiffReq;
+    kal_bool    ueRxTxSupTDD;
+} lpp_errc_ecid_meas_req_struct;
+
+/* MSG_ID_LPP_ERRC_IRAT_ECID_MEAS_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16  transactionID;
+} lpp_errc_irat_ecid_meas_req_struct;
+
+/* This structure for MSG_ID_LPP_ERRC_ECID_MEAS_ABORT_REQ */
+/* the conditions LPP will send abort request to ERRC:
+ * (1) network abort ECID session or LPP protocol error
+ * (2) ECID response timer expiry
+ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16  transactionID;
+} lpp_errc_ecid_meas_abort_req_struct;
+
+/* This structure for MSG_ID_LPP_ERRC_SRB_STATUS_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool active; /*to request ERRC to send SRB2 status, TRUE: send, FALSE: stop*/
+} lpp_errc_srb_status_req_struct;
+
+/* ERRC -> LPP */
+/**
+ *   error-Resolution 
+ *   This field specifies the resolution R used in error-Value field. The encoding on two bits is as follows: 
+ *        '00'            5 meters 
+ *        '01'           10 meters 
+ *        '10'           20 meters 
+ *        '11'           30 meters. 
+ *   
+ *   error-Value 
+ *   This field specifies the target device"s best estimate of the uncertainty of the OTDOA (or TOA) measurement. 
+ *   The encoding on five bits is as follows: 
+ *        '00000'     0    to   (R*1-1) meters 
+ *        '00001'     R*1  to   (R*2-1) meters 
+ *        '00010'     R*2  to   (R*3-1) meters 
+ *        ¡K 
+ *        '11111'     R*31  meters or more; 
+ *   where R is the resolution defined by error-Resolution field.  
+ *   e.g. , R=20 m corresponds to 0-19 m, 20-39 m,¡K,620+ m.  
+ *
+ *   error-NumSamples 
+ *   If the error-Value field provides the sample uncertainty of the OTDOA (or TOA) measurement, this field specifies how 
+ *   many measurements have been used by the target device to determine this (i.e., sample size). Following 3 bit 
+ *   encoding is used: 
+ *        "000"         Not the baseline metric 
+ *        '001'         5-9 
+ *        '010'         10-14 
+ *        '011'         15-24 
+ *        '100'         25-34 
+ *        '101'         35-44 
+ *        '110'         45-54 
+ *        '111'         55 or more. 
+ *   In case of the value "000", the error-Value field contains the target device"s best estimate of the uncertainty of the 
+ *   OTDOA (or TOA) measurement not based on the baseline metric. E.g., other measurements such as signal-to-noise-
+ *   ratio or signal strength can be utilized to estimate the error-Value. 
+ *   If this field is absent, the value of this field is "000". 
+ */
+typedef struct
+{
+    kal_uint8  errResolution;     /* 2 bits, refer description as above */
+    kal_uint8  errValue;          /* 5 bits, refer description as above */
+    kal_bool   errSamplesValid;
+    kal_uint8  errSamples;        /* 3 bits, refer description as above */
+} lpp_otdoa_measured_quality_struct;
+
+typedef struct
+{
+    /**
+        * This field specifies the physical cell identity of the neighbour cell for which the RSTDs are provided.
+        * - Range  :  0 .. 503
+        */
+    kal_uint16                         phyCellId;
+    /**
+        * This field specifies the EARFCN of the neighbour cell used for the RSTD measurements.
+        * - Range  :  0 .. 262143
+        */
+    EARFCN                             earfcn;
+    /**
+        * This field specifies the relative timing difference between this neighbour cell and the RSTD reference cell, as defined
+        * in TS 36.214. Mapping of the measured quantity is defined as in TS 36.133 subclause 9.1.10.3.
+        * - Range  :  0 .. 12711
+        */
+    kal_uint16                         rstd;
+    /**
+        * This field specifies the target device"s best estimate of the quality of the measured rstd.
+        */
+    lpp_otdoa_measured_quality_struct  rstdQuality;
+} lpp_otdoa_measured_nbr_cell_struct;
+
+typedef struct
+{
+    /**
+        * This field specifies the SFN of the RSTD reference cell containing the starting subframe of the PRS positioning
+        * occasion if PRS are available on the RSTD reference cell, or subframe of the CRS for RSTD measurements if PRS
+        * are not available on the RSTD reference cell during which the most recent neighbour cell RSTD measurement was
+        * performed.
+        * - 10 bits
+        */
+    kal_uint16                          sysFrameNumber;
+    /**
+        * This field specifies the physical cell identity of the RSTD reference cell.
+        * - Range  :  0 .. 503
+        */
+    kal_uint16                          refPhyCellId;
+    /**
+        * This field specifies the EARFCN of the RSTD reference cell.
+        * - Range  :  0 .. 262143
+        */
+    EARFCN                              refEarfcn;
+    /**
+        * This field specifies the presence of optional IE "referenceQuality".
+        */
+    kal_bool                            refQualityValid;
+    /**
+        * This field specifies the target device's best estimate of the quality of the TOA measurement from the RSTD reference
+        * cell, T_SubframeRxRef , where T_SubframeRxRef is the time of arrival of the signal from the RSTD reference cell.
+        */    
+    lpp_otdoa_measured_quality_struct   refQuality;
+    /**
+        * Number of neighbour cells
+        * - Range  :  1 .. 24
+        */
+    kal_uint8                           numMeasuredNbrCell;
+    /**
+        * This list contains the measured RSTD values for neighbour cells together with the RSTD reference cell, along with
+        * quality for each measurement.
+        */
+    lpp_otdoa_measured_nbr_cell_struct  measuredNbrCell[LPP_OTDOA_MAX_NBR_CELL_LIST_NUM_TOTAL];
+}  lpp_otdoa_measured_info_struct;
+
+/* This structure for MSG_ID_LPP_ERRC_OTDOA_MEAS_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                      transactionID;
+    lpp_otdoa_req_stop_enum         status;  //request perform status, (0: succ; 1: reStarts for SUS; 2: reStart with longer time period)
+    kal_bool                        isEarlyFixReport;
+    lpp_otdoa_measured_info_struct  measurementResult;
+} lpp_errc_otdoa_meas_cnf_struct;
+
+/* This structure for MSG_ID_LPP_NRRC_OTDOA_MEAS_IND */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                      transactionID;
+    kal_bool                        isEarlyFixReport;
+    lpp_otdoa_measured_info_struct  measurementResult;
+} lpp_nrrc_otdoa_meas_ind_struct;
+
+/* This structure for MSG_ID_LPP_NRRC_OTDOA_MEAS_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                      transactionID;
+    lpp_otdoa_req_stop_enum         status;  //request perform status, (0: succ; 1: reStarts for SUS; 2: reStart with longer time period)
+    lpp_otdoa_measured_info_struct  measurementResult;
+} lpp_nrrc_otdoa_meas_cnf_struct;
+
+typedef struct
+{
+    kal_uint16      phyCellId;            /* [0..503] */
+    kal_bool        plmnIdValid;
+    plmn_id_struct  plmnId;
+    kal_bool        cellIdValid;
+    kal_uint32      cellId;               /* eutra 28 bits */
+    kal_uint32      earfcn;               /* [0..262143], 65535 is invalid to indicate ARFCN-ValueEUTRA-v9a0 present */
+    kal_bool        sysFrameNumberValid;
+    kal_uint16      sysFrameNumber;       /* 10 bits */
+    /* measured result */
+    kal_bool        rsrpResultValid;
+    kal_uint8       rsrpResult;           /* [0..97]  */
+    kal_bool        rsrqResultValid;
+    kal_uint8       rsrqResult;           /* [0..34] */
+    kal_bool        ueRxTxTimeDiffValid;
+    kal_uint16      ueRxTxTimeDiff;       /* [0..4095] */
+} lpp_ecid_cell_measured_info_struct;
+
+typedef struct
+{
+    /**
+     * Please note that the interface here is more straight-forward than ECID-SignalMeasurementInformation IE of LPP Message:
+     * when ERRC has measured primary cell, the result will place in primaryCellMeasuredResult;
+     * (if serving (primary) cell is not present, the whole measured info should be ignored since result will be error)
+     *
+     * in addition to primary cell, if ERRC also measured neighbor cells, they will be put into the array of measuredCellResult[],
+     * and the number of neighbor will specify in numMeasuredCellResult
+     */
+    lpp_ecid_cell_measured_info_struct  primaryCellMeasuredResult;
+    kal_uint8                           numMeasuredCellResult;
+    lpp_ecid_cell_measured_info_struct  measuredCellResult[LPP_ECID_MAX_MEASURED_CELL_INFO_NUM];
+} lpp_ecid_measured_info_struct;
+
+/* This structure for MSG_ID_LPP_ERRC_ECID_MEAS_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                     transactionID;
+    lpp_loc_ecid_result_enum       result;
+    lpp_ecid_measured_info_struct  measurementResult;
+} lpp_errc_ecid_meas_cnf_struct;
+
+typedef struct
+{
+    kal_uint8 numMeasuredCellResult;
+    lpp_ecid_cell_measured_info_struct measuredCellResult[LPP_ECID_MAX_MEASURED_CELL_INFO_NUM];
+} lpp_irat_ecid_measured_info_struct;
+
+/* MSG_ID_LPP_ERRC_IRAT_ECID_MEAS_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 transactionID;
+    kal_bool measurementResultValid;
+    lpp_irat_ecid_measured_info_struct measurementResult;
+} lpp_errc_irat_ecid_meas_cnf_struct;
+
+/* This structure for MSG_ID_LPP_ERRC_SRB_STATUS_IND */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool isConnected;  /*TRUE: SRB2 active, FALSE: not sent*/
+} lpp_errc_srb_status_ind_struct;
+
+
+/* This structure for MSG_ID_LPP_SASE_START_OTDOA_MEAS_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool     isAllowedOtdoa;   
+} lpp_sase_start_otdoa_meas_cnf_struct;
+
+
+
+/* LPP -> EMM (EVAL) */
+/* This structure for MSG_ID_LPP_EVAL_DATA_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16  mui;
+    /* for Additional Information IE of UL generic NAS transport */
+    kal_uint8   addInfoLen;
+    kal_uint8   *addInfo;
+    /* raw data is in peer buffer */
+} lpp_eval_data_req_struct;
+
+/* This structure for MSG_ID_LPP_EVAL_DATA_IND */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    /* for Additional Information IE of DL generic NAS transport */
+    kal_uint8   addInfoLen;
+    kal_uint8   *addInfo;
+    lcs_emm_status_enum result;
+    /* raw data is in peer buffer */
+} lpp_eval_data_ind_struct;
+
+/* This structure for MSG_ID_LPP_EVAL_DATA_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    lcs_emm_status_enum  result;
+    kal_uint16           mui;
+} lpp_eval_data_cnf_struct;
+
+/* This structure for MSG_ID_EVAL_LPP_NW_RESET_UE_STORED_POS_INFO_IND */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ue_pos_tech_enum  pos_tech;
+} eval_lpp_nw_reset_ue_stored_pos_info_ind_struct;
+
+
+/* This structure for MSG_ID_ETC_LPP_NW_RESET_UE_STORED_POS_INFO_IND */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ue_pos_tech_enum  pos_tech;
+} etc_lpp_nw_reset_ue_stored_pos_info_ind_struct;
+
+
+/* LPP <-- VGMM */
+/* This structure for MSG_ID_LPP_VGMM_DATA_IND */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    /* for Additional Information IE of DL generic NAS transport */
+    kal_uint8   addInfoLen;
+    kal_uint8   *addInfo;
+    lcs_vgmm_status_enum result;
+    kal_uint8 no_optional_ie;
+    vgmm_payload_opt_ie_struct optional_ie[MAX_NUM_OF_OPT_IE_MULTI];
+    /* raw data is in peer buffer */
+} lpp_vgmm_data_ind_struct;
+
+/* This structure for MSG_ID_LPP_VGMM_DATA_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8  serial_num;
+    lcs_vgmm_status_enum  result;
+} lpp_vgmm_data_cnf_struct;
+
+/* LPP --> VGMM */
+/* This structure for MSG_ID_LPP_VGMM_DATA_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8  serial_num;
+    /* for Additional Information IE of UL generic NAS transport */
+    kal_uint8   addInfoLen;
+    kal_uint8   *addInfo;
+    /* raw data is in peer buffer */
+} lpp_vgmm_data_req_struct;
+
+
+#endif /* _LPP_MSG_STRUCT_H */
diff --git a/mcu/interface/protocol/general/lte_efuse.h b/mcu/interface/protocol/general/lte_efuse.h
new file mode 100644
index 0000000..c42b2b5
--- /dev/null
+++ b/mcu/interface/protocol/general/lte_efuse.h
@@ -0,0 +1,62 @@
+#ifndef _LTE_EFUSE_H_
+#define _LTE_EFUSE_H_
+
+#include "kal_general_types.h"
+#include "reg_base.h" // for "EFUSE_BASE" defined value
+
+
+//[20160801 Ali] move efuse function from mrs_eas_capability.c back to el1 in 6293.
+// used in mcu/common/modem/el1/el1c/lte_efuse.c
+
+/* for EFUSE reading */
+
+#define HW_READ_EL1(ptr)     (*(ptr))
+#define BitFieldGet_EL1(_src, _strtBit, _maskBit)    ((_src >> _strtBit) & _maskBit)
+#define MASK_1_BIT_EL1       0x0001
+
+    // should add code for new chip
+    // [20150820]disable #error for ElBRUS trial build
+    //#error "please check chip version and notify RCM owner to add new efuse code"
+
+#ifdef LTE_CA_DEFAULT_VALUE // may be defined in mrs_eas_capability.h (to be removed)
+#undef LTE_CA_DEFAULT_VALUE
+#endif
+
+#if defined(__LTE_R11__)
+#define LTE_CA_DEFAULT_VALUE  KAL_TRUE
+#else
+#define LTE_CA_DEFAULT_VALUE  KAL_FALSE
+#endif
+
+//[20160801 Ali] move efuse function from mrs_eas_capability.c back to el1 in 6293.
+/*******************************************************************************
+ * @brief           This function check if efuse LTE_FDD_DISABLE bit is set (1),
+ *                  and return LTE FDD support status
+ * @note
+ * @param
+ * @return          TRUE if  LTE_FDD_DISABLE bit is not set (0)
+ *                  FALSE if LTE_FDD_DISABLE bit is set (1)
+*******************************************************************************/
+kal_bool el1_is_lte_fdd_exist(void);
+/*******************************************************************************
+ * @brief           This function check if efuse LTE_TDD_DISABLE bit is set (1),
+ *                  and return LTE TDD support status
+ * @note
+ * @param
+ * @return          TRUE if  LTE_TDD_DISABLE bit is not set (0)
+ *                  FALSE if LTE_TDD_DISABLE bit is set (1)
+*******************************************************************************/
+kal_bool el1_is_lte_tdd_exist(void);
+/*******************************************************************************
+ * @brief           This function check if efuse LTE_CA_DISABLE bit is set (1),
+ *                  and return LTE CA support status
+ * @note
+ * @param
+ * @return          TRUE if  LTE_CA_DISABLE bit is not set (0)
+ *                  FALSE if LTE_CA_DISABLE bit is set (1)
+*******************************************************************************/
+kal_bool el1_is_lte_ca_enable(void);
+
+
+
+#endif // _LTE_EFUSE_H_
diff --git a/mcu/interface/protocol/general/lwa_shm_def.h b/mcu/interface/protocol/general/lwa_shm_def.h
new file mode 100644
index 0000000..678b853
--- /dev/null
+++ b/mcu/interface/protocol/general/lwa_shm_def.h
@@ -0,0 +1,218 @@
+/*****************************************************************************
+*  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) 2016
+*
+*  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:
+ * ---------
+ *	lwa_shm_def.h
+ *
+ * Project:
+ * --------
+ *  UMOLY
+ *
+ * Description:
+ * ------------
+ *  The share memory definitions of LWA (LTE-WLAN Aggregation)
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef LWA_SHM_DEF_H
+#define LWA_SHM_DEF_H
+
+#define LWA_ALIGN_SIZE (4)
+#define LWA_FOUR_BYTE_ALIGN_MASK (LWA_ALIGN_SIZE - 1)
+#define LWA_SIZE_FOUR_BYTE_ALIGN(_sz) (((_sz) + LWA_ALIGN_SIZE - 1) & ~LWA_FOUR_BYTE_ALIGN_MASK)
+
+/****************************************************************************
+ * LWA Share Memory Layout version 1
+ *
+ * shm_start_addr
+ *     |<-------------------------shm_total_size---------------------->|
+ *     |                      |                                        |
+ *     |<-----desc_ring------>|<----------data_ring------------->|<-r->| 
+ *     |                      |                                  |     | 
+ *     |    lwa_dl_desc[N]    |         lwa_dl_buff_t[N]         |     | 
+ *     |                      |                                  |     | 
+ *
+ * 1) N = floor(shm_total_size / (sizeof(lwa_dl_desc)+size(lwa_dl_buff_t)))
+ * 2) lwa_dl_desc is 4-byte-aligned
+ * 3) lwa_dl_buff_struct is 4-byte-aligned
+ * 4) Each element from desc_ring and data_ring is 1-to-1 mapping
+ *    ex. lwa_dl_desc[100] decribes lwa_dl_buff_t[100]
+ * 5) r is remainder tail from floor()
+ *
+ ****************************************************************************/
+#define LWA_SHM_LAYOUT_VER (1) //rel-13, wifi downlink only
+
+
+/****************************************************************************
+ * Type Definitions
+ ****************************************************************************/
+typedef struct _lwa_dl_desc lwa_dl_desc;
+
+
+/****************************************************************************
+ * LWA downlink decriptor, complies with
+ * 1) l2ce_sod_desc
+ * 2) qbm_gpd
+ * 3) wifi usage
+ ****************************************************************************/
+struct _lwa_dl_desc
+{
+	kal_uint8 	         flag;
+	kal_uint8 	         cksum;
+	kal_uint16 	         desc_index;
+	lwa_dl_desc         *next_ptr;
+    lwa_dl_desc         *data_ptr;
+    kal_uint16	         data_len;
+	kal_uint16	         payload_offset;
+    kal_uint8		     pad0;
+	kal_uint8		     bearer;
+	kal_uint8		     key_index;
+	kal_uint8		     sec_func;
+    kal_uint32	         count;
+    kal_uint8		    *out_ptr;
+};
+
+
+/****************************************************************************
+ * WIFI downlink buffer reserved, including
+ * 1) HW_MAC_RX_DESC_T:          32 bytes
+ * 2) HW_MAC_RX_STS_GROUP_4_T:   32 bytes
+ * 3) Ether frame fields:        18 bytes = dst(6)+src(6)+type(2)+fcs(4)
+ ****************************************************************************/
+#define LWA_WIFI_DL_RSV_LEN     (82)
+
+
+/****************************************************************************
+ * WIFI downlink MTU
+ ****************************************************************************/
+#define LWA_WIFI_DL_IP_MTU        (1500) 
+#define LWA_MAX_HDR_LEN           (4) //3gpp r13: 1
+#define LTE_PDCP_MAX_HDR_LEN      (4) //3gpp r13: 1~3
+#define LWA_WIFI_DL_PAYLOAD_MTU   (LWA_WIFI_DL_IP_MTU + LWA_MAX_HDR_LEN + LTE_PDCP_MAX_HDR_LEN)
+
+
+/****************************************************************************
+ * LWA downlink buffer
+ ****************************************************************************/
+#define LWA_DL_BUFF_LEN       (2352) // state of art value of WDRV
+#define LWA_DL_BUFF_LEN_IDEAL (LWA_SIZE_FOUR_BYTE_ALIGN(LWA_WIFI_DL_RSV_LEN + LWA_WIFI_DL_PAYLOAD_MTU)) // ideal value
+
+#if (LWA_DL_BUFF_LEN < (LWA_WIFI_DL_RSV_LEN + LWA_WIFI_DL_MTU))
+#error LWA_DL_BUFF_LEN
+#endif
+
+typedef struct
+{
+	kal_uint8 	buff[LWA_DL_BUFF_LEN];
+} lwa_dl_buff_t;
+
+
+
+
+/****************************************************************************
+ * LWA WLAN/EPDCP U-plane Control Message
+ *   1. any message change shall keep backward compatibility
+ *   2. message length is fixed in 4 bytes
+ *   3. the higher 2 bytes are 'command' and the lower 2 bytes are 'value'
+ *   
+ ****************************************************************************/
+#define LWA_UP_CTRL_MSG_CMD_MAX   (0xFFFF)
+#define LWA_UP_CTRL_MSG_VALUE_MAX (0xFFFF)
+ 
+typedef enum
+{
+// [Command enumeration]                                              [Direction]        [Value]
+    LWA_UP_CTRL_CMD_DL_SHM_LAYOUT_SUPPORT_LIST                = 0,   //WLAN -> PDCP,      16-bit bitmap: each bit represents 1 layout version
+    LWA_UP_CTRL_CMD_DL_SHM_LAYOUT_DESICION                    = 1,   //WLAN <- PDCP,      16-bit bitmap: toggle only 1 bit for runtime layout version
+	LWA_UP_CTRL_CMD_DL_SHM_FULL                               = 2,   //WLAN -> PDCP,      value reserved 
+	LWA_UP_CTRL_CMD_DL_SHN_NOT_FULL                           = 3,   //WLAN <- PDCP,      value reserved
+    LWA_UP_CTRL_CMD_WLAN_DL_PKT_READY_NOTIFY_SETTING          = 4,   //WLAN <- PDCP,      0 means setting 'OFF'; 1 means setting 'ON'; others reserved
+	LWA_UP_CTRL_CMD_WLAN_DL_PKT_READY_NOTIFY                  = 5,   //WLAN -> PDCP,      if setting is on, WLAN send it after every packet write to SHM; value is reserved
+	LWA_UP_CTRL_CMD_DL_HDR_LOOK_AHEAD_SETTING                 = 6,   //WLAN <- PDCP,      value enum: lwa_dl_hdr_look_ahead_setting_enum
+
+//  add new command from here	
+	LWA_UP_CTRL_CMD_INVALID                                   = LWA_UP_CTRL_MSG_CMD_MAX
+} lwa_up_ctrl_cmd_enum;
+
+/****************************************************************************
+ * LWA downlink header look ahead setting:
+ *
+ * [usage] LTE send to WIFI at LWA init time, to configure WIFI driver
+ *         pre-read payload into descriptor for performance optimization
+ *       
+ ****************************************************************************/
+typedef enum
+{
+    LWA_DL_HDR_LOOK_AHEAD_0BYTE = 0,
+	//look ahead off
+	
+	LWA_DL_HDR_LOOK_AHEAD_1BYTE = 1,
+	//look ahead the first 1 byte of ether frame's payload:
+	//    lwa_dl_desc.bearer = (unsigned char) <payload_1st_byte>
+	
+	LWA_DL_HDR_LOOK_AHEAD_3BYTE = 2,
+	//look ahead first 3 bytes of ether frame's payload:
+	//    lwa_dl_desc.bearer = (unsigned char) <payload_1st_byte>
+	//    lwa_dl_desc.count = (unsigned char) (<payload_2nd_byte> << 8) + (unsigned char) <payload_3rd_byte>
+    //default value for 91/92 LWA
+	
+	LWA_DL_HDR_LOOK_AHEAD_INVALID = LWA_UP_CTRL_MSG_VALUE_MAX
+} lwa_dl_hdr_look_ahead_setting_enum;
+
+typedef enum
+{
+    LWA_WIFI_DL_PKT_READY_NOTIFY_OFF,
+	LWA_WIFI_DL_PKT_READY_NOTIFY_ON,
+	LWA_WIFI_DL_PKT_READY_NOTIFY_INVALID = LWA_UP_CTRL_MSG_VALUE_MAX
+} lwa_wifi_dl_pkt_ready_notify_setting_enum;
+
+
+
+#endif /* LWA_SHM_DEF_H */
diff --git a/mcu/interface/protocol/general/mbci_struct.h b/mcu/interface/protocol/general/mbci_struct.h
new file mode 100644
index 0000000..e97c736
--- /dev/null
+++ b/mcu/interface/protocol/general/mbci_struct.h
@@ -0,0 +1,124 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   mbci_struct.h
+ *
+ * Project:
+ * --------
+ *   MT6280
+ *
+ * Description:
+ * ------------
+ *   This file is intends for MBCI implementation.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * 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 _MBCI_STRUCT_H
+#define _MBCI_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "mbim_defs.h"
+
+typedef enum
+{
+    MBCI_STATE_CLOSE,
+    MBCI_STATE_OPEN,
+    MBCI_STATE_CLOSING
+} mbci_state_enum;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    mbim_op_enum op;
+    kal_uint8 uuid[16];
+    kal_uint32 cid;
+    kal_uint32 command_type;
+    kal_uint32 information_buffer_len;
+    kal_uint32 transaction_id;
+} ups_mbci_command_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 result;
+    kal_uint8 uuid[16];
+    kal_uint32 cid;
+    mbim_status_code_enum status;
+    kal_uint32 information_buffer_len;
+    kal_uint32 transaction_id;
+    kal_uint32 command_type;
+} ups_mbci_command_rsp_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 uuid[16];
+    kal_uint32 cid;
+    kal_uint32 information_buffer_len;
+} ups_mbci_status_ind_struct;
+
+#endif /* _MBCI_STRUCT_H */
+
diff --git a/mcu/interface/protocol/general/mbim_defs.h b/mcu/interface/protocol/general/mbim_defs.h
new file mode 100644
index 0000000..def4756
--- /dev/null
+++ b/mcu/interface/protocol/general/mbim_defs.h
@@ -0,0 +1,923 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   mbim_defs.h
+ *
+ * Project:
+ * --------
+ *   MT6280
+ *
+ * Description:
+ * ------------
+ *   This file is intends for MBCI implementation.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _MBIM_DEFS_H
+#define _MBIM_DEFS_H
+
+#define MBIM_MAX_SUPPORT_TRANSACTION    40
+
+#define MBIM_MAX_SESSION    (GPRS_MAX_PDP_SUPPORT >> 1)
+
+#define MBIM_MESSAGE_INDEX_NONE     0
+
+#define MBIM_CONTEXT_ID_APPEND  0xFFFFFFFF
+
+#define MBIM_RSSI_DEFAULT   0
+
+#define MBIM_ERROR_RATE_DEFAULT   0
+
+#define MBIM_SIGNAL_STRENGTH_INTERVAL_DEFAULT 0
+
+#define MBIM_RSSI_DISABLE   0xFFFFFFFF
+
+typedef enum {
+    MBIM_UUID_BASIC_CONNECT = 0,
+    MBIM_UUID_SMS,
+    MBIM_UUID_USSD,
+    MBIM_UUID_PHONEBOOK,
+    MBIM_UUID_STK,
+    MBIM_UUID_AUTH,
+    MBIM_UUID_DSS,
+    MBIM_UUID_MS_HOSTSHUTDOWN,
+    MBIM_UUID_MTK_VENDOR_CMD,
+    // Add new UUID in here    
+    MBIM_UUID_MAX,
+    MBIM_UUID_UNKNOW = 0xFF
+} mbim_uuid_enum;
+
+//extern const kal_uint8 *mbim_uuid_tbl[MBIM_UUID_MAX];
+extern const kal_uint8 mbim_uuid_tbl[MBIM_UUID_MAX][16];
+
+typedef enum {
+    MBIM_CONTEXT_TYPE_NONE = 0,
+    MBIM_CONTEXT_TYPE_INTERNET,
+    MBIM_CONTEXT_TYPE_VPN,
+    MBIM_CONTEXT_TYPE_VOICE,
+    MBIM_CONTEXT_TYPE_VIDEO_SHARE,
+    MBIM_CONTEXT_TYPE_PURCHASE,
+    MBIM_CONTEXT_TYPE_IMS,
+    MBIM_CONTEXT_TYPE_MMS,
+    MBIM_CONTEXT_TYPE_LOCAL,
+    MBIM_CONTEXT_TYPE_MAX,
+    MBIM_CONTEXT_TYPE_UNKNOW = 0xFF
+} mbim_context_type_enum;
+
+extern const kal_uint8 mbim_context_type_tbl[MBIM_CONTEXT_TYPE_MAX][16];
+
+/*------------------MBIM CID BEGIN--------------------------*/
+#define MBIM_CID_RESERVE_0                      0
+
+// BASIC_CONNECT
+typedef enum {
+    MBIM_CID_DEVICE_CAPS                    = 1,
+    MBIM_CID_SUBSCRIBER_READY_STATUS        = 2,
+    MBIM_CID_RADIO_STATE                    = 3,
+    MBIM_CID_PIN                            = 4,
+    MBIM_CID_PIN_LIST                       = 5,
+    MBIM_CID_HOME_PROVIDER                  = 6,
+    MBIM_CID_PREFERRED_PROVIDER             = 7,
+    MBIM_CID_VISIBLE_PROVIDER               = 8,
+    MBIM_CID_REGISTER_STATE                 = 9,
+    MBIM_CID_PACKET_SERVICE                 = 10,
+    MBIM_CID_SIGNAL_STATE                   = 11,
+    MBIM_CID_CONNECT                        = 12,
+    MBIM_CID_PROVISIONED_CONTEXTS           = 13,
+    MBIM_CID_SEVICE_ACTIVATION              = 14,
+    MBIM_CID_IP_CONFIGURATION               = 15,
+    MBIM_CID_DEVICE_SERVICE                 = 16,
+    MBIM_CID_RESERVE_17                     = 17,
+    MBIM_CID_RESERVE_18                     = 18,
+    MBIM_CID_DEVICE_SERVICE_SUBSCRIBE_LIST  = 19,
+    MBIM_CID_PACKET_STATISTIC               = 20,
+    MBIM_CID_NETWORK_IDLE_HINT              = 21,
+    MBIM_CID_EMERGENCY_MODE                 = 22,
+    MBIM_CID_IP_PACKET_FILTERS              = 23,
+    MBIM_CID_MULTICARRIER_PROVIDERS         = 24,
+    MBIM_CID_BASIC_CONNECT_MAX
+} mbim_cid_basic_connect_enum;
+
+// SMS
+typedef enum {
+    MBIM_CID_SMS_CONFIGURATION          = 1,
+    MBIM_CID_SMS_READ                   = 2,
+    MBIM_CID_SMS_SEND                   = 3,
+    MBIM_CID_SMS_DELETE                 = 4,
+    MBIM_CID_SMS_MESSAGE_STORE_STATUS   = 5,
+    MBIM_CID_SMS_MAX
+} mbim_cid_sms_enum;
+
+// USSD
+typedef enum {
+    MBIM_CID_USSD   = 1,
+    MBIM_CID_USSD_MAX
+} mbim_cid_ussd_enum;
+
+// PHONEBOOK
+typedef enum {
+    MBIM_CID_PHONEBOOK_CONFIGURATION    = 1,
+    MBIM_CID_PHONEBOOK_READ             = 2,
+    MBIM_CID_PHONEBOOK_DELETE           = 3,
+    MBIM_CID_PHONEBOOK_WRITE            = 4,
+    MBIM_CID_PHONEBOOK_MAX
+} mbim_cid_phonebook_enum;
+
+// STK
+typedef enum {
+    MBIM_CID_STK_PAC                    = 1,
+    MBIM_CID_STK_TERMINAL_RESPONSE      = 2,
+    MBIM_CID_STK_ENVELOPE               = 3,
+    MBIM_CID_STK_MAX
+} mbim_cid_stk_enum;
+
+// AUTH
+typedef enum {
+    MBIM_CID_AKA_AUTH       = 1,
+    MBIM_CID_AKAP_AUTH      = 2,
+    MBIM_CID_SIM_AUTH       = 3,
+    MBIM_CID_AUTH_MAX
+} mbim_cid_auth_enum;
+
+// DSS
+typedef enum {
+    MBIM_CID_DSS_CONNECT    = 1,
+    MBIM_CID_DSS_MAX
+} mbim_cid_dss_enum;
+
+// MS_HOSTSHUTDOWN
+typedef enum {
+    MBIM_CID_MS_HOSTSHUTDOWN   = 1,
+    MBIM_CID_MS_HOSTSHUTDOWN_MAX
+} mbim_cid_ms_hostshutdown_enum;
+
+// MTK_VENDOR_CMD
+typedef enum {
+    MBIM_CID_MTK_VENDOR_CMD   = 1,
+    MBIM_CID_MTK_VENDOR_CMD_MAX
+} mbim_cid_mtk_vendor_cmd_enum;
+
+/*------------------MBIM CID END--------------------------*/
+
+/*------------------MBIM CID STRUCT ENUM BEGIN------------------------*/
+typedef enum {
+    MBIMCellularClassGsm = 1,
+    MBIMCellularClassCdma = 2    
+} mbim_cellular_class_enum;
+
+typedef enum {
+    MBIMSubscriberReadyStateNotInitialized,
+    MBIMSubscriberReadyStateInitialized,
+    MBIMSubscriberReadyStateSimNotInserted,
+    MBIMSubscriberReadyStateBadSim,
+    MBIMSubscriberReadyStateFailure,
+    MBIMSubscriberReadyStateNotActivated,
+    MBIMSubscriberReadyStateDeviceLocked
+} mbim_subscriber_ready_state_enum;
+
+typedef enum {
+    MBIMRadioOff,
+    MBIMRadioOn
+} mbim_radio_switch_state_enum;
+
+typedef enum {
+    MBIMPinTypeNone,
+    MBIMPinTypeCustom,
+    MBIMPinTypePin1,
+    MBIMPinTypePin2,
+    MBIMPinTypeDeviceSimPin,
+    MBIMPinTypeDeviceFirstSimPin,
+    MBIMPinTypeNetworkPin,
+    MBIMPinTypeNetworkSubsetPin,
+    MBIMPinTypeServiceProviderPin,
+    MBIMPinTypeCorporatePin,
+    MBIMPinTypeSubsidyLock,
+    MBIMPinTypePuk1,
+    MBIMPinTypePuk2,
+    MBIMPinTypeDeviceFirstSimPuk,
+    MBIMPinTypeNetworkPuk,
+    MBIMPinTypeNetworkSubsetPuk,
+    MBIMPinTypeServiceProviderPuk,
+    MBIMPinTypeCorporatePuk
+} mbim_pin_type_enum;
+
+typedef enum {
+    MBIMPinOperationEnter,
+    MBIMPinOperationEnable,
+    MBIMPinOperationDisable,
+    MBIMPinOperationChange
+} mbim_pin_operation_enum;
+
+typedef enum {
+    MBIMPinModeNotSupported,
+    MBIMPinModeEnable,
+    MBIMPinModeDisable
+} mbim_pin_mode_enum;
+
+typedef enum {
+    MBIMPinFormatUnknown,
+    MBIMPinFormatNumeric,
+    MBIMPinFormatAlphaNumeric
+} mbim_pin_format_enum;
+
+typedef enum {
+    MBIM_PROVIDER_STATE_UNKNOWN = 0x00,
+    MBIM_PROVIDER_STATE_HOME = 0x01, 
+    MBIM_PROVIDER_STATE_FORBIDDEN = 0x02,
+    MBIM_PROVIDER_STATE_PREFERRED = 0x04,
+    MBIM_PROVIDER_STATE_VISIBLE = 0x08,
+    MBIM_PROVIDER_STATE_REGISTERED = 0x10,
+    MBIM_PROVIDER_STATE_PREFERRED_MULTICARRIER = 0x20
+} mbim_provider_state_enum;
+
+typedef enum {
+    MBIMRegisterStateUnknown,
+    MBIMRegisterStateDeregistered,
+    MBIMRegisterStateSearching,
+    MBIMRegisterStateHome,
+    MBIMRegisterStateRoaming,
+    MBIMRegisterStatePartner,
+    MBIMRegisterStateDenied
+} mbim_register_state_enum;
+
+typedef enum {
+    MBIMPacketServiceStateUnknown,
+    MBIMPacketServiceStateAttaching,
+    MBIMPacketServiceStateAttached,
+    MBIMPacketServiceStateDetaching,
+    MBIMPacketServiceStateDetached
+} mbim_packet_service_state_enum;
+
+typedef enum {
+    MBIMPacketServiceActionAttach,
+    MBIMPacketServiceActionDetach
+} mbim_packet_service_action_enum;
+
+typedef enum {
+    MBIMRegisterActionAutomatic,
+    MBIMRegisterActionManual
+} mbim_register_action_enum;
+
+typedef enum {
+    MBIMRegisterModeUnknown,
+    MBIMRegisterModeAutomatic,
+    MBIMRegisterModeManual
+} mbim_register_mode_enum;
+
+typedef enum {
+    MBIM_REGISTRATION_NONE = 0x00,
+    MBIM_REGISTRATION_MANUAL_SELECTION_NOT_AVALIABLE = 0x01,
+    MBIM_REGISTRATION_PACKET_SERVICE_AUTOMATIC_ATTACH = 0x02,
+} mbim_registration_flags_enum;
+
+typedef enum {
+    MBIMDataClassNone = 0x00,
+    MBIMDataClassGPRS = 0x01,
+    MBIMDataClassEDGE = 0x02,
+    MBIMDataClassUMTS = 0x04,
+    MBIMDataClassHSDPA = 0x08,
+    MBIMDataClassHSUPA = 0x10,
+    MBIMDataClassLTE = 0x20
+//    MBIMDataClassCustom = 0x80000000
+} mbim_data_class_enum;
+
+typedef enum {
+    MBIMActivationCommandDeactivate,
+    MBIMActivationCommandActivate
+} mbim_activation_command_enum;
+
+typedef enum {
+    MBIMCompressionNone,
+    MBIMCompressionEnable
+} mbim_compression_enum;
+
+typedef enum {
+    MBIMAuthProtocolNone,
+    MBIMAuthProtocolPap,
+    MBIMAuthProtocolChap,
+    MBIMAuthProtocolMsChapV2
+} mbim_auth_protocol_type_enum;
+
+typedef enum {
+    MBIMContextIPTypeDefault,
+    MBIMContextIPTypeIPv4,
+    MBIMContextIPTypeIPv6,
+    MBIMContextIPTypeIPv4v6,
+    MBIMContextIPTypeIPIPv4AndIPv6
+} mbim_context_ip_type_enum;
+
+typedef enum {
+    MBIMActivationStateUnknown,
+    MBIMActivationStateActivated,
+    MBIMActivationStateActivating,
+    MBIMActivationStateDeactivated,
+    MBIMActivationStateDeactivating
+} mbim_activation_state_enum;
+
+typedef enum {
+    MBIMVoiceCallStateNone,
+    MBIMVoiceCallStateInProgress,
+    MBIMVoiceCallStateHangup
+} mbim_voice_call_state_enum;
+
+typedef enum {
+    MBIMNetworkIdleHintDisabled,
+    MBIMNetworkIdleHintEnable
+} mbim_network_idle_hint_states_enum;
+
+typedef enum {
+    MBIMEmergencyModeOff,
+    MBIMEmergencyModeOn
+} mbim_mergency_mode_state_enum;
+
+typedef enum {
+    MBIMSmsStorageNotInitialized,
+    MBIMSmsStorageInitialized
+} mbim_sms_storage_state_enum;
+
+typedef enum {
+    MBIMSmsFormatPdu,
+    MBIMSmsFormatCdma
+} mbim_sms_format_enum;
+
+typedef enum {
+    MBIMSmsFlagAll,
+    MBIMSmsFlagIndex,
+    MBIMSmsFlagNew,
+    MBIMSmsFlagOld,
+    MBIMSmsFlagSent,
+    MBIMSmsFlagDraft
+} mbim_sms_flag_enum;
+
+typedef enum {
+    MBIMSmsStatusNew,
+    MBIMSmsStatusOld,
+    MBIMSmsStatusDraft,
+    MBIMSmsStatusSent
+} mbim_sms_message_status_enum;
+
+typedef enum {
+    MBIM_SMS_FLAG_NONE,
+    MBIM_SMS_FLAG_MESSAGE_STORE_FULL,
+    MBIM_SMS_FLAG_NEW_MESSAGE
+} mbim_sms_status_flags_enum;
+
+typedef enum {
+    MBIMUSSDInitiate,
+    MBIMUSSDContinue,
+    MBIMUSSDCancel
+} mbim_ussd_action_enum;
+
+typedef enum {
+    MBIMUSSDNoActionRequired,
+    MBIMUSSDActionRequired,
+    MBIMUSSDTerminatedByNW,
+    MBIMUSSDOtherLocalClient,
+    MBIMUSSDOperationNotSupported,
+    MBIMUSSDNetworkTimeOut
+} mbim_ussd_response_enum;
+
+typedef enum {
+    MBIMUSSDNewSession,
+    MBIMUSSDExistingSession
+} mbim_ussd_session_state_enum;
+
+typedef enum {
+    MBIM_MTK_VENDOR_CMD_TYPE_NONE   // add cmd type by Vendor
+} mbim_mtk_vendor_cmd_type_enum;
+
+/*------------------MBIM CID STRUCT ENUM END------------------------*/
+
+/*------------------MBIM CID STRUCT BEGIN------------------------*/
+typedef struct {
+    kal_uint32  offset;
+    kal_uint32  size;
+} MBIM_OL_PAIR_LIST;
+
+typedef struct {
+    kal_uint32  DeviceType;
+    kal_uint32  CellularClass;
+    kal_uint32  VoiceClass;
+    kal_uint32  SimClass;
+    kal_uint32  DataClass;
+    kal_uint32  SmsCaps;
+    kal_uint32  ControlCaps;
+    kal_uint32  MaxSessions;
+    kal_uint32  CustomDataClassOffset;
+    kal_uint32  CustomDataClassSize;
+    kal_uint32  DeviceIdOffset;
+    kal_uint32  DeviceIdSize;
+    kal_uint32  FirmwareInfoOffset;
+    kal_uint32  FirmwareInfoSize;
+    kal_uint32  HardwareInfoOffset;
+    kal_uint32  HardwareInfoSize;
+} mbim_device_caps_info_struct;
+
+typedef struct {
+    kal_uint32  ReadyState;
+    kal_uint32  SubscriberIdOffset;
+    kal_uint32  SubscriberIdSize;
+    kal_uint32  SimIccIdOffset;
+    kal_uint32  SimIccIdSize;
+    kal_uint32  ReadyInfo;
+    kal_uint32  ElementCount;
+    MBIM_OL_PAIR_LIST   TelephoneNumbersRefList[2];
+} mbim_subscriber_ready_info_struct;
+
+typedef struct {
+    kal_uint8   DataBuffer[32+40+64];   // SubscriberId, SimIccid, TelephoneNumber
+} mbim_subscriber_ready_info_databuffer_struct;
+
+
+typedef struct {
+    kal_uint32  RadioState;
+} mbim_set_radio_state_struct;
+
+typedef struct {
+    kal_uint32  HwRadioState;
+    kal_uint32  SwRadioState;
+} mbim_radio_state_info_struct;
+
+typedef struct {
+    kal_uint32  PinType;
+    kal_uint32  PinOperation;
+    kal_uint32  PinOffset;
+    kal_uint32  PinSize;
+    kal_uint32  NewPinOffset;
+    kal_uint32  NewPinSize;
+} mbim_set_pin_struct;
+
+typedef struct {
+    kal_uint32 PinType;
+    kal_uint32  PinState;
+    kal_uint32  RemainAttempts;
+} mbim_pin_info_struct;
+
+typedef struct {
+    kal_uint32 PinMode;
+    kal_uint32  PinFormat;
+    kal_uint32  PinLengthMin;
+    kal_uint32  PinLengthMax;
+} mbim_pin_desc_struct;
+
+typedef struct {
+    mbim_pin_desc_struct  PinDescPin1;
+    mbim_pin_desc_struct  PinDescPin2;
+    mbim_pin_desc_struct  PinDescDeviceSimPin;
+    mbim_pin_desc_struct  PinDescDeviceFirstSimPin;
+    mbim_pin_desc_struct  PinDescNetworkPin;
+    mbim_pin_desc_struct  PinDescNetworkSubsetPin;
+    mbim_pin_desc_struct  PinDescServiceProviderPin;
+    mbim_pin_desc_struct  PinDescCorporatePin;
+    mbim_pin_desc_struct  PinDescSubsidyLock;
+    mbim_pin_desc_struct  PinDescCustom;
+} mbim_pin_list_info_struct;
+
+typedef struct {
+    kal_uint32  ProviderIdOffset;
+    kal_uint32  ProviderIdSize;
+    kal_uint32  ProviderState;
+    kal_uint32  ProviderNameOffset;
+    kal_uint32  ProviderNameSize;
+    kal_uint32  CellularClass;
+    kal_uint32  Rssi;
+    kal_uint32  ErrorRate;
+} mbim_provider_struct;
+
+typedef struct {
+    kal_uint32  Action;
+} mbim_visible_providers_req_struct;
+
+typedef struct {
+    kal_uint32  ProviderIdOffset;
+    kal_uint32  ProviderIdSize;
+    kal_uint32  RegisterAction;
+    kal_uint32  DataClass;
+} mbim_set_registration_state_struct;
+
+typedef struct {
+    kal_uint32  NwError;
+    kal_uint32  RegisterState;
+    kal_uint32  RegisterMode;
+    kal_uint32  AvaliableDataClasses;
+    kal_uint32  CurrentCellulrClass;      
+    kal_uint32  ProviderIdOffset;
+    kal_uint32  ProviderIdSize;
+    kal_uint32  ProviderNameOffset;
+    kal_uint32  ProviderNameSize;
+    kal_uint32  RoamingTextOffset;
+    kal_uint32  RoamingTextSize;
+    kal_uint32  RegistrationFlag;
+} mbim_registration_state_info_struct;
+
+typedef struct {
+    kal_uint32  PacketServiceAction;
+} mbim_set_packet_service_struct;
+
+typedef struct {
+    kal_uint32  NwError;
+    kal_uint32  PacketServiceState;
+    kal_uint32  HighestAvaliableDataClasses;
+    kal_uint64  UplinkSpeed;
+    kal_uint64  DownlinkSpeed;
+} mbim_packet_service_info_struct;
+
+typedef struct {
+    kal_uint32  SignalStrengthInterval;
+    kal_uint32  RssiThreshold;
+    kal_uint32  ErrorRateThreshold;
+} mbim_set_signal_state_struct;
+
+typedef struct {
+    kal_uint32  Rssi;
+    kal_uint32  ErrorRate;
+    kal_uint32  SignalStrengthInterval;
+    kal_uint32  RssiThreshold;
+    kal_uint32  ErrorRateThreshold;
+} mbim_signal_state_info_struct;
+
+typedef struct {
+    kal_uint32  SessionId;
+    kal_uint32  ActivationCommand;
+    kal_uint32  AccessStringOffset;
+    kal_uint32  AccessStringSize;
+    kal_uint32  UserNameOffset;
+    kal_uint32  UserNameSize;
+    kal_uint32  PasswordOffset;
+    kal_uint32  PasswordSize;
+    kal_uint32  Compression;
+    kal_uint32  AuthProtocol;
+    kal_uint32  IPType;
+    kal_uint8  ContextType[16];
+} mbim_set_connect_struct;
+
+typedef struct {
+    kal_uint32  SessionId;
+    kal_uint32  ActivationState;
+    kal_uint32  VoiceCallState;
+    kal_uint32  IPType;
+    kal_uint8  ContextType[16];
+    kal_uint32  NwError;
+} mbim_connect_info_struct;
+
+typedef struct {
+    kal_uint32  ContextId;
+    kal_uint8  ContextType[16];
+    kal_uint32  AccssStringOffset;
+    kal_uint32  AccssStringSize;
+    kal_uint32  UserNmeOffset;
+    kal_uint32  UserNameSize;
+    kal_uint32  PasswordOffset;
+    kal_uint32  PasswordSize;
+    kal_uint32  Compression;
+    kal_uint32  AuthProtocol;
+    kal_uint8   DataBuffer[200+64+64];  // APN + Username + Password
+} mbim_context_struct;
+
+typedef struct {
+    kal_uint32  ElementCount;
+    MBIM_OL_PAIR_LIST   ProvisionedContextRefList[10];
+} mbim_provisioned_contexts_info_struct;
+
+typedef struct {
+    kal_uint32  ContextId;
+    kal_uint8  ContextType[16];
+    kal_uint32  AccssStringOffset;
+    kal_uint32  AccssStringSize;
+    kal_uint32  UserNmeOffset;
+    kal_uint32  UserNameSize;
+    kal_uint32  PasswordOffset;
+    kal_uint32  PasswordSize;
+    kal_uint32  Compression;
+    kal_uint32  AuthProtocol;
+    kal_uint32  ProviderIdOffset;
+    kal_uint32  ProviderIdSize;
+} mbim_set_provisioned_context_struct;
+
+typedef struct {
+    kal_uint8   IPv4Address[4];
+} mbim_ipv4_address_struct;
+
+typedef struct {
+    kal_uint32  OnLinkPrefixLength;
+    mbim_ipv4_address_struct    IPv4Address;
+} mbim_ipv4_element_struct;
+
+typedef struct {
+    kal_uint8   IPv6Address[16];
+} mbim_ipv6_address_struct;
+
+typedef struct {
+    kal_uint32  OnLinkPrefixLength;
+    mbim_ipv6_address_struct    IPv6Address;
+} mbim_ipv6_element_struct;
+
+typedef struct {
+    kal_uint32  SessionId;
+    kal_uint32  IPv4ConfigurationAvaliable;
+    kal_uint32  IPv6ConfigurationAvaliable;
+    kal_uint32  IPv4AddressCount;
+    kal_uint32  IPv4AddressOffset;
+    kal_uint32  IPv6AddressCount;
+    kal_uint32  IPv6AddressOffset;
+    kal_uint32  IPv4GatewayOffset;
+    kal_uint32  IPv6GatewayOffset;
+    kal_uint32  IPv4DnsServerCount;
+    kal_uint32  IPv4DnsServerOffset;
+    kal_uint32  IPv6DnsServerCount;
+    kal_uint32  IPv6DnsServerOffset;        
+    kal_uint32  IPv4Mtu;
+    kal_uint32  IPv6Mtu;
+    kal_uint8   DataBuffer[88];
+} mbim_ip_configuration_struct;
+
+typedef struct {
+    kal_uint8   DeviceServiceId[16];
+    kal_uint32  DssPayload;
+    kal_uint32  MaxDssInstances;
+    kal_uint32  CidCount;
+    kal_uint32  Cid[MBIM_CID_BASIC_CONNECT_MAX];  // IMPORTTANT: Assume basic connect always has the most CIDs
+} mbim_device_service_element_struct;
+
+typedef struct {
+    kal_uint32  DeviceServiceCount;
+    kal_uint32  MaxDssSessions;
+    MBIM_OL_PAIR_LIST   DeviceServiceRefList[MBIM_UUID_MAX];
+//    MBIM_OL_PAIR_LIST   DeviceServiceRefList[2];
+    mbim_device_service_element_struct DeviceService[MBIM_UUID_MAX];
+//    mbim_device_service_element_struct DeviceService[2];
+} mbim_device_service_info_struct;
+
+typedef struct {
+    kal_uint32  NetworkIdleHintState;
+} mbim_network_idle_hint_struct;
+
+typedef struct {
+    kal_uint32  EmergencyMode;
+} mbim_emergency_mode_info_struct;
+
+typedef struct {
+    kal_uint32  ElementCount;
+} mbim_device_service_subscribe_list_struct;
+
+typedef struct {
+    kal_uint8  DeviceServiceId[16];
+    kal_uint32 CidCount;
+} mbim_event_entry_struct;
+
+typedef struct {
+    kal_uint32  Format;
+    kal_uint32  ScAddressOffset;
+    kal_uint32  ScAddressSize;
+} mbim_set_sms_configuration_struct;
+
+typedef struct {
+    kal_uint32  SmsStorageState;
+    kal_uint32  Format;
+    kal_uint32  MaxMessages;
+    kal_uint32  CdmaShortMessageSize;
+    kal_uint32  ScAddressOffset;
+    kal_uint32  ScAddressSize;
+    kal_uint8   DataBuffer[40];
+} mbim_sms_configuration_info_struct;
+
+typedef struct {
+    kal_uint32  SmsFormat;
+    kal_uint32  Flag;
+    kal_uint32  MessageIndex;
+} mbim_sms_read_req_struct;
+
+typedef struct {
+    kal_uint32  Format;
+    kal_uint32  ElementCount;
+} mbim_sms_read_info_struct;
+
+typedef struct {
+    kal_uint32  MessageIndex;    
+    kal_uint32  MessageStatus;
+    kal_uint32  PduDataOffset;
+    kal_uint32  PduDataSize;
+    kal_uint8   DataBuffer[184]; // Spec: 183, align to 184
+} mbim_sms_pdu_record_struct;
+
+typedef struct {
+    kal_uint32  PduDataOffset;
+    kal_uint32  PduDataSize;
+} mbim_sms_send_pdu_struct;
+
+typedef struct {
+    kal_uint32  SmsFormat;
+} mbim_sms_send_struct;
+
+typedef struct {
+    kal_uint32  MessageReference;
+} mbim_sms_send_info_struct;
+
+typedef struct {
+    kal_uint32  Flag;
+    kal_uint32  MessageIndex;
+} mbim_set_sms_delete_struct;
+
+typedef struct {
+    kal_uint32  Flag;
+    kal_uint32  MessageIndex;
+} mbim_sms_status_info_struct;
+
+typedef struct {
+    kal_uint32  USSDAction;
+    kal_uint32  USSDDataCodingScheme;
+    kal_uint32  USSDPayloadOffset;
+    kal_uint32  USSDPayloadLength;
+} mbim_set_ussd_struct;
+
+typedef struct {
+    kal_uint32  USSDResponse;
+    kal_uint32  USSDSessionState;
+    kal_uint32  USSDDataCodingScheme;
+    kal_uint32  USSDPayloadOffset;
+    kal_uint32  USSDPayloadLength;
+    kal_uint8   DataBuffer[160];
+} mbim_ussd_info_struct;
+
+typedef struct {
+    kal_uint32  VendorCmdType;  // mbim_mtk_vendor_cmd_type_enum
+    kal_uint32  VendorCmdOffset;
+    kal_uint32  VendorCmdSize;
+} mbim_mtk_vendor_cmd_info_struct;
+
+/*------------------MBIM CID STRUCT END--------------------------*/
+
+typedef enum {
+    MBIM_STATUS_SUCCESS = 0,
+    MBIM_STATUS_BUSY = 1,
+    MBIM_STATUS_FAILURE = 2,
+    MBIM_STATUS_SIM_NOT_INSERTED = 3,
+    MBIM_STATUS_BAD_SIM = 4,
+    MBIM_STATUS_PIN_REQUIRED = 5, 
+    MBIM_STATUS_PIN_DISABLED = 6,
+    MBIM_STATUS_NOT_REGISTERED = 7,
+    MBIM_STATUS_PROVIDERS_NOT_FOUND = 8,
+    MBIM_STATUS_NO_DEVICE_SUPPORT = 9,
+    MBIM_STATUS_PROVIDER_NOT_VISIBLE = 10,
+    MBIM_STATUS_DATA_CLASS_NOT_AVAILABLE = 11,
+    MBIM_STATUS_PACKET_SERVICE_DETACHED = 12,
+    MBIM_STATUS_MAX_ACTIVATED_CONTEXTS = 13,
+    MBIM_STATUS_NOT_INITIALIZED = 14,
+    MBIM_STATUS_VOICE_CALL_IN_PROGRESS = 15,
+    MBIM_STATUS_CONTEXT_NOT_ACTIVATED = 16,
+    MBIM_STATUS_SERVICE_NOT_ACTIVATED = 17,
+    MBIM_STATUS_INVALID_ACCESS_STRING = 18,
+    MBIM_STATUS_INVALID_USER_NAME_PWD = 19,
+    MBIM_STATUS_RADIO_POWER_OFF = 20,
+    MBIM_STATUS_INVALID_PARAMETERS = 21,
+    MBIM_STATUS_READ_FAILURE = 22,
+    MBIM_STATUS_WRITE_FAILURE = 23,
+//    MBIM_STATUS_ Reserved = 24,
+    MBIM_STATUS_NO_PHONEBOOK = 25,
+    MBIM_STATUS_PARAMETER_TOO_LONG = 26,
+    MBIM_STATUS_STK_BUSY = 27,
+    MBIM_STATUS_OPERATION_NOT_ALLOWED = 28,
+    MBIM_STATUS_MEMORY_FAILURE = 29,
+    MBIM_STATUS_INVALID_MEMORY_INDEX = 30,
+    MBIM_STATUS_MEMORY_FULL = 31,
+    MBIM_STATUS_FILTER_NOT_SUPPORTED = 32,
+    MBIM_STATUS_DSS_INSTANCE_LIMIT = 33,
+    MBIM_STATUS_INVALID_DEVICE_SERVICE_OPERATION = 34,
+    MBIM_STATUS_AUTH_INCORRECT_AUTN = 35,
+    MBIM_STATUS_AUTH_SYNC_FAILURE = 36,
+    MBIM_STATUS_AUTH_AMF_NOT_SET = 37,
+
+    MBIM_STATUS_SMS_UNKNOWN_SMSC_ADDRESS = 100,
+    MBIM_STATUS_SMS_NETWORK_TIMEOUT = 101,
+    MBIM_STATUS_SMS_LANG_NOT_SUPPORTED = 102,
+    MBIM_STATUS_SMS_ENCODING_NOT_SUPPORTED = 103,
+    MBIM_STATUS_SMS_FORMAT_NOT_SUPPORTED = 104,
+
+    MBIM_STATUS_END = 0xFF
+} mbim_status_code_enum;
+
+typedef enum {
+    MBIM_OP_CLOSE = 0,
+    MBIM_OP_OPEN = 1,
+    MBIM_OP_COMMAND = 2,
+    MBIM_OP_ERROR_CANCEL = 3,
+    MBIM_OP_REOPEN = 4,
+} mbim_op_enum;
+
+typedef enum {
+    MBIM_COMMAND_QUERY,
+    MBIM_COMMAND_SET
+} mbim_command_type_enum;
+
+#endif /* _MBIM_DEFS_H */
+
diff --git a/mcu/interface/protocol/general/md_bootmode_public.h b/mcu/interface/protocol/general/md_bootmode_public.h
new file mode 100644
index 0000000..4bd7fdc
--- /dev/null
+++ b/mcu/interface/protocol/general/md_bootmode_public.h
@@ -0,0 +1,188 @@
+/*******************************************************************************
+*  Modification Notice:
+*  --------------------------
+*  This software is modified by MediaTek Inc. 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:
+ * ---------
+ * md_bootmode_public.h
+ *
+ * Project:
+ * --------
+ *   UMOLYA
+ *
+ * Description:
+ * ------------
+ *   md boot mode switch header file
+ *
+ * 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!
+ *
+ *
+ ****************************************************************************/
+
+#ifndef _MD_BOOTMODE_PUBLIC_H
+#define _MD_BOOTMODE_PUBLIC_H
+
+/* Notified Modules */
+
+static module_type bootmode_notify_module[] = {
+#if defined (__DHL_MODULE__) && defined(__MTK_TARGET__)
+#if defined (__DHL_V2_ENABLE__)
+MOD_DHL_READER,
+#else
+MOD_META_CMD,
+#endif
+#endif
+#if defined(__UMTS_RAT__) && defined(__UMTS_FDD_MODE__) && !defined(__UL1_TASK_DISABLE__)
+MOD_UL1,
+#endif
+#if defined(__UMTS_RAT__) && defined(__UMTS_TDD128_MODE__) && !defined(__TL1_TASK_DISABLE__)
+MOD_TL1,
+#endif
+#if !defined(L1_NOT_PRESENT) && !defined(__L1_TASK_DISABLE__)
+MOD_L1,
+#endif
+#if defined(__LTE_RAT__) && !defined(__EL1_TASK_DISABLE__)
+MOD_EMAC,
+MOD_EL1,
+#endif
+#if defined(__C2K_RAT__) && !defined (__CL1_TASK_DISABLE__)
+MOD_CL1TST,
+#endif
+#if defined (__MML1_ADT_ENABLE__) && defined(__MTK_TARGET__)
+MOD_L1ADT,
+#endif
+#if defined(__EL1_EL2_DYNAMIC_CACHE_LOCK_SUPPORT__) && defined(__LTE_RAT__) && defined(__MML1_UTIL_TASK_ENABLE__)
+MOD_ENL1,
+#endif
+#if defined(__NR_RAT__) && !defined(__NL1_TASK_DISABLE__)
+MOD_NL1,
+#if !defined(__XL1SIM__)
+MOD_NL2POW,
+#endif
+#endif
+#if ((defined(__MTK_TARGET__) && defined(__MD95__)) || defined(__MD97__)) && !defined(__MAUI_BASIC__) && !defined(__MMRF_XL1TST_TASK_DISABLE__)
+MOD_MMRF_XL1TST,
+#endif
+};
+#endif /* _MD_BOOTMODE_PUBLIC_H */
diff --git a/mcu/interface/protocol/general/mmi_l3_enums.h b/mcu/interface/protocol/general/mmi_l3_enums.h
new file mode 100644
index 0000000..d693655
--- /dev/null
+++ b/mcu/interface/protocol/general/mmi_l3_enums.h
@@ -0,0 +1,307 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   mmi_l3_enums.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _MMI_L3_ENUMS_H
+#define _MMI_L3_ENUMS_H
+
+//#include "ps_public_enum.h"
+#include "mmi_l3_enums_public.h"
+
+/* Modified by: CH_Liang 2005.01.25 */
+#ifndef MAX_EXT_PDP_CONTEXT
+ // if the global compile option is not defined, use the local definition
+ #error MAX_EXT_PDP_CONTEXT is not defined in make files
+#endif
+/* End of Modification, 2005.03.19. Reviewed by: Joseph */
+
+/* SM/SNDCP related enumerations */ 
+
+/* Modified by: CH_Liang 2005.01.25 */
+#define TOT_NSAPI     GPRS_MAX_PDP_SUPPORT 
+/* End of Modification, 2005.03.19. Reviewed by: Joseph */
+
+#define SM_QOS_LEN_3 3
+#define SM_QOS_LEN_11       11 /* 11 bytes is the Qos length */
+#define SM_QOS_LEN_12 12 //__REL5__
+#define SM_QOS_LEN_14 14//__REL5__
+#define SM_QOS_LEN_13_WITH_EXT_MAX_RATE_DL 13
+#define SM_QOS_LEN_14_WITH_EXT_GUARANTEE_RATE_DL 14
+#define SM_QOS_LEN_15_WITH_EXT_MAX_RATE_UL 15 // __REL7_
+#define SM_QOS_LEN_16_WITH_EXT_GUARANTEE_RATE_UL 16 // __REL7_
+#define SM_QOS_LEN_16 16 // __REL7_
+#define SM_QOS_LEN_17_WITH_EXT2_MAX_RATE_DL 17
+#define SM_QOS_LEN_18_WITH_EXT2_GUARANTEE_RATE_DL 18
+#define SM_QOS_LEN_19_WITH_EXT2_MAX_RATE_UL 19 // __R11__
+#define SM_QOS_LEN_20_WITH_EXT2_GUARANTEE_RATE_UL 20 // __R11__
+#define SM_QOS_LEN_20 20 // __R11_
+
+#define SM_QOS_IE_CONTENT_MAX_LEN 20 // until release 9
+#define SM_TFT_IE_CONTENT_MAX_LEN 255 // until release 9
+#define SM_PCO_IE_CONTENT_MAX_LEN 251 // until release 9
+
+#define TCM_MAX_RECORDING_MSGS_NUM (GPRS_MAX_PDP_SUPPORT*2)
+
+#define PS_TOT_NSAPI_NUM       11
+#define PS_TOT_CONTEXT         PS_TOT_NSAPI_NUM
+
+#define PS_MIN_CONTEXT_ID      1
+#define PS_MAX_CONTEXT_ID      (1 + PS_TOT_CONTEXT -1)
+
+typedef enum
+{
+     NO_NSAPI = 0X00,
+     MIN_VALID_NSAPI = 0X05,
+     MAX_VALID_NSAPI = MIN_VALID_NSAPI + GPRS_MAX_PDP_SUPPORT - 1,
+     MAX_THEORETICAL_VALID_NSAPI = 0x0F // nsapi is from 5~15
+}nsapi_session_enum;
+
+typedef enum
+{
+/* Modified by: CH_Liang 2005.01.25 */
+     TOT_MS_INITIATED_CONTEXT = GPRS_MAX_PDP_SUPPORT,
+     TOT_NW_INITIATED_CONTEXT = GPRS_MAX_PDP_SUPPORT
+/* End of Modification, 2005.03.19. Reviewed by: Joseph */
+}max_contexts_enum;
+
+/* Joseph:
+ * This enum defination is used between 
+ * TCM and SM and should SYNC with l4c_source_id_enum@l4c_common_enums.h
+ */
+typedef enum
+{
+   LMMI_ID,
+   RMMI_ID,
+   SAT_ID,
+   INVALID_MMI_ID
+} mmi_source_id_enum;
+
+
+/* The following definitions have been packed in enumeration for future
+ * increase of compression algorithms */
+
+typedef enum
+{
+   PAP_AUTH,
+   CHAP_AUTH
+} pdp_auth_enum;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef enum {
+    DATA_ACCT_CSD_PROF,			/* normal csd profile */
+    DATA_ACCT_GPRS_PROF,		/* normal gprs profile */
+    DATA_ACCT_SAT_PROF,	  		/* sat csd profile */
+    DATA_ACCT_SPA_PROF			/* sim provisioning csd profile */
+} data_account_profile_type_enum;
+
+typedef enum
+{
+  SM_GPRS_AUTHENTICATION_PAP = 0,
+  SM_GPRS_AUTHENTICATION_CHAP = 1,
+  SM_GPRS_AUTHENTICATION_NONE =2,
+  SM_GPRS_AUTHENTICATION_PAP_CHAP = 3,
+  SM_GPRS_AUTHENTICATION_MAX_VALID_ENUM_VALUE = SM_GPRS_AUTHENTICATION_PAP_CHAP
+}sm_gprs_authentication_type_enum;
+
+#endif
+
+
diff --git a/mcu/interface/protocol/general/mmi_msg_struct.h b/mcu/interface/protocol/general/mmi_msg_struct.h
new file mode 100644
index 0000000..2d25128
--- /dev/null
+++ b/mcu/interface/protocol/general/mmi_msg_struct.h
@@ -0,0 +1,6234 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *	mmi_msg_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for MMI message structures.
+ *
+ * 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!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ *
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * 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 __MMI_MSG_STRUCT_H__
+#define __MMI_MSG_STRUCT_H__
+
+//#include "stack_ltlcom.h"
+//#include "kal_non_specific_general_types.h"
+//#include "l4c_common_enum.h"
+//#include "l4c_aux_struct.h"
+//#include "l4c_rspfmttr.h"
+//#include "l4c2csm_ss_struct.h"
+//#include "l4c_ss_parse.h"
+#include "device.h"
+#include "med_struct.h"
+//#include "l4c2uem_struct.h"
+#include "l4a.h"
+#include "kal_public_defs.h" //MSBB change #include "stack_config.h"
+#include "dcl.h"
+//#include "ps2sim_struct.h"
+//#include "sim_common_enums.h"
+//#include "phb_defs.h"
+//#include "l4c2phb_enums.h"
+//#include "l4c2phb_struct.h"
+//#include "smsal_l4c_defs.h"
+//#include "l4c2smsal_struct.h"
+//#include "smsal_l4c_enum.h"
+//#include "smsal_defs.h"
+//#include "l4c2tcm_func.h"
+//#include "l4c2abm_struct.h"
+//#include "ps2sat_struct.h"
+#include "em_struct.h"
+//#include "l4c2smu_struct.h"
+#include "kal_general_types.h"
+#include "ps_public_enum.h"
+#include "ps_public_struct.h"
+#include "sim_public_enum.h"
+
+/*MTK:BEGIN:generate_message_structure*/
+/* Call Control Related Messages */
+#if defined(__MOD_CSM__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	pin[MAX_SIM_PASSWD_LEN];
+	} mmi_cc_reset_acm_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_cc_reset_acm_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint32	acm;
+	} mmi_cc_get_acm_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	pin[MAX_SIM_PASSWD_LEN];
+		kal_uint32	val;
+	} mmi_cc_set_max_acm_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_cc_set_max_acm_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint32	acm_max;
+	} mmi_cc_get_max_acm_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_cc_reset_ccm_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint32	ccm;
+	} mmi_cc_get_ccm_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	index; /* csmcc_cug_index_enum */
+		kal_uint8	mode; /* csmcc_cug_temporary_mode_enum */
+		kal_uint8	info; /* csmcc_cug_suppress_enum */
+	} mmi_cc_set_cug_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_cc_set_cug_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	opcode; /* csmcc_crss_req_enum */
+		kal_uint8	call_id;
+		kal_uint8	source_id;
+	} mmi_cc_chld_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+		kal_uint8	opcode; /* csmcc_crss_req_enum */
+	} mmi_cc_chld_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	op_code; /* l4c_ath_req_enum */
+		kal_uint8	source_id;
+	} mmi_cc_ath_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		l4c_call_list_struct	call_list;
+	} mmi_cc_get_call_list_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_number_struct	dest;
+		kal_bool	sub_addr_flag;
+		l4c_sub_addr_struct	sub_dest;
+	} mmi_cc_call_deflect_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_cc_call_deflect_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	digit;
+		kal_uint8	call_id;
+	} mmi_cc_start_dtmf_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_id;
+		kal_uint8	response;
+		kal_uint8	tone;
+		kal_uint8	cause_present;
+		kal_uint16	cause;
+	} mmi_cc_start_dtmf_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_id;
+	} mmi_cc_stop_dtmf_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_id;
+		kal_uint8	response;
+		kal_uint8	tone;
+		kal_uint8	cause_present;
+		kal_uint16	cause;
+	} mmi_cc_stop_dtmf_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	digit[MAX_CC_DTMF_LEN-1];
+	} mmi_cc_start_auto_dtmf_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_cc_start_auto_dtmf_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_id;
+		kal_uint8	digits[MAX_CC_DTMF_LEN-1];
+	} mmi_cc_start_auto_dtmf_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_id;
+	} mmi_cc_start_auto_dtmf_finish_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	source_id;
+	} mmi_cc_ata_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint8	call_mode; /* clcc_mode_enum */
+	} mmi_cc_ata_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_number_struct	dest;
+		kal_uint8	redial_count;
+		kal_uint8	call_type; /* csmcc_call_type_enum */
+		kal_uint8	clir_flag; /* csmcc_clir_info_enum */
+		kal_bool	cug_option;
+		kal_uint8 	als_type;
+		kal_uint8	ecc_info;
+	} mmi_cc_dial_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_cc_dial_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_number_struct	dest;
+		kal_uint8	call_type; /* csmcc_call_type_enum */
+		kal_uint8	clir_flag; /* csmcc_clir_info_enum */
+		kal_bool	cug_option;
+	} mmi_cc_dial_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint8	call_id;
+		kal_bool	is_diag_present;
+		kal_uint8	diag;
+	} mmi_cc_dial_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_id;
+		kal_uint32	ccm;
+		kal_uint8	warning;
+		kal_uint32	total_ccm;
+		kal_uint8	puct_valid;
+		kal_uint8	currency[3];
+		kal_uint8	ppu[18];
+	} mmi_cc_ccm_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	alert;
+	} mmi_cc_internal_alert_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_id;
+		l4c_number_struct	num;
+		kal_uint8	call_mode; /* csmcc_call_mode_enum */
+		kal_uint8	name_present;
+		kal_uint8	cnap_info_exist;
+		kal_uint8	tag;
+		kal_uint8	name[30];
+		kal_uint8	dcs;
+		kal_uint8	length;
+		kal_uint8	auto_answer;
+		kal_uint8	addr_ind_present;
+		kal_uint8	addr_ind;
+		kal_uint8	signal_value_present;
+		kal_uint8	signal_value;
+		kal_uint8	alerting_pattern_present;
+		kal_uint8	alerting_pattern;
+		kal_uint8	no_cli_cause_present;
+		kal_uint8	no_cli_cause;
+		kal_uint8	call_priority_present;
+		kal_uint8	call_priority;
+	} mmi_cc_call_wait_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_id;
+		l4c_number_struct	num;
+		l4c_sub_addr_struct	sub_addr;
+		l4c_number_struct	redirect_num;
+		kal_uint8	name_present;
+		kal_uint8	cnap_info_exist;
+		kal_uint8	tag;
+		kal_uint8	name[30];
+		kal_uint8	dcs;
+		kal_uint8	length;
+		kal_uint8	auto_answer;
+		kal_uint8	call_type;
+		kal_uint8	addr_ind_present;
+		kal_uint8	addr_ind;
+		kal_uint8	signal_value_present;
+		kal_uint8	signal_value;
+		kal_uint8	alerting_pattern_present;
+		kal_uint8	alerting_pattern;
+		kal_uint8	no_cli_cause_present;
+		kal_uint8	no_cli_cause;
+		kal_uint8	call_priority_present;
+		kal_uint8	call_priority;
+	} mmi_cc_call_ring_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_number_struct	num;
+		l4c_sub_addr_struct	sub_addr;
+		kal_uint8	call_type;
+		kal_uint8	call_id;
+	} mmi_cc_call_connect_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_id;
+		kal_bool	ccbs;
+		kal_uint16	cause;
+		kal_uint8	call_type;
+		kal_bool	is_diag_present;
+		kal_uint8	diag;
+	} mmi_cc_call_disconnect_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_id;
+		kal_uint16	cause;
+		kal_bool	is_diag_present;
+		kal_uint8	diag;
+	} mmi_cc_call_release_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	on_off;
+		kal_uint8	rat;
+		kal_uint8	irho_speech_on_off;
+	} mmi_cc_speech_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_id;
+		kal_uint8	type; /* csmcc_notify_ss_type_enum */
+		kal_bool	status_present;
+		kal_uint8	status;
+		kal_bool	notification_present;
+		kal_uint8	notification;
+	} mmi_cc_notify_ss_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_id;
+		kal_bool	present;
+		l4c_number_struct	addr;
+		l4c_sub_addr_struct	sub_addr;
+	} mmi_cc_notify_ss_ect_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_id;
+		kal_uint8	name_present;
+		kal_uint8	cnap_info_exist;
+		kal_uint8	tag;
+		kal_uint8	name[30];
+		kal_uint8	dcs;
+		kal_uint8	length;
+	} mmi_cc_notify_ss_cnap_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_id;
+		kal_bool	number_present;
+		l4c_number_struct	addr;
+		kal_bool	sub_addr_present;
+		l4c_sub_addr_struct	sub_addr;
+		kal_bool	index_present;
+		kal_uint8	index;
+		kal_bool	bs_code_present;
+		kal_uint8	bs_code;
+		kal_bool	alert_present;
+		kal_uint8	alert_pattern;
+	} mmi_cc_notify_ss_ccbs_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_id;
+	} mmi_cc_call_accept_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_id;
+		kal_uint8	action;
+		kal_bool	result;
+		kal_uint8	cause;
+	} mmi_cc_video_call_status_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_id;
+	} mmi_cc_rel_comp_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_cc_rel_comp_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_id;
+		l4c_number_struct	num;
+		l4c_sub_addr_struct	sub_addr;
+		l4c_number_struct	redirect_num;
+		kal_uint8	name_present;
+		kal_uint8	cnap_info_exist;
+		kal_uint8	tag;
+		kal_uint8	name[30];
+		kal_uint8	dcs;
+		kal_uint8	length;
+		kal_uint8	auto_answer;
+		kal_uint8	call_type;
+		kal_uint8	addr_ind_present;
+		kal_uint8	addr_ind;
+		kal_uint8	signal_value_present;
+		kal_uint8	signal_value;
+		kal_uint8	alerting_pattern_present;
+		kal_uint8	alerting_pattern;
+		kal_uint8	no_cli_cause_present;
+		kal_uint8	no_cli_cause;
+		kal_uint8	call_priority_present;
+		kal_uint8	call_priority;
+		kal_uint8	seq_num;
+	} mmi_cc_call_present_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	is_mt_call_allowed;
+		kal_uint8	call_id;
+		kal_uint8	seq_num;
+	} mmi_cc_call_present_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_id;
+		kal_uint8	msg_type; /* csmcc_cpi_msg_type_enum */
+		kal_uint8	is_ibt;
+		kal_uint8	is_tch;
+		kal_uint8	dir; /* clcc_dir_enum */
+		kal_uint8	call_mode; /* clcc_mode_enum */
+		kal_uint8	numberP;
+		l4c_number_struct	number;
+		kal_uint16	disc_cause;
+		kal_uint8	src_id;
+		kal_uint8	call_type;
+	} mmi_cc_cpi_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint32	mode;
+	} mmi_cc_cpi_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	source_id;
+		kal_uint8	opcode;
+		kal_uint8	call_type;
+		l4c_number_struct	number;
+	} mmi_data_call_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	source_id;
+		kal_uint8	result;
+		kal_uint8	cause;
+		kal_uint8	opcode;
+		kal_uint8	call_type;
+		l4c_number_struct	number;
+	} mmi_data_call_res_req_struct;
+#endif /* defined(__MOD_CSM__) */
+/* Non-Call-Related Supplementary Service Messages */
+#if defined(__MOD_CSM__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	opcode; /* l4_op_code_enum */
+		kal_uint8	priority;
+	} mmi_ss_emlpp_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint8	para_present;
+		kal_uint8	opcode; /* l4_op_code_enum */
+		kal_uint8	default_pri;
+		kal_uint8	max_pri;
+	} mmi_ss_emlpp_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	opcode; /* l4_op_code_enum */
+		kal_uint8	type; /* l4_ss_code_enum */
+		kal_uint8	bs_code; /* l4_bs_code_enum */
+		kal_uint8	timer;
+		l4c_number_struct	dest;
+		kal_bool	sub_addr_flag;
+		l4c_sub_addr_struct	sub_dest;
+	} mmi_ss_call_forward_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint8	para_present;
+		kal_uint8	opcode; /* l4_op_code_enum */
+		kal_uint8	type; /* l4_ss_code_enum */
+		kal_uint8	count;
+		forwarding_list_struct	list[13];
+	} mmi_ss_call_forward_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	opcode; /* l4_op_code_enum */
+		kal_uint8	bs_code; /* l4_bs_code_enum */
+	} mmi_ss_call_wait_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint8	para_present;
+		kal_uint8	opcode; /* l4_op_code_enum */
+		kal_uint8	count;
+		kal_uint8	status;
+		kal_uint8	list[13]; /* l4_bs_code_enum */
+	} mmi_ss_call_wait_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint8	para_present;
+		kal_uint8	status;
+		kal_uint8	clir_option;
+	} mmi_ss_clip_interrogate_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint8	para_present;
+		kal_uint8	status;
+		kal_uint8	clir_option;
+	} mmi_ss_clir_interrogate_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint8	para_present;
+		kal_uint8	status;
+		kal_uint8	clir_option;
+	} mmi_ss_cnap_interrogate_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint8	para_present;
+		kal_uint8	status;
+		kal_uint8	clir_option;
+	} mmi_ss_colp_interrogate_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint8	para_present;
+		kal_uint8	status;
+		kal_uint8	clir_option;
+	} mmi_ss_colr_interrogate_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	opcode; /* l4_op_code_enum */
+		kal_uint8	type; /* l4_ss_code_enum */
+		kal_uint8	bs_code; /* l4_bs_code_enum */
+		kal_uint8	passwd[MAX_SIM_PASSWD_LEN];
+	} mmi_ss_call_barring_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint8	para_present;
+		kal_uint8	opcode; /* l4_op_code_enum */
+		kal_uint8	type;
+		kal_uint8	count;
+		barring_list_struct	list[13];
+	} mmi_ss_call_barring_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	str[MAX_DIGITS_USSD];
+		kal_uint8	dcs; /* smsal_dcs_enum */
+		kal_uint8	length;
+	} mmi_ss_ussd_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint8	para_present;
+		kal_uint8	op_code;
+		kal_uint8	dcs;
+		kal_uint8	ussd_str[MAX_DIGITS_USSD];
+		kal_uint8	length;
+		kal_uint8	ussd_version;
+	} mmi_ss_ussd_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	dcs; /* smsal_dcs_enum */
+		kal_uint8	ussd_string[MAX_DIGITS_USSD];
+		kal_uint8	length;
+		kal_uint8	direction;
+	} mmi_ss_ussr_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	dcs; /* smsal_dcs_enum */
+		kal_uint8	ussd_string[MAX_DIGITS_USSD];
+		kal_uint8	length;
+		kal_uint8	direction;
+	} mmi_ss_ussn_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	type; /* l4_ss_code_enum */
+		kal_uint8	old[MAX_SIM_PASSWD_LEN];
+		kal_uint8	new1[MAX_SIM_PASSWD_LEN];
+		kal_uint8	new2[MAX_SIM_PASSWD_LEN];
+	} mmi_ss_change_password_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+	} mmi_ss_change_password_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	input[MAX_DIGITS_USSD];
+		kal_uint8	dcs;
+		kal_uint8	length;
+		kal_uint8	ip_string[21];
+		kal_uint8	source_id;
+		kal_uint8	call_type;
+		kal_bool	is_sim_operation;
+		kal_uint8	als_type;
+		kal_uint8	ecc_info;
+	} mmi_ss_parsing_string_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		l4c_ss_string_info_struct	info;
+	} mmi_ss_parsing_string_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	input[MAX_DIGITS_USSD];
+		kal_uint8	dcs;
+		kal_uint8	length;
+		kal_uint8	cf_number_length;
+	} mmi_ss_operation_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+	} mmi_ss_operation_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	geography_type;
+	} mmi_sms_cb_gs_change_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	op_code; /* l4_op_code_enum */
+		kal_uint8	index;
+	} mmi_ss_ccbs_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint8	para_present;
+		kal_uint8	opcode; /* l4_op_code_enum */
+		kal_uint8	ccbs_count;
+		ccbs_list_struct	list;
+	} mmi_ss_ccbs_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_ss_abort_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	clir_flag; /* rmmi_clir_enum */
+	} mmi_ss_set_clir_flag_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_ss_set_clir_flag_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cause;
+	} mmi_ss_ack_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_ss_ack_rsp_struct;
+#endif /* defined(__MOD_CSM__) */
+/* Hardware - Audio Related Service Messages */
+#if defined(__MOD_UEM__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	volume_type; /* volume_type_enum */
+		kal_uint8	volume_level;
+	} mmi_eq_set_volume_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	ret_volume_type; /* volume_type_enum */
+	} mmi_eq_set_volume_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	volume_type; /* volume_type_enum */
+		kal_uint8	volume_level;
+	} mmi_eq_exe_volume_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	volume_type; /* volume_type_enum */
+		kal_uint8	volume_level;
+	} mmi_eq_volume_change_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	audio_device;
+		kal_bool	mute_onoff;
+	} mmi_eq_set_mute_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	ret_audio_device;
+	} mmi_eq_set_mute_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	audio_device;
+		kal_bool	mute_onoff;
+	} mmi_eq_exe_mute_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	audio_device;
+		kal_bool	mute_onoff;
+	} mmi_eq_mute_change_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	mode;
+	} mmi_eq_set_silent_mode_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	gpio_dev_type; /* gpio_device_enum */
+		kal_uint8	gpio_dev_level;
+	} mmi_eq_set_gpio_level_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_set_gpio_level_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	gpio_dev_type; /* gpio_device_enum */
+		kal_uint8	gpio_dev_level;
+	} mmi_eq_set_gpio_level_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	gpio_dev_type; /* gpio_device_enum */
+	} mmi_eq_get_gpio_level_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	gpio_dev_level;
+	} mmi_eq_get_gpio_level_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	gpio_dev_type; /* gpio_device_enum */
+		kal_uint8	gpio_dev_level;
+	} mmi_eq_exe_gpio_level_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_exe_gpio_level_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	gpio_dev_type; /* gpio_device_enum */
+		kal_uint8	gpio_dev_level;
+		kal_uint16	duration;
+	} mmi_eq_exe_gpio_level_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	sound_id;
+		kal_uint8	style; /* audio_play_style_enum */
+		kal_uint16	identifier;
+	} mmi_eq_play_audio_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_play_audio_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+		kal_uint16	identifier;
+	} mmi_eq_play_audio_finish_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	sound_id;
+	} mmi_eq_stop_audio_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_stop_audio_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	imelody[MAX_RING_COMPOSE_LEN];
+		kal_uint16	len;
+		kal_uint8	play_style;
+		kal_uint16	identifier;
+	} mmi_eq_play_ext_imelody_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_play_ext_imelody_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	gpio_device; /* ext_device_enum */
+		kal_bool	on_off;
+	} mmi_eq_gpio_detect_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	ext_gpio_device;
+	} mmi_eq_gpio_detect_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_gpio_detect_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	on_off;
+	} mmi_eq_set_speech_mode_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_set_speech_mode_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_wchar	file_name[50];
+		kal_uint8	style;
+		kal_uint16	identifier;
+	} mmi_eq_play_audio_by_name_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_eq_play_audio_by_name_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_wchar	file_name[50];
+	} mmi_eq_stop_audio_by_name_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_eq_stop_audio_by_name_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		audio_profile_struct	audio_prof;
+	} mmi_eq_set_audio_profile_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_eq_set_audio_profile_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		audio_profile_struct	audio_prof_in;
+	} mmi_eq_get_audio_profile_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		audio_profile_struct	audio_prof_out;
+	} mmi_eq_get_audio_profile_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		audio_param_struct	audio_para;
+	} mmi_eq_set_audio_param_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_eq_set_audio_param_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		audio_param_struct	audio_para;
+	} mmi_eq_get_audio_param_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_start_adc_all_channel_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_stop_adc_all_channel_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_int32	vbat;
+		kal_int32	bat_temp;
+		kal_int32	vaux;
+		kal_int32	charge_current;
+		kal_int32	vcharge;
+	} mmi_eq_adc_all_channel_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	mode; /* audio_mode_enum */
+	} mmi_eq_set_audio_mode_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_set_audio_mode_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	pattern;
+		kal_uint8	action;
+	} mmi_eq_play_pattern_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_play_pattern_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_hw_profile_struct	hw_profile;
+	} mmi_eq_set_hw_level_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_eq_set_hw_level_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		l4c_hw_profile_struct	hw_profile;
+	} mmi_eq_get_hw_level_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	on_off;
+	} mmi_eq_set_sleep_mode_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_set_sleep_mode_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	on_off;
+	} mmi_eq_set_sleep_mode_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	is_hand_free;
+	} mmi_eq_set_hand_free_mode_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	is_hand_free;
+	} mmi_eq_query_hand_free_mode_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	mode;
+	} mmi_eq_set_cam_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+		kal_uint8	mode;
+	} mmi_eq_set_cam_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	mode;
+	} mmi_eq_set_avr_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+		kal_uint8	mode;
+	} mmi_eq_set_avr_res_req_struct;
+#endif /* defined(__MOD_UEM__) */
+/* Hardware - RTC, Clock, Alarm Related Messages */
+#if defined(__MOD_UEM__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	rtc_type;
+		kal_uint8	set_type;
+		rtc_alarm_info_struct	info;
+	} mmi_eq_set_rtc_time_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_eq_set_rtc_time_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	rtc_type;
+		kal_uint8	set_type;
+		rtc_alarm_info_struct	alarm;
+	} mmi_eq_set_rtc_time_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	rtc_type;
+		kal_uint8	set_type;
+		rtc_alarm_info_struct	info;
+	} mmi_eq_exe_rtc_timer_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_exe_rtc_timer_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	rtc_type;
+	} mmi_eq_get_rtc_time_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	num;
+		rtc_alarm_info_struct	rtctime[MAX_ALARM_NUM];
+	} mmi_eq_get_rtc_time_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	rtc_type;
+		kal_uint8	rtc_index;
+	} mmi_eq_del_rtc_timer_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_eq_del_rtc_timer_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	rtc_type;
+		kal_uint8	rtc_index;
+	} mmi_eq_del_rtc_timer_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	rtc_type;
+		kal_uint8	rtc_index;
+	} mmi_eq_exe_del_rtc_timer_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_exe_del_rtc_timer_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	is_date_set;
+		kal_uint8	mode;
+	} mmi_eq_set_date_time_format_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_set_date_time_format_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	is_date_set;
+		kal_uint8	mode;
+	} mmi_eq_set_date_time_format_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	rtc_type;
+		rtc_format_struct	rtc_time;
+	} mmi_eq_clock_tick_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		rtc_format_struct	rtc_time;
+	} mmi_eq_alarm_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	totalAlarm;
+		kal_uint8	activeAlarm;
+		mmi_at_alarm_info_struct*	alarmList;
+	} mmi_at_alarm_query_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		mmi_at_alarm_info_struct	alarm;
+	} mmi_at_alarm_set_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_at_alarm_set_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	alarm_index;
+	} mmi_at_alarm_delete_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_at_alarm_delete_res_req_struct;
+#endif /* defined(__MOD_UEM__) */
+/* Hardware - Keypad, Indicator, LCD Related Messages */
+#if defined(__MOD_UEM__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	keypad_status; /* keypad_status_enum */
+		kal_uint8	keycode; /* keypad_code_enum */
+	} mmi_eq_simulate_key_press_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	icon_id; /* indicator_type_enum */
+		kal_uint8	value;
+	} mmi_eq_set_indicator_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	text_string[UEM_DISPLAY_TEXT_LEN];
+	} mmi_eq_display_text_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	func_type;
+	} mmi_eq_keypad_detect_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	level;
+		kal_uint16	duration;
+	} mmi_at_cbklt_query_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	mode;
+	} mmi_at_keypad_event_act_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	keypad_status;
+		kal_uint8	keypad_code;
+	} mmi_at_keypad_event_output_req_struct;
+#endif /* defined(__MOD_UEM__) */
+/* Hardware - Misc Messages */
+#if defined(__MOD_UEM__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	lang_code;
+	} mmi_eq_set_language_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_eq_set_language_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	lang_code;
+	} mmi_eq_set_language_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	mode;
+		kal_uint8	dcs;
+		kal_uint8	text[UEM_GREETING_LEN];
+		kal_uint8	length;
+	} mmi_eq_set_greeting_text_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	mode;
+	} mmi_eq_set_vibrator_mode_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	equip_type; /* equip_id_enum */
+	} mmi_eq_get_equip_id_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	equip_id[UEM_EQUIP_ID_LEN];
+	} mmi_eq_get_equip_id_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	fun;
+		kal_uint8	rst;
+	} mmi_eq_power_on_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_power_on_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_power_off_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	poweron_mode;
+		kal_uint8	battery_level;
+		kal_uint8	build_label;
+		rtc_format_struct	rtc_time;
+		kal_uint8	flightmode_state;
+		kal_uint8	dual_sim_mode_setting;
+		kal_uint8	dual_sim_uart_setting;
+	} mmi_eq_power_on_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	type;
+	} mmi_eq_cancel_lock_poweron_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_eq_cancel_lock_poweron_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	battery_status; /* battery_status_enum */
+		kal_uint8	battery_voltage;
+	} mmi_eq_battery_status_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	request_type;
+		pmic_config_param_struct	request;
+	} mmi_eq_pmic_config_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	request_type;
+		pmic_config_param_struct	request;
+	} mmi_eq_pmic_config_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	status_type;
+	} mmi_eq_battery_status_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	request_type;
+		rf_test_gsm_param_struct	request;
+	} mmi_eq_rf_test_gsm_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	request_type;
+		rf_test_gsm_param_struct	request;
+	} mmi_eq_rf_test_gsm_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	request_type;
+		fm_radio_config_param_struct	request;
+	} mmi_eq_fm_radio_config_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	request_type;
+		fm_radio_config_param_struct	request;
+	} mmi_eq_fm_radio_config_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	opcode;
+		kal_uint16	frequency;
+	} mmi_eq_fm_test_req_ind_struct;
+	#if defined(__WIFI_SUPPORT__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	request_type;
+		rf_test_wifi_param_struct	request;
+	} mmi_eq_rf_test_wifi_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	request_type;
+		rf_test_wifi_param_struct	request;
+	} mmi_eq_rf_test_wifi_rsp_struct;
+	#endif
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	call_status;
+	} mmi_eq_call_status_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	request_type;
+	} mmi_eq_factory_reset_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	cal_data_valid;
+	} mmi_eq_query_cal_data_dl_status_rsp_struct;
+#endif /* defined(__MOD_UEM__) */
+/* Hardware - NVRAM messages */
+#if defined(__MOD_NVRAM__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	file_idx;
+		kal_uint16	para;
+		kal_uint16	rec_amount;
+	} mmi_eq_nvram_read_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint16	file_idx;
+		kal_uint16	length;
+		kal_uint16	para;
+		kal_uint8	data[1];
+	} mmi_eq_nvram_read_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	file_idx;
+		kal_uint16	para;
+		kal_uint16	length;
+		kal_uint8	data[1];
+	} mmi_eq_nvram_write_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint16	file_idx;
+		kal_uint16	para;
+	} mmi_eq_nvram_write_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	reset_category;
+		kal_uint16	lid;
+		kal_uint16	rec_index;
+		kal_uint16	rec_amount;
+	} mmi_eq_nvram_reset_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+	} mmi_eq_nvram_reset_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	func_id;
+		kal_uint8	ps_port;
+		kal_uint8	tst_port_ps;
+		kal_uint32	ps_baud_rate;
+		kal_uint32	tst_baud_rate_ps;
+		kal_bool	High_Speed_SIM_Enabled;
+		kal_uint8	swdbg;
+		kal_uint8	uart_power_setting;
+		kal_uint8	cti_uart_port;
+		kal_uint32	cti_baud_rate;
+		kal_uint8	tst_port_l1;
+		kal_uint32	tst_baud_rate_l1;
+		kal_uint8	tst_output_mode;
+		kal_uint8	usb_logging_mode;
+		kal_uint8	tst_port_dsp;
+		kal_uint32	tst_baud_rate_dsp;
+	} mmi_eq_set_uart_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_set_uart_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	ps_uart_port;
+		kal_uint32	ps_baud_rate;
+		kal_uint8	tst_uart_port_ps;
+		kal_uint32	tst_baud_rate_ps;
+		kal_uint8	cti_uart_port;
+		kal_uint32	cti_baud_rate;
+		kal_uint8	tst_uart_port_l1;
+		kal_uint32	tst_baud_rate_l1;
+		kal_uint8	tst_output_mode;
+		kal_uint8	usb_logging_mode;
+		kal_uint8	tst_port_dsp;
+		kal_uint32	tst_baud_rate_dsp;
+		kal_bool	high_Speed_SIM_Enabled;
+		kal_uint8	swdbg;
+		kal_uint8	uart_power_setting;
+	} mmi_eq_get_uart_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		module_type	module_id;
+		UART_PORT	port;
+		kal_uint32	baud_rate;
+	} mmi_attach_uart_port_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+	} mmi_attach_uart_port_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		module_type	module_id;
+		UART_PORT	port;
+	} mmi_detach_uart_port_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+	} mmi_detach_uart_port_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	enable;
+	} mmi_eq_dcm_enable_req_struct;
+#endif /* defined(__MOD_NVRAM__) */
+/* Network Related Messages */
+#if defined(__MOD_RAC__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	imei[16];
+		kal_uint8	svn[3];
+	} mmi_nw_get_imei_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_nw_abort_plmn_list_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	type; /* l4crac_attach_type_enum */
+		kal_uint8	opcode; /* l4crac_ps_attach_enum */
+		kal_bool	is_poweroff;
+	} mmi_nw_set_attach_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_nw_set_attach_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	mode;
+	} mmi_nw_set_plmn_select_mode_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_nw_set_plmn_select_mode_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	mode;
+	} mmi_nw_get_plmn_select_mode_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	prefer;
+	} mmi_nw_set_gprs_transfer_preference_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_nw_set_gprs_transfer_preference_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	prefer;
+	} mmi_nw_get_gprs_transfer_preference_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	opcode; /* l4crac_cops_opcode_enum */
+		kal_uint8	oper[MAX_PLMN_LEN+1];
+		kal_uint8	rat;
+	} mmi_nw_set_plmn_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint8	status;
+		kal_uint8	plmn[MAX_PLMN_LEN+1];
+		kal_uint8	rat;
+	} mmi_nw_set_plmn_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint8	length;
+		l4c_rat_plmn_info_struct	list[MAX_PLMN_LIST_LEN];
+		kal_uint8	num_of_hplmn;
+	} mmi_nw_get_plmn_list_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	gsm_band;
+		kal_uint8	umts_fdd_band[SIZE_OF_UMTS_BAND];
+		kal_uint8	supported_gsm_band;
+		kal_uint8	supported_umts_fdd_band[SIZE_OF_UMTS_BAND];
+	} mmi_nw_get_band_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	status; /* l4c_rac_response_enum */
+		kal_uint8	plmn[MAX_PLMN_LEN+1];
+		kal_uint8	gsm_state;
+		kal_uint8	gprs_state;
+		kal_uint8	gprs_status; /* l4c_gprs_status_enum */
+		kal_uint8	rat;
+		kal_uint8	cell_support_egprs;
+		kal_uint8	lac[2];
+		kal_uint8	rac;
+		kal_uint16	cell_id;
+		kal_uint8	cause;
+		kal_uint8	data_speed_support;
+		kal_bool	is_on_hplmn;
+		kal_uint8	domain; /* domain_id_enum */
+	} mmi_nw_attach_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	domain;
+		kal_uint8	cause;
+	} mmi_nw_reg_cause_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	lac;
+		kal_uint16	cell_id;
+		kal_uint8	status;
+		kal_uint8	gprs_state;
+		kal_uint8	gprs_status; /* l4c_gprs_status_enum */
+	} mmi_nw_reg_state_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	rat;
+		kal_int32	rssi_in_qdbm;
+		kal_int32	RSCP_in_qdbm;
+		kal_int32	EcN0_in_qdbm;
+		kal_uint8	ber;
+		kal_uint8	current_band;
+	} mmi_nw_rx_level_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	full_nw_nameP;
+		kal_uint8	full_nw_name_dcs;
+		kal_bool	full_nw_name_add_ci;
+		kal_uint8	full_nw_name_len;
+		kal_uint8	full_nw_name[MAX_NW_NAME_LENGTH];
+		kal_uint8	short_nw_nameP;
+		kal_uint8	short_nw_name_dcs;
+		kal_bool	short_nw_name_add_ci;
+		kal_uint8	short_nw_name_len;
+		kal_uint8	short_nw_name[MAX_NW_NAME_LENGTH];
+		kal_uint8	nw_time_zoneP;
+		kal_uint8	nw_time_zone;
+		kal_uint8	nw_time_zone_timeP;
+		l4c_nw_time_zone_time_struct	nw_time_zone_time;
+		kal_uint8	lsa_idP;
+		kal_uint8	lsa_id_len;
+		kal_uint8	lsa_id[3];
+		kal_uint8	nw_day_light_saving_timeP;
+		kal_uint8	nw_day_light_saving_time;
+		kal_uint8	plmn[MAX_PLMN_LEN+1];
+	} mmi_nw_time_zone_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	network_mode;
+	} mmi_nw_sel_mode_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	service_status;
+	} mmi_nw_mmrr_service_status_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	no_ecc;
+		l4c_rac_ecc_number_struct	ecc_list[16];
+	} mmi_nw_update_ecc_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	is_valid_ef_rat_mode;
+		kal_uint8	ef_rat_mode;
+	} mmi_nw_ef_rat_mode_change_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	gsm_band;
+		kal_uint8	umts_fdd_band[SIZE_OF_UMTS_BAND];
+	} mmi_nw_set_preferred_band_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	status;
+	} mmi_nw_set_preferred_band_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	type; /* l4c_gprs_connect_type_enum */
+	} mmi_nw_set_gprs_connect_type_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_nw_set_gprs_connect_type_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	type; /* l4c_gprs_connect_type_enum */
+	} mmi_nw_get_gprs_connect_type_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+	} mmi_nw_pwroff_detach_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cfun_state;
+	} mmi_nw_cfun_state_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_nw_cfun_state_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	efun_state;
+	} mmi_nw_efun_state_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_nw_efun_state_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	rat_mode;
+		kal_uint8	prefer_rat; /* l4c_prefer_rat_enum */
+	} mmi_nw_get_rat_mode_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	rat_mode;
+		kal_uint8	prefer_rat; /* l4c_prefer_rat_enum */
+	} mmi_nw_set_rat_mode_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_nw_set_rat_mode_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	prefer_rat;
+	} mmi_nw_get_prefer_rat_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	prefer_rat;
+	} mmi_nw_set_prefer_rat_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_nw_set_prefer_rat_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	hspa_mode;
+		kal_uint8	apply_mode;
+	} mmi_nw_set_hspa_mode_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_nw_set_hspa_mode_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	hspa_mode;
+	} mmi_nw_get_hspa_mode_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	preference;
+	} mmi_nw_set_plmn_list_preference_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_nw_set_plmn_list_preference_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	preference;
+	} mmi_nw_get_plmn_list_preference_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	force_send_SCRI;
+	} mmi_nw_end_ps_data_session_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result; /* end_session_result_enum */
+	} mmi_nw_end_ps_data_session_rsp_struct;
+#endif /* defined(__MOD_RAC__) */
+/* Security Related Messages */
+#if defined(__MOD_SMU__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	imsi[17];
+	} mmi_smu_get_imsi_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	opcode; /* sim_security_operation_enum */
+		kal_uint8	type; /* smu_security_type_enum */
+		kal_uint8	passwd[MAX_SIM_PASSWD_LEN];
+	} mmi_smu_lock_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+		sim_chv_info_struct	chv_info;
+	} mmi_smu_lock_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	dial_mode; /* sim_dn_enum */
+	} mmi_smu_get_dial_mode_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	pin_type; /* smu_security_type_enum */
+		kal_uint8	pin[17];
+		kal_uint8	new_pin[17];
+	} mmi_smu_verify_pin_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	next_type; /* smu_security_type_enum */
+		sim_chv_info_struct	chv_info;
+	} mmi_smu_verify_pin_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	index;
+		kal_uint8	opcode;
+		kal_uint8	oper[MAX_PLMN_LEN+1];
+		kal_uint8	rat;
+	} mmi_smu_set_preferred_oper_list_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_smu_set_preferred_oper_list_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	index;
+		kal_uint16	num;
+		kal_uint16	file_idx_req;
+	} mmi_smu_get_preferred_oper_list_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	retnum;
+		kal_uint8	oper_list[MAX_SUPPORT_EF_PLMNSEL_REC*7];
+		kal_uint8	rat_list[MAX_SUPPORT_EF_PLMNSEL_REC*2];
+		kal_uint16	file_idx_rsp;
+	} mmi_smu_get_preferred_oper_list_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	pin[MAX_SIM_PASSWD_LEN];
+		kal_uint8	currency[3];
+		kal_uint8	ppu[18];
+	} mmi_smu_set_puc_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_smu_set_puc_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	currency[3];
+		kal_uint8	ppu[18];
+	} mmi_smu_get_puc_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	type;
+		kal_uint8	old[MAX_SIM_PASSWD_LEN];
+		kal_uint8	new1[MAX_SIM_PASSWD_LEN];
+		kal_uint8	new2[MAX_SIM_PASSWD_LEN];
+	} mmi_smu_change_password_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+		sim_chv_info_struct	chv_info;
+	} mmi_smu_change_password_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	type;
+		kal_uint8	on_off;
+		kal_uint8	pin[MAX_SIM_PASSWD_LEN];
+	} mmi_smu_set_dial_mode_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_smu_set_dial_mode_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	file_idx;
+		kal_uint8	para;
+		kal_uint8	data[260];
+		kal_uint16	length;
+		kal_uint8	path[6];
+		kal_uint8	access_id;
+	} mmi_smu_write_sim_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+		kal_uint8	access_id;
+	} mmi_smu_write_sim_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	file_idx;
+		kal_uint16	para;
+		kal_uint16	length;
+		kal_uint8	path[6];
+		kal_uint8	access_id;
+	} mmi_smu_read_sim_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint16	length;
+		kal_uint8	data[260];
+		kal_uint8	access_id;
+	} mmi_smu_read_sim_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_smu_power_off_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	is_sim_inserted;
+		kal_uint8	is_df_gsm_existed;
+		kal_uint8	is_df_cdma_existed;
+	} mmi_sim_get_gsmcdma_dualsim_info_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	op;
+	} mmi_sim_set_gsmcdma_dualsim_mode_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	op;
+		kal_uint8	result;
+	} mmi_sim_set_gsmcdma_dualsim_mode_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	type;
+		kal_uint8	is_sim_change;
+		sim_chv_info_struct	chv_info;
+		kal_uint8	cphs_retry_count;
+	} mmi_smu_password_required_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	length;
+	} mmi_smu_support_plmn_list_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	cause;
+	} mmi_smu_fail_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	file_idx;
+		kal_uint8	path[6];
+		kal_uint8	access_id;
+	} mmi_smu_read_file_info_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint16	file_size;
+		kal_uint8	num_of_rec;
+		kal_uint8	access_id;
+		kal_uint8	file_type;
+	} mmi_smu_read_file_info_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		sim_chv_info_struct	chv_info;
+		sim_chv_status_struct	chv_status;
+	} mmi_smu_check_pin_status_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	num;
+
+	#ifdef __TC01__
+		sim_ecc_entry_struct	ecc_entry[16];
+	#else
+		sim_ecc_entry_struct	ecc_entry[5];
+	#endif
+		kal_uint8	language[5];
+		kal_uint8	alpha_set;
+		kal_uint8	language_ext[5];
+		kal_uint8	alpha_set_ext;
+		kal_uint8	sim_type;
+	} mmi_smu_startup_info_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	cipher_ind;
+		kal_uint8	is_gsm_conn_exist;
+		kal_uint8	gsm_cipher_cond;
+		kal_uint8	gprs_cipher_cond;
+	} mmi_smu_cipher_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	category;
+		kal_uint8	op;
+		kal_uint8	key[17];
+		kal_uint8	len;
+		kal_uint8	data[10];
+	} mmi_smu_set_personalization_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint8	category;
+		kal_uint8	op;
+		kal_uint8	state;
+		kal_uint8	retry_count;
+		kal_uint8	num_of_sets;
+		kal_uint8	space_of_sets;
+	} mmi_smu_set_personalization_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint8	state[7];
+		kal_uint8	retry_count[7];
+		kal_uint8	autolock_count[7];
+		kal_uint8	num_of_sets[7];
+		kal_uint8	total_size_of_cat[7];
+		kal_uint8	key_state[7];
+		kal_uint8	imsi[16];
+		kal_uint8	is_valid_gid1;
+		kal_uint8	ef_gid1;
+		kal_uint8	is_valid_gid2;
+		kal_uint8	ef_gid2;
+		kal_uint8	digits_of_mnc;
+	} mmi_smu_sml_status_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	next_type;
+		sim_chv_info_struct	chv_info;
+		sim_chv_status_struct	chv_status;
+	} mmi_smu_verify_pin_result_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	is_o2_prepaid_sim;
+	} mmi_sim_o2_prepaid_sim_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	access_id;
+		kal_uint16	file_idx;
+	} mmi_smu_read_sim_plmn_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	access_id;
+		kal_uint16	file_idx;
+		l4c_result_struct	result;
+		kal_uint16	file_size;
+		kal_uint8	file[MAX_SUPPORT_PLMN_DATA_SIZE+0];
+	} mmi_smu_read_sim_plmn_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	access_id;
+		kal_uint16	file_idx;
+		kal_uint16	file_size;
+		kal_uint8	file[MAX_SUPPORT_PLMN_DATA_SIZE+0];
+	} mmi_smu_write_sim_plmn_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	access_id;
+		kal_uint16	file_idx;
+		l4c_result_struct	result;
+	} mmi_smu_write_sim_plmn_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	is_sim_inserted;
+		kal_uint8	dual_sim_mode_setting;
+	} mmi_smu_reset_sim_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	file_idx;
+		kal_uint16	para;
+		kal_uint8	access_id;
+		kal_uint8	path[6];
+		kal_uint8	pattern_len;
+		kal_uint8	data[MAX_SUPPORT_RECORD_SIZE+6];
+	} mmi_smu_search_record_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+		kal_uint8	access_id;
+		kal_uint8	record_num;
+		kal_uint8	record[258];
+	} mmi_smu_search_record_rsp_struct;
+#endif /* defined(__MOD_SMU__) */
+
+/* Short Message Service Related Messages */
+#if defined(__MOD_SMSAL__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	para_ind;
+		kal_uint8	profile_no;
+		kal_uint8	pid;
+		kal_uint8	dcs;
+		kal_uint8	vp;
+		l4c_number_struct	sc_addr;
+		l4_name_struct	profile_name;
+	} mmi_sms_set_profile_params_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_sms_set_profile_params_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	profile_no;
+	} mmi_sms_get_profile_params_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	pid;
+		kal_uint8	dcs;
+		kal_uint8	vp;
+		l4c_number_struct	sc_addr;
+		l4_name_struct	profile_name;
+	} mmi_sms_get_profile_params_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	para_ind;
+		kal_uint8	fo;
+		kal_uint8	bearer_service;
+		kal_uint8	status_report;
+		kal_uint8	reply_path;
+	} mmi_sms_set_common_params_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_sms_set_common_params_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	fo;
+		kal_uint8	bearer_service;
+		kal_uint8	status_report;
+		kal_uint8	reply_path;
+	} mmi_sms_get_common_params_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	fo;
+		kal_uint8	ct;
+		kal_uint8	mn;
+		kal_uint8	pid; /* smsal_pid_enum */
+		l4c_number_struct	dest;
+		kal_uint8	length;
+		kal_uint8	cmd[SMSAL_MAX_CMD_LEN];
+		kal_uint8	source_id;
+	} mmi_sms_send_command_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+		kal_uint8	mr;
+		kal_uint8	scts[7];
+		kal_uint8	source_id;
+	} mmi_sms_send_command_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	del_flag; /* smsal_del_flag_enum */
+		kal_uint16	index;
+		kal_uint8	del_bitmap[480];
+		kal_uint8	source_id;
+	} mmi_sms_del_msg_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+		kal_uint8	del_flag; /* smsal_del_flag_enum */
+		kal_uint16	index;
+		kal_uint8	storage_type;
+		kal_uint8	del_bitmap[480];
+		kal_uint8	source_id;
+	} mmi_sms_del_msg_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	index;
+		kal_bool	change_status;
+		kal_uint8	source_id;
+	} mmi_sms_get_msg_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+		smsal_concat_struct	concat_info;
+		kal_uint8	mti;
+		kal_uint8	status;
+		kal_uint8	storage_type;
+		kal_uint8	fo;
+		kal_uint8	scts[7];
+		l4c_number_struct	sca_number;
+		l4c_number_struct	addr_number;
+		kal_uint8	pid;
+		kal_uint8	dcs;
+		kal_uint8	ori_dcs;
+		kal_uint8	vp;
+		kal_uint8	mr;
+		kal_uint8	dt[7];
+		kal_uint8	st;
+		kal_uint16	dest_port;
+		kal_uint16	src_port;
+		kal_uint8	source_id;
+		kal_uint16	no_msg_data;
+		kal_uint8	msg_data[1];
+	} mmi_sms_get_msg_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	profile;
+		kal_uint16	reply_index;
+		l4c_number_struct	dest;
+		kal_uint16	para;
+		l4c_number_struct	sc_addr;
+		kal_uint8	vp;
+		kal_uint8	pid; /* smsal_pid_enum */
+		kal_uint8	udhi;
+		kal_uint8	dcs; /* smsal_dcs_enum */
+		kal_uint16	length;
+		kal_uint8	msg[SMSAL_MAX_MSG_LEN];
+		kal_uint8	seq_num;
+		kal_uint8	mms_mode;
+		kal_uint8	source_id;
+		kal_uint8	tp_srr;
+		kal_uint8	tp_rp;
+	} mmi_sms_send_msg_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+		kal_uint8	mr;
+		kal_uint8	scts[7];
+		kal_uint8	seq_num;
+		smsal_concat_struct	concat_info;
+		kal_uint8	source_id;
+	} mmi_sms_send_msg_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	profile;
+		kal_uint8	status;
+		l4c_number_struct	dest;
+		kal_uint16	para;
+		l4c_number_struct	sc_addr;
+		kal_uint8	scts[7];
+		kal_uint8	vp;
+		kal_uint8	pid; /* smsal_pid_enum */
+		kal_uint8	udhi;
+		kal_uint8	dcs; /* smsal_dcs_enum */
+		kal_uint16	index;
+		kal_uint16	length;
+		kal_uint8	msg[SMSAL_MAX_MSG_LEN];
+		kal_uint8	source_id;
+		kal_uint8	tp_srr;
+		kal_uint8	tp_mms;
+		kal_uint8	tp_rp;
+		kal_uint8	tp_sri;
+	} mmi_sms_set_msg_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+		kal_uint16	index;
+		kal_uint8	status;
+		kal_uint8	storage_type;
+		kal_uint8	source_id;
+	} mmi_sms_set_msg_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	mem1; /* smsal_storage_enum */
+		kal_uint8	mem2; /* smsal_storage_enum */
+		kal_uint8	mem3; /* smsal_storage_enum */
+	} mmi_sms_set_preferred_storage_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		smsal_prefer_storage_struct	param;
+	} mmi_sms_set_preferred_storage_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		smsal_prefer_storage_struct	info;
+	} mmi_sms_get_preferred_storage_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	enable;
+		kal_uint32	port_num;
+		kal_uint16	mod_id;
+		kal_uint8	source_id;
+	} mmi_sms_reg_port_num_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+		kal_uint32	ret_port_num;
+		kal_uint16	ret_mod_id;
+		kal_uint8	ret_source_id;
+	} mmi_sms_reg_port_num_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	fo;
+		kal_uint8	scts[7];
+		l4c_number_struct	sca_number;
+		l4c_number_struct	oa_number;
+		kal_uint8	pid; /* smsal_pid_enum */
+		kal_uint8	dcs; /* smsal_dcs_enum */
+		kal_uint8	ori_dcs;
+		kal_uint16	index;
+		kal_uint16	dest_port;
+		kal_uint16	src_port;
+		kal_uint8	mti;
+		kal_uint8	display_type;
+		kal_uint8	storage_type;
+		kal_uint32	concat_info;
+		kal_uint16	no_msg_data;
+		kal_uint8	msg_data[1];
+	} mmi_sms_deliver_msg_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	fo;
+		kal_uint8	scts[7];
+		kal_uint8	dt[7];
+		l4c_number_struct	ra_number;
+		kal_uint8	st; /* smsal_st_enum */
+		kal_uint8	pid; /* smsal_pid_enum */
+		kal_uint8	dcs; /* smsal_dcs_enum */
+		kal_uint8	mr;
+		kal_uint16	no_msg_data;
+		kal_uint8	msg_data[1];
+	} mmi_sms_status_report_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	type;
+	} mmi_sms_mem_available_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	type;
+	} mmi_sms_mem_exceed_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	type;
+	} mmi_sms_mem_full_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sms_ready_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	dest_mod_id;
+		kal_uint16	dest_port;
+		kal_uint16	src_port;
+		kal_uint8	dcs;
+		kal_uint8	mti;
+		kal_uint16	message_len;
+		kal_uint32	concat_info[(sizeof(smsal_concat_struct)+3)/4];
+		l4c_number_struct	oa;
+		kal_uint8	scts[7];
+		kal_uint8	msg_data[SMSAL_MAX_MSG_LEN];
+	} mmi_sms_app_data_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_bool	is_sim_card_change;
+		kal_uint16	in_sim_no;
+		kal_uint16	in_me_no;
+		kal_uint16	out_sim_no;
+		kal_uint16	out_me_no;
+		kal_uint16	unread_msg_num;
+		kal_uint16	total_sim_num;
+		kal_uint16	total_me_num;
+	} mmi_sms_get_msg_num_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	profile_no;
+		kal_uint8	name_len;
+	} mmi_sms_get_profile_num_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	source_id;
+		kal_uint8	seq_num;
+	} mmi_sms_abort_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	source_id;
+		kal_uint8	seq_num;
+	} mmi_sms_abort_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	line_no;
+		kal_uint8	waiting_num;
+		kal_uint8	ind_type;
+		kal_bool	is_show_num;
+		kal_bool	is_clear;
+		kal_bool	is_from_storage;
+		kal_uint8	msp_no;
+		kal_uint8	ext_indicator;
+		l4csmsal_msg_waiting_ind_ext_struct	msg_waiting[5];
+	} mmi_sms_msg_waiting_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	evm_pdu_type;
+		kal_uint8	multi_sub_profile;
+		kal_uint8	is_store;
+		kal_uint8	vm_almost_full;
+		kal_uint8	vm_full;
+		kal_uint8	vm_status_ext_flg;
+		l4_addr_bcd_struct	vm_access_addr;
+		kal_uint8	number_of_vm_unread;
+		kal_uint8	number_of_vm_notify;
+		kal_uint8	number_of_vm_delete;
+		kal_uint8	l4_status;
+		kal_uint8	vm_status_ext_len;
+		kal_uint8*	vm_status_ext_data;
+		smsal_evmi_msg_struct*	vm_msg[32];
+	} mmi_sms_enhanced_voice_mail_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	mailbox_num;
+		l4c_number_struct	num_addr;
+		l4_name_struct	name;
+	} mmi_sms_set_mailbox_address_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_sms_set_mailbox_address_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	mailbox_num;
+		kal_uint8	alpha_length;
+		kal_uint8	max_num_length;
+		l4c_sms_mailbox_info_struct	mailbox_info[SMSAL_MAX_MAILBOX_NUM];
+	} mmi_sms_get_mailbox_address_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	msp_no;
+		smsal_mbi_struct	mbi;
+	} mmi_sms_set_mbi_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_sms_set_mbi_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	msp_num;
+		smsal_mbi_struct	mbi[4];
+	} mmi_sms_get_mbi_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	msp_no;
+	} mmi_sms_set_msp_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sms_set_msp_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	msp_no;
+	} mmi_sms_get_msp_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	action;
+		kal_uint16	index;
+		kal_uint8	status;
+		kal_uint8	del_bitmap[480];
+	} mmi_sms_sync_msg_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sms_sync_msg_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+		kal_uint8	source_id;
+		kal_uint8	seq_num;
+	} mmi_sms_send_abort_finish_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sms_startup_read_next_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	startup_seq_num;
+		kal_uint8	mti;
+		kal_uint8	status;
+		kal_uint8	storage_type;
+		kal_uint8	fo;
+		kal_uint16	index;
+		kal_uint8	scts[7];
+		l4c_number_struct	addr_number;
+		kal_uint8	pid;
+		kal_uint8	dcs;
+		kal_uint8	ori_dcs;
+		kal_uint8	vp;
+		kal_uint8	mr;
+		kal_uint8	dt[7];
+		kal_uint8	st;
+		kal_uint16	dest_port;
+		kal_uint16	src_port;
+		kal_uint32	concat_info;
+		kal_uint16	no_msg_data;
+		kal_uint8	msg_data[1];
+	} mmi_sms_startup_read_msg_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	action;
+		kal_uint8	dst_storage;
+		kal_uint16	src_index;
+		kal_uint8	source_id;
+	} mmi_sms_copy_msg_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+		kal_uint16	cause;
+		kal_uint8	action;
+		kal_uint8	dst_storage;
+		kal_uint16	src_index;
+		kal_uint16	dst_index;
+		kal_uint8	source_id;
+	} mmi_sms_copy_msg_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	change_status;
+		kal_uint8	status;
+		kal_uint16	start_index;
+		kal_uint8	no_msg;
+	} mmi_sms_get_msg_list_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		smsal_inbox_list_struct	inbox;
+		smsal_outbox_list_struct	outbox;
+	} mmi_sms_get_msg_list_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	index;
+		kal_bool	addr_present;
+		l4c_number_struct	da;
+		kal_uint8	source_id;
+		kal_uint8	profile_no_tag;
+		kal_uint8	profile_no;
+	} mmi_sms_send_from_storage_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+		kal_uint8	mr;
+		kal_uint16	index;
+		smsal_concat_struct	concat_info;
+		kal_uint8	source_id;
+	} mmi_sms_send_from_storage_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	new_status;
+		kal_uint16	index;
+		kal_uint8	source_id;
+	} mmi_sms_set_status_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	error_cause;
+		kal_uint16	index;
+		kal_uint8	source_id;
+	} mmi_sms_set_status_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	source_id;
+	} mmi_sms_send_smma_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	source_id;
+	} mmi_sms_send_smma_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	source_id;
+		kal_uint8	line_no;
+		kal_uint8	waiting_num;
+		kal_uint8	ind_type;
+	} mmi_sms_set_msg_waiting_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+		kal_uint8	source_id;
+		kal_uint8	line_no;
+		kal_uint8	waiting_num;
+		kal_uint8	ind_type;
+	} mmi_sms_set_msg_waiting_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	index;
+	} mmi_sms_read_raw_data_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+		kal_uint16	cause;
+		kal_uint16	index;
+		kal_uint8	status;
+		kal_uint8	storage_type;
+		kal_uint16	data_len;
+		kal_uint8	data[1];
+	} mmi_sms_read_raw_data_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	storage_type;
+		kal_uint16	data_len;
+		kal_uint8	data[1];
+	} mmi_sms_write_raw_data_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+		kal_uint16	cause;
+		kal_uint16	index;
+		kal_uint8	status;
+		kal_uint8	storage_type;
+	} mmi_sms_write_raw_data_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	atcmd_type;
+		kal_uint8	domain_type;
+		kal_uint8	memory_type;
+		kal_uint8	stat_type;
+		kal_uint32	atcmd_index;
+		l4c_usm_cmgw_struct	cmgw_message;
+		kal_uint32	cmgd_delflag;
+		l4c_usm_cnmi_struct	cnmi_parameter;
+	} mmi_usm_at_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	atcmd_type; /* rmmi_usm_atcmd_enum */
+		kal_uint32	atcmd_index;
+		kal_uint8	tag_type; /* rmmi_usm_message_stat_enum */
+		kal_bool	iscomplete;
+		kal_uint8	pdu_length;
+		kal_uint8	pdu[176];
+		l4c_usm_cnmi_struct	cnmi_parameter;
+		l4c_usm_cmss_struct	cmss_struct;
+		kal_uint8	result;
+		kal_uint16 	cause;
+	} mmi_usm_general_rcode_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	reply_index;
+		kal_uint16	data_len;
+		kal_uint8	source_id;
+		kal_uint8	seq_num;
+		kal_uint8	mms_mode;
+		kal_uint16	length;
+		kal_uint8	pdu[176];
+	} mmi_sms_send_pdu_msg_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+		kal_uint8	source_id;
+		kal_uint8	mr;
+		kal_uint8	seq_num;
+	} mmi_sms_send_pdu_msg_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint32 	sm_max_num;
+		kal_uint32 	sm_current_num;
+		kal_uint32 	me_max_num;
+		kal_uint32 	me_current_num;
+		kal_uint32 	sr_max_num;
+		kal_uint32 	sr_current_num;
+	} mmi_sms_sync_msg_storage_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8 	result;
+		kal_uint32 	error_cause;
+		kal_uint8 	mem;
+		kal_uint32 	index;
+		kal_uint8 	uid;
+		kal_uint8	msg_class;
+		kal_bool	is_msg_wait;
+		kal_uint8	msg_wait_store;
+	} mmi_sms_send_deliver_report_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint32 	error_cause;
+		kal_uint8 	uid;
+	} mmi_sms_send_deliver_report_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8 	result;
+		kal_uint32 	error_cause;
+	} mmi_sms_mt_sms_final_ack_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	id;
+		kal_uint8	mti;
+		kal_uint16	pdu_length;
+		kal_uint8	pdu[176];
+	} mmi_sms_new_msg_pdu_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	msg_length;
+		kal_uint8	msg_data[88];
+	} mmi_sms_cb_msg_pdu_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	sim_status;
+	} mmi_sms_startup_read_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sms_startup_read_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	source_id;
+	} mmi_sms_get_mem_status_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint32	sim_max_num;
+		kal_uint32	sim_current_num;
+		kal_uint32	me_max_num;
+		kal_uint32	me_current_num;
+		kal_uint32	sr_max_num;
+		kal_uint32	sr_current_num;
+		kal_uint8	source_id;
+	} mmi_sms_get_mem_status_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sms_get_mem_status_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	mem_status;
+	} mmi_sms_mem_status_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sms_mem_status_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	source_id;
+		kal_uint8	mem;
+		kal_uint32	index;
+		kal_uint8	esmss_mode;
+	} mmi_sms_atcmd_cmgr_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+		kal_uint16	cause;
+		kal_uint8	source_id;
+		kal_uint8	mem;
+		kal_uint32	index;
+		kal_uint8	stat;
+		kal_uint16	pdu_length;
+		kal_uint8	pdu[176];
+	} mmi_sms_atcmd_cmgr_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sms_atcmd_cmgr_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	source_id;
+		kal_uint8	mem;
+		kal_uint8	stat;
+		kal_uint8	esmss_mode;
+	} mmi_sms_atcmd_cmgl_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	mem;
+		kal_uint32	index;
+		kal_uint8	stat;
+		kal_uint16	pdu_length;
+		kal_uint8	pdu[176];
+		kal_uint8	result;
+		kal_uint16	cause;
+		kal_uint8	is_complete;
+		kal_uint8	source_id;
+	} mmi_sms_atcmd_cmgl_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sms_atcmd_cmgl_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	source_id;
+		kal_uint8	mem;
+		kal_uint16	index;
+		kal_uint8	delflag;
+	} mmi_sms_atcmd_cmgd_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+		kal_uint16	cause;
+		kal_uint8	source_id;
+	} mmi_sms_atcmd_cmgd_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sms_atcmd_cmgd_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	source_id;
+		kal_uint8	mem;
+		kal_uint8	stat;
+		kal_uint16	pdu_length;
+		kal_uint8	pdu[176];
+	} mmi_sms_atcmd_cmgw_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint32	index;
+		kal_uint8	result;
+		kal_uint16	cause;
+		kal_uint8	source_id;
+	} mmi_sms_atcmd_cmgw_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sms_atcmd_cmgw_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	source_id;
+		kal_uint8	mem;
+	} mmi_sms_atcmd_eqsi_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	mem;
+		kal_uint32	begin;
+		kal_uint32	end;
+		kal_uint32	used;
+		kal_uint8	source_id;
+	} mmi_sms_atcmd_eqsi_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sms_atcmd_eqsi_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	bearer;
+	} mmi_sms_atcmd_cgsms_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	profile;
+	} mmi_sms_atcmd_csas_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	is_etws_needed;
+		kal_bool	is_etws_security_needed;
+		kal_bool	is_etws_testing_on;
+		kal_bool	write_to_nvram;
+	} mmi_sms_etws_setting_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_sms_etws_setting_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	warning_type;
+		kal_uint16	message_id;
+		kal_uint16	serial_nubmer;
+		kal_bool	is_security_information_valid;
+		kal_uint8	etws_security_information[L4C_MAX_ETWS_SECURITY_INFO_LEN];
+		kal_uint8	plmn_id[6];
+	} mmi_sms_etws_info_ind_struct;
+#endif /* defined(__MOD_SMSAL__) */
+/* GPRS Related Messages */
+#if defined(__MOD_TCM__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	opcode;
+		kal_uint8	cid;
+	} mmi_ps_act_test_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_ps_act_test_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_prim_pdp_info_struct	pdp;
+	} mmi_ps_set_definition_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_ps_set_definition_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_sec_pdp_info_struct	pdp;
+	} mmi_ps_set_sec_definition_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_ps_set_sec_definition_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+#if defined(__LTE_RAT__)
+		l4c_tft_struct_only_for_mmi tft;
+#else
+		l4c_tft_struct	tft;
+#endif
+	} mmi_ps_set_tft_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_ps_set_tft_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+#if defined(__LTE_RAT__)
+		l4c_tft_struct_only_for_mmi	info;
+#else
+		l4c_tft_struct	info;
+#endif
+	} mmi_ps_get_tft_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	qos_type;
+		l4c_qos_struct	min;
+	} mmi_ps_set_qos_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_ps_set_qos_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	qos_type;
+		l4c_eqos_struct	min;
+	} mmi_ps_set_eqos_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_ps_set_eqos_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cid;
+		kal_uint32	size;
+	} mmi_ps_send_data_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_ps_send_data_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	status; /* l4c_gprs_status_enum */
+		kal_uint8	cell_support_egprs;
+		kal_uint8	data_speed_support;
+		kal_uint8	data_bearer_capability;
+	} mmi_ps_gprs_status_update_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	entry_num;
+	} mmi_ps_get_gprs_empty_profile_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		l4c_gprs_statistics_info_struct	counter_info;
+	} mmi_ps_get_gprs_data_counter_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_gprs_account_info_struct	gprs_account;
+		kal_uint8	profile_type;
+	} mmi_ps_set_gprs_data_account_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_ps_set_gprs_data_account_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	profile_id;
+		kal_uint8	profile_type;
+	} mmi_ps_get_gprs_data_account_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		l4c_gprs_account_info_struct	gprs_account;
+	} mmi_ps_get_gprs_data_account_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_ps_reset_gprs_data_counter_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	dial_mode;
+	} mmi_ps_get_acl_mode_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	on_off;
+		kal_uint8	pin[MAX_SIM_PASSWD_LEN];
+	} mmi_ps_set_acl_mode_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_ps_set_acl_mode_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	start_index;
+		kal_uint16	max_read_entries;
+	} mmi_ps_get_acl_entries_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint16	start_index;
+		kal_uint16	num_of_entries;
+		kal_bool	more_flag;
+		l4c_tcm_acl_entry_struct	acl_list[TCM_MAX_PEER_ACL_ENTRIES];
+	} mmi_ps_get_acl_entries_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_tcm_acl_entry_struct	acl_entry;
+	} mmi_ps_add_acl_entry_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+	} mmi_ps_add_acl_entry_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	index;
+		l4c_tcm_acl_entry_struct	acl_entry;
+	} mmi_ps_set_acl_entry_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+	} mmi_ps_set_acl_entry_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	del_all;
+		kal_uint16	index;
+		l4c_tcm_acl_entry_struct	acl_entry;
+	} mmi_ps_del_acl_entry_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+	} mmi_ps_del_acl_entry_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_ps_leave_acl_menu_rsp_struct;
+#endif /* defined(__MOD_TCM__) */
+/* STK/SAT Related Messages */
+#if defined(__SAT__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	priority;
+		kal_uint8	clear_text_type;
+		kal_uint8	immediate_res;
+		kal_uint8	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint16	no_text_string;
+		kal_uint8*	text_string;
+		kal_uint8	dcs_of_text_string;
+	} mmi_sat_display_text_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+		kal_uint8	additional_info;
+	} mmi_sat_display_text_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sat_display_text_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	is_help_info_available;
+		kal_uint8	type_of_input;
+		kal_uint8	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint16	no_text_string;
+		kal_uint8*	text_string;
+		kal_uint8	dcs_of_text_string;
+	} mmi_sat_get_inkey_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+		kal_uint8	is_yes_selected;
+		kal_uint8	dcs_of_text_string;
+		kal_uint8	no_text_string;
+		kal_uint8	text_string[1];
+	} mmi_sat_get_inkey_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sat_get_inkey_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	is_help_info_available;
+		kal_uint8	type_of_input;
+		kal_uint8	is_input_revealed_to_user;
+		kal_uint8	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint8	len_of_min_input;
+		kal_uint8	len_of_max_input;
+		kal_uint16	no_text_string;
+		kal_uint8*	text_string;
+		kal_uint8	dcs_of_text_string;
+		kal_uint16	no_default_text;
+		kal_uint8*	default_text;
+		kal_uint8	dcs_of_default_text;
+	} mmi_sat_get_input_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+		kal_uint8	dcs_of_text_string;
+		kal_uint8	no_text_string;
+		kal_uint8	text_string[1];
+	} mmi_sat_get_input_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sat_get_input_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	is_help_info_available;
+		kal_uint8	is_softkey_preferred;
+		kal_uint8	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint8	num_of_item;
+		kal_uint8	no_alpha_id;
+		kal_uint8*	alpha_id;
+		kal_uint8	dcs_of_alpha_id;
+		kal_uint16	no_item_data;
+		kal_uint8*	item_data;
+		kal_uint8	no_item_icon_id_list;
+		kal_uint8*	item_icon_id_list;
+		kal_uint8	item_icon_list_attr;
+		kal_uint8	no_next_action_ind_list;
+		kal_uint8*	next_action_ind_list;
+	} mmi_sat_setup_menu_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+	} mmi_sat_setup_menu_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sat_setup_menu_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	is_help_info_available;
+		kal_uint8	is_softkey_preferred;
+		kal_uint8	type_of_presentation;
+		kal_uint8	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint8	is_item_id_available;
+		kal_uint8	item_id;
+		kal_uint8	num_of_item;
+		kal_uint8	no_alpha_id;
+		kal_uint8*	alpha_id;
+		kal_uint8	dcs_of_alpha_id;
+		kal_uint16	no_item_data;
+		kal_uint8*	item_data;
+		kal_uint8	item_icon_list_attr;
+		kal_uint8	no_item_icon_id_list;
+		kal_uint8*	item_icon_id_list;
+		kal_uint8	no_next_action_ind_list;
+		kal_uint8*	next_action_ind_list;
+	} mmi_sat_select_item_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+		kal_uint8	item_id;
+	} mmi_sat_select_item_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sat_select_item_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	tone_id;
+		kal_uint32	duration;
+		kal_uint8	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint8	no_alpha_id;
+		kal_uint8*	alpha_id;
+		kal_uint8	dcs_of_alpha_id;
+		kal_uint8	is_alpha_id_present;
+	} mmi_sat_play_tone_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+	} mmi_sat_play_tone_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sat_play_tone_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	item_id;
+		kal_uint8	is_help_info_requested;
+	} mmi_sat_menu_select_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+	} mmi_sat_menu_select_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sat_evdl_idle_screen_available_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	iso639_language[2];
+	} mmi_sat_language_selection_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sat_language_selection_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	browser_termination_cause;
+	} mmi_sat_evdl_browser_termination_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sat_evdl_browser_termination_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	condition;
+		kal_uint32	duration;
+		kal_uint8	type_of_modification;
+		kal_uint8	is_icon1_available;
+		sat_icon_struct	icon_info1;
+		kal_uint8	is_icon2_available;
+		sat_icon_struct	icon_info2;
+		kal_uint8	size_of_ccp;
+		kal_uint8	ccp[MAX_SAT_SIZE_OF_CCP];
+		kal_uint8	size_of_subaddr;
+		kal_uint8	subaddr[MAX_CC_SUB_ADDR_BCD_LEN];
+		kal_uint8	is_alpha_id1_present;
+		kal_uint8	no_alpha_id1;
+		kal_uint8*	alpha_id1;
+		kal_uint8	dcs_of_alpha_id1;
+		kal_uint8	no_addr;
+		kal_uint8*	addr;
+		kal_uint8	is_alpha_id2_present;
+		kal_uint8	no_alpha_id2;
+		kal_uint8*	alpha_id2;
+		kal_uint8	dcs_of_alpha_id2;
+	} mmi_sat_call_setup_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	sat_call_type;
+		kal_uint8	no_addr;
+		kal_uint8	addr[MAX_CC_ADDR_BCD_LEN];
+		kal_uint8	no_sub_addr;
+		kal_uint8	sub_addr[MAX_CC_SUB_ADDR_BCD_LEN];
+		kal_uint8	no_ccp;
+		kal_uint8	ccp[MAX_SAT_SIZE_OF_CCP];
+		kal_uint8	type_of_modification;
+	} mmi_sat_call_setup_stage1_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_result_struct	result;
+		kal_uint8	terminal_res;
+		kal_uint8	additional_res;
+	} mmi_sat_call_setup_stage1_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+		kal_uint8	cause;
+	} mmi_sat_call_setup_stage2_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sat_call_setup_stage2_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint8	is_sms_packed_required;
+		kal_uint8	size_of_addr;
+		kal_uint8	addr[MAX_CC_ADDR_BCD_LEN];
+		kal_uint8	is_alpha_id_present;
+		kal_uint8	no_alpha_id;
+		kal_uint8*	alpha_id;
+		kal_uint8	dcs_of_alpha_id;
+		kal_uint8	no_sms_tpdu;
+		kal_uint8*	sms_tpdu;
+	} mmi_sat_send_sms_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	is_sms_packed_required;
+		kal_uint8	no_addr;
+		kal_uint8	addr[MAX_CC_ADDR_BCD_LEN];
+		kal_uint8	tpdu_length;
+		kal_uint8	tpdu[175];
+	} mmi_sat_send_sms_stage1_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	res;
+		kal_uint16	cause;
+	} mmi_sat_send_sms_stage1_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+		kal_uint8	cause;
+	} mmi_sat_send_sms_stage2_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sat_send_sms_stage2_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	type_of_modification;
+		kal_uint8	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint8	is_alpha_id_present;
+		kal_uint8	no_alpha_id;
+		kal_uint8*	alpha_id;
+		kal_uint8	dcs_of_alpha_id;
+		kal_uint8	no_ss_string;
+		kal_uint8*	ss_string;
+	} mmi_sat_send_ss_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	input[MAX_DIGITS_USSD];
+		kal_uint8	dcs;
+		kal_uint8	length;
+		kal_uint8	type_of_modification;
+	} mmi_sat_send_ss_stage1_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	res;
+		kal_uint8	length;
+		kal_uint8	addition_info[255];
+	} mmi_sat_send_ss_stage1_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+		kal_uint8	size_of_additional_info;
+		kal_uint8	additional_info[255];
+	} mmi_sat_send_ss_stage2_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sat_send_ss_stage2_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	type_of_modification;
+		kal_uint8	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint8	is_alpha_id_present;
+		kal_uint8	no_alpha_id;
+		kal_uint8*	alpha_id;
+		kal_uint8	dcs_of_alpha_id;
+		kal_uint8	no_ussd_string;
+		kal_uint8*	ussd_string;
+		kal_uint8	dcs_of_ussd_string;
+	} mmi_sat_send_ussd_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	input[MAX_DIGITS_USSD];
+		kal_uint8	dcs;
+		kal_uint8	length;
+		kal_uint8	type_of_modification;
+	} mmi_sat_send_ussd_stage1_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	res;
+		kal_uint8	length;
+		kal_uint8	addition_info[255];
+	} mmi_sat_send_ussd_stage1_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+		kal_uint8	size_of_additional_info;
+		kal_uint8	additional_info[255];
+	} mmi_sat_send_ussd_stage2_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sat_send_ussd_stage2_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	mmi_info_type;
+		kal_uint8	is_alpha_id_present;
+		kal_uint8	no_alpha_id;
+		kal_uint8*	alpha_id;
+		kal_uint8	dcs_of_alpha_id;
+		kal_uint8	len_of_address;
+		kal_uint8	address[MAX_CC_ADDR_BCD_LEN];
+		kal_uint8	ton;
+	} mmi_sat_mmi_info_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+	} mmi_sat_setup_idle_display_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sat_setup_idle_display_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint16	no_text_string;
+		kal_uint8*	text_string;
+		kal_uint8	dcs_of_text_string;
+	} mmi_sat_setup_idle_display_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint8	no_alpha_id;
+		kal_uint8*	alpha_id;
+		kal_uint8	is_alpha_id_present;
+		kal_uint8	dcs_of_alpha_id;
+		kal_uint8	no_at_command;
+		kal_uint8*	at_command;
+	} mmi_sat_run_at_command_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint8	no_alpha_id;
+		kal_uint8*	alpha_id;
+		kal_uint8	is_alpha_id_present;
+		kal_uint8	dcs_of_alpha_id;
+		kal_uint8	no_dtmf;
+		kal_uint8*	dtmf;
+	} mmi_sat_send_dtmf_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	dtmf_digit[MAX_CC_DTMF_BCD_LEN];
+		kal_uint8	no_digit;
+	} mmi_sat_send_dtmf_stage1_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	terminal_res;
+		kal_uint8	cause;
+	} mmi_sat_send_dtmf_stage1_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+		kal_uint8	additional_info;
+	} mmi_sat_send_dtmf_stage2_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sat_send_dtmf_stage2_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sat_abort_dtmf_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+	} mmi_sat_lang_notify_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sat_lang_notify_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	is_language_specified;
+		kal_uint8	iso639_language[2];
+	} mmi_sat_lang_notify_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+		kal_uint8	additional_res;
+	} mmi_sat_launch_browser_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sat_launch_browser_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint8	browser_mode;
+		kal_uint8	browser_identity;
+		kal_uint8	provision_file_id[10];
+		kal_uint8	no_alpha_id;
+		kal_uint8*	alpha_id;
+		kal_uint8	is_alpha_id_present;
+		kal_uint8	dcs_of_alpha_id;
+		kal_uint8	no_url;
+		kal_uint8*	url;
+		kal_uint8	no_bearer;
+		kal_uint8*	bearer;
+		kal_uint16	no_gateway;
+		kal_uint8*	gateway;
+		kal_uint8	dcs_of_gateway;
+	} mmi_sat_launch_browser_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	is_full_changed;
+		kal_uint8	refresh_type;
+		kal_uint8	num_of_file;
+		kal_uint16	file_list[120];
+	} mmi_sat_sim_file_change_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	event_list[3];
+		sat_procomm_struct	proactive_cmd;
+	} mmi_sat_setup_event_list_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	lang[2];
+	} mmi_sat_provide_lang_info_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	is_successful;
+	} mmi_sat_file_change_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	length;
+		kal_uint8	envelope_data[255];
+	} mmi_sat_envelope_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	sim_result;
+		kal_uint16	length;
+		kal_uint8	envelope_rsp[256];
+	} mmi_sat_envelope_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	length;
+		kal_uint8	terminal_rsp[255];
+	} mmi_sat_terminal_response_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_sat_terminal_response_rsp_struct;
+#endif /* defined(__SAT__) */
+/* STK_CE */
+#if defined(__SATCE__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_bool	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint8	bearer_type;
+		kal_uint8	no_alpha_id;
+		kal_uint8*	alpha_id;
+		kal_uint8	is_alpha_id_present;
+		kal_uint8	dcs_of_alpha_id;
+	} mmi_sat_open_channel_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+		kal_uint8	additional_info;
+	} mmi_sat_open_channel_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	terminal_res;
+	} mmi_sat_open_channel_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_bool	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint8	no_alpha_id;
+		kal_uint8*	alpha_id;
+		kal_uint8	is_alpha_id_present;
+		kal_uint8	dcs_of_alpha_id;
+	} mmi_sat_close_channel_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+	} mmi_sat_close_channel_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	terminal_res;
+	} mmi_sat_close_channel_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_bool	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint8	no_alpha_id;
+		kal_uint8*	alpha_id;
+		kal_uint8	is_alpha_id_present;
+		kal_uint8	dcs_of_alpha_id;
+	} mmi_sat_send_data_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+	} mmi_sat_send_data_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	terminal_res;
+		kal_uint8	cause;
+	} mmi_sat_send_data_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_bool	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint8	no_alpha_id;
+		kal_uint8*	alpha_id;
+		kal_uint8	is_alpha_id_present;
+		kal_uint8	dcs_of_alpha_id;
+	} mmi_sat_recv_data_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+	} mmi_sat_recv_data_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	terminal_res;
+		kal_uint8	cause;
+	} mmi_sat_recv_data_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	state;
+	} mmi_sat_notify_mmi_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_bool	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint8	bearer;
+		sat_gprs_bearer_para_struct	gprs_bearer;
+		sat_csd_bearer_para_struct	csd_bearer;
+		kal_uint16	buffer_size;
+		kal_uint8	size_of_address;
+		kal_uint8	addr[MAX_SIM_ADDR_BCD_LEN];
+		kal_uint8	size_of_subaddr;
+		kal_uint8	subaddr[MAX_SIM_ADDR_BCD_LEN];
+		kal_uint32	duration1;
+		kal_uint32	duration2;
+		kal_uint16	no_username;
+		kal_uint8	username[16];
+		kal_uint8	dcs_of_username;
+		kal_uint16	no_passwd;
+		kal_uint8	passwd[16];
+		kal_uint8	dcs_of_passwd;
+		kal_uint8	protocol_type;
+		kal_uint16	port_num;
+		kal_int16	no_local_addr;
+		kal_uint8	local_addr[16];
+		kal_int16	no_dest_addr;
+		kal_uint8	dest_addr[16];
+		kal_uint8	dns[4];
+		kal_uint8	apn[50];
+		kal_uint8	apn_length;
+		kal_uint8	no_alpha_id;
+		kal_uint8*	alpha_id;
+		kal_uint8	is_alpha_id_present;
+		kal_uint8	dcs_of_alpha_id;
+	} mmi_rsat_open_channel_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	ch_id;
+		kal_bool	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint8	no_alpha_id;
+		kal_uint8*	alpha_id;
+		kal_uint8	is_alpha_id_present;
+		kal_uint8	dcs_of_alpha_id;
+	} mmi_rsat_close_channel_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	ch_id;
+		kal_uint8	ch_type;
+		kal_bool	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint8	data_size;
+		kal_uint8	no_alpha_id;
+		kal_uint8*	alpha_id;
+		kal_uint8	is_alpha_id_present;
+		kal_uint8	dcs_of_alpha_id;
+		kal_uint8	no_data;
+		kal_uint8*	data;
+	} mmi_rsat_send_data_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	ch_id;
+		kal_uint8	ch_type;
+		kal_bool	is_icon_available;
+		sat_icon_struct	icon_info;
+		kal_uint8	ch_data_length;
+		kal_uint8	no_alpha_id;
+		kal_uint8*	alpha_id;
+		kal_uint8	is_alpha_id_present;
+		kal_uint8	dcs_of_alpha_id;
+	} mmi_rsat_recv_data_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	ch_id;
+	} mmi_rsat_ch_status_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	channel_status[2];
+		kal_uint8	channel_data_length;
+	} mmi_rsat_evdl_data_available_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_rsat_evdl_data_available_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	channel_status[2];
+	} mmi_rsat_evdl_channel_status_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_rsat_evdl_channel_status_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+		kal_uint8	cause;
+		kal_uint8	ch_status[2];
+		kal_uint8	bearer;
+		sat_gprs_bearer_para_struct	bearer_para;
+		kal_uint16	buffer_size;
+	} mmi_rsat_open_gprs_channel_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_rsat_open_gprs_channel_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+		kal_uint8	cause;
+		kal_uint8	ch_status[2];
+		kal_uint8	bearer;
+		sat_csd_bearer_para_struct	bearer_para;
+		kal_uint16	buffer_size;
+	} mmi_rsat_open_csd_channel_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_rsat_open_csd_channel_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+		kal_uint8	cause;
+		kal_uint8	ch_status[2];
+		kal_uint8	bearer;
+		kal_uint16	buffer_size;
+	} mmi_rsat_open_server_mode_channel_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_rsat_open_server_mode_channel_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+		kal_uint8	cause;
+	} mmi_rsat_close_channel_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_rsat_close_channel_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	ch_type;
+		kal_uint8	res;
+		kal_uint8	cause;
+		kal_uint8	ch_data_length;
+	} mmi_rsat_send_data_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_rsat_send_data_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	ch_type;
+		kal_uint8	res;
+		kal_uint8	cause;
+		kal_uint8	ch_data_length;
+		kal_uint8	no_data;
+		kal_uint8*	data;
+	} mmi_rsat_recv_data_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_rsat_recv_data_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cmd_detail[5];
+		kal_uint8	res;
+		kal_uint8	cause;
+		kal_uint8	channel_status[2];
+	} mmi_rsat_ch_status_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_rsat_ch_status_res_rsp_struct;
+#endif /* defined(__SATCE__) */
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	sn;
+		kal_uint16	mi;
+		kal_uint8	dcs;
+		kal_uint8	page;
+		kal_uint8	pages;
+		kal_uint16	msg_length;
+		kal_uint8	msg_data[1];
+	} mmi_cb_msg_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	on_off;
+	} mmi_cb_subscribe_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_cb_subscribe_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		l4c_cb_info_struct	info;
+	} mmi_sms_set_cb_mode_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_sms_set_cb_mode_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	mode;
+		kal_uint8	total_mid_num;
+		kal_uint8	total_mir_num;
+		kal_uint8	total_dcs_num;
+		l4c_cb_info_struct	info;
+	} mmi_sms_get_cb_mode_rsp_struct;
+/* Engineer Mode */
+#if defined(__EM_MODE__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	mod_id;
+		kal_uint32	em_info;
+		peer_buff_struct*	info;
+	} mmi_em_status_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	info_request[EM_INFO_REQ_NUM];
+	} mmi_em_update_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	cause;
+	} mmi_em_update_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		vt_em_config_struct	em_config;
+	} mmi_vt_em_get_config_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		vt_em_config_struct	em_config;
+	} mmi_vt_em_set_config_req_struct;
+#endif /* defined(__EM_MODE__) */
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	keypad_status;
+		kal_uint8	keypad_code;
+		kal_uint32	time_stamp;
+	} mmi_em_keypad_event_output_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_em_keypad_event_output_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	color;
+	} mmi_em_lcm_test_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	on_off;
+	} mmi_em_keypad_event_act_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	on_off;
+	} mmi_factory_test_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	op;
+		kal_uint8	category;
+		kal_uint8	param1;
+		kal_uint8	param2;
+		kal_uint8	param3;
+		kal_uint8	param4[10];
+	} mmi_set_mmi_default_prof_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	status;
+	} mmi_em_cell_resel_suspend_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	cause;
+	} mmi_em_cell_resel_suspend_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	cause;
+	} mmi_em_cell_resel_resume_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_bool	turn_on_or_off;
+		kal_bool	band_indicator;
+		kal_uint16	lock_arfcn;
+	} mmi_em_get_cell_lock_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	turn_on_or_off;
+		kal_bool	band_indicator;
+		kal_uint16	lock_arfcn;
+	} mmi_em_set_cell_lock_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_em_set_cell_lock_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint32	enabled_bitmap;
+		kal_bool	band_indicator;
+		kal_uint16	lock_arfcn[MAX_NUM_CELL_LOCK_ARFCN];
+	} mmi_em_ext_get_cell_lock_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint32	enabled_bitmap;
+		kal_bool	band_indicator;
+		kal_uint16	lock_arfcn[MAX_NUM_CELL_LOCK_ARFCN];
+	} mmi_em_ext_set_cell_lock_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_em_ext_set_cell_lock_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	type;
+		kal_uint16	red;
+		kal_uint16	green;
+		kal_uint16	blue;
+	} mmi_em_rgb_test_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	lcd_test_mode;
+	} mmi_em_lcd_test_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	is_on;
+		kal_uint8	num_of_mod;
+		module_type	mod_list[20];
+	} mmi_em_nw_event_notify_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_em_nw_event_notify_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	group_id;
+		kal_uint32	event_id;
+	} mmi_em_nw_event_notify_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	em_feature;
+		kal_uint8	em_feature_state;
+	} mmi_em_feature_command_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	em_feature;
+	} mmi_em_feature_command_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	conf_test_mode;
+		kal_uint32	test_profile;
+	} mmi_em_get_conform_test_param_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	conf_test_mode;
+		kal_uint32	test_profile;
+	} mmi_em_set_conform_test_param_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_int8	result;
+	} mmi_em_set_conform_test_param_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	test_count;
+		kal_uint8	test_list[L4C_EM_QUICK_TEST_MAX_COUNT];
+	} mmi_em_quick_test_report_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	action;
+		kal_uint8	line_num;
+	} mmi_cphs_display_cfu_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	is_spn_valid;
+		kal_uint8	is_spn_RPLMN_required;
+		kal_uint8	spn[LEN_OF_SPN];
+		kal_uint8	is_opname_valid;
+		kal_uint8	opname[21];
+		kal_uint8	is_sopname_valid;
+		kal_uint8	sopname[11];
+		kal_uint8	no_msisdn;
+		l4csmu_addr_struct	msisdn[2];
+		kal_uint8	no_info_num;
+		l4csmu_info_num_struct	info_num[20];
+		kal_uint8	is_valid_csp;
+		kal_uint8	csp[22];
+		kal_uint8	is_puct_valid;
+		kal_uint8	ef_puct[5];
+		kal_uint8	is_autolock_enable;
+		kal_uint8	autolock_result;
+		kal_uint8	autolock_remain;
+		kal_bool	is_valid_ef_acting_hplmn;
+		kal_uint8	ef_acting_hplmn[3];
+		kal_uint8	imsi[17];
+		kal_uint8	digits_of_mnc;
+		kal_bool	is_usim;
+		kal_bool	is_valid_ef_ehplmn;
+		kal_uint8	num_of_ehplmn;
+		kal_uint8	ef_ehplmn[12];
+	} mmi_cphs_mmi_info_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	line_id;
+	} mmi_cphs_update_als_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	res;
+		kal_uint16	cause;
+	} mmi_cphs_update_als_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	line;
+	} mmi_cphs_display_als_ind_struct;
+/* IrDA */
+#if defined(__IRDA_SUPPORT__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	wait_duration;
+	} mmi_eq_irda_open_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_irda_open_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_irda_close_rsp_struct;
+#endif /* defined(__IRDA_SUPPORT__) */
+/* USB */
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	folderId;
+		kal_uint8	retrievalMode;
+	} wap_mmc_read_folder_status_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+		kal_uint32 	numOfMsg;
+		kal_uint32	numOfUnreadMsg;
+		kal_uint8	mmsHomeDirectory[100];
+		kal_uint8	infoFilePath[100];
+	} wap_mmc_read_folder_status_output_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	filePath[100];
+	} wap_mmc_upload_msg_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+		kal_uint32	msgId;
+		kal_uint8	storage;
+	} wap_mmc_upload_msg_output_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint32	msgId;
+		kal_uint8	folderId;
+	} wap_mmc_delete_msg_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+	} wap_mmc_delete_msg_output_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint32	msgId;
+	} wap_mmc_read_msg_path_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+		kal_uint32	msgId;
+		kal_uint8	path[100];
+	} wap_mmc_read_msg_path_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	mode;
+		kal_uint8	dcs;
+		kal_uint8	text[UEM_GREETING_LEN];
+		kal_uint8	length;
+	} mmi_eq_query_greeting_text_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	lang_code;
+	} mmi_eq_query_language_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	mode;
+	} mmi_eq_query_silent_mode_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	mode;
+	} mmi_eq_query_vibrator_mode_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	is_date;
+	} mmi_eq_query_date_time_format_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	is_date;
+		kal_uint8	mode;
+	} mmi_eq_query_date_time_format_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	mode;
+	} mmi_eq_query_mute_mode_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	poweroff;
+		kal_uint8	poweron;
+		kal_uint8	rtc_timer;
+	} mmi_power_reset_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	string[80];
+	} mmi_at_general_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	pwd[16];
+	} mmi_factory_restore_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	src_id;
+		kal_uint8	mode;
+		kal_uint16	index;
+		kal_uint8	file_path[50];
+	} mmi_eq_vcard_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	mode;
+		kal_bool	result;
+		kal_uint8	file_path[50];
+	} mmi_eq_vcard_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	mode;
+		kal_uint16	vcal_type;
+		kal_uint16	index;
+		kal_uint8	file_path[50];
+	} mmi_eq_vcalendar_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	mode;
+		kal_bool	result;
+		kal_uint8	cause;
+		kal_uint8	total;
+		kal_uint8	used;
+		kal_uint8	index;
+		kal_uint8	file_path[50];
+	} mmi_eq_vcalendar_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	enable;
+	} mmi_eq_str_enable_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	length;
+		kal_uint8	data_string[250];
+	} mmi_eq_str_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint16	length;
+		kal_uint8	data_string[250];
+	} mmi_eq_str_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	action;
+		kal_uint8	source_id;
+		kal_bool	cmd_from_bt;
+		kal_uint8	length;
+		kal_uint8	number[50];
+		kal_uint8	opcode;
+		kal_uint8	call_id;
+	} mmi_ucm_at_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	source_id;
+		kal_uint8	result;
+		kal_uint8	cause;
+	} mmi_ucm_at_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	source_id;
+		kal_uint8	type;
+		kal_uint8	call_id;
+		kal_uint8	call_type;
+		l4c_number_struct	number;
+	} mmi_ucm_general_rcode_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	ind_type;
+		kal_uint8	event;
+	} mmi_ucm_hf_ciev_rcode_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	mode;
+		kal_uint8 	style;
+		kal_uint8	volume;
+		kal_uint8	out_path;
+		kal_uint16	sound_id;
+	} mmi_eq_ringtone_play_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint8	cause;
+	} mmi_eq_ringtone_play_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	is_force;
+		kal_wchar*	jad_file_name;
+		kal_wchar*	jar_file_name;
+	} mmi_java_local_install_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint32	error_code;
+	} mmi_java_local_install_res_req_struct;
+/* Bluetooth */
+#if defined(__BT_SUPPORT__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	name[32];
+		kal_uint8	bd_addr[6];
+		kal_uint8	dcs;
+	} mmi_l4_bt_fcty_set_param_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	bd_addr[6];
+		kal_uint8	pin_code[17];
+	} mmi_l4_bt_loopback_test_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	on_off;
+	} mmi_l4_bt_set_vr_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	on_off;
+	} mmi_l4_bt_set_vr_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_l4_bt_set_vr_rsp_struct;
+#endif /* defined(__BT_SUPPORT__) */
+/* HOMEZONE */
+#if defined(__HOMEZONE_SUPPORT__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	action;
+		kal_bool	is_hz;
+		kal_uint8	tag[12];
+	} mmi_hz_tag_ind_struct;
+#endif /* defined(__HOMEZONE_SUPPORT__) */
+/* CTM */
+#if defined(__CTM_SUPPORT__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	mode;
+	} mmi_ctm_set_status_req_struct;
+#endif /* defined(__CTM_SUPPORT__) */
+/* VOIP */
+#if defined(__VOIP__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+		kal_uint8	action;
+		void*	string_ptr;
+		void*	node_ptr;
+		void*	err_id;
+	} mmi_voip_at_call_ctrl_approve_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_voip_at_call_ctrl_approve_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	action;
+		void*	string_ptr;
+		void*	node_ptr;
+		void*	err_id;
+	} mmi_voip_at_call_ctrl_approve_ind_struct;
+#endif /* defined(__VOIP__) */
+/* GEMINI */
+#if defined(__GEMINI__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	new_sim_config;
+	} mmi_smu_sim_status_update_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	sim_inserted_status;
+		kal_uint8	dual_sim_mode_setting;
+	} mmi_smu_sim_status_update_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	on_off;
+	} mmi_nw_set_monitor_peer_pch_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_bool	on_off;
+	} mmi_nw_get_monitor_peer_pch_rsp_struct;
+#endif /* defined(__GEMINI__) */
+/* A-GPS Control Plane LCS Service */
+#if defined(__AGPS_CONTROL_PLANE__)
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		L4C_SS_LocationNotificationArg	notification;
+		kal_uint8	ss_id;
+	} mmi_ss_mtlr_begin_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		L4C_SS_LocationNotificationRes	response;
+		kal_uint8	ss_id;
+	} mmi_ss_mtlr_begin_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+		kal_uint8	ss_id;
+	} mmi_ss_mtlr_begin_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		L4C_SS_LCS_AreaEventRequestArg	aerq;
+		kal_uint8	ss_id;
+	} mmi_ss_aerq_begin_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cause;
+		kal_uint8	ss_id;
+	} mmi_ss_aerq_begin_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+		kal_uint8	ss_id;
+	} mmi_ss_aerq_begin_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		L4C_SS_LCS_AreaEventReportArg	aerp;
+		kal_uint8	ss_id;
+		kal_uint8	is_initial;
+	} mmi_ss_aerp_begin_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+		kal_uint16	cause;
+		kal_uint8	ss_id;
+	} mmi_ss_aerp_begin_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cause;
+		kal_uint8	ss_id;
+	} mmi_ss_aerp_end_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+	} mmi_ss_aerp_end_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		L4C_SS_LCS_AreaEventCancellationArg	aecl;
+		kal_uint8	ss_id;
+	} mmi_ss_aecl_begin_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cause;
+		kal_uint8	ss_id;
+	} mmi_ss_aecl_begin_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+		kal_uint8	ss_id;
+	} mmi_ss_aecl_begin_res_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		L4C_SS_LCS_MOLRArg	molr;
+		kal_uint8	ss_id;
+		kal_uint8	is_initial;
+	} mmi_ss_molr_begin_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+		kal_uint16	cause;
+		L4C_SS_LCS_MOLRRes	molr_res;
+		kal_uint8	ss_id;
+	} mmi_ss_molr_begin_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	cause;
+		kal_uint8	ss_id;
+	} mmi_ss_molr_end_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	result;
+	} mmi_ss_molr_end_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	enable;
+	} mmi_agps_enable_disable_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	sib15_current_deciphering_key[7];
+		kal_uint8	sib15_next_deciphering_key[7];
+		kal_uint8	sib15_ciphering_key_flag;
+	} mmi_agps_key_update_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	is_abort_molr;
+	} mmi_agps_cp_abort_req_struct;
+#endif /* defined(__AGPS_CONTROL_PLANE__) */
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	type;
+	} mmi_eq_ram_usage_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_int8	result;
+		kal_uint32	used;
+	} mmi_eq_ram_usage_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	type;
+		kal_uint8	mids_idx;
+		kal_uint16	midlet_idx;
+		kal_uint8	mode;
+		kal_uint16	appName[260];
+	} mmi_eq_launch_app_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_int8	result;
+	} mmi_eq_launch_app_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	type;
+		kal_uint8	op;
+	} mmi_eq_app_info_output_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	type;
+		kal_uint16	log[1000];
+	} mmi_eq_app_info_output_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	action;
+		kal_uint16	x_coords;
+		kal_uint16	y_coords;
+	} mmi_eq_screen_touch_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_int8	result;
+	} mmi_eq_screen_touch_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	mode;
+		kal_uint8 	orient;
+	} mmi_eq_scrnorient_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_int8	result;
+		kal_uint8	mode;
+	} mmi_eq_scrnorient_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_int8	result;
+		kal_uint16	max_x;
+		kal_uint16	max_y;
+	} mmi_eq_scrnsize_query_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	tscrn;
+	} mmi_eq_scrntch_event_act_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	action;
+		kal_uint16	x_coords;
+		kal_uint16	y_coords;
+	} mmi_eq_scrntch_event_output_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	op;
+	} mmi_eq_screen_shot_req_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_int8	result;
+		kal_uint8	op;
+		kal_wchar	file_path[30];
+	} mmi_eq_screen_shot_res_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	port;
+	} mmi_eq_uart_transfer_ind_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	port;
+	} mmi_eq_uart_transfer_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_uart_transfer_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	port;
+	} mmi_eq_uart_release_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+	} mmi_eq_uart_release_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8*	melody;
+		kal_uint32	len;
+		kal_uint8	format;
+		kal_uint8	play_style;
+		kal_uint16	identifier;
+		kal_uint32	start_offset;
+		kal_uint32	end_offset;
+		kal_uint8	volume;
+		kal_uint8	output_path;
+		kal_uint8	blocking;
+	} mmi_eq_play_audio_stream_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_eq_play_audio_stream_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_bool	result;
+		kal_uint16	cause;
+	} mmi_eq_stop_audio_stream_rsp_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_uint8	lcd_type;
+		kal_uint8	lcd_contrast;
+	} mmi_eq_lcd_set_contrast_req_struct;
+	typedef struct
+	{
+		LOCAL_PARA_HDR
+		kal_int32	result;
+	} mmi_eq_lcd_set_contrast_rsp_struct;
+
+/* Below are NOT script generated code struct */
+    typedef struct
+    {
+		LOCAL_PARA_HDR
+		kal_uint16 scrnid;
+#if defined(__COSMOS_MMI__) || defined(__MMI_VUI_LAUNCHER__)
+        kal_char  file[30];
+#endif
+    }mmi_inject_string_rsp_struct;
+
+    typedef struct
+    {
+        LOCAL_PARA_HDR
+        kal_uint16 ec_data;
+    } mmi_ecompass_msg_struct;
+
+    /* V33 BT test mode support */
+    typedef struct
+    {
+        LOCAL_PARA_HDR
+        kal_uint8 mode;
+        kal_uint8 bd_addr[6];
+    } bt_adv_test_mode_req_struct;
+    typedef struct
+    {
+        LOCAL_PARA_HDR
+        kal_bool result;
+        kal_uint8 mode;
+        kal_uint16 cause;
+    } bt_adv_test_mode_cnf_struct;
+
+#endif
diff --git a/mcu/interface/protocol/general/mmi_sm_enums.h b/mcu/interface/protocol/general/mmi_sm_enums.h
new file mode 100644
index 0000000..a0949ed
--- /dev/null
+++ b/mcu/interface/protocol/general/mmi_sm_enums.h
@@ -0,0 +1,172 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   mmi_sm_enums.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _MMI_SM_ENUMS_H
+#define _MMI_SM_ENUMS_H
+
+#define MAX_CONFIG_OPTION_LEN   251
+
+//#include "custom_nvram_editor_data_item.h"
+//------------------------------ suggest Add ------------------------------
+//#include "mmi2abm_struct.h"
+//------------------------------ suggest Add ------------------------------
+#include "ps_public_enum.h"    /* Poying: MAUI_02735345 */
+#include "mmi_sm_enums_public.h"
+/* Modified by: CH_Liang 2005.04.26
+ * Description: the length of user_name and password are configurable.
+ */
+#define TCM_MAX(A, B)   (((A) > (B)) ? (A):(B))
+
+/* Poying: MSBB. Move to ps_public_enum.h. */
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#if (MAX_CONFIG_OPTION_CONTENT_LEN > LIMIT_CONFIG_OPTION_CONTENT_LEN)
+/* under construction !*/
+#endif
+#if (TCM_MAX_GPRS_APN_LEN > 100)
+/* under construction !*/
+#endif
+/* under construction !*/
+#endif 
+
+typedef enum
+{
+    MS_INITIATED = 0,
+    NW_INITIATED = 1
+}initiated_enum;
+
+typedef enum
+{
+    NO_TEARDOWN  = 0,
+    TEARDOWN_ALL = 1
+}teardown_enum;
+
+typedef enum
+{
+    NO_OP_TFT = 0,
+    CREATE_NEW_TFT = 1,
+    DELETE_EXISTING_TFT = 2,
+    ADD_PKT_FILTER_TO_TFT = 3,
+    REPLACE_PKT_FILTER_IN_TFT = 4,
+    DELETE_PKT_FILTER_FROM_TFT = 5
+} tft_opcode_enum;
+
+#endif
+
+
diff --git a/mcu/interface/protocol/general/mnsms_struct.h b/mcu/interface/protocol/general/mnsms_struct.h
new file mode 100644
index 0000000..b30185a
--- /dev/null
+++ b/mcu/interface/protocol/general/mnsms_struct.h
@@ -0,0 +1,333 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   mnsms_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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.
+*
+********************************************************************************/
+
+/*******************************************************************************
+*  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) 2002
+*
+*******************************************************************************
+ *  FILENAME : mnsms_struct.h
+ *  SYNOPSIS : Functions for encoding/decoding.
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef _MNSMS_STRUCT_H
+#define _MNSMS_STRUCT_H
+
+#include "ps_public_struct.h"
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "smsal_l4c_enum.h"
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 error_type; /* cp or rp error*/
+    kal_uint16 error_cause;
+} sms_err_info_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 smi; /* short message identifier*/
+    kal_uint8 seq_num;
+} sms_submit_abort_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 result; /* Indicate the result of aborting request*/
+} sms_submit_abort_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 smi; /* short message identifier*/
+    kal_uint8 src_id; /* identify background sending or else */
+    kal_uint8  mms_mode; /* more msg to send */
+    sms_addr_struct sc_addr; /* service centre address*/
+    kal_uint8 seq_num;
+	kal_bool  is_stk_sms;
+} sms_submit_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 smi; /* short message identifier*/
+	kal_bool is_nack_converted_to_ack;	/*Identify whether to consider RP_ERROR as RP_ACK or not */
+} sms_submit_report_ack_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 smi; /* short message identifier*/
+    sms_err_info_struct err_info;
+} sms_submit_report_nack_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 smi; /* short message identifier*/
+    sms_addr_struct sc_addr; /* service centre address*/
+} sms_deliver_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_uint8 sc_addr[22]; /* service centre address */
+    
+    kal_uint8 reply_flag; /* whether reply is sought*/
+    kal_uint8 udh_p; /* indicates presence of user data header*/
+    kal_uint8 status_rep_flag; /* whether status reports are sought*/
+    kal_uint8 mms; /* more message to send*/
+    kal_uint8 orig_addr[22]; /* assumed to be byte-packed*/
+    kal_uint8 pid; /* to be bit-wise decoded*/
+    kal_uint8 dcs; /* to be bit-wise decoded*/
+    kal_uint16 year;
+    kal_uint8 nMonth;
+    kal_uint8 nDay;
+    kal_uint8 nHour;
+    kal_uint8 nMin;
+    kal_uint8 nSec;
+
+    kal_uint8 user_data[161]; /* can have user data header also*/
+} smsal_tst_deliver_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 smi; /* short message identifier*/
+} sms_deliver_report_ack_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 smi; /* short message identifier*/
+} sms_deliver_report_nack_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 smi; /* short message identifier*/
+    sms_addr_struct sc_addr; /* service centre address*/
+} sms_status_report_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 smi; /* short message identifier*/
+    kal_uint8 src_id; /* identify background sending or else */
+    kal_uint8  mms_mode; /* more msg to send */
+    sms_addr_struct sc_addr; /* service centre address*/
+    kal_uint8 seq_num;
+} sms_command_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 result; /* Indicate the result of mem avl. notif.*/
+} sms_mem_avl_notif_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 mr; /* Message Reference*/
+    kal_uint8 src_id; /* identify background sending or else */
+    kal_uint8 req_type; /* Indicate request type: send or about mem avl. notif.*/
+} sms_mem_avl_notif_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 mode; /* mode of MMS*/
+} sms_more_msg_send_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+	kal_uint8 service_bit_mask; // bit mask to indicate which var should be updated
+    kal_uint8 service; /* preferred service*/
+	kal_uint8 nr_service; /* NR preferred service*/
+} sms_service_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8  tl_id; /* re-try tl_id */
+} sms_try_next_bearer_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8  smi;
+    kal_uint8  result;
+    kal_uint32 cause;
+} sms_mt_final_ack_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool enable;
+} sms_enable_sms_over_sgs_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+	kal_uint8 bitmap;
+} sms_set_stub_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    l4csms_cs_call_status_enum cs_call_status;
+} l4csms_cs_call_status_req_struct;
+
+typedef struct {
+	LOCAL_PARA_HDR
+	vdm_call_domain_enum call_domain_name;
+} l4csms_call_domain_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 ref; /* concat. message reference*/
+    kal_uint8 total_seg; /* total segments*/
+    kal_uint32 seg_bitmask;/* bit1 is the 1st segment and so on, bit=0 not received,bit=1 received  */
+} sms_imcsms_mt_long_sms_info_ind_struct,imcsms_sms_mt_long_sms_info_ind_struct;
+
+
+#endif 
+
+
diff --git a/mcu/interface/protocol/general/mrs_as_inter_core_def.h b/mcu/interface/protocol/general/mrs_as_inter_core_def.h
new file mode 100644
index 0000000..3df9ece
--- /dev/null
+++ b/mcu/interface/protocol/general/mrs_as_inter_core_def.h
@@ -0,0 +1,195 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2007
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ *   mrs_as_inter_core_def.h
+ *
+ * Project:
+ * --------
+ *   UMOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ******************************************************************************/
+
+#ifndef __MRS_AS_INTER_CORE_DEF_H__
+#define __MRS_AS_INTER_CORE_DEF_H__
+
+#include "as_inter_core_enum.h"
+
+/*****************************************************************************
+ * GSM Inter-Core Definitions
+ *****************************************************************************/
+
+/*****************************************************************************
+ * UMTS Inter-Core Definitions
+ *****************************************************************************/
+ 
+ /*****************************************************************************
+ * LTE Inter-Core Definitions
+ *****************************************************************************/
+#define LTE_BAND_NUM         SIZE_LTE_BAND * 8
+#define LTE_BAND_NUM_EXTENDED ( SIZE_LTE_BAND_MASK_TABLE_EXTENDED * 8 )
+
+#define EAS_BAND_INFO_SHIFT  5
+#define EAS_POWER_CLASS_MASK 0x0c
+#define LTE_BAND_INVALID     0xffff
+#define NR_BAND_INVALID      0xffff
+#define LTE_FREQ_INVALID     0xffffffff  
+#define NR_FREQ_INVALID      0xffffffff  
+#define LTE_EARFCN_INVALID   0xffffffff
+#define EAS_EF_ERRC_PARTIAL_BAND_NUM 10
+#define IRAT_EUTRA_CAPA_MAX_LEN 1000 //should be smaller than "URR MAX_L2_EXTERNAL_SDU_SIZE(1800) - other RAT self capability size"
+#define NR_QUERY_EUTRA_CAPA_MAX_LEN 999 //TBD
+#define NR_BAND_INFO_SHIFT   41
+
+#ifdef __CHANNEL_LOCK__
+#define MRS_CH_LOCK_PCI_INVALID 0xFFFF
+#define MRS_CH_LOCK_PSC_INVALID 0xFFFF
+#define MRS_CH_LOCK_NR_PCI_MAX 1007
+#define MRS_CH_LOCK_PCI_MAX 503
+#define MRS_CH_LOCK_PSC_MAX 511
+#define MRS_CH_LOCK_BAND_INDICATOR_DCS1800 0
+#define MRS_CH_LOCK_BAND_INDICATOR_PCS1900 1
+
+/* LOCK MODE */
+#define MRS_CH_LOCK_IDLE_ONLY 0x0
+#define MRS_CH_LOCK_IDLE_MR 0x1
+#define MRS_CH_LOCK_IDLE_HOCCO 0x2
+#define MRS_CH_LOCK_IDLE_CONNECTED 0x3
+#define MRS_CH_LOCK_MODE_UNCHANGED 0xFF
+
+/* Procedures on Locked Channel */
+#define MRS_CH_LOCK_MR_LOCK_BIT 0x01
+#define MRS_CH_LOCK_HO_CCO_LOCK_BIT 0x02
+
+#ifdef __WHITE_CELL_LOCK__
+#define MRS_WH_CELL_LOCK_STATE_INACTIVE 0x00
+#define MRS_WH_CELL_LOCK_STATE_EAS_LOCK 0x01
+#define MRS_WH_CELL_LOCK_STATE_NRAS_LOCK 0x02
+#endif /* __WHITE_CELL_LOCK__ */
+
+#endif /* __CHANNEL_LOCK__ */
+#endif /* __MRS_AS_INTER_CORE_DEF_H__ */
diff --git a/mcu/interface/protocol/general/mrs_as_inter_core_enum.h b/mcu/interface/protocol/general/mrs_as_inter_core_enum.h
new file mode 100644
index 0000000..f274fa8
--- /dev/null
+++ b/mcu/interface/protocol/general/mrs_as_inter_core_enum.h
@@ -0,0 +1,140 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2007
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ *   mrs_as_inter_core_enum.h
+ *
+ * Project:
+ * --------
+ *   UMOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ******************************************************************************/
+
+#ifndef __MRS_AS_INTER_CORE_ENUM_H__
+#define __MRS_AS_INTER_CORE_ENUM_H__
+
+/*****************************************************************************
+ * GSM Inter-Core Definitions
+ *****************************************************************************/
+typedef enum{
+    UTRA_POWER_CLASS_1,
+    UTRA_POWER_CLASS_2,
+    UTRA_POWER_CLASS_3,
+    UTRA_POWER_CLASS_3bis,
+    UTRA_POWER_CLASS_4,
+    UTRA_POWER_CLASS_INVALID = -1
+} mrs_utra_power_class_enum;
+
+/*****************************************************************************
+ * UMTS Inter-Core Definitions
+ *****************************************************************************/
+ typedef enum
+ {
+    GSM_POWER_CLASS_1,
+    GSM_POWER_CLASS_2,
+    GSM_POWER_CLASS_3,
+    GSM_POWER_CLASS_4,
+    GSM_POWER_CLASS_5,
+    GSM_POWER_CLASS_INVALID = -1      /* for non-supported band */
+} mrs_gsm_power_class_enum;
+
+ /*****************************************************************************
+ * LTE Inter-Core Definitions
+ *****************************************************************************/
+ 
+ /*****************************************************************************
+ * NR Inter-Core Definitions
+ *****************************************************************************/
+typedef enum
+{
+    MRS_NR_SCS_15 = 0,
+    MRS_NR_SCS_30 = 1,
+    MRS_NR_SCS_60 = 2,
+    MRS_NR_SCS_120 = 3,
+    MRS_NR_SCS_240 = 4,
+    MRS_NR_SCS_TYPE_NUM,
+    MRS_NR_SCS_UNKNOWN = 0xFF	
+} mrs_nr_scs_enum;
+ 
+ /****************************************************************************
+ * CHANNEL LOCK FEATURE
+ ****************************************************************************/
+#ifdef __CHANNEL_LOCK__
+typedef enum
+{
+    MRS_CH_LOCK_STATE_INACTIVE,
+    MRS_CH_LOCK_STATE_GAS_LOCK,
+    MRS_CH_LOCK_STATE_UAS_LOCK,
+    MRS_CH_LOCK_STATE_EAS_LOCK,
+    MRS_CH_LOCK_STATE_NRAS_LOCK
+} MRS_CH_LOCK_STATE;
+
+#endif /* __CHANNEL_LOCK__ */
+#endif /* __MRS_AS_INTER_CORE_ENUM_H__ */
diff --git a/mcu/interface/protocol/general/mrs_as_inter_core_struct.h b/mcu/interface/protocol/general/mrs_as_inter_core_struct.h
new file mode 100644
index 0000000..291fc98
--- /dev/null
+++ b/mcu/interface/protocol/general/mrs_as_inter_core_struct.h
@@ -0,0 +1,167 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2007
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ * Filename:
+ * ---------
+ *   mrs_as_inter_core_struct.h
+ *
+ * Project:
+ * --------
+ *   UMOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ *
+ *
+ *------------------------------------------------------------------------------
+ * $Log$
+ *
+ * 09 18 2020 tom.wu
+ * [MOLY00554348] [Colgin] cell measure and white cell lock feature development
+ * 	
+ * 	.
+ *
+ * 09 24 2019 stanley.su
+ * [MOLY00441807] [MT6297][CBRS]NR Channel lock
+ * 	
+ * 	Channel lock interface(SWRD)
+ *
+ * 11 10 2016 vend_mtb_aricent_05
+ * [MOLY00212319] [MT6293] Channel Lock feature porting and enhancement -MRS
+ * 	
+ * 	.
+ *
+ *
+ ******************************************************************************/
+
+#ifndef __MRS_AS_INTER_CORE_STRUCT_H__
+#define __MRS_AS_INTER_CORE_STRUCT_H__
+
+#include "as_inter_core_enum.h"
+
+
+#include "mrs_as_inter_core_enum.h"
+#include "global_type.h"
+
+/*****************************************************************************
+ * GSM Inter-Core Definitions
+ *****************************************************************************/
+/* power_class_struct is used by ERRC */
+typedef struct{
+    mrs_gsm_power_class_enum  pow_class_band450;
+    mrs_gsm_power_class_enum  pow_class_band480;
+    mrs_gsm_power_class_enum  pow_class_band710;
+    mrs_gsm_power_class_enum  pow_class_band750;
+    mrs_gsm_power_class_enum  pow_class_band810;
+    mrs_gsm_power_class_enum  pow_class_band850;
+    mrs_gsm_power_class_enum  pow_class_band900P;
+    mrs_gsm_power_class_enum  pow_class_band900E;
+    mrs_gsm_power_class_enum  pow_class_band900R;
+    mrs_gsm_power_class_enum  pow_class_band1800;
+    mrs_gsm_power_class_enum  pow_class_band1900;
+}mrs_gsm_power_class_struct;
+
+/*****************************************************************************
+ * UMTS Inter-Core Definitions
+ *****************************************************************************/
+ 
+ /*****************************************************************************
+ * LTE Inter-Core Definitions
+ *****************************************************************************/
+ 
+ /*****************************************************************************
+ * NR Inter-Core Definitions
+ *****************************************************************************/
+ 
+ /****************************************************************************
+ * CHANNEL LOCK FEATURE
+ ****************************************************************************/
+#ifdef __CHANNEL_LOCK__
+
+#define MRS_CH_LOCK_NR_MAX_NUM 32
+#define MRS_CH_LOCK_LTE_MAX_NUM 32
+
+typedef struct
+{
+    kal_uint16 nr_band_indicator;
+    NRARFCN nr_dl_arfcn;
+    kal_uint16 pci;
+    mrs_nr_scs_enum scs;
+} mrs_ch_lock_nras_info_struct;
+
+typedef struct
+{
+    EARFCN earfcn;
+    kal_uint16 pci;
+} mrs_ch_lock_eas_info_struct;
+
+typedef struct
+{
+    kal_uint16 uarfcn;
+    kal_uint16 psc;
+} mrs_ch_lock_uas_info_struct;
+
+typedef struct
+{
+    kal_uint16 arfcn;
+    kal_uint8 band_indicator;
+} mrs_ch_lock_gas_info_struct;
+
+
+typedef struct
+{
+    MRS_CH_LOCK_STATE lock_state;
+
+    kal_uint8 nras_info_num;
+    mrs_ch_lock_nras_info_struct nras_info_list[MRS_CH_LOCK_NR_MAX_NUM];
+
+    kal_uint8 eas_info_num;
+    mrs_ch_lock_eas_info_struct eas_info_list[MRS_CH_LOCK_LTE_MAX_NUM];
+
+    mrs_ch_lock_uas_info_struct uas_info;
+    mrs_ch_lock_gas_info_struct gas_info;
+    kal_uint8 lock_mode;
+#ifdef __WHITE_CELL_LOCK__
+    kal_uint8 wh_cell_lock_state;
+#endif /*__WHITE_CELL_LOCK__ */
+} mrs_ch_lock_info_struct;
+#endif /*__CHANNEL_LOCK__ */
+
+#endif /* __MRS_AS_INTER_CORE_STRUCT_H__ */
diff --git a/mcu/interface/protocol/general/mspm_public_api.h b/mcu/interface/protocol/general/mspm_public_api.h
new file mode 100644
index 0000000..5ad32ae
--- /dev/null
+++ b/mcu/interface/protocol/general/mspm_public_api.h
@@ -0,0 +1,358 @@
+/******************************************************************************
+*  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) 2018
+*
+*  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).
+*
+*******************************************************************************/
+ 
+#ifndef MSPM_PUBLIC_STRUCT_H
+#define MSPM_PUBLIC_STRUCT_H
+
+#include "kal_public_defs.h"
+ 
+/********************************************
+ *                  MACROS                  *
+ ********************************************/
+#if !defined(__MTK_TARGET__) && !defined(__UE_SIMULATOR__)
+#ifndef MSPM_UT
+#define MSPM_UT
+#endif
+#endif
+
+#define MSPM_MAX_PRIORITY_LEVEL 32
+
+/********************************************
+ *         TYPE DEFINITIONS & ENUMS         *
+ ********************************************/
+typedef enum
+{
+    MSPM_PROC_ATTR_AS_CONNECTION,
+    MSPM_PROC_ATTR_C2K_AS_CONNECTION,
+    MSPM_PROC_ATTR_PRIORITY_CAN_CHANGE,
+    MSPM_PROC_ATTR_PREEMPTED_BY_PEER_NOT_ALLOWED,
+    MSPM_PROC_ATTR_OCCUPY_RF_IMMEDIATELY,
+    MSPM_PROC_ATTR_SUSPEND_PEER_SIM,
+    MSPM_PROC_ATTR_23G_NAS_PS_SIG,
+    MSPM_PROC_ATTR_MAX_NUM
+} mspm_procedure_attribute_enum;
+
+typedef enum
+{
+    MSPM_CELLULAR_EMERGENCY_CALL_SESSION,
+    MSPM_CELLULAR_CALL_SESSION,
+    MSPM_CELLULAR_CONNECTED_CALL_SESSION,
+    MSPM_CELLULAR_SRVCC_CALL_SESSION,
+    MSPM_VODATA_CALL_SESSION,
+    MSPM_VODATA_EMERGENCY_CALL_SESSION,
+    MSPM_IMS_CALL_ALT1,
+    MSPM_IMS_CALL_ALT2,
+    MSPM_BIP, 
+    MSPM_CS_CALL, 
+    MSPM_SMS, 
+    MSPM_MMS, 
+    MSPM_DDM_RETRY_FOR_SUSPEND,
+    MSPM_CISS, 
+    MSPM_XCAP_SS, 
+    MSPM_DATA_SIM, 
+    MSPM_RSIM, 
+    MSPM_PROTECT_NON_PS_REGISTRATION, 
+    MSPM_AFR_SIM_PROTECT, 
+    MSPM_1X_CS_CALL, 
+    MSPM_IMS_SMS, 
+    MSPM_IMS_C2K_SMS,
+    MSPM_IMS_STK_SMS,
+    MSPM_IMS_CMSS_SMS,
+    MSPM_IMS_UTK_SMS,
+    MSPM_IMS_RE_REG, 
+    MSPM_IMS_REG_INITIAL, 
+    MSPM_IMS_REG_INITIAL_LOW, 
+    MSPM_IMS_SUBSCRIBE, 
+    MSPM_IMS_USSD, 
+    MSPM_IMS_CONF_SUBSCRIBE, 
+    MSPM_IMS_MWI_SUBSCRIBE, 
+    MSPM_IMS_CALLPULL_SUBSCRIBE, 
+    MSPM_SM_ACT_PDP, 
+    MSPM_SM_ACT_PDP_TOP,
+    MSPM_SM_ACT_PDP_RETRY, 
+    MSPM_SM_MOD_PDP, 
+    MSPM_SM_DEACT_PDP, 
+    MSPM_SM_DEACT_PDP_RETRY, 
+    MSPM_C2K_ACT_PDP, 
+    MSPM_C2K_DEACT_PDP, 
+    MSPM_C2K_HIGH_DATA, 
+    MSPM_C2K_SMS, 
+    MSPM_MM_LU, 
+    MSPM_MM_IMSI_DETACH, 
+    MSPM_MM_CSFB, 
+    MSPM_MM_3G_CS_PAGING, 
+    MSPM_MM_CS_SIG, 
+    MSPM_MM_PS_SIG, 
+    MSPM_GMM_ATTACH, 
+    MSPM_GMM_ATTACH_POWER_ON, 
+    MSPM_GMM_ATTACH_RETRANSMIT,
+    MSPM_GMM_ATTACH_NON_DATA_SIM,
+    MSPM_GMM_ATTACH_NON_DATA_SIM_LOW,
+    MSPM_AFR_CONN_PROTECT,
+    MSPM_GMM_DETACH, 
+    MSPM_GMM_DETACH_POWER_OFF, 
+    MSPM_GMM_RAU, 
+    MSPM_GMM_RAU_DDS, 
+    MSPM_GMM_RAU_RETRANSMIT, 
+    MSPM_GMM_RAU_SYNC,
+    MSPM_GMM_RAU_NON_DATA_SIM,
+    MSPM_GMM_SERVICE, 
+    MSPM_GMM_COMBINED_ATTACH, 
+    MSPM_GMM_COMBINED_ATTACH_POWER_ON, 
+    MSPM_GMM_COMBINED_DETACH, 
+    MSPM_GMM_COMBINED_DETACH_POWER_OFF, 
+    MSPM_GMM_COMBINED_RAU, 
+    MSPM_ESM_ACT_PDN, 
+    MSPM_ESM_ACT_PDN_IMS, 
+    MSPM_ESM_ACT_PDN_EMC, 
+    MSPM_ESM_ACT_BEARER, 
+    MSPM_ESM_MOD_BEARER, 
+    MSPM_ESM_DEACT_PDN, 
+    MSPM_ESM_IMS_DED, 
+    MSPM_EMM_ATTACH, 
+    MSPM_EMM_DETACH, 
+    MSPM_EMM_DETACH_POWER_OFF, 
+    MSPM_EMM_DETACH_RSIM, 
+    MSPM_EMM_TAU, 
+    MSPM_EMM_TAU_IRAT, 
+    MSPM_EMM_TAU_DRB, 
+    MSPM_EMM_TAU_RSIM, 
+    MSPM_EMM_TAU_RETRY, 
+    MSPM_EMM_TAU_CSFB,
+    MSPM_EMM_TAU_AFR_NR,
+    MSPM_EMM_SERVICE, 
+    MSPM_EMM_SERVICE_RSIM, 
+    MSPM_EMM_EXT_SERVICE, 
+    MSPM_EMM_PS_PAGING,
+    MSPM_EMM_SMC,
+    MSPM_5G_AS_CONNECTION,
+    MSPM_5G_AS_INACTIVE,
+    MSPM_5G_AS_RNA_UPDATE,
+    MSPM_4G_AS_CONNECTION,
+    MSPM_4G_AS_CONNECTION_ABORT,
+    MSPM_4G_AS_RECONFIG_DURING,
+    MSPM_3G_AS_CONNECTION, 
+    MSPM_3G_AS_PCH, 
+    MSPM_2G_AS_CONNECTION_CS, 
+    MSPM_2G_AS_CONNECTION_PS, 
+    MSPM_C1X_AS_CONNECTION_CS, 
+    MSPM_C1X_AS_CONNECTION_SRLTE_ENHAN, 
+    MSPM_C1X_AS_CONNECTION_PS, 
+    MSPM_CDO_AS_CONNECTION_PS, 
+    MSPM_CDO_AS_CONNECTION_HPS,
+    MSPM_VGSM_EST_EMERGENCY_PDU_SESSION, 
+    MSPM_VGSM_EST_IMS_PDU_SESSION,
+    MSPM_VGSM_EST_PDUS,
+    MSPM_VGSM_MOD_PDUS,
+    MSPM_VGSM_REL_PDUS,
+    MSPM_VGSM_CONN_REQ,
+    MSPM_VGMM_REG,
+    MSPM_VGMM_DEREG,
+    MSPM_VGMM_DEREG_POWER_OFF,
+    MSPM_VGMM_REG_UPDATE,
+    MSPM_VGMM_REG_UPDATE_IRAT,
+    MSPM_VGMM_REG_UPDATE_UP,
+    MSPM_VGMM_SERVICE,
+    MSPM_VGMM_PS_PAGING,
+    MSPM_VGMM_PS_PAGING_NON_PREEMPTED,
+    MSPM_VGMM_PAGING_DRB,
+    MSPM_VGMM_IRAT_PROTECT,
+    MSPM_ERRC_TEST_RFDB_CHECK,
+    MSPM_ERRC_CONFIG_RFDB_CHECK,
+    MSPM_NRRC_TEST_RFDB_CHECK,
+    MSPM_NRRC_CONFIG_RFDB_CHECK,
+    MSPM_EL1_RFDB_CONFIG,
+    MSPM_NL1_RFDB_CONFIG,
+    MSPM_MT_SGS_SMS,
+    MSPM_MT_IMS_SMS,
+    MSPM_GEMINI_ABORT_4G_PROTECT,
+    MSPM_NRRC_ODSI_RA_HIGH,
+    MSPM_NRRC_ODSI_RA_LOW,
+    MSPM_PRE_GEMINI_ABORT,
+    MSPM_IMSM_ACT,
+    MSPM_ERRC_NR_GAPLESS_SFTD,
+    MSPM_NFR_PROTECT,
+    MSPM_OTTAPP_VV_TOP,
+    MSPM_LPP_POS_MEAS_MEM_SHARE,
+    MSPM_N3GPP_ACT_PDN,
+    MSPM_N3GPP_ACT_PDN_IMS,
+    MSPM_N3GPP_ACT_PDN_EMC,
+    MSPM_N3GPP_IKEV2_EXCHANGE,
+    MSPM_PROCEDURE_ENUM_NUM
+} mspm_procedure_enum;
+ 
+typedef enum
+{
+    MSPM_SIM1 = 0,
+    MSPM_SIM2 = 1,
+    MSPM_SIM3 = 2,
+    MSPM_SIM4 = 3,
+    MSPM_SIM_NONE = 0xFF
+} mspm_sim_index_enum;
+
+typedef enum
+{
+    MSPM_VC_CAUSE_NONE,
+    MSPM_VC_CAUSE_SRLTE,
+    MSPM_VC_CAUSE_RSIM,
+    MSPM_VC_CAUSE_SIGNALING
+} mspm_vc_cause_enum;
+
+// MSG_ID_MSPM_SESSION_START_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+    mspm_sim_index_enum sim_index; // sim_index in current module
+    mspm_procedure_enum procedure; // procedure to be started
+    kal_bool is_block_waiting;     // TRUE  : Source module will wait CNF message with result success for "wait_time" seconds
+                                   // False : MSPM will reply the request immediately no matter success or fail CNF
+    kal_uint32 wait_time;          // "wait_time" seconds for "wait_time">0. In case "wait_time" = 0, it means infinitely wait
+} mspm_session_start_req_struct;
+
+// MSG_ID_MSPM_SESSION_START_CNF
+typedef struct
+{
+    LOCAL_PARA_HDR
+    mspm_procedure_enum procedure;
+    kal_bool result;               // TRUE : success; FALSE : fail
+} mspm_session_start_cnf_struct;
+
+// MSG_ID_MSPM_SESSION_START_NTF
+typedef struct
+{
+    LOCAL_PARA_HDR
+    mspm_sim_index_enum sim_index;
+    mspm_procedure_enum procedure;
+} mspm_session_start_ntf_struct;
+
+// MSG_ID_MSPM_SESSION_END_NTF
+typedef struct
+{
+    LOCAL_PARA_HDR
+    mspm_sim_index_enum sim_index;
+    mspm_procedure_enum procedure;
+    kal_bool is_extend_timer_disable;
+} mspm_session_end_ntf_struct;
+
+// MSG_ID_MSPM_AS_SESSION_START_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+    mspm_sim_index_enum sim_index;
+    mspm_procedure_enum procedure;
+    kal_uint32 mspm_ack_id; // 0: from primitive, none 0: from callback function
+} mspm_as_session_start_req_struct;
+
+// MSG_ID_MSPM_AS_SESSION_START_CNF
+typedef struct
+{
+    LOCAL_PARA_HDR
+    mspm_procedure_enum procedure;
+    kal_bool result;
+} mspm_as_session_start_cnf_struct;
+
+// MSG_ID_MSPM_AS_SESSION_END_NTF
+typedef struct
+{
+    LOCAL_PARA_HDR
+    mspm_sim_index_enum sim_index;
+    mspm_procedure_enum procedure;
+    kal_uint32 mspm_ack_id; // 0: from primitive, none 0: from callback function
+} mspm_as_session_end_ntf_struct;
+
+// MSG_ID_MSPM_RF_OWNER_CHANGE_NTF
+typedef struct
+{
+    LOCAL_PARA_HDR
+    mspm_sim_index_enum rf_owner;
+} mspm_rf_owner_change_ntf_struct;
+
+// MSG_ID_MSPM_RF_OWNER_PRIORITY_CHANGE_NTF
+typedef struct
+{
+    LOCAL_PARA_HDR
+    mspm_sim_index_enum rf_owner;
+    kal_uint8 priority;
+} mspm_rf_owner_priority_change_ntf_struct;
+
+// MSG_ID_MSPM_AS_LEAVE_VC_SUSPEND_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+    mspm_sim_index_enum sim_index;
+} mspm_as_leave_vc_suspend_req_struct; 
+
+// MSG_ID_MSPM_XL1_DR_STATUS_IND
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_dr_enable;
+} mspm_xl1_dr_status_ind_struct; 
+/********************************************
+ *                VARIABLES                 *
+ ********************************************/
+ 
+/********************************************
+ *           FUNCTION DECLARATIONS          *
+ ********************************************/
+extern kal_bool mspm_as_session_start_request(mspm_sim_index_enum sim_index, module_type mod_src, mspm_procedure_enum procedure);
+extern void mspm_as_session_end_ntf(mspm_sim_index_enum sim_index, module_type mod_src, mspm_procedure_enum procedure);
+
+extern mspm_sim_index_enum mspm_query_rf_owner(void);
+extern kal_bool mspm_is_this_sim_rf_owner(mspm_sim_index_enum sim_index);
+extern kal_uint8 mspm_query_sim_priority(mspm_sim_index_enum sim_index);
+extern kal_bool mspm_is_proc_ongoing(mspm_sim_index_enum sim_index, mspm_procedure_enum procedure);
+extern kal_uint8 mspm_query_proc_priority(mspm_procedure_enum procedure);
+extern kal_uint8 mspm_query_num_of_ongoing_proc(mspm_sim_index_enum sim_index);
+extern mspm_sim_index_enum mspm_query_sim_index_with_highest_ongoing_proc(mspm_sim_index_enum current_sim_index);
+extern kal_uint8 mspm_query_ongoing_proc_num_with_attr(mspm_sim_index_enum sim_index, mspm_procedure_attribute_enum proc_attr);
+extern kal_uint8 mspm_query_ongoing_as_session_num(mspm_sim_index_enum sim_index);
+extern kal_bool mspm_query_proc_attr(mspm_procedure_enum procedure, mspm_procedure_attribute_enum proc_attr);
+extern kal_bool mspm_is_any_peer_sim_proc_ongoing(mspm_sim_index_enum current_sim_index, mspm_procedure_enum procedure);
+extern kal_bool mspm_is_current_sim_occupy_rf_possible(mspm_sim_index_enum current_sim_index);
+extern kal_bool mspm_is_peer_sim_in_connected(mspm_sim_index_enum current_sim_index);
+extern mspm_vc_cause_enum mspm_query_vc_cause(mspm_sim_index_enum current_sim_index);
+extern kal_bool mspm_is_this_sim_in_vc(mspm_sim_index_enum sim_index);
+extern kal_bool mspm_is_peer_sim_in_nr_connected(mspm_sim_index_enum current_sim_index);
+
+#ifdef MSPM_UT
+void mspm_ut_set_rf_owner(mspm_sim_index_enum sim_index);
+void mspm_ut_set_sim_priority(mspm_sim_index_enum sim_index, kal_uint32 priority);
+void mspm_ut_reset(void);
+void mspm_ut_set_non_as_session_status(mspm_sim_index_enum sim_index, mspm_procedure_enum procedure, kal_bool is_ongoing);
+#endif
+
+#endif /* MSPM_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/protocol/general/n3epc_public_defs.h b/mcu/interface/protocol/general/n3epc_public_defs.h
new file mode 100644
index 0000000..6d0da07
--- /dev/null
+++ b/mcu/interface/protocol/general/n3epc_public_defs.h
@@ -0,0 +1,130 @@
+/*****************************************************************************
+*  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) 2012
+*
+*  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).
+*
+*****************************************************************************/
+
+#ifndef __N3EPC_PUBLIC_DEFS_H__
+#define __N3EPC_PUBLIC_DEFS_H__
+
+#include "kal_public_defs.h"
+
+typedef enum {
+    N3EPC_PDN_REJECT_NONE = 0,
+    N3EPC_PDN_REJECT_DNS_TIMEOUT = 1040,
+    N3EPC_PDN_REJECT_DNS_NO_ADDRESS = 1041,
+
+    N3EPC_PDN_REJECT_CERTIFICATE_VALIDATE_FAIL = 1010,
+    N3EPC_PDN_REJECT_CERTIFICATE_EXPIRED = 1011,
+
+    N3EPC_PDN_REJECT_TUNNEL_ESTABLISH_TIMEOUT = 1081,
+    N3EPC_PDN_REJECT_TUNNEL_ESTABLISH_FAILED = 1082,
+
+    N3EPC_PDN_REJECT_HANDOVER_IP_DISCONTINUITY = 1999,
+
+    N3EPC_PDN_REJECT_HANDOVER_PROTOCOL_NOT_MATCHED = 2006,
+    N3EPC_PDN_REJECT_ABORT = 2008,
+    N3EPC_PDN_REJECT_IS_BLOCKED = 2013,
+    N3EPC_PDN_REJECT_UNKNOWN_REASON = 2014,
+    N3EPC_PDN_REJECT_WIFI_NOT_READY = 2015,
+    N3EPC_PDN_REJECT_ACT_REQ_IN_WRONG_STATE = 2016,
+} n3epc_pdn_reject_enum;
+
+typedef enum {
+    N3EPC_STATUS_OK = 0,
+    N3EPC_STATUS_FAIL = 1,  // Can't be used in the errcause of
+                            // d2rm_n3epc_act_data_call_cnf_prv_struct
+
+    N3EPC_STATUS_MAIN_ERROR_START = 1001,
+
+    /* NW error */
+    N3EPC_STATUS_DNS_QUERY_TIMEOUT = 1040,
+    N3EPC_STATUS_FQDN_NO_ADDRESS = 1041,
+    N3EPC_STATUS_UNABLE_CONNET_EPDG = 1081,  // from strongswan
+    N3EPC_STATUS_UNABLE_MAKE_IPSEC_TUNNEL = 1082,
+    N3EPC_STATUS_UNABLE_TO_VALIDATE_SERVER_CERTIFICATE =
+            1010,  // Not support for ePDG
+    N3EPC_STATUS_UNABLE_TO_VALIDATE_SERVER_CERTIFICATE_EPDG = 1101,
+    N3EPC_STATUS_INVALID_CERTIFICATE = 1011,  // Not support for ePDG
+    N3EPC_STATUS_INVALID_CERTIFICATE_EPDG = 1111,
+    N3EPC_STATUS_INVALID_IP_IN_HANDOVER = 1999,
+
+    /* Internal error  */
+    N3EPC_STATUS_NOT_READY = 2001,
+    N3EPC_STATUS_NO_APN_CONNECTION = 2002,
+    N3EPC_STATUS_PDN_INFO_NOT_MATCHED = 2003,
+    N3EPC_STATUS_PDN_CAN_NOT_CREATE = 2004,
+    N3EPC_STATUS_REJECT_PDN_ACT_REQ_IN_WRONG_STATE = 2005,
+    N3EPC_STATUS_HO_ADDR_PROTO_NOT_MATCHED = 2006,
+    N3EPC_STATUS_WRONG_PDN_REQ_TYPE = 2007,
+    N3EPC_STATUS_PDN_ACT_ABORT = 2008,
+    N3EPC_STATUS_PDN_ACT_TIMEOUT = 2009,
+    N3EPC_STATUS_EMERGENCY_NO_IMEI = 2010,
+    N3EPC_STATUS_PDN_LOCAL_RELEASE = 2011,
+    N3EPC_STATUS_TUNNEL_SETUP_TIMEOUT = 2012,
+    N3EPC_STATUS_MAIN_ERROR_END = 3000,
+} n3epc_status_enum;
+
+typedef enum {
+    IKE_NOTIFICATION_NONE = 0,
+    UNSUPPORTED_CRITICAL_PAYLOAD = 1,
+    INVALID_IKE_SPI = 4,
+    INVALID_MAJOR_VERSION = 5,
+    INVALID_SYNTAX = 7,
+    INVALID_MESSAGE_ID = 9,
+    INVALID_SPI = 11,
+    NO_PROPOSAL_CHOSEN = 14,
+    INVALID_KE_PAYLOAD = 17,
+    AUTHENTICATION_FAILED = 24,
+    SINGLE_PAIR_REQUIRED = 34,
+    NO_ADDITIONAL_SAS = 35,
+    INTERNAL_ADDRESS_FAILURE = 36,
+    FAILED_CP_REQUIRED = 37,
+    TS_UNACCEPTABLE = 38,
+    INVALID_SELECTORS = 39,
+    UNACCEPTABLE_ADDRESSES = 40,
+    UNEXPECTED_NAT_DETECTED = 41,
+    USE_ASSIGNED_HoA = 42,
+    TEMPORARY_FAILURE = 43,
+    CHILD_SA_NOT_FOUND = 44,
+
+    /*
+     * Unassigned: 47-8191
+     * private use: 8192-16383
+     */
+    NOTIFY_ERROR_END = 16383,
+
+    /* reactivation_requested_cause,ref 24.302-d80 */
+    REACTIVATION_REQUESTED_CAUSE = 40961,
+} n3epc_ike_error_notify_enum;
+
+#endif /* __N3EPC_PUBLIC_DEFS_H__ */
diff --git a/mcu/interface/protocol/general/nas2l4c_struct.h b/mcu/interface/protocol/general/nas2l4c_struct.h
new file mode 100644
index 0000000..60bf520
--- /dev/null
+++ b/mcu/interface/protocol/general/nas2l4c_struct.h
@@ -0,0 +1,144 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   nas2l4c_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * 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.
+*
+********************************************************************************/
+
+/*******************************************************************************
+*  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) 2002
+*
+*******************************************************************************
+ *  FILENAME : nas2l4c_struct.h
+ *  SYNOPSIS : 
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef _NAS2L4C_STRUCT_H
+#define _NAS2L4C_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+typedef enum
+{
+    /* Defined in AT&T Device Requirement Table 21.2 for AT$ARME */
+    ERROR_TYPE_UNDEFINED,
+    ERROR_MM,
+    ERROR_CM,
+    ERROR_GMM_NON_COMBINED,
+    ERROR_SM,
+    ERROR_GMM_COMBINED_NON_GPRS,
+    ERROR_GMM_COMBINED,
+    ERROR_EMM_NON_COMBINED,
+    ERROR_EMM_COMBINED_NON_EPS,
+    ERROR_EMM_COMBINED,
+    ERROR_ESM,
+    /* Additional enum for ACMT */
+    ERROR_GMM_SERVICE,
+    ERROR_GMM_MT_DETACH
+} protocol_error_type_enum;
+
+/* This is for AT&T Communication Manager Client for Tablets(ACMT)
+*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    protocol_error_type_enum error_type;
+    kal_uint32 cause;
+} l4c_protocol_rej_ind_struct;
+
+// MSG_ID_L4C_RATCM_LBM_INFO_IND, MSG_ID_L4C_EVAL_LBM_INFO_IND
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_bool is_lbm_activated; /*0: deactivated,  1:activated*/
+} l4c_ratcm_lbm_info_ind_struct, l4c_eval_lbm_info_ind_struct;
+
+#endif /* _NAS2L4C_STRUCT_H */
diff --git a/mcu/interface/protocol/general/nas_as_inter_core_enum.h b/mcu/interface/protocol/general/nas_as_inter_core_enum.h
new file mode 100644
index 0000000..ad1d10a
--- /dev/null
+++ b/mcu/interface/protocol/general/nas_as_inter_core_enum.h
@@ -0,0 +1,78 @@
+/*****************************************************************************
+*  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) 2014
+*
+*  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:
+ * ---------
+ *   as_inter_core_enum.h
+ *
+ * Project:
+ * --------
+ *   UMOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * 
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __NAS_AS_INTER_CORE_ENUM_H__
+#define __NAS_AS_INTER_CORE_ENUM_H__
+
+typedef enum
+{
+   DATA_PREFER, // default value
+   CALL_PREFER,
+   AS_OPTIMAL   // decided by AS
+} gprs_transfer_preference_enum;
+
+#endif /* __NAS_AS_INTER_CORE_ENUM_H__ */
+
+
diff --git a/mcu/interface/protocol/general/nas_as_inter_core_struct.h b/mcu/interface/protocol/general/nas_as_inter_core_struct.h
new file mode 100644
index 0000000..74b3063
--- /dev/null
+++ b/mcu/interface/protocol/general/nas_as_inter_core_struct.h
@@ -0,0 +1,76 @@
+/*****************************************************************************
+*  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) 2014
+*
+*  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:
+ * ---------
+ *   nas_as_inter_core_struct.h
+ *
+ * Project:
+ * --------
+ *   UMOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * 
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __NAS_AS_INTER_CORE_STRUCT_H__
+#define __NAS_AS_INTER_CORE_STRUCT_H__
+
+#include "kal_public_defs.h"
+#include "kal_general_types.h"
+
+#endif /* __L4C_AS_INTER_CORE_STRUCT_H__ */
diff --git a/mcu/interface/protocol/general/nas_sv_ratdm_struct.h b/mcu/interface/protocol/general/nas_sv_ratdm_struct.h
new file mode 100644
index 0000000..713bde1
--- /dev/null
+++ b/mcu/interface/protocol/general/nas_sv_ratdm_struct.h
@@ -0,0 +1,98 @@
+/*****************************************************************************
+*  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) 2018
+*
+*  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:
+* ---------
+* nas_sv_ratdm_struct.h
+*
+* Project:
+* --------
+*   UMOLYA
+*
+* Description:
+* ------------
+*
+* Author:
+* -------
+ * -------
+******************************************************************************/
+
+#ifndef _NAS_SV_RATDM_STRUCT_H_
+#define _NAS_SV_RATDM_STRUCT_H_
+
+
+#include "kal_general_types.h"
+#include "ps_public_enum.h"
+#include "l3_inc_enums.h"
+#include "mcd_l3_inc_struct.h"
+
+#include "l3_inc_local.h"
+
+#include "gmss_public.h"
+#include "mm_mmi_enums.h"
+#include "mmi2mm_struct.h"
+
+#include "kal_public_defs.h"
+#include "sim_public_enum.h"
+#include "global_type.h"
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "gmss_public.h"
+    
+typedef enum {
+    RATDM_NO_RAT,
+    RATDM_GSM_RAT,  
+    RATDM_WCDMA_RAT,
+    RATDM_LTE_RAT,
+    RATDM_C2K_RAT,
+    RATDM_NR_RAT,
+} ratdm_rat_enum;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    ratdm_rat_enum    dst_rat;
+} nas_sv_ratdm_rat_change_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    umts_duplex_mode_type source_umts_duplex_mode;
+    umts_duplex_mode_type target_umts_duplex_mode;
+    lte_duplex_mode_type source_lte_duplex_mode;
+    lte_duplex_mode_type target_lte_duplex_mode;
+} nas_sv_ratdm_duplex_mode_change_req_struct;
+
+#endif /* _NWSEL_RATDM_STRUCT_H */
diff --git a/mcu/interface/protocol/general/nbr_public_struct.h b/mcu/interface/protocol/general/nbr_public_struct.h
new file mode 100644
index 0000000..74fda85
--- /dev/null
+++ b/mcu/interface/protocol/general/nbr_public_struct.h
@@ -0,0 +1,783 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   nbr_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * 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.
+*
+********************************************************************************/
+
+/*******************************************************************************
+*  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) 2002
+*
+*******************************************************************************
+ *  FILENAME : nbr_public_struct.h
+ *  SYNOPSIS : 
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef _NBR_PUBLIC_STRUCT_H
+#define _NBR_PUBLIC_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "global_type.h"
+
+#define GAS_MAX_MEASURED_CELL_NUM            6
+
+#define UAS_MAX_MEASURED_RESULTS_NUM         3
+#define UAS_MAX_CELL_MEASURED_RESULTS_NUM    6
+#define UAS_MAX_TIMESLOT_PER_SUBFRAME        7
+
+#define EAS_MAX_MEASURED_CELL_NUM            32
+
+#define NR_AS_MAX_SERVING_CELL_NUM           32
+#define NR_AS_MAX_MEASURED_CELL_NUM          32
+
+/*-----UAS cell info struct start-------------*/
+
+typedef struct
+{
+    kal_uint8        uarfcn_ul_used;
+    kal_uint16      uarfcn_ul;
+    kal_uint16      uarfcn_dl;
+} uas_freq_info_fdd_struct;
+
+typedef struct
+{
+    kal_uint16      uarfcn;
+} uas_freq_info_tdd_struct;
+
+typedef enum
+{
+    UAS_FREQ_INFO_MODE_FDD = 1,
+    UAS_FREQ_INFO_MODE_TDD,
+    UAS_FREQ_INFO_MODE_END
+} uas_freq_info_mode_enum;
+
+typedef struct uas_freq_info_mode_specific_info_struct
+{
+    kal_uint8             mode;   // uas_freq_info_mode_enum
+    union
+    {
+        uas_freq_info_fdd_struct        fdd;
+        uas_freq_info_tdd_struct        tdd;
+    } choice;
+} uas_freq_info_mode_specific_info_struct;
+
+typedef struct
+{
+    uas_freq_info_mode_specific_info_struct     mode_specific_info;
+} uas_freq_info_struct;
+
+/* Measurement results for FDD cell */
+typedef struct
+{
+    kal_uint16              psc;
+    kal_uint8                cpich_Ec_N0_used;
+    kal_uint8               cpich_Ec_N0;
+    kal_uint8                cpich_rscp_used;
+    kal_uint8               cpich_rscp;
+    kal_uint8                pathloss_used;
+    kal_uint8               pathloss;
+} uas_cell_measured_results_fdd_struct;
+
+/* Measurement results for TDD cell, not implemented now */
+typedef struct
+{
+    kal_uint8               num;
+    kal_uint8               element[2*UAS_MAX_TIMESLOT_PER_SUBFRAME];
+}uas_cell_measured_result_tdd_timeslot_iscp_struct;
+
+typedef struct
+{
+    kal_uint8                                           cellParameterId;
+    kal_uint8                                            tgsn_used;
+    kal_uint8                                           tgsn;
+    kal_uint8                                            pccpch_rscp_used;
+    kal_uint8                                           pccpch_rscp;
+    kal_uint8                                            pathloss_used;
+    kal_uint8                                           pathloss;
+    kal_uint8                                            timeSlot_iscp_used;
+    uas_cell_measured_result_tdd_timeslot_iscp_struct   timeslot_iscp_list;
+
+} uas_cell_measured_results_tdd_struct;
+
+typedef enum
+{
+    UAS_CELL_MEASURED_RESULTS_MODE_FDD = 1,
+    UAS_CELL_MEASURED_RESULTS_MODE_TDD,
+    UAS_CELL_MEASURED_RESULTS_MODE_END
+} uas_cell_measured_results_mode_enum;
+
+typedef struct uas_cell_measured_results_mode_specific_info_struct
+{
+    kal_uint8         mode;   // uas_cell_measured_results_mode_enum
+
+    union
+    {
+        uas_cell_measured_results_fdd_struct    fdd;
+        uas_cell_measured_results_tdd_struct    tdd;
+    } choice;
+} uas_cell_measured_results_mode_specific_info_struct;
+
+typedef struct
+{
+    kal_uint8                                                    cell_id_used;
+    kal_uint32                                                  cell_id;
+    uas_cell_measured_results_mode_specific_info_struct         mode_specific_info;
+} uas_cell_measured_results_struct;
+
+/* Measured results of most 32 different cells in one UARFCN */
+typedef struct
+{
+    kal_uint8                               num;
+    uas_cell_measured_results_struct        element[UAS_MAX_CELL_MEASURED_RESULTS_NUM];
+} uas_cell_measured_results_list_struct;
+
+typedef struct
+{
+    kal_uint8                                freq_info_used;
+    uas_freq_info_struct                    freq_info;
+    kal_uint8                                utra_carrier_rssi_used;
+    kal_uint8                               utra_carrier_rssi;
+    kal_uint8                                cell_measured_results_list_used;
+    uas_cell_measured_results_list_struct   cell_measured_results_list;
+} uas_measured_results_struct;
+
+/* Measurement results of most 8 different UARFCN's */
+typedef struct
+{
+    kal_uint8                           num;
+    uas_measured_results_struct         element[UAS_MAX_MEASURED_RESULTS_NUM];
+} uas_measured_results_list_struct;
+
+typedef struct uas_cell_plmn_id_struct
+{
+    kal_uint16                      mcc;
+    kal_uint16                      mnc;
+} uas_cell_plmn_id_struct;
+
+typedef struct
+{
+    kal_uint8                       is_LAC_valid;
+    kal_uint16                     lac; 
+    kal_uint8                       is_RAC_valid;
+    kal_uint8                       rac; 
+    kal_uint8                       num_plmn_id;
+    uas_cell_plmn_id_struct         plmn_id_list[6];
+} uas_cell_info_struct;
+
+typedef struct
+{
+    kal_uint8                               num;
+    uas_cell_info_struct        cell_info[UAS_MAX_CELL_MEASURED_RESULTS_NUM];
+} uas_cell_info_list_struct;
+
+typedef struct
+{
+    uas_cell_info_list_struct   cell_info_list;
+} uas_cell_info_per_freq_struct;
+
+/* Measurement results of most 3 different UARFCN's */
+typedef struct
+{
+    kal_uint8                           num_freq;
+    uas_cell_info_per_freq_struct         cell_info_per_freq[UAS_MAX_MEASURED_RESULTS_NUM];
+} uas_cell_info_ext_struct;
+
+/* WCDMA cell info */
+typedef struct
+{
+    kal_uint16                          mcc;
+    kal_uint16                          mnc;
+    kal_uint32                          uc;
+    kal_uint8                            freq_info_used;
+    uas_freq_info_struct                freq_info;
+    kal_uint8                            psc_used;
+    kal_uint16                          psc;
+    kal_uint8                            measured_results_list_used;
+    uas_measured_results_list_struct    measured_results_list;
+
+    // Extended information
+    uas_cell_measured_results_mode_specific_info_struct serving_meas_result;
+    uas_cell_info_struct                 serving_cell_ext_info;
+    uas_cell_info_ext_struct            cell_info_ext_list;
+} uas_nbr_cell_info_struct;
+
+/*-----UAS cell info struct end-------------*/
+
+
+// mtk02480
+/*-----GAS cell info struct--------- */
+typedef struct
+{
+    kal_uint16 arfcn;
+    kal_uint8 bsic;
+    kal_uint8 rxlev;
+    kal_int16 rssi_in_qdbm; /* 1 means invalid */
+}gas_nbr_cell_meas_struct;
+
+typedef struct
+{
+    kal_uint16 mcc;
+    kal_uint16 mnc;
+    kal_uint16 lac;
+    kal_uint16 ci;
+}global_cell_id_struct;
+
+typedef struct
+{
+    kal_int8 nbr_meas_num;
+    gas_nbr_cell_meas_struct nbr_cells[15];
+}gas_nbr_meas_struct;
+
+
+typedef struct
+{
+    global_cell_id_struct gci;
+    kal_uint8 nbr_meas_rslt_index;
+}gas_cell_info_struct;
+
+
+typedef struct
+{
+    gas_cell_info_struct serv_info;
+    kal_uint8 ta;
+/* 091125 shuang CVM_PWR_LEV add for CVM network command power level*/
+    kal_uint8 ordered_tx_pwr_lev;
+    kal_uint8 nbr_cell_num;
+    gas_cell_info_struct nbr_cell_info[GAS_MAX_MEASURED_CELL_NUM];
+    gas_nbr_meas_struct nbr_meas_rslt;
+}gas_nbr_cell_info_struct;
+
+/*-----GAS cell info struct--end------- */
+
+/*-----EAS cell info struct start-------------*/
+
+typedef struct
+{ 
+    EARFCN                              dl_freq;   
+    kal_uint16                          pci;        //0~503
+    kal_uint8                           rsrp;       //0~97
+    kal_uint8                           rsrq;       //0~34
+    
+    kal_uint8                           is_cell_id_used;
+    kal_uint32                          cell_id;    //0~0x0FFFFFFF
+    kal_uint16                          mcc;        //0~999
+    kal_uint16                          mnc;        //0~999
+    kal_uint8                           is_2_digit_mnc; //ncell cell plmn is 2 digits or 3 digits    
+    kal_uint16                          tac;        //0~65535
+    kal_uint8                           rssi;       //0~31,99
+} eas_cell_measured_results_struct;
+
+typedef struct
+{
+    kal_uint16 ta;
+    kal_uint8 s_tag_id;
+} eas_s_tag_ta_struct;
+
+/* LTE cell info */
+typedef enum {
+    EAS_NR_PDCP_INVALID = 0,         // Invalid value for initialization and check     
+    EAS_NR_PDCP_PRESENCE = 1,        // nr pdcp is configured
+    EAS_NR_PDCP_NOT_PRESENCE = 2,    // nr pdcp is not configured 
+    EAS_NR_PDCP_UNKNOWN = 3          // no valid result of nr pdcp presence
+} eas_nr_pdcp_presence_enum;
+
+typedef struct 
+{
+    /* Serving cell info */
+    kal_uint16                          mcc;            //0~999
+    kal_uint16                          mnc;            //0~999
+    kal_uint8                           is_2_digit_mnc; //serving cell plmn is 2 digits or 3 digits
+    kal_uint32                          cell_id;        //0~0x0FFFFFFF
+    EARFCN                              dl_freq;        
+    kal_uint8                           ul_freq_used;   
+    EARFCN                              ul_freq;        
+    kal_uint16                          pci;            //0~503
+    kal_uint8                           is_ta_used; 
+    kal_uint16                          time_advance;   //0~1282
+    kal_uint8                           is_rsrp_valid; 
+    kal_uint8                           rsrp;           //0~97
+    kal_uint8                           is_rsrq_valid; 
+    kal_uint8                           rsrq;           //0~34
+    kal_uint16                          tac;            //0~65535
+ 
+    /* Neighbor cell info */   
+    kal_uint8                           num_nbr_cell;
+    eas_cell_measured_results_struct    nbr_cell_list[EAS_MAX_MEASURED_CELL_NUM]; 
+
+    /* Timing advance info for sTAG */
+    eas_s_tag_ta_struct                 s_tag_ta;
+    kal_bool                            s_tag_ta_is_valid;
+    kal_uint8                           rssi;       //0~31,99
+
+    kal_bool                            is_endc_available;
+    kal_bool                            is_b1_nr_report_send; //for 5G icon show
+    kal_bool                            is_nr_cell_measured;  //for 5G icon show
+    kal_bool                            is_nr_cap_queried;
+    eas_nr_pdcp_presence_enum           nr_pdcp_bearer;       //request from L4, bypass information from CHM
+} eas_nbr_cell_info_struct;
+
+/*-----EAS cell info struct--end------- */
+
+/*-----NR_AS cell info struct start-------------*/
+
+typedef struct
+{
+    kal_bool is_rsrp_valid;
+    kal_uint8 rsrp;             // 0~127
+
+    kal_bool is_rsrq_valid;     
+    kal_uint8 rsrq;             // 0~127
+
+    kal_bool is_sinr_valid;
+    kal_uint8 sinr;            // 0~127 
+} ssb_measurement_struct, csi_measurement_struct;
+
+
+/* NR serving cell info */
+typedef struct
+{
+    kal_uint8 ssb_id;
+    kal_bool is_rsrp_valid;
+    kal_uint8 rsrp;
+} nr_as_ssb_info_struct;
+
+typedef struct 
+{
+    kal_uint32 phys_cell_id;    // 0~1007
+    kal_uint32 arfcn;           // 0~3279165
+    kal_uint8 scs;              // 0~4: 0=15kHz, 1=30kHz, 2=60kHz, 3=120kHz, 4=240kHz
+    kal_uint16 dl_freq_band;    // 1~1024
+    kal_uint32 center_arfcn;    // 0~3279165
+    kal_uint32 cell_bandwidth;  // 0~400000, kHz
+
+    // In case cell broadcasts several sets of NAS sysinfo, NR AS informs
+    // first set of NAS sysinfo in SIB1 of the cell.
+
+    // NAS sys info (mcc/mnc/cell_id/tac) validity
+    kal_bool is_nas_sysinfo_valid;
+
+    kal_uint16 primary_plmn_mcc;             // 0~999
+
+    kal_bool is_2_digit_mnc;
+    kal_uint16 primary_plmn_mnc;             // 0~999
+
+    kal_uint64 primary_plmn_cell_id;         // 36-bit
+    kal_uint32 primary_plmn_tac;             // 24-bit
+
+    kal_bool is_ssb_valid;
+    ssb_measurement_struct ssb;
+
+    kal_bool is_csi_valid;
+    csi_measurement_struct csi;
+
+    kal_bool is_ta_valid;
+    kal_uint16 ta;
+    
+    kal_uint8 ssb_num;
+    nr_as_ssb_info_struct ssb_list[8];
+} nr_as_serving_cell_info_struct;
+
+/* NR neighbor cell info */
+typedef struct 
+{
+    kal_uint32 phys_cell_id;    // 0~1007
+    kal_uint32 arfcn;           // 0~3279165
+    kal_uint8 scs;              // 0~4: 0=15kHz, 1=30kHz, 2=60kHz, 3=120kHz, 4=240kHz
+    kal_uint16 dl_freq_band;    // 1~1024
+
+    // In case cell broadcasts several sets of NAS sysinfo, NR AS informs
+    // first set of NAS sysinfo in SIB1 of the cell.
+
+    // NAS sys info (mcc/mnc/cell_id/tac) validity
+    kal_bool is_nas_sysinfo_valid;
+
+    kal_uint16 primary_plmn_mcc;             // 0~999
+
+    kal_bool is_2_digit_mnc;
+    kal_uint16 primary_plmn_mnc;             // 0~999
+
+    kal_uint64 primary_plmn_cell_id;         // 36-bit
+    kal_uint32 primary_plmn_tac;             // 24-bit
+
+    kal_bool is_ssb_valid;
+    ssb_measurement_struct ssb;
+
+    kal_bool is_csi_valid;
+    csi_measurement_struct csi;
+    
+    kal_uint8 ssb_num;
+    nr_as_ssb_info_struct ssb_list[4];
+} nr_as_cell_measured_result_struct;
+
+/* NR cell info */
+typedef struct 
+{
+    kal_uint8 num_serving_cell;
+    nr_as_serving_cell_info_struct nr_serving_cell_list[NR_AS_MAX_SERVING_CELL_NUM];
+
+    kal_uint8 num_nbr_cell;
+    nr_as_cell_measured_result_struct nbr_cell_list[NR_AS_MAX_MEASURED_CELL_NUM];
+} nr_as_nbr_cell_info_struct;
+
+/*-----NR_AS cell info struct--end------- */
+
+typedef struct
+{
+    kal_uint8 is_nbr_info_valid;
+    kal_uint8 is_eas_nbr_info_valid;
+    kal_uint8 is_nr_as_nbr_info_valid;
+    eas_nbr_cell_info_struct   eas_nbr_cell_info;
+    nr_as_nbr_cell_info_struct nr_as_nbr_cell_info;
+} l4c_endc_nbr_cell_info_struct;
+
+typedef union
+{
+    gas_nbr_cell_info_struct   gas_nbr_cell_info;
+    uas_nbr_cell_info_struct   uas_nbr_cell_info;
+    eas_nbr_cell_info_struct   eas_nbr_cell_info;
+    nr_as_nbr_cell_info_struct nr_as_nbr_cell_info;
+}ps_nbr_cell_info_union_type;
+
+typedef struct l4c_nbr_cell_info_reg_cnf_struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 rat_mode;
+    kal_uint8 is_nbr_info_valid;
+    ps_nbr_cell_info_union_type ps_nbr_cell_info_union;
+} l4c_nbr_cell_info_reg_cnf_struct,l4c_nbr_cell_info_ind_struct;
+
+typedef enum
+{
+    GSM_NW_BAND_850       = 0x0001,
+    GSM_NW_BAND_E_900     = 0x0002,
+    GSM_NW_BAND_DCS_1800  = 0x0004,
+    GSM_NW_BAND_PCS_1900  = 0x0008,
+    GSM_NW_BAND_P_900     = 0x0010,
+    GSM_NW_BAND_R_900     = 0x0020,
+    GSM_NW_BAND_450       = 0x0040,
+    GSM_NW_BAND_480       = 0x0080,
+    GSM_INVALID_BAND      = 0xffff
+}gsm_nw_band_enum;
+
+typedef struct gas_nw_band_info_struct
+{
+    kal_uint16 serv_band;
+    kal_uint16 nbr_band_list;             /* Band value mapped to gsm_nw_band_enum */
+
+    kal_bool   umts_bands_valid;
+    kal_uint16 umts_nbr_band_list[2];     /* Each bit in nbr_band_list represent the band. 
+                                                 nbr_band_list[0] bit0 represents UMTS band1..  nbr_band_list[0] bit15 represents UMTS band16
+                                                 nbr_band_list[1] bit0 represents UMTS band17.. nbr_band_list[1] bit5 represents UMTS band22.*/
+    kal_bool   lte_bands_valid;
+    kal_uint16 lte_nbr_band_list[16];     /* Each bit in lte_nbr_band_list represent the band. 
+                                                 lte_nbr_band_list[0] bit0 represents LTE band1..  lte_nbr_band_list[0] bit15 represents LTE band16
+                                                 lte_nbr_band_list[15] bit0 represents LTE band240.. lte_nbr_band_list[15] bit15 represents LTE band256.*/
+}gas_nw_band_info_struct;
+
+typedef struct uas_nw_band_info_struct
+{
+    kal_uint8  serv_band;                 /* Serving Band number */
+    kal_uint16 nbr_band_list[2];          /* Each bit in nbr_band_list represent the band. 
+                                                 nbr_band_list[0] bit0 represents UMTS band1..  nbr_band_list[0] bit15 represents UMTS band16
+                                                 nbr_band_list[1] bit0 represents UMTS band17.. nbr_band_list[1] bit5 represents UMTS band22.*/
+    kal_bool   lte_bands_valid;
+    kal_uint16 lte_nbr_band_list[16];     /* Each bit in lte_nbr_band_list represent the band. 
+                                                 lte_nbr_band_list[0] bit0 represents LTE band1..  lte_nbr_band_list[0] bit15 represents LTE band16
+                                                 lte_nbr_band_list[15] bit0 represents LTE band240.. lte_nbr_band_list[15] bit15 represents LTE band256.*/
+                                                                                       
+    kal_bool   gsm_bands_valid;
+    kal_uint16 gsm_nbr_band_list;         /* Band value mapped to gsm_nw_band_enum */
+                                                                                       
+                                                                                       
+}uas_nw_band_info_struct;
+
+typedef struct eas_nw_band_info_struct
+{
+    kal_uint16 serv_band;                 /* Serving Band number */
+    kal_uint16 nbr_band_list[16];         /* Each bit in nbr_band_list represent the band. 
+                                                 nbr_band_list[0] bit0 represents LTE band1..  nbr_band_list[0] bit15 represents LTE band16
+                                                 nbr_band_list[15] bit0 represents LTE band240.. nbr_band_list[15] bit15 represents LTE band256.*/
+    kal_bool   umts_bands_valid;
+    kal_uint16 umts_nbr_band_list[2];     /* Each bit in nbr_band_list represent the band. 
+                                                 nbr_band_list[0] bit0 represents UMTS band1..  nbr_band_list[0] bit15 represents UMTS band16
+                                                 nbr_band_list[1] bit0 represents UMTS band17.. nbr_band_list[1] bit5 represents UMTS band22.*/    
+    
+    kal_bool   gsm_bands_valid;
+    kal_uint16 gsm_nbr_band_list;         /* Band value mapped to gsm_nw_band_enum */
+                                                                            
+}eas_nw_band_info_struct;
+
+
+typedef union
+{
+    gas_nw_band_info_struct gas_nw_band_info;
+#ifdef __UMTS_RAT__
+    uas_nw_band_info_struct uas_nw_band_info;
+#endif
+#ifdef __LTE_RAT__
+    eas_nw_band_info_struct eas_nw_band_info;
+#endif
+#if !defined(__UMTS_RAT__) && !defined(__LTE_RAT__)
+    kal_uint32 dummy_padding;
+#endif
+}ps_nw_band_info_union_type;
+
+typedef struct l4c_nw_band_info_ind_struct
+{
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    kal_uint8 rat_mode;
+    kal_uint8 is_nw_band_info_valid;
+    ps_nw_band_info_union_type ps_nw_band_info_union;
+} l4c_nw_band_info_ind_struct;
+
+#ifdef __CHR_AB_INFO__
+
+//Huawei Index8 requirement: Inidication of reason for Not moving to 4G.
+typedef enum
+{
+    AS_EUTRA_INFO_NOT_AVAILABLE,               // LTE info not avaialble with AS to perform measurments.
+    AS_EUTRA_CELL_NOT_FOUND,                   // LTE info avaialbel and triggered meansurements, but no LTE cell found.
+    AS_EUTRA_RESEL_CRIT_NOT_MET,               // UE in idle and LTE measurments are going on, but cell reselection criterin not met.
+    AS_CONN_MODE_NO_HO_CCO,                    // UE in connected and LTE measurments are going on, either event\periodical MR not sent or NW not redirecting to 4G.
+    AS_LTE_RESEL_FAIL_S_CRI_NOT_MET,           // 4G resele failed due to s criteria not satisfied.
+    AS_LTE_RESEL_FAIL_SIB_READ_ERROR,          // 4G resele failed due to sib reception failed.
+    AS_LTE_RESEL_FAIL_CELL_BARRED,             // 4G resele failed due to cell is barred.
+    AS_LTE_RESEL_FAIL_PLMN_MISMATCH,           // 4G resele failed due to target cell's PLMN doesn't match S/E PLMN.
+    AS_LTE_RESEL_FAIL_FORBIDDEN_TA,            // 4G resele failed due to target cell is in forbidden tracking area.
+    AS_3G4_HO_FAIL_PHYSICAL_CHANNEL_FAILURE,   // 3G to 4G HO fail due to physical channel failure.
+    AS_3G4_HO_FAIL_FREQUENCY_NOT_IMPLEMENTED,  // 3G to 4G HO fail due to evalution fail.
+    AS_3G4_HO_FAIL_PROTOCOL_ERROR,             // 3G to 4G HO fail due to inconsistent or missing parameters causing protocol error
+    AS_3G4_HO_FAIL_UNSUPPORTED_CONFIGURATION,  // 3G to 4G HO fail due to predefined configuration not read or default configuration not implemented..
+    AS_3G4_HO_FAIL_UNSPECIFIED_ERROR,          // 3G to 4G HO fail due to unspecified error.
+    AS_LTE_CCO_FAIL_TARGET_CELL_REJECT,        // CCO to 4G failed due to target cell rejected the CCO procedure
+    AS_LTE_CCO_FAIL_TARGET_CELL_NO_RESPONSE,   // CCO to 4G failed due to target cell no response.
+    AS_LTE_CCO_FAIL_NAS_ABORT                  // CCO to 4G failed due to NAS abort
+} as_reason_not_moving_to_lte_enum;
+
+typedef enum
+{
+    NAS_LTE_CAUSE_NONE,                     //NO CAUSE
+    NAS_NO_USIM,                            //NO USIM inserted
+    NAS_LTE_CAPABILITY_NOT_SET,             //SET_RAT_MODE does not have LTE
+    NAS_LTE_PS_DETACHED,                    //PS Attach is not requested
+    NAS_LTE_CS_SERVICE_NOT_POSSIBLE,        //LTE cannot get CS normal service
+    NAS_LTE_NORMAL_SERVICE_NOT_POSSIBLE,    //LTE cannot get normal service
+    NAS_LTE_IRAT_FAILED,                    //IRAT failed to LTE
+    NAS_LTE_HIGH_PRIO_PLMN_NOT_FOUND,       //LTE PLMN not found in HIGH_PRIORITY_SEARCH
+    NAS_CS_CALL_ONGOING,                    //CS_CALL ongoing
+    NAS_LTE_DISABLED,                       //EUTRAN capability is disabled for the current PLMN
+    NAS_LTE_ENABLED_NEED_RESELECTION,       //EUTRAN is enabled, need AS to reselect
+    NAS_LTE_PLMN_LOSS,                      //LTE cell lost
+    NAS_LTE_PLMN_NOT_FOUND_DURING_SEARCH    //LTE PLMN not found during search
+} nas_reason_not_moving_to_lte_enum;
+
+typedef struct
+{
+    as_reason_not_moving_to_lte_enum    as_reason;  // AS reason for not moving to 4G.
+    nas_reason_not_moving_to_lte_enum   nas_reason; // NAS reason for not moving to 4G.
+} ps_reason_not_moving_to_lte_struct;
+#endif /* __CHR_AB_INFO__ */
+
+#endif /* _NBR_PUBLIC_STRUCT_H */
diff --git a/mcu/interface/protocol/general/ndis_ratdm_struct.h b/mcu/interface/protocol/general/ndis_ratdm_struct.h
new file mode 100644
index 0000000..0462d2e
--- /dev/null
+++ b/mcu/interface/protocol/general/ndis_ratdm_struct.h
@@ -0,0 +1,147 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   ndis_ratdm_struct.h
+ *
+ * Project:
+ * --------
+ *   MONZA
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * 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!
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ ******************************************************************************/
+
+#ifndef NDIS_RATDM_STRUCT_H
+#define NDIS_RATDM_STRUCT_H
+/******************************************************************************/
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+#include "ps_public_enum.h"
+
+/******************************************************************************/
+
+//MSG_ID_NDIS_RATDM_DATA_ACTIVATE_IND,
+typedef struct {
+    LOCAL_PARA_HDR
+//    UART_PORT uart_port_number;
+    kal_uint8 context_id;
+    kal_uint8 src_id;
+    //#ifdef __IPV4V6__
+    kal_uint8 /*pdp_addr_type_enum*/ pdp_type; // IPv4, IPv6, IPv4v6
+    kal_uint8 channel_id; // UPS channel ID
+    //#endif // ~ #ifdef __IPV4V6__
+} ndis_ratdm_data_activate_ind_struct;
+
+//MSG_ID_NDIS_RATDM_DATA_ACTIVATE_RSP,
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 context_id;
+    kal_bool result;
+    kal_uint8 src_id;
+} ndis_ratdm_data_activate_rsp_struct;
+
+//MSG_ID_NDIS_RATDM_DATA_DEACTIVATE_IND,
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 context_id;
+} ndis_ratdm_data_deactivate_ind_struct;
+
+//MSG_ID_NDIS_RATDM_DATA_DEACTIVATE_RSP,
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 context_id;
+    kal_bool result;
+} ndis_ratdm_data_deactivate_rsp_struct;
+// --- __HSPA_DATA_PATH_OPT__
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8    pool_id;
+//    UART_PORT    port;
+} ndis_flc_data_resume_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8    pool_id;
+//    UART_PORT    port;
+} ndis_flc_data_suspend_ind_struct;
+
+/******************************************************************************/
+#endif /* NDIS_RATDM_STRUCT_H*/
diff --git a/mcu/interface/protocol/general/netinfo_common_struct.h b/mcu/interface/protocol/general/netinfo_common_struct.h
new file mode 100644
index 0000000..383a21c
--- /dev/null
+++ b/mcu/interface/protocol/general/netinfo_common_struct.h
@@ -0,0 +1,257 @@
+/*****************************************************************************
+*  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) 2012
+*
+*  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).
+*
+*****************************************************************************/
+
+#ifndef __NETINFO_COMMON_STRUCT_H__
+#define __NETINFO_COMMON_STRUCT_H__
+
+#include "kal_public_defs.h"
+#include "atcmd_struct.h"
+#include "l3_inc_enums_public.h"
+
+#define MAX_NETWORK_V4_IP_INFO_NUM          (1)
+#define MAX_NETWORK_V6_IP_INFO_NUM          (1)
+
+#define MAX_IPSTK_V4_IP_INFO_NUM            (1)
+#define MAX_IPSTK_V6_IP_INFO_NUM            (8)
+
+typedef struct {
+    kal_bool                                mtu_present;
+    kal_int32                               mtu;
+    kal_uint8                               addr[IPV4_ADDR_LEN];
+    kal_int32                               netmask;
+} ipv4_info_struct;
+
+typedef struct {
+    kal_bool                                mtu_present;
+    kal_int32                               mtu;
+    kal_uint8                               addr[IPV6_ADDR_LEN];
+    kal_int32                               prefix;
+} ipv6_info_struct;
+
+typedef struct {
+    kal_uint32                              v4_count;
+    ipv4_info_struct                        v4_list[MAX_NETWORK_V4_IP_INFO_NUM];
+    kal_uint32                              v6_count;
+    ipv6_info_struct                        v6_list[MAX_NETWORK_V6_IP_INFO_NUM];
+} network_ip_info_struct;
+
+typedef struct {
+    kal_uint32                              v4_count;
+    ipv4_info_struct                        v4_list[MAX_IPSTK_V4_IP_INFO_NUM];
+    kal_uint32                              v6_count;
+    ipv6_info_struct                        v6_list[MAX_IPSTK_V6_IP_INFO_NUM];
+    network_ip_info_struct                  network_ip_info;    // Colgin workaround for L5 obtaining the network IP address to setup the IP stack manually
+} ipstk_ip_info_struct;
+
+typedef struct {
+    network_ip_info_struct                  network_ip_info;
+    ipstk_ip_info_struct                    ap_ipstk_ip_info;
+    ipstk_ip_info_struct                    md_ipstk_ip_info;
+} new_ip_info_struct;
+
+
+#define MAX_ADDR_BUF_NUM 10
+
+typedef enum {
+    INTERFACE_TYPE_NONE,
+    INTERFACE_TYPE_CCMNI,
+    INTERFACE_TYPE_RNDIS,
+    INTERFACE_TYPE_DUMMY_RNDIS,
+    INTERFACE_TYPE_VNIF,
+    INTERFACE_TYPE_MBIM,
+    INTERFACE_TYPE_MAX
+} interface_type_enum;
+
+typedef struct
+{
+    kal_bool                                PDPv4_addr_present;
+    kal_uint8                               PDPv4_addr[IPV4_ADDR_LEN];
+    kal_int32                               PDPv4_netmask;
+    kal_bool                                PDPv6_addr_present;
+    kal_uint8                               PDPv6_addr[IPV6_ADDR_LEN];
+    kal_int32                               PDPv6_prefix;
+    // Colgin workaround for L5 obtaining the network IP address to setup the IP stack manually
+    kal_bool                                network_PDPv4_addr_present;
+    kal_uint8                               network_PDPv4_addr[IPV4_ADDR_LEN];
+    kal_int32                               network_PDPv4_netmask;
+    kal_bool                                network_PDPv6_addr_present;
+    kal_uint8                               network_PDPv6_addr[IPV6_ADDR_LEN];
+    kal_int32                               network_PDPv6_prefix;
+} ip_info_struct;
+
+typedef struct
+{
+    kal_bool                                bearer_id_present;
+    kal_uint32                              bearer_id;
+    kal_bool                                local_addr_and_subnet_mask_present;
+    at_addr_and_mask_struct                 local_addr_and_subnet_mask;
+    kal_bool                                gw_addr_present;
+    at_addr_struct                          gw_addr;
+    kal_uint32                              pcscfv4_num;
+    kal_uint8                               pcscfv4_addr[MAX_ADDR_BUF_NUM][IPV4_ADDR_LEN];
+    kal_uint32                              pcscfv6_num;
+    kal_uint8                               pcscfv6_addr[MAX_ADDR_BUF_NUM][IPV6_ADDR_LEN];
+    kal_uint32                              dnsv4_num;
+    kal_uint8                               dnsv4_addr[MAX_ADDR_BUF_NUM][IPV4_ADDR_LEN];
+    kal_uint32                              dnsv6_num;
+    kal_uint8                               dnsv6_addr[MAX_ADDR_BUF_NUM][IPV6_ADDR_LEN];
+    kal_bool                                IM_CN_Signalling_Flag_present;
+    atcmd_IM_CN_Signalling_Flag_enum        IM_CN_Signalling_Flag;
+    kal_bool                                IPv4_MTU_present;
+    kal_uint32                              IPv4_MTU;
+    kal_bool                                QCI_present;
+    kal_uint32                              QCI;
+    kal_bool                                network_interface_id_present;
+    kal_uint32                              network_interface_id; // get byipc_get_netif_id_from_l2p_chid(IPC_NETIF_ID_LHIF_BEGIN, interface_id.network_interface_id)
+    kal_bool                                PS_Data_off_Support_present;
+    kal_uint8                               PS_Data_off_Support;
+    kal_bool                                PSI_present;
+    kal_uint8                               PSI;
+    kal_bool                                SSC_mode_present;
+    kal_uint8                               SSC_mode;
+    kal_bool                                S_NSSAI_present;
+    at_s_nssai_struct                       S_NSSAI;
+    kal_bool                                Access_type_present;
+    kal_uint8                               Access_type;
+} net_info_struct;
+
+typedef struct
+{
+    kal_bool                                QCI_present;
+    kal_uint32                              QCI;
+    kal_bool                                DL_GBR_present;
+    kal_uint32                              DL_GBR;
+    kal_bool                                UL_GBR_present;
+    kal_uint32                              UL_GBR;
+    kal_bool                                DL_MBR_present;
+    kal_uint32                              DL_MBR;
+    kal_bool                                UL_MBR_present;
+    kal_uint32                              UL_MBR;
+    kal_bool                                DL_AMBR_present;
+    kal_uint32                              DL_AMBR;
+    kal_bool                                UL_AMBR_present;
+    kal_uint32                              UL_AMBR;
+
+    /*c5gqosrdp_ind*/
+    kal_bool                                VQI_present;
+    kal_uint32                              VQI;                                                                // integer type
+    kal_bool                                DL_GFBR_present;
+    kal_uint64                              DL_GFBR;                                                            // integer type
+    kal_bool                                UL_GFBR_present;
+    kal_uint64                              UL_GFBR;                                                            // integer type
+    kal_bool                                DL_MFBR_present;
+    kal_uint64                              DL_MFBR;                                                            // integer type
+    kal_bool                                UL_MFBR_present;
+    kal_uint64                              UL_MFBR;                                                            // integer type
+    kal_bool                                DL_SAMBR_present;
+    kal_uint64                              DL_SAMBR;                                                           // integer type
+    kal_bool                                UL_SAMBR_present;
+    kal_uint64                              UL_SAMBR;                                                           // integer type
+    kal_bool                                Averaging_window_present;
+    kal_uint32                              Averaging_window;                                                   // integer type
+}QosInfo_t;
+typedef struct
+{
+    kal_bool                                packet_filter_identifier_present;
+    kal_uint32                              packet_filter_identifier;                                           // integer type
+    kal_bool                                evaluation_precedence_index_present;
+    kal_uint32                              evaluation_precedence_index;                                        // integer type
+    kal_bool                                remote_address_and_subnet_mask_present;
+    pdp_addr_len_enum                       remote_address_and_subnet_mask_len;
+    kal_uint8                               remote_address_and_subnet_mask[MAXIMUM_POSSIBLE_ADDR_LEN * 2];        // string type
+    kal_bool                                protocol_number_next_header_present;
+    kal_uint32                              protocol_number_next_header;                                        // integer type
+    kal_bool                                local_port_range_present;
+    kal_uint8                               local_port_range[LOCAL_PORT_RANGE_STRING_LEN];                      // string type
+    kal_bool                                remote_port_range_present;
+    kal_uint8                               remote_port_range[REMOTE_PORT_RANGE_STRING_LEN];                    // string type
+    kal_bool                                ipsec_spi_present;
+    kal_uint32                              ipsec_spi;                                                          // numeric value
+    kal_bool                                tos_traffic_class_and_mask_present;
+    kal_uint8                               tos_traffic_class_and_mask[TOS_TRAFFIC_CLASS_AND_MASK_STRING_LEN];  // string type
+    kal_bool                                flow_label_present;
+    kal_uint32                              flow_label;                                                         // numeric value
+    kal_bool                                direction_present;
+    atcmd_direction_enum                    direction;                                                          // integer type
+    kal_bool                                NW_packet_filter_Identifier_present;
+    kal_uint32                              NW_packet_filter_Identifier;                                        // integer type
+    kal_bool                                local_address_and_subnet_mask_present;
+    pdp_addr_len_enum                       local_address_and_subnet_mask_len;
+    kal_uint8                               local_address_and_subnet_mask[MAXIMUM_POSSIBLE_ADDR_LEN * 2];       // string type
+    kal_bool                                QRI_present;
+    kal_uint32                              QRI;                                                                // integer type
+}PktFilter_t;
+
+typedef struct
+{
+    kal_bool ims_info_present;
+    rat_enum current_rat;
+    pdp_addr_type_enum pdp_addr_type;
+    kal_uint32 primary_cid;
+    kal_uint32 bearer_id;
+    kal_uint8 pdu_session_id;
+    atcmd_IM_CN_Signalling_Flag_enum        IM_CN_Signalling_Flag;
+    QosInfo_t qos; 
+    kal_uint8 tft_count;
+    PktFilter_t tft[32];
+    kal_uint16 cgact_error_cause;
+    ps_cause_enum cgev_modify_cause;    
+}ims_info_struct;
+
+typedef struct {
+    kal_uint32 if_type;
+    kal_uint32 if_id;
+} if_info_struct;
+
+typedef enum {
+    RETRYTIME_RESERVED_START = 0xFFFF0000,
+    RETRYTIME_NO_RETRY = 0xFFFFFFFF, //infinite
+    RETRYTIME_RESERVED_END = 0xFFFFFFFF,
+} retrytime_enum;
+
+typedef enum {
+    RETRY_CAUSE_UNKNOWN = 0,
+    RETRY_CAUSE_MAX = 0x7FFFFFFF,
+} retry_cause_enum;
+
+typedef struct {
+    kal_bool retrytime_present;
+    kal_uint32 retrytime;              
+    retry_cause_enum cause;
+    kal_bool is_s_nssai_present;
+    at_s_nssai_struct s_nssai;
+} retry_info_struct;
+
+#endif /* __NETINFO_COMMON_STRUCT_H__ */
diff --git a/mcu/interface/protocol/general/pdn_public_defs.h b/mcu/interface/protocol/general/pdn_public_defs.h
new file mode 100644
index 0000000..b7ccea6
--- /dev/null
+++ b/mcu/interface/protocol/general/pdn_public_defs.h
@@ -0,0 +1,283 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * pdn_public_defs.h
+ *
+ * Project:
+ * --------
+ * 
+ *
+ * Description:
+ * ------------
+ *   
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __PDN_PUBLIC_DEFS_H__
+#define __PDN_PUBLIC_DEFS_H__
+
+#include "kal_public_defs.h"
+#include "d2pm_public_defs.h"
+#include "d2cm_public_defs.h"
+#include "d2rm_public_defs.h"
+#include "iwlan_public_defs.h"
+#include "atcmd_struct.h"
+
+typedef enum {
+    DCCHG_C2K_IRAT = 0,
+    DCCHG_NW_MOD_99,
+    DCCHG_NW_MOD_39,
+    //DCCHG_ROAMING,  
+    DCCHG_MAX = 0x7FFFFFFF  
+} data_call_change_reason_enum;
+
+typedef enum {
+    RETRY_TYPE_NO_SUGGEST,
+    RETRY_TYPE_NO_RETRY,
+    RETRY_TYPE_WITH_SUGGEST,
+    RETRY_TYPE_DEFAULT_POLICY,
+    RETRY_TYPE_MAX = 0x7FFFFFFF
+} retrytime_type_enum;
+
+typedef enum {
+    RETRY_RESET_POWER_CYCLE_OFF,
+    RETRY_RESET_POWER_CYCLE_ON,
+    RETRY_RESET_APN_CONFIG_CHANGED,
+} retrytime_reset_event_enum;
+
+
+typedef enum {
+    RESET_USER_AP,
+    RESET_USER_MD,
+    RETRY_USER_MAX = 0x7FFFFFFF
+} data_retry_reset_user_enum;
+typedef struct apn_data_retry_info {
+    kal_uint8 apn[APN_STRING_LEN];
+    ddm_apn_type_enum apn_type;
+    kal_bool error_occured;
+    kal_uint32 error_cause;
+#ifdef __TC01__
+    kal_uint16* timer_id;
+#endif
+    retrytime_type_enum retrytime_type;
+    kal_uint32 retry_time;
+    kal_uint8 retry_count;
+    kal_uint32 end_time;
+    kal_bool retry_count_exhaustible;
+    kal_bool retry_count_setted;
+    kal_bool has_power_off;
+    kal_bool is_from_mcf;
+    kal_bool is_s_nssai_present;
+    at_s_nssai_struct s_nssai;
+}apn_data_retry_info_t;
+
+typedef enum {
+    RETRY_PDN_TYPE_ALL = 0,
+    RETRY_PDN_TYPE_IMS,
+    RETRY_PDN_TYPE_EMERGENCY,
+    RETRY_PDN_TYPE_NON_IMS,
+    RETRY_PDN_TYPE_NON_EMERGENCY,
+    RETRY_PDN_TYPE__MAX = 0x7FFFFFFF
+}data_retry_pdn_type_enum;
+
+typedef enum {
+    RETRY_RAT_ALL = 0,
+    RETRY_RAT_5G,
+    RETRY_RAT_LTE,
+    RETRY_RAT_23G,
+    RETRY_RAT_MAX = 0x7FFFFFFF
+}data_retry_rat_enum;
+
+typedef struct mcf_data_retry_info {
+    data_retry_rat_enum rat;
+    data_retry_pdn_type_enum pdn_type;
+    retrytime_type_enum retry_type; // 0: NO_RETRY, 1: Retry with suggest time, 2: No suggest time
+    kal_uint16 error_cause[20];
+    kal_uint8 error_cause_count;
+    kal_uint32 retry_time[10];
+    kal_uint8 retry_time_count;
+    kal_bool all_error_cause_set;
+    kal_bool default_error_cause_set;
+    kal_uint8 retry_time_idx;
+}mcf_data_retry_info_t;
+
+typedef struct mcf_parsed_data_retry_info {
+    mcf_data_retry_info_t retry_info[20]; // we assume effective_retry_info_cnt < 20, so we use 20 for its size
+    kal_uint8 effective_retry_info_cnt;
+    kal_bool is_valid;
+} mcf_parsed_data_retry_info_t;
+
+typedef struct pco_info {
+    kal_bool                                IE_present;
+    kal_uint8                               IE[IE_STRING_LEN];                                                  // string type
+    kal_bool                                contents_present;
+    kal_uint8                               contents[AT_EGPCORDP_CONTENTS_STRING_LEN];                                      // string type
+} pco_info_t;
+
+#endif
+
diff --git a/mcu/interface/protocol/general/perf_api.h b/mcu/interface/protocol/general/perf_api.h
new file mode 100644
index 0000000..f445723
--- /dev/null
+++ b/mcu/interface/protocol/general/perf_api.h
@@ -0,0 +1,311 @@
+/******************************************************************************
+*  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).
+*
+*******************************************************************************/
+#ifndef _PERF_API_H_
+#define _PERF_API_H_
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "kal_public_api.h"
+#include "kal_trace.h"
+#include "event_info_utility.h"
+#include "md_sap.h"
+#include "perf_msgid.h"
+
+/********************************************
+ *         TYPE DEFINITIONS & ENUMS         *
+ ********************************************/
+typedef enum
+{
+    RECOVERY_TYPE_ASSERT = 0,
+    RECOVERY_TYPE_SIM_PLUG = 0, /// not support yet
+    RECOVERY_TYPE_FLIGHT_MODE,
+    RECOVERY_TYPE_REATTACH = RECOVERY_TYPE_FLIGHT_MODE, /// not support yet
+    RECOVERY_TYPE_LTE_LOCAL_RELEASE,
+    RECOVERY_TYPE_LTE_RRC_REESTABLISH,
+    RECOVERY_TYPE_PERF_SUPPORT_NUM, /// the max number PERF support (not include NR)
+
+    RECOVERY_TYPE_NR_LOCAL_RELEASE = RECOVERY_TYPE_PERF_SUPPORT_NUM,
+    RECOVERY_TYPE_NR_RRC_REESTABLISH,
+    RECOVERY_TYPE_NR_SCG_FAILURE_INFO,
+    RECOVERY_TYPE_NR_RRC_REDIRECT_FAIL, // RRC ask ERM to notify scenario when redirection fail, and notify NRRC when scenario happened
+} protocol_exception_recovery_type_enum;
+
+typedef enum
+{
+    LTE_LOCAL_RELEASE_RESULT_OK,
+    LTE_LOCAL_RELEASE_RESULT_FAIL
+} lte_local_release_result_enum;
+
+typedef enum
+{
+    LTE_RRC_REESTABLISH_RESULT_OK,
+    LTE_RRC_REESTABLISH_RESULT_ONGOING,
+    LTE_RRC_REESTABLISH_RESULT_FAIL
+} lte_rrc_reestablish_result_enum;
+
+typedef enum
+{
+    PERF_UT_MSG_SEND_NONE = 0,
+    PERF_UT_MSG_SEND_KAL,
+    PERF_UT_MSG_SEND_UTT
+} perf_ut_msg_send_mode_enum;
+
+/********************
+ NR related enum
+********************/
+ 
+typedef enum
+{
+	ERROR_RECOVERY_METHOD_NON = 0,
+	ERROR_RECOVERY_METHOD_RELEASE,        
+	ERROR_RECOVERY_METHOD_REEST,
+    ERROR_RECOVERY_METHOD_SCG_FAIL_INFO,
+} error_recovery_method_enum;
+
+/********************************************
+ *                VARIABLES                 *
+ ********************************************/
+#define PEFR_ALL_PROTOCOL_ID (0xF)
+#define PERF_MAX_DEBUG_BUF_SIZE (128) /// in byte
+#define PERF_FILENAME_LENGTH (90)
+#define PERF_FUNCTION_NAME_LENGTH (50)
+
+/********************************************
+ *                STRUCTURES                *
+ ********************************************/
+/// interface for Offender
+typedef struct
+{
+    void *p_buf;
+    kal_uint32 size; /// size of p_buf in byte
+} protocol_exception_recovery_debug_struct;
+
+/// User API parameter: PROTOCOL_EXCEPTION_RECOVERY()
+typedef struct
+{
+    kal_uint8 protocol_id; /**<
+                             0x0 ~ 0x3: protocol stack 1 ~ 4
+                             PEFR_ALL_PROTOCOL_ID (0xF): all protocol stack id
+                            **/
+    kal_bool disable_escalate_recovery; /// KAL_TRUE: disable escalating recovery feature
+    protocol_exception_recovery_debug_struct debug;
+} protocol_exception_recovery_info_struct;
+
+/// trigger PERF primitive structure (MSG_ID_PROTOCOL_EXCEPTION_RECOVERY)
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    protocol_exception_recovery_type_enum recovery_type;
+    protocol_exception_recovery_info_struct info;
+    char filename[PERF_FILENAME_LENGTH];
+    char function_name[PERF_FUNCTION_NAME_LENGTH];
+    kal_uint32 line;
+    //kal_uint8 debug_buff_id;
+} protocol_exception_recovery_struct;
+
+/// interface for flight mode Actor
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_bool is_flight_mode;
+    kal_uint8 ps_id; /// protocol stack id bitmap
+} perf_l4bpwr_flight_mode_recovery_req, perf_l4bpwr_flight_mode_recovery_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_bool result;
+} perf_l4bpwr_flight_mode_recovery_cnf, perf_l4bpwr_flight_mode_recovery_cnf_struct;
+
+/// interface for LTE local release Actor
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    lte_local_release_result_enum cause;
+    kal_uint8 protocol_id;
+} perf_emm_lte_local_release_recovery_cnf, perf_emm_lte_local_release_recovery_cnf_struct;
+
+/// interface for LTE RRC reestablishment Actor
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    lte_rrc_reestablish_result_enum cause;
+} perf_errc_lte_rrc_reestablishment_recovery_cnf, perf_errc_reestablishment_recovery_cnf_struct;
+
+/********************
+ NR related Struct.
+********************/
+/* MSG_ID_ERM_ERROR_IND*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    protocol_exception_recovery_type_enum   err_event;
+    protocol_exception_recovery_info_struct info;
+} erm_error_ind_struct;
+
+/* MSG_ID_ERM_VGMM_ERROR_RECOVERY_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    error_recovery_method_enum              recovery_method;
+    kal_uint16                              timer_period;
+} erm_vgmm_error_recovery_req_struct;
+
+/* MSG_ID_ERM_VGMM_ERROR_RECOVERY_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} erm_vgmm_error_recovery_cnf_struct;
+/********************************************
+ *            MACROS and API                *
+ ********************************************/
+/// interface for LTE Local Release Actor
+/// hook function pointer from EMM to PERF
+typedef kal_bool (*perf_query_is_lte_conn_status_idle_f)(kal_uint8 protocol_id);
+extern void lte_local_release_actor_hook_conn_status_query_fp(perf_query_is_lte_conn_status_idle_f fp_query);
+
+/// atomic read PERF need update IDLE status (for local release recovery result)
+extern void lte_local_release_actor_update_conn_status(kal_bool is_idle, kal_uint8 protocol_id);
+
+kal_bool protocol_exception_recovery_trigger(
+        module_type module_id,
+        const char *filename,
+        const char *function_name,
+        kal_uint32 line,
+        protocol_exception_recovery_type_enum recovery_type,
+        protocol_exception_recovery_info_struct *p_info);
+/// Note: User shall "not" use below internal macro directly !
+#define __PERF_TRIGGER(_module, _file, _func, _line, _type, _info) \
+    protocol_exception_recovery_trigger(\
+        (_module),\
+        (_file),\
+        (_func),\
+        (kal_uint32)(_line),\
+        (protocol_exception_recovery_type_enum)(_type),\
+        (protocol_exception_recovery_info_struct *)(_info));
+
+#define _PERF_TRIGGER(_module, _type, _info) \
+    __PERF_TRIGGER((_module),__FILE__,__func__,__LINE__,(_type),(_info))
+
+#define _PERF_TRIGGER_LITE(_module, _type, _info) \
+    __PERF_TRIGGER((_module),"","",__LINE__,(_type),(_info))
+
+/// recovery API for general user
+#if defined(__MTK_TARGET__) && defined(__PERF_SUPPORT__) && !defined(__DEBUG_ASSERT_SUPPORT__) && !defined(__UE_SIMULATOR__)
+/// will change before/after SQC start
+#define PROTOCOL_EXCEPTION_RECOVERY _PERF_TRIGGER
+#define PROTOCOL_EXCEPTION_RECOVERY_LITE _PERF_TRIGGER_LITE
+#define EMM_HOOK_CONN_STATUS_QUERY_FP(_fp) lte_local_release_actor_hook_conn_status_query_fp((_fp))
+#define EMM_UPDATE_CONN_STATUS_TO_PERF(_is_idle, _protocol_id) lte_local_release_actor_update_conn_status((_is_idle), (_protocol_id))
+
+#elif defined(UNIT_TEST) && defined(__PERF_SUPPORT__) && !defined(__UE_SIMULATOR__)
+    /// UT always enable API
+#define PROTOCOL_EXCEPTION_RECOVERY _PERF_TRIGGER
+#define PROTOCOL_EXCEPTION_RECOVERY_LITE _PERF_TRIGGER_LITE
+#define EMM_HOOK_CONN_STATUS_QUERY_FP(_fp) lte_local_release_actor_hook_conn_status_query_fp((_fp))
+#define EMM_UPDATE_CONN_STATUS_TO_PERF(_is_idle, _protocol_id) lte_local_release_actor_update_conn_status((_is_idle), (_protocol_id))
+
+#else
+    /// for other build, always keep assert
+#define PROTOCOL_EXCEPTION_RECOVERY(_module, _type, _info) \
+    ASSERT(0); \
+    kal_prompt_trace((_module), "[PROTOCOL EXCEPTION] current stage is disable (%x,%x,%x)", (_module), (_type), (_info));
+#define PROTOCOL_EXCEPTION_RECOVERY_LITE PROTOCOL_EXCEPTION_RECOVERY
+#define EMM_HOOK_CONN_STATUS_QUERY_FP(_fp) lte_local_release_actor_hook_conn_status_query_fp((_fp))
+#define EMM_UPDATE_CONN_STATUS_TO_PERF(_is_idle, _protocol_id) if ((_is_idle) && (_protocol_id)){}
+
+#endif // ~ #if defined(__MTK_TARGET__) && !defined(__DEBUG_ASSERT_SUPPORT__) #elif defined(UNIT_TEST) #else
+
+/// recovery API for HISR user
+#define PROTOCOL_EXCEPTION_RECOVERY_HISR PROTOCOL_EXCEPTION_RECOVERY
+
+/// recovery API for LISR without multi-thread user
+#define PROTOCOL_EXCEPTION_RECOVERY_LISR PROTOCOL_EXCEPTION_RECOVERY
+
+/// recovery API for LISR with multi-thread user
+#define PROTOCOL_EXCEPTION_RECOVERY_MT_LISR PROTOCOL_EXCEPTION_RECOVERY
+
+/// Actor result update message send
+#ifdef UNIT_TEST
+extern perf_ut_msg_send_mode_enum g_ut_enable_msg_send;
+#ifdef __GTEST_ENABLE__
+#define PERF_UT_MSG_SEND6(...) \
+    if (g_ut_enable_msg_send == PERF_UT_MSG_SEND_NONE) \
+    { \
+    } \
+    else if (g_ut_enable_msg_send == PERF_UT_MSG_SEND_UTT) \
+    { \
+        utt_msg_send6(__VA_ARGS__); \
+    } \
+    else \
+    { \
+        msg_send6(__VA_ARGS__); \
+    }
+#else
+#define PERF_UT_MSG_SEND6(...) \
+    if (g_ut_enable_msg_send == PERF_UT_MSG_SEND_NONE) \
+    { \
+    } \
+    else \
+    { \
+        msg_send6(__VA_ARGS__); \
+    }
+#endif // ~ #ifdef __GTEST_ENABLE__ #else
+
+#define PERF_MSG_SEND6(...) PERF_UT_MSG_SEND6(__VA_ARGS__)
+#define ENABLE_PERF_MSG_SEND6() do{g_ut_enable_msg_send = PERF_UT_MSG_SEND_UTT;}while(0);
+#define ENABLE_PERF_MSG_SEND6_FOR_MSC() do{g_ut_enable_msg_send = PERF_UT_MSG_SEND_KAL;}while(0);
+#define DISABLE_PERF_MSG_SEND6() do{g_ut_enable_msg_send = PERF_UT_MSG_SEND_NONE;}while(0);
+#define DISABLE_PERF_MSG_SEND6_FOR_MSC DISABLE_PERF_MSG_SEND6
+#else
+#define PERF_MSG_SEND6(...) msg_send6(__VA_ARGS__)
+#endif // ~ #ifdef UNIT_TEST #else
+
+#ifdef __PERF_TEST_MODE__
+typedef void (*perf_test_mode_case_f)(void *param);
+extern kal_uint32 perf_test_mode_regist_a_case(perf_test_mode_case_f fp, void *param);
+#define PERF_REGIST_IT_CASE_FP(_fp, _param) perf_test_mode_regist_a_case((_fp), (void *)(_param))
+#else
+#define PERF_REGIST_IT_CASE_FP(_fp, _param)
+#endif // ~ #ifdef __PERF_TEST_MODE__
+
+#endif // ~ #ifndef _PERF_API_H_
\ No newline at end of file
diff --git a/mcu/interface/protocol/general/phb_defs.h b/mcu/interface/protocol/general/phb_defs.h
new file mode 100644
index 0000000..5ebb39d
--- /dev/null
+++ b/mcu/interface/protocol/general/phb_defs.h
@@ -0,0 +1,224 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * phb_defs.h
+ *
+ * Project:
+ * --------
+ *   MT6208
+ *
+ * Description:
+ * ------------
+ *   This file contains common definitions for PHB module.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *******************************************************************************/
+#ifndef _PHB_DEFS_H
+#define _PHB_DEFS_H
+
+#include "kal_public_defs.h" //MSBB change #include "stack_config.h"
+#include "kal_general_types.h"
+#include "kal_public_api.h"
+#include "sim_public_api.h"
+#if defined(__NG_ECALL_SUPPORT__)
+#include "ps_public_struct.h"
+#endif
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */ 
+
+/* Header files should be include before this one */
+
+#define PHB_INVALID_VALUE              ~0
+#define PHB_NULL_VALUE                 0
+
+#define BYTE_SIZE                      8
+#define BYTE_SIZE_SHIFT_ARITHMETIC     3
+
+
+#define PHB_TYPE2_FILE_FLAG          (0x80)
+
+/* delete all turbo */
+#define __PHB_DELETE_ALL_TURBO__ 
+/* Concurrency degree is the number of control blocks. */
+#define PHB_CONCURRENCY_DEGREE         3
+
+/* In byte(s). Must not exceeds the capacity defined by l4_common_struct.h. */
+/* 20040802 Wilson, If LMMI providing sorting mechanism, it does not need to sort in L4 */
+
+#define PHB_ALPHA_ID_DEPTH             10
+
+/* Number of bytes after ALPHA_ID field */
+#define PHB_LENGTH_AFTER_ALPHA_ID      14
+
+/* Byte size of TON/NPI allocated in NVRAM/SIM */
+#define TON_NPI_SIZE 1
+
+/**
+ * Maximum bytes of TON/NPI and DIALLING_NUMBER/SSC_STRING 
+ * fields allocated for ADN-like EF's
+ */
+#define PHB_EF_MAX_TON_NPI_TEL_NUMBER_LEN       11
+
+/**
+ * Maximum bytes of DIALLING_NUMBER/SSC_STRING field allocated
+ * for EXT-like EF's.
+ */
+#define PHB_EF_EXT_MAX_TEL_NUMBER_LEN      10
+
+#define PHB_EMAIL_MAX_LEN 60
+
+    /* TON and NPI constants */
+#define NPI_UNKNOWN                    0
+#define NPI_ISDN                       1
+/** 
+ * Most significant bit is always 1 for TON. ie, 1???. 
+ * Hence, 
+ * TON_UNKNOW is 1000, TON_NATIONAL is 1010, and 
+ * TON_INTERNATIONAL is 1001
+ */
+#define TON_EXT                        0x08
+#define TON_UNKNOWN                    0x00
+#define TON_INTERNATIONAL              0x01
+#define TON_NATIONAL                   0x02
+#define TON_NETWORK_SPECIFIC           0x03
+#define TON_DEDICATED                  0x04
+
+/* Default TON/NPI */
+#define TON_NPI_DEFAULT    (((TON_EXT | TON_UNKNOWN) << 4) | NPI_ISDN)
+
+#define FETCH_TON(x)       ((x >> 4) & 0x07)
+
+/* This is reserved for possible revision of l4_addr_bcd_struct */
+#define L4_ADDR_BCD_TON_NPI_OFFSET     0
+#define L4_ADDR_BCD_TON_NPI_SIZE       1
+#define L4_ADDR_BCD_TEL_NUM_OFFSET     1
+
+/* Valid digits are 0x00 ~ 0x0C; ie, before p; ranges from 0 ~ *, #. */
+#define DN_VALID_DIGIT_LIMIT           0x0C
+
+#define PHB_MCC_MNC_STR_LEN 6
+
+#if defined(GEMINI_PLUS) && (GEMINI_PLUS >= 4)
+extern module_type phb_current_mod;
+#define PHB_SIM_NUM 4
+#elif defined(GEMINI_PLUS) && (GEMINI_PLUS >= 3)
+extern module_type phb_current_mod;
+#define PHB_SIM_NUM 3
+#elif defined(__GEMINI__)
+extern module_type phb_current_mod;
+#define PHB_SIM_NUM 2
+#else
+#define PHB_SIM_NUM 1
+#endif
+
+#define MAX_NETWORK_ECC_NUM 16
+
+
+#if defined(__GEMINI__) || defined(GEMINI_PLUS)
+#define PHB_WHICH_SIM phb_which_sim_ex()
+#else /* __GEMINI__ */
+#define PHB_WHICH_SIM
+#endif /* __GEMINI__ */
+
+#define PHB_SIM_SERVICE_TABLE_QUERY_BY_PS_ID(x, ps_id) (sim_service_table_query_by_ps_id(x, ps_id) == SERVICE_SUPPORT ? KAL_TRUE : KAL_FALSE)
+#define PHB_SIM_SERVICE_TABLE_QUERY(x) (PHB_SIM_SERVICE_TABLE_QUERY_BY_PS_ID(x, phb_which_sim_ex()))
+
+
+typedef enum
+{
+    IO_NONE,
+    IO_READ_IAP,
+    IO_WRITE_IAP,
+    IO_WAIT,
+    IO_SEGMENTATION,
+    IO_COMPLETE,
+} IO_state_enum;
+
+typedef enum
+{
+    OP_READ,
+    OP_WRITE,
+    OP_DELETE
+} op_enum;
+
+typedef struct
+{
+    kal_uint8 length;
+    kal_uint8 charset;
+    kal_uint8 data[PHB_ALPHA_ID_DEPTH];
+} alpha_id_type;
+
+#define EF_TEL_NUMBER_SIZE 10
+/* Stored phone book entries structure */
+typedef struct
+{
+    kal_uint8 len;
+    kal_uint8 ton_npi;
+    kal_uint8 tel_number[EF_TEL_NUMBER_SIZE];
+    kal_uint8 cap_cnf_id;
+    kal_uint8 ext_id;   /* Should not be used for nvram_access. */
+    /* Note that BDN has 1 byte more: comparison method ID */
+} phb_ef_mandatory_struct;
+
+typedef struct
+{
+    kal_uint8 *alpha_id;
+    phb_ef_mandatory_struct *mandatory;
+} phb_ef_struct;
+
+#if defined(__NG_ECALL_SUPPORT__)
+    typedef struct
+    {
+        kal_uint8          no_uri;
+        l4_phb_uri_struct  uri_record[MAX_PHB_XDN_URI_NUM];
+    } phb_uri_struct;
+#endif
+
+#ifdef __cplusplus
+}
+#endif 
+
+#endif /* _PHB_DEFS_H */ 
+
diff --git a/mcu/interface/protocol/general/ppp2csd_struct.h b/mcu/interface/protocol/general/ppp2csd_struct.h
new file mode 100644
index 0000000..1d7b708
--- /dev/null
+++ b/mcu/interface/protocol/general/ppp2csd_struct.h
@@ -0,0 +1,117 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * ppp2csd_struct.H
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is the header file which define the local parameter struct 
+ *   between the PPP and CSD (TDT,L2R).
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _PPP2CSD_STRUCT_H
+#define _PPP2CSD_STRUCT_H
+
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 is_complete_frame;
+    kal_uint8 seq_number;
+} ppp_csd_data_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 seq_number;
+} ppp_csd_data_req_struct;
+
+#ifdef __PPP_UT__ 
+typedef ppp_csd_data_ind_struct ppp_l2r_data_ind_struct;
+#endif /* ~ __PPP_UT__ */
+
+#endif 
+
+
diff --git a/mcu/interface/protocol/general/ppp2l4c_struct.h b/mcu/interface/protocol/general/ppp2l4c_struct.h
new file mode 100644
index 0000000..911d989
--- /dev/null
+++ b/mcu/interface/protocol/general/ppp2l4c_struct.h
@@ -0,0 +1,228 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * PPP2L4C_STRUCT.H
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file describes the common struct of TCM and L4C.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _PPP2L4C_STRUCT_H
+#define _PPP2L4C_STRUCT_H
+
+#include "kal_general_types.h"
+//#include "kal_non_specific_general_types.h"
+#include "kal_public_defs.h"
+
+typedef struct {
+    /* Warning::
+      * If result is PPPE_RESULT_FAILED, then only port and cause are valid in this struct
+      * else if the result is success, then src_id,context_id, pdp_type, port, and cause are all valid value in this struct
+      */
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 context_id; // PH 20050223 MPDP
+    kal_uint8 result; /* success or failed*/
+    kal_uint8 pdp_type;
+    kal_uint8 port;
+    kal_uint8 cause; /* abnormal case */
+    kal_uint8 context_id2; //L4CPPP_FB_2, if it does not exist, fill with INVALID_PDP_CONTEXT_ID
+    kal_uint8 pdp_type2;   //L4CPPP_FB_2, if it does not exist, fill with NULL PDP type
+} l4cppp_activate_cnf_struct; 
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 context_id; // PH 20050223 MPDP
+    kal_uint8 port;
+    kal_uint8 result;
+    kal_uint8 cause; /* abnormal case */
+    kal_uint8 context_id2; //L4CPPP_FB_2, if it does not exist, fill with INVALID_PDP_CONTEXT_ID    
+} l4cppp_deactivate_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 context_id; // PH 20050223 MPDP
+    kal_uint8 port;
+    kal_uint8 cause; /* abnormal case */
+    kal_uint8 context_id2; //L4CPPP_FB_2, if it does not exist, fill with INVALID_PDP_CONTEXT_ID    
+} l4cppp_deactivate_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 result; /* success or failed*/
+    kal_uint8 port;
+} l4cppp_resume_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 result; /* success or failed*/
+    kal_uint8 err_cause;   
+    kal_uint8 ip_addr[4];
+    kal_uint8 pri_dns_addr[4];
+    kal_uint8 sec_dns_addr[4];
+    kal_uint16 mtu;
+} l4cppp_csd_activate_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 result; /* success or failed*/
+    kal_uint8 err_cause;
+} l4cppp_csd_deactivate_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 port;
+} l4cppp_escape_ind_struct;
+
+typedef struct {
+    kal_uint16  id;
+    kal_uint32  time_stamp;
+    kal_uint32  time_100us;
+    kal_uint16  frame_size;
+    kal_uint16  data_size;
+} frame_statistic_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 direction;
+    frame_statistic_struct statistic[10];
+    kal_uint32 time_in_ms;
+} ppp_status_report_ind_struct;
+
+// PPP Type PDP Dialup Feature
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 context_id;
+    kal_uint8 port;
+    kal_uint8 result; // success or fail
+} l4cppp_ppptypepdp_activated_ind_struct;
+
+//__IPV4V6__
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool   pdp_activate_rsp_accept;     // accept or reject
+    kal_uint8  pdp_activate_rsp_pdp_type;   // IPV4V6, IPV4, IPV6 --> only need when accept
+    kal_uint8  pdp_activate_rsp_cid;        // 1, 2, 3
+    kal_uint16 pdp_activate_cause;          // only for reject
+    kal_bool   pdp_activate_cause2_present; // only for accept
+    kal_uint16 pdp_activate_cause2;         // only for accept
+} l4cppp_ipv4v6_fallback_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8  src_id;
+    kal_uint8  context_id;
+    kal_uint8  pdp_type;
+} l4cppp_initial_ip_type_ind_struct; //L4CPPP_FB
+#endif 
+
+
diff --git a/mcu/interface/protocol/general/ppp2tcm_struct.h b/mcu/interface/protocol/general/ppp2tcm_struct.h
new file mode 100644
index 0000000..0df125a
--- /dev/null
+++ b/mcu/interface/protocol/general/ppp2tcm_struct.h
@@ -0,0 +1,225 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * PPP2TCM_STRUCT.H
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file describes the common struct of TCM and L4C.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _PPP2TCM_STRUCT_H
+#define _PPP2TCM_STRUCT_H
+
+//#include "mmi_l3_enums.h"
+
+//------------------------------ suggest Add ------------------------------
+//#include "kal_non_specific_general_types.h"
+
+/* Poying: MSBB. */
+//#include "mmi_sm_enums.h"
+//#include "tcm2sm_struct.h"
+#include "ps_public_enum.h"
+#include "ps_public_struct.h"
+
+//------------------------------ suggest Add ------------------------------
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 context_id;
+    kal_uint8 l2p_type; /* layer two protocol*/
+    kal_uint8 pdp_addr_len; /* pdp address length*/
+    kal_uint8 pdp_type; /* pdp address type*/
+    kal_uint8 pdp_addr[16];
+    kal_uint8 config_protocol;
+    kal_uint8 config_option_len; /* config option length*/
+    config_option_struct config_option[MAX_NUM_CONFIG_OPTION_PACKETS];
+    kal_uint8 src_id;
+	//mtk04121
+	kal_uint32 req_reason;
+} mmi_ext_pdp_activate_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 context_id;
+    kal_uint8 flc_pool_type;
+    kal_uint8 pool_id;
+} mmi_ext_data_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 context_id;
+    kal_uint8 src_id;
+    #ifdef __LOCAL_DEACTIVATE_PDP_SUPPORT__
+    kal_bool local_deactivate_pdp; /* __LOCAL_DEACTIVATE_PDP_SUPPORT__ */	
+    #endif // ~ __LOCAL_DEACTIVATE_PDP_SUPPORT__
+    tcm_pdp_deact_reason_enum deact_reason; // this deactivation is due to MSG_ID_TCM_RAT_TCM_INIT_DEACTIVATE_CONTEXT_IND
+} mmi_ext_pdp_deactivate_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 context_id;
+    kal_uint8 cause;
+} mmi_link_free_ind_struct;
+
+typedef struct {
+    // [Note] 20081114
+    //  This struct shall be aligned with cmux_pkt_data_ind_struct
+    //  If you need to modify it, please notify both TCM & CMUX owners. Thanks!
+    LOCAL_PARA_HDR
+    kal_uint8 context_id; /* for __APP_SECONDARY_PDP_SUPPORT__ */
+    kal_uint8 profile_id;
+    kal_uint8 flc_pool_type;
+    kal_uint8 pool_id;
+} mmi_data_ind_struct;
+
+// PPP Type PDP Dialup Feature
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 serial_number; // for matching request and confirm
+    kal_uint8 context_id;
+    kal_uint8 src_id;
+    kal_uint8 ipv4_addr[4];
+    kal_uint8 ipv4_dns1[4];
+    kal_uint8 ipv4_dns2[4];
+    kal_uint8 ipv6_addr[16];
+    kal_uint8 ipv6_dns1[16];
+    kal_uint8 ipv6_dns2[16];
+} mmi_ext_pdp_set_ip_and_dns_info_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 context_id;    
+    kal_uint8 channel_id;
+    pdp_addr_type_enum pdp_type;    
+    kal_uint8 additional_para_type; //tcm_pdp_activate_req_additional_para_type_enum (TCM_PDP_ACT_REQ_HAS_EXTRA_PARA_AS_MODULE_ID)
+    kal_uint32 additional_para_content; // module id
+}ppptcm_enter_data_mode_req_struct;
+
+
+typedef mmi_ext_pdp_activate_ind_struct taf_ext_pdp_activate_ind_struct;
+typedef mmi_ext_data_ind_struct taf_data_ind_struct;
+typedef mmi_data_ind_struct tcpip_tcm_data_req_struct;
+typedef mmi_ext_pdp_deactivate_ind_struct taf_ext_pdp_deactivate_ind_struct;
+typedef mmi_link_free_ind_struct taf_link_free_ind_struct;
+typedef mmi_ext_pdp_set_ip_and_dns_info_req_struct taf_ext_pdp_set_ip_and_dns_info_req_struct;
+
+typedef ppptcm_enter_data_mode_req_struct taf_ext_enter_data_mode_req_struct;
+
+#endif 
+
+
diff --git a/mcu/interface/protocol/general/ppp_ext_modem_callback.h b/mcu/interface/protocol/general/ppp_ext_modem_callback.h
new file mode 100644
index 0000000..304b599
--- /dev/null
+++ b/mcu/interface/protocol/general/ppp_ext_modem_callback.h
@@ -0,0 +1,99 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * PPP_EXT_MODEM_CALLBACK.H
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends to provide callback functions for 
+ *   the EXT_MODEM task to call.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef _PPP_EXT_MODEM_CALLBACK_H
+#define _PPP_EXT_MODEM_CALLBACK_H
+
+#include "kal_general_types.h"
+//#include "app_ltlcom.h"
+#include "kal_public_api.h"
+
+kal_bool pppextmodem_flc_activate   (void);
+void     pppextmodem_flc_deactivate (void);
+void     pppextmodem_free_ul_appdu_flc_buf (peer_buff_struct *ptr);
+void     pppextmodem_free_dl_appdu_flc_buf (peer_buff_struct *ptr);
+peer_buff_struct* pppextmodem_get_dl_appdu_flc_buff (kal_uint16, kal_uint16, kal_uint16);
+
+
+#endif /* _PPP_EXT_MODEM_CALLBACK_H */
diff --git a/mcu/interface/protocol/general/ppp_l4_enums.h b/mcu/interface/protocol/general/ppp_l4_enums.h
new file mode 100644
index 0000000..139f51d
--- /dev/null
+++ b/mcu/interface/protocol/general/ppp_l4_enums.h
@@ -0,0 +1,353 @@
+/*******************************************************************************
+*  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:
+ * ---------
+ *   ppp_l4_enums.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _PPP_L4_ENUMS_H
+#define _PPP_L4_ENUMS_H
+
+typedef enum
+{
+    NORMAL_LINK_TERMINATION,
+    ABNORMAL_LINK_TERMINATION
+} mmi_link_free_enum;
+
+typedef enum
+{
+   PPPE_MOBILE_DEACT,
+   PPPE_NW_DEACT
+} pppcsd_deact_cause_enum;
+
+typedef enum
+{
+   PPPE_NONE,
+   PPPE_LCP_FAIL,
+   PPPE_AUTH_FAIL,
+   PPPE_IPCP_FAIL,
+   PPPE_ESC_DETECT,
+   PPPE_PLUGOUT_DETECT,
+   PPPE_PPP_GPRS_DIALUP_ALREADY_ACTIVATED,
+   PPPE_PPP_NOT_ACTIVATED_BY_EXT_MODEM_YET,
+   PPPE_PPP_ALREADY_ACTIVATED_BY_EXT_MODEM,
+   PPPE_PPP_NOT_ACTIVATED_BY_WAP_OVER_CSD_YET,
+   PPPE_PPP_ALREADY_ACTIVATED_BY_WAP_OVER_CSD,
+   PPPE_PPP_WRONG_CSD_MOD_ID,
+   PPPE_PPP_DETECT_AT_CMD_DURING_DIALUP, //[MONZA00008185]
+   PPPE_PPP_DETECT_ESCAPE_DURING_DIALUP, //[MONZA00008185]
+   PPPE_PPP_IN_GEMINI_DIALUP_ACTIVATED_BY_ANOTHER_L4C, // change feature 2008 03 26
+   PPPE_PPP_DIALUP_ABORTED_BY_L4C_AT_CGACT_0,
+   PPPE_PPP_DIALUP_WITH_UNSUPPORTED_PDP_TYPE, // __PPP_TYPE_PDP_DIALUP_SUPPORT__
+   PPPE_PPP_PDP_CONTEXT_INCORRECT,
+   PPPE_PPP_ERROR_CAUSE_ENUM_SIZE
+} ppp_error_cause_enum;
+
+typedef enum
+{
+    NULL_L2P = 1,
+    PPP,
+    MANUFACTURER_PROTOCOL    
+} mmi_ltwoh_protocol_enum;
+
+enum
+{
+   PPPE_RESULT_SUCCESS,
+   PPPE_RESULT_FAILED
+};
+
+typedef enum {
+   FSM_INITIAL,
+   FSM_STARTING,
+   FSM_CLOSED,
+   FSM_STOPPED,
+   FSM_CLOSING,
+   FSM_STOPPING,
+   FSM_REQSENT,
+   FSM_ACKRCVD,
+   FSM_ACKSENT,
+   FSM_OPENED,
+   FSM_STATE_SIZE
+} ppp_fsm_state_enum;
+
+typedef enum {
+    VENDOREXT = 0,
+    CONF_REQ = 1,
+    CONF_ACK = 2,
+    CONF_NAK = 3,
+    CONF_REJ = 4,
+    TERM_REQ = 5,
+    TERM_ACK = 6,
+    CODE_REJ = 7,
+    PROTO_REJ = 8,
+    ECHO_REQ = 9,
+    ECHO_RPLY = 10,
+    DISCARD_REQ = 11,
+    IDENTIFICATION = 12,
+    TIMEREMAIN = 13,
+    RESET_REQ = 14,
+    RESET_ACK = 15,
+    NULL_CODE = 0xFF
+} ppp_fsm_code_enum;
+
+/*
+ * PPP Phase
+ */
+typedef enum
+{
+   PPP_INIT_STATE = 0,
+   PPP_TYPE_PDP_DIALUP_INIT_STATE = PPP_INIT_STATE,
+   PPP_LCP_STATE,
+   PPP_AUTH_STATE,
+   PPP_PDP_STATE,
+   PPP_IPCP_STATE,
+   PPP_IPV6CP_STATE,
+   PPP_DATA_STATE,
+   PPP_TERM_0_STATE,
+   PPP_TERM_1_STATE,
+   PPP_TERM_2_STATE,
+   PPP_TERM_3_STATE,
+   /*
+     * When Used for GPRS dialup, the state PPP_TERM_3_STATE 
+     * means PPP will send L4CPPP_DEACTIVATE_CNF to L4C after receiving TAF_EXT_PDP_DEACTIVATE_ACK_RSP, 
+     * After 2 scenarios, PPP will enter this state: 
+     *   (1) CBM L4C deactivate PPP in PPP_DATA_STATE, or 
+     *   (2) AT+CGACT=0 L4C deactivate PPP in PPP_PDP_STATE,  PPP_IPCP_STATE, PPP_DATA_STATE, PPP_TERM_1_STATE, or PPP_TERM_2_STATE
+     */
+   PPP_TERM_4_STATE,
+   /*
+     * When Used for GPRS dialup, the state PPP_TERM_4_STATE 
+     * means PPP will send L4CPPP_DEACTIVATE_CNF to L4C after receiving Term_Ack, 
+     * After 1 scenarios, PPP will enter this state: 
+     *   (1) AT+CGACT=0 L4C deactivate PPP in PPP_LCP_STATE,  PPP_AUTH_STATE, PPP_TERM_0_STATE
+     */
+   PPP_TYPE_PDP_DIALUP_PDP_ACTIVATING_STATE,   /* __PPP_TYPE_PDP_DIALUP_SUPPORT__ */
+   PPP_TYPE_PDP_DIALUP_PDP_ACTIVATED_STATE,    /* __PPP_TYPE_PDP_DIALUP_SUPPORT__ */
+   PPP_TYPE_PDP_DIALUP_LCP_NEGOTIATING_STATE,  /* __PPP_TYPE_PDP_DIALUP_SUPPORT__ */
+   PPP_TYPE_PDP_DIALUP_AUTH_NEGOTIATING_STATE, /* __PPP_TYPE_PDP_DIALUP_SUPPORT__ */
+   PPP_TYPE_PDP_DIALUP_NCP_NEGOTIATING_STATE,  /* __PPP_TYPE_PDP_DIALUP_SUPPORT__ */
+   PPP_TYPE_PDP_DIALUP_DATA_STATE,             /* __PPP_TYPE_PDP_DIALUP_SUPPORT__ */
+   PPP_TYPE_PDP_DIALUP_DEACTIVATING_STATE,     /* __PPP_TYPE_PDP_DIALUP_SUPPORT__ */   
+   PPP_TYPE_PDP_LAST_STATE = PPP_TYPE_PDP_DIALUP_DEACTIVATING_STATE,
+   PPP_STATE_SIZE
+} ppp_state_enum;
+
+/*
+ * PPP FSM index  
+ */
+typedef enum
+{
+   LCP,
+   AUTH,
+   IPCP,    //IPV4 or IPV4V6 or IPV6
+   IPV6CP,   //IPV4 + IPV6
+   PPP_FSM_SIZE
+} ppp_fsm_idx_enum;
+
+typedef enum /* remember who activate CSD, WAP or EXT-MODEM*/ /*Not Used*/
+{
+   CSD_CONTEXT_OCCUPIED_BY_NONE,
+   CSD_CONTEXT_OCCUPIED_BY_WAP_OVER_CSD,
+   CSD_CONTEXT_OCCUPIED_BY_EXT_MODEM,
+   CSD_CONTEXT_OCCUPIED_BY_WHO_ENUM_SIZE
+} csd_context_occupied_by_which_app_enum;
+
+typedef enum // For __PPP_TYPE_PDP_DIALUP_SUPPORT__
+{
+    PPP_PDP_NW_PPP_STATUS_NOT_RUNNING = 0,
+    PPP_PDP_NW_PPP_STATUS_RUNNING,
+    PPP_PDP_NW_PPP_STATUS_UE_HAS_SENT_TERM_REQ,
+    PPP_PDP_NW_PPP_STATUS_UE_HAS_RCVD_TERM_REQ,
+    PPP_PDP_NW_PPP_STATUS_ENUM_SIZE
+}ppppdp_nw_ppp_status_enum;
+
+typedef enum // For __PPP_TYPE_PDP_DIALUP_SUPPORT__
+{
+    PPP_PDP_NW_PDP_STATUS_NOT_ACTIVATED = 0,
+    PPP_PDP_NW_PDP_STATUS_ACTIVATING,
+    PPP_PDP_NW_PDP_STATUS_ACTIVATED,
+    PPP_PDP_NW_PDP_STATUS_DISCONNECTING,
+    PPP_PDP_NW_PDP_STATUS_ENUM_SIZE
+}ppppdp_nw_pdp_status_enum;
+
+typedef enum // For __PPP_TYPE_PDP_DIALUP_SUPPORT__
+{
+    PPP_PDP_PC_PPP_STATUS_NOT_RUNNING = 0,
+    PPP_PDP_PC_PPP_STATUS_RUNNING,
+    PPP_PDP_PC_PPP_STATUS_UE_HAS_SENT_TERM_REQ,
+    PPP_PDP_PC_PPP_STATUS_UE_HAS_RCVD_TERM_REQ,
+    PPP_PDP_PC_PPP_STATUS_ENUM_SIZE
+}ppppdp_pc_ppp_status_enum;
+
+typedef enum // For __PPP_TYPE_PDP_DIALUP_SUPPORT__
+{
+    PPP_PDP_FINAL_MSG_TO_L4_NONE = 0,
+    PPP_PDP_FINAL_MSG_TO_L4_IS_ACTIVATE_CNF_FAIL, // 1
+    PPP_PDP_FINAL_MSG_TO_L4_IS_DEACTIVATE_IND, // 2
+    PPP_PDP_FINAL_MSG_TO_L4_IS_DEACTIVATE_CNF, // 3
+    PPP_PDP_FINAL_MSG_TO_L4_ENUM_SIZE
+}ppppdp_final_msg_to_l4_enum;
+
+typedef enum
+{
+    PPPPDP_EVENT_SEE_IP_PACKET,
+    PPPPDP_EVENT_RCV_L4CPPP_ACTIVATE_REQ,
+    PPPPDP_EVENT_RCV_TAF_EXT_PDP_ACTIVATE_REJ_RSP,
+    PPPPDP_EVENT_RCV_TAF_EXT_PDP_ACTIVATE_ACK_RSP,
+    PPPPDP_EVENT_RCV_L4CPPP_PPPTYPEPDP_UART_TRANSFER_IND,
+    PPPPDP_EVENT_RCV_L4C_DEACTIVATE_REQ,
+    PPPPDP_EVENT_RCV_NW_PDP_DEACTIVATE_REQ,
+    PPPPDP_EVENT_RCV_NW_PDP_DEACTIVATE_ACK_RSP, //
+    PPPPDP_EVENT_RCV_PC_PPP_LCP_TERM_REQ,
+    PPPPDP_EVENT_RCV_PC_PPP_LCP_TERM_ACK,
+    PPPPDP_EVENT_RCV_NW_PPP_LCP_TERM_REQ,
+    PPPPDP_EVENT_RCV_NW_PPP_LCP_TERM_ACK,
+    PPPPDP_EVENT_RCV_AT_COMMAND,
+    PPPPDP_EVENT_RCV_UART_PLUGOUT,
+    PPPPDP_EVENT_RCV_ESCAPE,
+    PPPPDP_EVENT_SEE_AUTH_FRAME,
+    PPPPDP_EVENT_SEE_NCP_FRAME,
+    PPPPDP_EVENT_SEE_NCP_IPV4CP_NW_TO_PC_CONF_ACK_FRAME,
+    PPPPDP_EVENT_ALL_DISCONNECT_CONDITIONS_ARE_FULFILLED,
+    PPPPDP_EVENT_ENUM_SIZE
+} ppp_ppp_pdp_event_enum;
+
+#endif
+
+
diff --git a/mcu/interface/protocol/general/protocol_section.h b/mcu/interface/protocol/general/protocol_section.h
new file mode 100644
index 0000000..37cb99e
--- /dev/null
+++ b/mcu/interface/protocol/general/protocol_section.h
@@ -0,0 +1,359 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   protocol_section.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *==============================================================================
+ *******************************************************************************/
+#ifndef _PROTOCOL_SECTION_H
+#define _PROTOCOL_SECTION_H
+
+typedef enum /* Global Protocol Section ID */
+{
+  PROTOCOL_SECTION__GAN_TCP = 100,
+  PROTOCOL_SECTION__GAN_UDP,
+
+  PROTOCOL_SECTION__GSM_RLCMAC_DL = 200,
+  PROTOCOL_SECTION__GSM_RLCMAC_UL,
+  
+  PROTOCOL_SECTION__LLC = 300,
+
+  PROTOCOL_SECTION__NAS = 400,
+  PROTOCOL_SECTION__NAS_MM_UL,
+  PROTOCOL_SECTION__NAS_MM_DL,
+  PROTOCOL_SECTION__NAS_GMM_UL,
+  PROTOCOL_SECTION__NAS_GMM_DL,
+  PROTOCOL_SECTION__NAS_SMS_RPDU,                                                           // 405
+  PROTOCOL_SECTION__NAS_SMS_TPDU,
+  PROTOCOL_SECTION__NAS_SMS_TPDU_DELIVER = PROTOCOL_SECTION__NAS_SMS_TPDU,
+  PROTOCOL_SECTION__NAS_SMS_TPDU_DELIVER_REPORT_ACK,
+  PROTOCOL_SECTION__NAS_SMS_TPDU_DELIVER_REPORT_NACK,
+  PROTOCOL_SECTION__NAS_SMS_TPDU_STATUS_REPORT,
+  PROTOCOL_SECTION__NAS_SMS_TPDU_COMMAND,                                                   // 410
+  PROTOCOL_SECTION__NAS_SMS_TPDU_SUBMIT,
+  PROTOCOL_SECTION__NAS_SMS_TPDU_SUBMIT_REPORT_ACK,
+  PROTOCOL_SECTION__NAS_SMS_TPDU_SUBMIT_REPORT_NACK,
+  PROTOCOL_SECTION__NAS_SMS_TPDU_END = PROTOCOL_SECTION__NAS_SMS_TPDU_SUBMIT_REPORT_NACK,
+  PROTOCOL_SECTION__NAS_CC_UL,
+  PROTOCOL_SECTION__NAS_CC_DL,
+  PROTOCOL_SECTION__NAS_CISS_UL,
+  PROTOCOL_SECTION__NAS_CISS_DL,
+  PROTOCOL_SECTION__NAS_SM,
+  PROTOCOL_SECTION__NAS_UPDS,
+  PROTOCOL_SECTION__NAS_END = PROTOCOL_SECTION__NAS_UPDS,
+
+  /* "gsm_a_dtap" : for msg w/o pseudolength
+     "gsm_a_ccch" : for msg w/ pseudolength
+     "gsm_a_sacch": for short PD
+   */
+  PROTOCOL_SECTION__RR = 500,             /*"gsm_a_dtap"  */
+  PROTOCOL_SECTION__RR_with_pseudolength, /*"gsm_a_ccch"  */
+  PROTOCOL_SECTION__RR_short_PD,          /*"gsm_a_sacch" */
+
+  PROTOCOL_SECTION__RR_dl_with_pseudolength, /*"gsm_a_ccch" */
+  PROTOCOL_SECTION__RR_ul_with_pseudolength, /*"gsm_a_ccch" */
+
+  PROTOCOL_SECTION__RR_end = PROTOCOL_SECTION__RR_ul_with_pseudolength,
+
+  PROTOCOL_SECTION__SNDCP = 600,
+  PROTOCOL_SECTION__SNDCPXID,
+  
+  PROTOCOL_SECTION__LTE_RRC_BCCH_BCH = 700,
+  PROTOCOL_SECTION__LTE_RRC_BCCH_DL_SCH,
+  PROTOCOL_SECTION__LTE_RRC_DL_CCCH,
+  PROTOCOL_SECTION__LTE_RRC_DL_DCCH,
+  PROTOCOL_SECTION__LTE_RRC_PCCH,
+  PROTOCOL_SECTION__LTE_RRC_UL_CCCH,
+  PROTOCOL_SECTION__LTE_RRC_UL_DCCH,
+  PROTOCOL_SECTION__LTE_RRC_MCCH,
+  PROTOCOL_SECTION__LTE_RRC_UE_EUTRA_CAP,
+  PROTOCOL_SECTION__LTE_RRC_UE_CAPABILITY_ENQUIRY_FROM_NR,
+  
+  PROTOCOL_SECTION__NAS_EPS = 800,
+  PROTOCOL_SECTION__NAS_EPS_PLAIN,
+  PROTOCOL_SECTION__NAS_5GS,
+  PROTOCOL_SECTION__NAS_5GSM,
+  PROTOCOL_SECTION__NAS_5GS_PLAIN,
+  
+  PROTOCOL_SECTION__RRC_BCCH_BCH = 900,
+  PROTOCOL_SECTION__RRC_BCCH_FACH,
+  PROTOCOL_SECTION__RRC_DL_CCCH,
+  PROTOCOL_SECTION__RRC_DL_DCCH,
+  PROTOCOL_SECTION__RRC_DL_SHCCH,
+  PROTOCOL_SECTION__RRC_MCCH,
+  PROTOCOL_SECTION__RRC_MSCH,
+  PROTOCOL_SECTION__RRC_PCCH,
+  PROTOCOL_SECTION__RRC_UL_CCCH,
+  PROTOCOL_SECTION__RRC_UL_DCCH,
+  PROTOCOL_SECTION__RRC_UL_SHCCH,
+  PROTOCOL_SECTION__RRC_HANDOVER_TO_UTRAN_COMMAND,
+  PROTOCOL_SECTION__RRC_IRAT_HO_INFO,
+ 
+  PROTOCOL_SECTION__RRC_SI_MIB = 1000,
+  PROTOCOL_SECTION__RRC_SI_SB1,
+  PROTOCOL_SECTION__RRC_SI_SB2,
+  PROTOCOL_SECTION__RRC_SI_SIB1,
+  PROTOCOL_SECTION__RRC_SI_SIB2,
+  PROTOCOL_SECTION__RRC_SI_SIB3,
+  PROTOCOL_SECTION__RRC_SI_SIB4,
+  PROTOCOL_SECTION__RRC_SI_SIB5,
+  PROTOCOL_SECTION__RRC_SI_SIB5bis,
+  PROTOCOL_SECTION__RRC_SI_SIB6,
+  PROTOCOL_SECTION__RRC_SI_SIB7,
+  PROTOCOL_SECTION__RRC_SI_SIB8,
+  PROTOCOL_SECTION__RRC_SI_SIB9,
+  PROTOCOL_SECTION__RRC_SI_SIB10,
+  PROTOCOL_SECTION__RRC_SI_SIB11,
+  PROTOCOL_SECTION__RRC_SI_SIB11bis,
+  PROTOCOL_SECTION__RRC_SI_SIB12,
+  PROTOCOL_SECTION__RRC_SI_SIB13,
+  PROTOCOL_SECTION__RRC_SI_SIB13_1,
+  PROTOCOL_SECTION__RRC_SI_SIB13_2,
+  PROTOCOL_SECTION__RRC_SI_SIB13_3,
+  PROTOCOL_SECTION__RRC_SI_SIB13_4,
+  PROTOCOL_SECTION__RRC_SI_SIB14,
+  PROTOCOL_SECTION__RRC_SI_SIB15,
+  PROTOCOL_SECTION__RRC_SI_SIB15bis,
+  PROTOCOL_SECTION__RRC_SI_SIB15_1,
+  PROTOCOL_SECTION__RRC_SI_SIB15_1bis,
+  PROTOCOL_SECTION__RRC_SI_SIB15_2,
+  PROTOCOL_SECTION__RRC_SI_SIB15_2bis,
+  PROTOCOL_SECTION__RRC_SI_SIB15_3,
+  PROTOCOL_SECTION__RRC_SI_SIB15_3bis,
+  PROTOCOL_SECTION__RRC_SI_SIB15_4,
+  PROTOCOL_SECTION__RRC_SI_SIB15_5,
+  PROTOCOL_SECTION__RRC_SI_SIB15_6,
+  PROTOCOL_SECTION__RRC_SI_SIB15_7,
+  PROTOCOL_SECTION__RRC_SI_SIB15_8,
+  PROTOCOL_SECTION__RRC_SI_SIB16,  
+  PROTOCOL_SECTION__RRC_SI_SIB17,
+  PROTOCOL_SECTION__RRC_SI_SIB18,
+  PROTOCOL_SECTION__RRC_SI_SIB19,
+  PROTOCOL_SECTION__RRC_SI_SIB20,
+  PROTOCOL_SECTION__RRC_SI_SIB21,
+  PROTOCOL_SECTION__RRC_SI_SIB22,
+
+  PROTOCOL_SECTION__LTE_LPP_UL = 1100,
+  PROTOCOL_SECTION__LTE_LPP_DL,
+  PROTOCOL_SECTION__ULP = 1200,  
+
+  PROTOCOL_SECTION__NR_START = 1300,
+  PROTOCOL_SECTION__NR_RRC_BCCH_BCH = PROTOCOL_SECTION__NR_START,
+  PROTOCOL_SECTION__NR_RRC_DL_DCCH,
+  PROTOCOL_SECTION__NR_RRC_UL_DCCH,
+  PROTOCOL_SECTION__NR_RRC_RRC_RECONFIGURATION,
+  PROTOCOL_SECTION__NR_RRC_RRC_RECONFIGURATION_COMPLETE,
+  PROTOCOL_SECTION__NR_RRC_MEASUREMENT_REPORT,
+  PROTOCOL_SECTION__NR_RRC_RADIO_BEARER_CONFIG_IE,
+  PROTOCOL_SECTION__NR_RRC_UE_MRDC_CAPABILITY_IE,
+  PROTOCOL_SECTION__NR_RRC_UE_NR_CAPABILITY_IE,
+  PROTOCOL_SECTION__NR_RRC_MEAS_RESULT_SCG_FAILURE_IE,
+  PROTOCOL_SECTION__NR_RRC_BCCH_DL_SCH,
+  PROTOCOL_SECTION__NR_RRC_PCCH,
+  PROTOCOL_SECTION__NR_RRC_DL_CCCH,
+  PROTOCOL_SECTION__NR_RRC_UL_CCCH,
+  PROTOCOL_SECTION__NR_RRC_UL_CCCH1,
+  PROTOCOL_SECTION__NR_RRC_FREQ_BAND_LIST_IE,
+  PROTOCOL_SECTION__NR_RRC_UE_CAPABILITY_REQUEST_FILTER_NR_IE,
+  PROTOCOL_SECTION__NR_SIB1,
+  PROTOCOL_SECTION__NR_SystemInformation,
+  PROTOCOL_SECTION__NR_END = PROTOCOL_SECTION__NR_SystemInformation,
+
+  PROTOCOL_SECTION__UNKOWN = 2000,
+  
+  PROTOCOL_SECTION__C2K_START = 2001,
+  PROTOCOL_SECTION_C2K,
+  PROTOCOL_SECTION__C2K_OVERHEAD_START,
+  PROTOCOL_SECTION__C2K_1XRTT_OVERHEAD,
+  PROTOCOL_SECTION__C2K_EVDO_OVERHEAD,
+  PROTOCOL_SECTION__C2K_OVERHEAD_END = 2010,
+  
+  PROTOCOL_SECTION__C2K_OTA_START = 2011,
+  PROTOCOL_SECTION__C2K_1X_OTA,
+  PROTOCOL_SECTION__C2K_EVDO_OTA,
+  PROTOCOL_SECTION__C2K_OTA_END = 2029,
+  PROTOCOL_SECTION__C2K_END = 2030
+} PROTOCOL_SECTION;
+
+#endif /* ~_PROTOCOL_SECTION_H */
diff --git a/mcu/interface/protocol/general/ps2sat_struct.h b/mcu/interface/protocol/general/ps2sat_struct.h
new file mode 100644
index 0000000..81f2df1
--- /dev/null
+++ b/mcu/interface/protocol/general/ps2sat_struct.h
@@ -0,0 +1,195 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * PS2SAT_STRUCT.H
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for SIM toolkit's message
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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.
+*
+********************************************************************************/
+
+/*******************************************************************************
+*  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) 2002
+*
+*******************************************************************************
+ *  FILENAME : ps2sat_struct.h
+ *  SYNOPSIS : Functions for encoding/decoding.
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef _PS2SAT_STRUCT_H
+#define _PS2SAT_STRUCT_H
+
+#include "sim_public_struct.h"
+#include "sim_ps_struct.h"
+
+#endif
diff --git a/mcu/interface/protocol/general/ps2sim_struct.h b/mcu/interface/protocol/general/ps2sim_struct.h
new file mode 100644
index 0000000..d27f0cd
--- /dev/null
+++ b/mcu/interface/protocol/general/ps2sim_struct.h
@@ -0,0 +1,200 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * PS2SIM_STRUCT.H
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for SIM's message
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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.
+*
+********************************************************************************/
+
+/*******************************************************************************
+*  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) 2002
+*
+*******************************************************************************
+ *  FILENAME : ps2sim_struct.h
+ *  SYNOPSIS : Functions for encoding/decoding.
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef _PS2SIM_STRUCT_H
+#define _PS2SIM_STRUCT_H
+
+#include "sim_public_struct.h"
+#include "sim_ps_struct.h"
+
+#endif
diff --git a/mcu/interface/protocol/general/ps_em_enum.h b/mcu/interface/protocol/general/ps_em_enum.h
new file mode 100644
index 0000000..ffa9156
--- /dev/null
+++ b/mcu/interface/protocol/general/ps_em_enum.h
@@ -0,0 +1,341 @@
+/*****************************************************************************
+*  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) 2010
+*
+*  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:
+ * ---------
+ * ps_em_enum.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is for engineer mode.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by ClearCase. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * $Log$
+ *
+ * 11 01 2016 mw.hsu
+ * [MOLY00210922] [copy MOLY00208189] [NWSEL] nas_em_display_hplmn
+ * .
+ *
+ * 04 23 2015 yuhhwang.yu
+ * [MOLY00095378] Amazon Requirement
+ * . CISE UMOLY part
+ *
+ * 11 20 2014 hong.yu
+ * [MOLY00084132] [UMOLY] sync MOLY, MT6291_DEV, and UMOLY
+ * update test mode and mmdc mode to MRS
+ *
+ * 08 11 2014 ming.lee
+ * [MOLY00075020] [2014 TMO-US][Rome][IP-ACCESS][23G][IOT] ELT- EM mode did not show the AMR ¡V HR rate codec and was displaying as AMR_MODE_INVALID
+ * .
+ *
+ * 11 07 2013 carlson.lin
+ * [MOLY00045033] [MOLY][SM][ESM][TCM][TFT][Custom] NRSPCA(NISPCA) Network Requested/Initiated Secondary PDP Context Activation
+ * Add OPERATOR_TEST_CU mode and OPERATOR_TEST_VODAFONE mode for MT Secondary Test
+ *
+ * 11 05 2013 carlson.lin
+ * [MOLY00045033] [MOLY][SM][ESM][TCM][TFT][Custom] NRSPCA(NISPCA) Network Requested/Initiated Secondary PDP Context Activation
+ * MT Secondary (Implement Ericsson IOT Mode)
+ *
+ * 05 30 2013 vend_edwin.liu
+ * [MOLY00007674] [MT6589][DoCoMo][3G][IOT][FD&ETWS][461-1101-0101] CSCB channel cannot turn on the 40960~43007 by default setting
+ * .
+ *
+ * 05 24 2013 hong.yu
+ * [MOLY00023597] [Volunteer Patch][Fast Dormancy] Telefonica_2013Q1_TR-UMTSR-FASTD-002d
+ * GENERAL_BIT_FOR_DISABLE_SCRI_ONLY
+ *
+ * 05 07 2013 morton.lin
+ * [MOLY00011957] [MT6290][3G][RRCE] Multimode IT CBr merge back to MOLY
+ * Code sync (MOLY TRUNK)
+ *
+ * 05 06 2013 ming.lee
+ * [MOLY00021409] EM & Peer Trace Optimization: Merge to MOLY
+ * Extract_AMR_Codec_from_L1
+ *
+ * 03 19 2013 xuejing.chen
+ * [MOLY00008978] modify or remove CTA related code
+ * replace CTA mode with Integrity Protection OFF mode.
+ *
+ * 01 23 2013 morton.lin
+ * [MOLY00009162] [Multimode][RRCE] Code merge back to MOLY
+ * Part 2 - Other common files for Multimode
+ *
+ * 10 30 2012 hong.yu
+ * [MOLY00005424] IOT/Operator Test Mode
+ * fix typo
+ * 
+ * 10 26 2012 hong.yu
+ * [MOLY00005424] IOT/Operator Test Mode
+ * check in test profile definition
+ * 
+ * 10 12 2012 chi-chung.lin
+ * [MOLY00004506] [MT6280] DoCoMo RPLMN Selection compile option `__RPLMN_INFO_CELL_SELECTION__' removal
+ * .
+ * 
+ * 10 10 2012 xi.li
+ * [MOLY00004143] [PSS5]TDD_R9_DEV Patch back to MOLY
+ * .
+ *
+ * 07 17 2012 lexel.yu
+ * [MOLY00000844] [L4C] Factory mode auto camp on and auto answer
+ * Integration change. 
+ *
+ * 05 09 2012 chenhao.gong
+ * removed!
+ * .
+ *
+ * 05 09 2012 lijuan.qi
+ * removed!
+ * .
+ *
+ * 05 04 2012 lexel.yu
+ * removed!
+ * Integration change. 
+ *
+ * 11 18 2011 chenhao.gong
+ * removed!
+ * .
+ *
+ * 11 09 2011 chenhao.gong
+ * removed!
+ * .
+ *
+ * 10 28 2011 lexel.yu
+ * removed!
+ * Integration change.
+ *
+ * 09 27 2011 lexel.yu
+ * removed!
+ * Integration change. 
+ *
+ * 06 10 2011 lexel.yu
+ * removed!
+ * Integration change. 
+ *
+ * 05 11 2011 xi.li
+ * removed!
+ * .
+ *
+ * 04 20 2011 xuechao.wang
+ * removed!
+ * .
+ *
+ * 03 09 2011 popcafa.shih
+ * removed!
+ * .
+ *
+ * 03 04 2011 xi.li
+ * removed!
+ * .
+ *
+ * 03 01 2011 junzhen.qin
+ * removed!
+ * .
+ *
+ * 02 24 2011 yongjiao.yu
+ * removed!
+ * .
+ *
+ * 02 17 2011 yongjiao.yu
+ * removed!
+ * FDD2TDD code sync stage 3, CTA menu, steady_inactive_ind.
+ *
+ * 12 08 2010 yc.chen
+ * removed!
+ * .
+ *
+ * 11 24 2010 zhiwei.wang
+ * removed!
+ * Patch NVRAM parts for EM menu.
+ *
+ * 11 23 2010 chenhao.gong
+ * removed!
+ * L4 Add PS conformance test EM menu support & AT command Support
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by ClearCase. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __PS_EM_ENUM_H__
+#define __PS_EM_ENUM_H__
+
+#include "ps_em_exported_enum.h"
+
+
+/* -----------For NW EVENT start--------------------- */
+#define MAX_LEN_OF_NW_EVENT_NAME 20  
+#define MAX_LEN_OF_NW_GROUP_NAME 5
+#define EM_NW_NUM_OF_QUEUE_EVENT 32  
+
+typedef enum
+{
+/* John Tang 2006/11/13 */
+#ifdef __UMTS_RAT__
+    
+    /* MOD_UMAC */
+    EM_NW_EVENT_ID_UMAC_EVENT_START,
+
+    EM_NW_EVENT_ID_UMAC_EVENT_END,
+
+    /* MOD_CSCE */
+    EM_NW_EVENT_ID_CSCE_CELL_RESELECTION_EVENT,
+    EM_NW_EVENT_ID_CSCE_NEW_CELL_SELECTED_EVENT,
+    EM_NW_EVENT_ID_CSCE_OUT_OF_SERVICE_EVENT,
+    EM_NW_EVENT_ID_CSCE_IN_SERVICE_EVENT,
+    
+    /* MOD_MEME */
+    EM_NW_EVENT_ID_MEME_EVENT_SPECIFIC_CELL_IND,
+
+    /* MOD_RRCE */
+    EM_NW_EVENT_ID_RRCE_IRHO_3G2_EVENT,
+    EM_NW_EVENT_ID_RRCE_IRCCO_3G2_EVENT,
+    EM_NW_EVENT_ID_RRCE_IRCR_3G2_EVENT,
+
+    EM_NW_EVENT_ID_RRCE_IRHO_3G4_EVENT,
+    EM_NW_EVENT_ID_RRCE_IRCR_3G4_EVENT,
+
+    /* MOD_SLCE */
+    EM_NW_EVENT_ID_SLCE_EVENT_START,
+
+    EM_NW_EVENT_ID_SLCE_EVENT_END,
+
+#endif /* __UMTS_RAT__ */
+
+    EM_NW_EVENT_ID_TEST0,     /* 0 */
+    EM_NW_EVENT_ID_TEST1,
+    EM_NW_EVENT_ID_TEST2,
+    EM_NW_EVENT_ID_TEST3,
+    EM_NW_EVENT_ID_TEST4,
+    EM_NW_EVENT_ID_TEST5,
+    EM_NW_EVENT_ID_TEST6,     /* 5 */
+    EM_NW_EVENT_ID_TEST7,
+    EM_NW_EVENT_ID_TEST8,
+    EM_NW_EVENT_ID_TEST9,
+    EM_NW_EVENT_ID_TEST10,
+    EM_NW_EVENT_ID_TEST11,    /* 10 */
+    EM_NW_EVENT_ID_TEST12,
+    EM_NW_EVENT_ID_TEST13,
+    EM_NW_EVENT_ID_TEST14,
+    EM_NW_EVENT_ID_TEST15,
+    EM_NW_EVENT_ID_TEST16,    /* 15 */
+    EM_NW_EVENT_ID_TEST17,
+    EM_NW_EVENT_ID_TEST18,
+    EM_NW_EVENT_ID_TEST19,
+    EM_NW_EVENT_ID_TEST20,
+    EM_NW_EVENT_ID_TEST21,    /* 20 */
+    EM_NW_EVENT_ID_TEST22,
+    EM_NW_EVENT_ID_TEST23,
+    EM_NW_EVENT_ID_TEST24,
+    EM_NW_EVENT_ID_TEST25,
+    EM_NW_EVENT_ID_TEST26,    /* 25 */
+    EM_NW_EVENT_ID_TEST27,
+    EM_NW_EVENT_ID_TEST28,
+    EM_NW_EVENT_ID_TEST29,
+    EM_NW_EVENT_ID_TEST30,
+    EM_NW_EVENT_ID_TEST31,    /* 30 */
+    EM_NW_EVENT_ID_TEST32,
+    EM_NW_EVENT_ID_TEST33,
+    EM_NW_EVENT_ID_TEST34,
+    EM_NW_EVENT_ID_TEST35,
+    EM_NW_EVENT_ID_TEST36,    /* 35 */
+    EM_NW_EVENT_ID_TEST37,
+    
+    /* RAC Event start */
+    EM_NW_EVENT_ID_CELL_POWER_LEVEL_IND,
+    EM_NW_EVENT_ID_GMMREG_ATTACH_CNF,
+
+    /* RAC Event End */
+    EM_NW_EVENT_ID_CSCE_WCDMA_TO_WCDMA_RESEL_FAIL_EVENT,
+    EM_NW_EVENT_ID_CSCE_WCDMA_TO_GSM_RESEL_FAIL_EVENT,
+    EM_NW_EVENT_ID_CSCE_WCDMA_CELL_SELEC_FAIL,
+
+    EM_NW_EVENT_ID_MAX
+    
+} EM_NW_EVENT_ID_ENUM;
+
+typedef enum
+{
+#ifdef __UMTS_RAT__
+    //EM_NW_EVENT_GROUP_UMAC,
+    EM_NW_EVENT_GROUP_CSCE,
+    EM_NW_EVENT_GROUP_MEME,
+    EM_NW_EVENT_GROUP_RRCE,
+    //EM_NW_EVENT_GROUP_SLCE,
+#endif /* __UMTS_RAT__ */
+    EM_NW_EVENT_GROUP_RAC,
+    /* don't remove this item and add new item before it */
+    EM_NW_MAX_NO_OF_GROUP
+} EM_NW_EVENT_GROUP_ENUM;
+/* -----------For NW EVENT end------------------------- */
+
+#ifdef __AMR_SUPPORT__
+typedef enum
+{
+    EM_AMR_MODE_475,
+    EM_AMR_MODE_515,
+    EM_AMR_MODE_590,
+    EM_AMR_MODE_670,
+    EM_AMR_MODE_740,
+    EM_AMR_MODE_795,
+    EM_AMR_MODE_1020, /* This is the number of half rate codec modes. */
+    EM_AMR_MODE_1220,
+    EM_AMR_MODE_NONE, /* This is the number of full rate codec modes. */
+} em_amr_mode_enum;
+#endif /* __AMR_SUPPORT__ */
+
+typedef enum {
+    NETW_STATE_HOME,
+    NETW_STATE_HOME_EQUIV,
+    NETW_STATE_ROAM
+} netw_serv_state_enum;
+
+#endif  /* __PS_EM_ENUM_H__ */
+
+
diff --git a/mcu/interface/protocol/general/ps_public_def.h b/mcu/interface/protocol/general/ps_public_def.h
new file mode 100644
index 0000000..e3437b0
--- /dev/null
+++ b/mcu/interface/protocol/general/ps_public_def.h
@@ -0,0 +1,68 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * ps_public_def.h
+ *
+ * Description:
+ * ------------
+ *   This file is intends for put the header of PS public definition
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+*****************************************************************************/
+#ifndef _PS_PUBLIC_DEF_H_
+#define _PS_PUBLIC_DEF_H_
+
+#define EAS_POWER_LEVEL_IND_INVALID_RSRP      (1)
+#define EAS_POWER_LEVEL_IND_INVALID_RSRQ      (1)
+#define EAS_POWER_LEVEL_IND_INVALID_RSSI      (1)
+
+#define EAS_POWER_LEVEL_IND_RSRP_DIFF_QDBM    (8*4)   /* If the diff between the previously reported rsrp and the latest rsrp
+                                                         exceeds this threshold, EAS should send POWER_LEVEL_IND to update power level */
+
+#define EAS_POWER_LEVEL_IND_RSRQ_DIFF_QDBM    (3*4)   /* If the diff between the previously reported rsrq and the latest rsrq
+                                                         exceeds this threshold, EAS should send POWER_LEVEL_IND to update power level */
+#define L4C_INVALID_RS_SNR  0x7fff
+
+#define L4C_INVALID_SIGNAL_INT16  0x7FFF
+
+#define L4C_INVALID_NR_SIGNAL_VALUE 0x7FFFFFFF          /* Invalid value for 5G signal */
+
+#endif /* _PS_PUBLIC_DEF_H_ */                                                      
diff --git a/mcu/interface/protocol/general/ps_public_enum.h b/mcu/interface/protocol/general/ps_public_enum.h
new file mode 100644
index 0000000..bbde2e1
--- /dev/null
+++ b/mcu/interface/protocol/general/ps_public_enum.h
@@ -0,0 +1,5281 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * ps_public_enum.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file contains the ABM network internal APIs
+ *   and these APIs can only be used by MMI CBM and DA
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ ****************************************************************************/
+#ifndef _PS_PUBLIC_ENUM_H_
+#define _PS_PUBLIC_ENUM_H_
+
+#include "custom_nvram_sec.h"
+#include "sbp_public_utility.h"
+#include "ps_public_enum_public.h"
+
+#define ip_addr_type_enum pdp_addr_type_enum
+
+#define MAX_PDP_ADDR_LEN        16
+#define TCM_MAX_PEER_ACL_ENTRIES	 	10
+
+#define MAX_GPRS_IP_ADDR       4 /* IP address length */
+
+#define GPRS_TIMER3_DEACTIVATED 0xFFFF
+
+#define LTECA_INTER_BAND_NUM_MAX 3  /* For LTE CA band settings */
+
+#if (MAX_EXT_PDP_CONTEXT >= 1)
+    #define MAX_GPRS_DIALUP_NUM    MAX_EXT_PDP_CONTEXT /* MAX_GPRS_DIALUP_NUM is for L4C, ABM, RATDM use */
+#else
+    #define MAX_GPRS_DIALUP_NUM    1
+#endif /* MAX_EXT_PDP_CONTEXT >= 1 */
+
+#define INVALID_PDP_CONTEXT_ID (0x0)
+
+#ifdef __IMS_SUPPORT__
+#define MAX_NUM_CONFIG_OPTION_PACKETS 35 /* See tcm_pco_api.h for PCO number counting. */
+#else  /* __IMS_SUPPORT__ */
+#define MAX_NUM_CONFIG_OPTION_PACKETS 28  /* See tcm_pco_api.h for PCO number counting. */
+#endif /* __IMS_SUPPORT__ */
+
+/* Poying: MSBB. */
+/* Support PAP or CHAP ID and PW length up to 128 Bytes */
+#define MAX_CONFIG_OPTION_CONTENT_LEN   (MAX_GPRS_USER_NAME_LEN+MAX_GPRS_PASSWORD_LEN+6)
+#define LIMIT_CONFIG_OPTION_CONTENT_LEN (140)
+/* Restrict the length of user_name, password and APN */
+#if (MAX_CONFIG_OPTION_CONTENT_LEN > LIMIT_CONFIG_OPTION_CONTENT_LEN)
+   #error GPRS_USER_NAME_LEN and GPRS_PASSWORD_LEN exceed the maximum
+#endif
+
+/* Check if APN length is valid. */
+#if (MAX_GPRS_APN_LEN > 100)
+   #error MAX_GPRS_APN_LEN exceed the maximum
+#endif
+
+#define MD1_MAX_NUM_HPLMN 26
+#define MAX_EHPLMN_EF_LEN MD1_MAX_NUM_HPLMN*3
+
+#define MAX_GEO_COUNTRY_CODE_LEN 4
+#define MAX_GEO_MCC_NUM     6
+#define MAX_MCC_STR_LEN     4
+#define MAX_MNC_STR_LEN     4
+
+#define TCM_S_NSSAI_SD_LEN 3
+
+#define MAX_CHAR_CNAP            80
+
+#define MAX_NR_SET_STORED_NUM 10
+#define MAX_LTE_SET_STORED_NUM 10
+
+#define VZW_5GUW_Allowed_default 0
+#define VZW_FF03H_abnormal_default 0
+
+#define MAX_ALLOWED_MCC_LIST_NUMBER 20
+#if defined(__ECALL_SUPPORT__) || defined(__NG_ECALL_SUPPORT__)
+#define MAX_PHB_XDN_URI_NUM    16
+#define MAX_PHB_XDN_URI_LEN    128
+#define MSD_MAX_LENGTH         140
+#endif /* (__ECALL_SUPPORT__) || (__NG_ECALL_SUPPORT__) */
+
+typedef enum {
+    TCM_PDP_DEACT_REASON_NORMAL_DEACT,              /* Not DEACT PDN if it is the last one. */
+    TCM_PDP_DEACT_REASON_DEACT_DUE_TO_TFT_CONFLICT,  /* Force to DEACT PDN (even if it's the last one). */
+    TCM_PDP_DEACT_REASON_DEACT_DUE_TO_TFT_VALIDATE_FAIL, /* RAT_TCM only try deactivation on the tft validation failure RAT, if iRAT to new RAT, need to re-evaluate if new RAT still have TFT_VALIDATE_FAIL */
+    TCM_PDP_DEACT_REASON_DEACT_DUE_TO_RA_ERROR, // __VZW__ __VZW_7__
+    TCM_PDP_DEACT_REASON_DEACT_DUE_TO_RA_INITIAL_ERROR,
+    TCM_PDP_DEACT_REASON_DEACT_DUE_TO_RA_REFRESH_ERROR,
+    TCM_PDP_DEACT_REASON_DEACT_DUE_TO_NO_PCSCF, // __VZW__ __VZW_11__
+    TCM_PDP_DEACT_REASON_ESM_INIT_DEACT_FOR_NON_EMC_PDN, /* Force to DEACT PDN (even if it's the last one). */
+    TCM_PDP_DEACT_REASON_ESM_INIT_DEACT_EPSB_FOR_ABNORMAL, /* Force to DEACT PDN (even if it's the last one). */
+    TCM_PDP_DEACT_REASON_INACTIVITY_TIMER_TIMEOUT,
+    TCM_PDP_DEACT_REASON_DEACT_DUE_TO_USER_FORCE_TO_LOCAL_RELEASE, /* Force to DEACT PDN (even if it's the last one) */
+    TCM_PDP_DEACT_REASON_DEACT_DUE_TO_AOSP_SHUTDOWN, /* AOSP Deact reason */
+    TCM_PDP_DEACT_REASON_DEACT_DUE_TO_AOSP_HANDOVER, /* AOSP Deact reason */
+    TCM_PDP_DEACT_REASON_DEACT_DUE_TO_APN_CHANGED,   /* AOSP Deact reason */
+    TCM_PDP_DEACT_REASON_DEACT_DUE_TO_IMS_HANDOVER,  /* To release IMS PDN, after it handovers from Wifi to LTE */
+	TCM_PDP_DEACT_REASON_DEACT_DUE_TO_NO_IP_ADDRESS, /* VzW SA Data Retry 3.1.3.2.5 requirement*/
+    // If you need to add new enum, please make sure you have discussed with MOD_ESM, MOD_RAT_TCM, TFTLIB.
+} tcm_pdp_deact_reason_enum;
+
+typedef enum {
+    TCM_PDP_MODIFY_REASON_NORMAL_MODIFY,
+    TCM_PDP_MODIFY_REASON_NAS_INIT_TO_DELETE_QOS_RULE,
+} tcm_pdp_modify_reason_enum;
+
+typedef enum {
+    ACTIVE_NAS_UNKNOWN,
+    ACTIVE_NAS_23G,
+    ACTIVE_NAS_4G,
+    ACTIVE_NAS_5G,
+    ACTIVE_NAS_C2K,
+    MAX_NUM_OF_ACTIVE_NAS,
+} active_nas_enum;
+
+
+typedef enum {
+    NAS_PRIORITY_CONFIG_NOT_SPECIFIED,      // value not given
+    NAS_PRIORITY_CONFIG_AS_LOW_PRIORITY,    // 27.007: 0
+    NAS_PRIORITY_CONFIG_AS_NORMAL_PRIORITY, // 27.007: 1
+} nas_priority_config_enum ; // __MTC_SUPPORT__
+
+typedef enum {
+    EAB_OVERRIDE_CONFIG_NOT_SPECIFIED,      // value not given
+    EAB_OVERRIDE_CONFIG_AS_NOT_OVERRIDE,    // 27.007: 0
+    EAB_OVERRIDE_CONFIG_AS_CAN_OVERRIDE     // 27.007: 1
+} eab_override_config_enum ; // __MTC_SUPPORT__
+
+//securePCO
+typedef enum
+{
+    TCM_SECUREPCO_NOT_SPECIFIED,
+    TCM_SECUREPCO_IS_NOT_REQUESTED,                                                   //Security protected transmission of PCO is not requested
+    TCM_SECUREPCO_IS_REQUESTED,                                                       //Security protected transmission of PCO is requested
+} l4c_tcm_securepco_enum;
+
+// PCO: for IPv4 MTU request
+typedef enum
+{
+    TCM_ACTIVATE_PDP_WITHOUT_IPV4_MTU_REQUEST = 0,
+    TCM_ACTIVATE_PDP_WITH_IPV4_MTU_REQUEST = 1
+}l4c_tcm_activate_pdp_request_ipv4_mtu_enum;
+
+//Local_Addr_Ind
+typedef enum
+{
+    TCM_LOCAL_ADDR_IND_NOT_SPECIFIED,
+    TCM_LOCAL_ADDR_IND_NOT_SUPPORT_LOCAL_IP_ADDRESS_IN_TFTS,                          //indicates that the MS does not support local IP address in TFTs
+    TCM_LOCAL_ADDR_IND_SUPPORT_LOCAL_IP_ADDRESS_IN_TFTS,                              //indicates that the MS supports local IP address in TFTs
+} l4c_tcm_local_addr_ind_enum;
+
+typedef enum
+{
+    TCM_NON_IP_MTU_DISCOVERY_NOT_SPECIFIED,
+    TCM_NON_IP_MTU_DISCOVERY_PREFERENCE_NOT_INFLUENCED,                               //Preference of Non-IP MTU size discovery not influenced by +CGDCONT
+    TCM_NON_IP_MTU_DISCOVERY_PREFERENCE_THROUGH_NAS_SIGNALLING,                       //Preference of Non-IP MTU size discovery through NAS signalling
+} l4c_tcm_non_ip_mtu_discovery_enum;
+
+typedef enum
+{
+    TCM_RELIABLE_DATA_SERVICE_NOT_SPECIFIED,
+    TCM_RELIABLE_DATA_SERVICE_NOT_USED,                                               //Reliable Data Service is not being used for the PDN connection
+    TCM_RELIABLE_DATA_SERVICE_IS_USED,                                                //Reliable Data Service is being used for the PDN connection
+} l4c_tcm_reliable_data_service_enum;
+
+typedef enum
+{
+    TCM_SSC_MODE_NOT_SPECIFIED,
+    TCM_SSC_MODE_1,                                          //indicates that the PDU session is associated with SSC mode 1
+    TCM_SSC_MODE_2,                                          //indicates that the PDU session is associated with SSC mode 2
+    TCM_SSC_MODE_3,                                          //indicates that the PDU session is associated with SSC mode 3
+} l4c_tcm_ssc_mode_enum;
+
+typedef enum
+{
+    TCM_ACCESS_TYPE_NOT_SPECIFIED,
+    TCM_ACCESS_TYPE_PREFERRED_3GPP,                                                        //indicates that the preferred access type is 3GPP access
+    TCM_ACCESS_TYPE_PREFERRED_NON_3GPP,                                                    //indicates that the preferred access type is non-3GPP access
+} l4c_tcm_access_type_enum;
+
+typedef enum
+{
+    TCM_RQOS_NOT_SPECIFIED,
+    TCM_RQOS_IS_NOT_SUPPORTED,                                                        //indicates that reflective QoS is not supported for the PDU session
+    TCM_RQOS_IS_SUPPORTED,                                                            //indicates that reflective QoS is supported for the PDU session
+} l4c_tcm_rqos_ind_enum;
+
+typedef enum
+{
+    TCM_IPV6_MH_NOT_SPECIFIED,
+    TCM_IPV6_MH_IS_NOT_SUPPORTED,                                                     //indicates that IPv6 multi-homing is not supported for the PDU session
+    TCM_IPV6_MH_IS_SUPPORTED,                                                         //indicates that IPv6 multi-homing is supported for the PDU session
+} l4c_tcm_mh6_pdu_enum;
+
+typedef enum
+{
+    TCM_ALWAYS_ON_PDU_NOT_SPECIFIED,
+    TCM_ALWAYS_ON_PDU_IS_NOT_REQUIRED,
+    TCM_ALWAYS_ON_PDU_IS_REQUIRED,
+} l4c_tcm_always_on_pdu_enum;
+
+typedef enum
+{
+    TCM_LADN_DNN_NOT_SPECIFIED,
+    TCM_LADN_DNN_IS_NOT_LADN_DNN,
+    TCM_LADN_DNN_IS_LADN_DNN,
+} l4c_tcm_ladn_dnn_enum;
+
+typedef enum {
+ 	 NAS_REQ_GEMINI_PS_HIGH_SEM_START = 0,
+ 	 NAS_REQ_GEMINI_PS_HIGH_SEM_STOP
+} nas_req_gemini_ps_high_sem_enum ; // Multi-PS support
+
+#define MAX_SIM_PASSWD_LEN      9
+
+#define MAX_DIGITS_USSD          183
+#define MAX_CC_ADDR_LEN          81
+#define MAX_CC_ADDR_BCD_LEN      41
+#define MAX_CC_DTMF_LEN          41
+#define MAX_CC_DTMF_BCD_LEN      21
+#define L4C_MAX_CALL_LIST_LEN    7
+#define MAX_CC_SUB_ADDR_LEN      41
+#define MAX_CC_SUB_ADDR_BCD_LEN  21
+#define MAX_SIM_ADDR_BCD_LEN      41
+#define SIM_MAX_BUFFER_LEN       255
+#define SIM_MAX_AID_LEN          16
+#define SIM_MAX_APP_LABLE_LEN    32
+#define MAX_SIP_URI_LEN          129
+#define UIM_MAX_ERROR_FILE_NUM   4
+#define TC01_DUMMY_KEY_FOR_PORTUNLOCK "0123456789012345"
+
+typedef enum {
+    NO_SIM_AND_NO_USIM_ACTIVE,
+    SIM_ACTIVE,
+    USIM_ACTIVE
+} active_application_enum ;
+
+typedef enum {
+	CC_CALL_TYPE_VOICE_CALL,
+	CC_CALL_TYPE_EMERGENCY_CALL
+} cc_call_type_enum;
+
+typedef enum
+{
+   CC_DIR_MO_CALL,
+   CC_DIR_MT_CALL
+} cc_call_direction_enum;
+
+/* SMS PART START */
+#define SMSAL_MAX_CMD_LEN           (156)       /* max command data length */
+#define SMSAL_MAX_MSG_LEN           (160)
+
+/*
+ * !! Attention !!
+ *
+ * the following constants are related to CB :
+ * the CB in RMC/MMI MUST be consistent with this defined values !!
+ *
+ */
+
+/* Ripple: CB for SMSAL/RATCM/GAS/BMC. */
+#define CB_MAX_MSG_CBMI_NUM    60
+#define SMSAL_CB_MAX_ENTRY 30
+#define CB_MAX_MSG_CBMID_NUM    SMSAL_CB_MAX_ENTRY
+#define CB_MAX_MSG_CBMIR_NUM    (SMSAL_CB_MAX_ENTRY*2)
+#define CB_MAX_LANG_NUM    SMSAL_CB_MAX_ENTRY
+#define CB_MAX_DATA_NUM_PER_PAGE 88
+
+#define SMSAL_CB_PAGE_DATA_OCT         (82) /* CBS-Message-Information-Page. defined TS 23.041. */
+#define SMSAL_CB_PAGE_DATA_AND_LEN_OCT (83) /* CBS-Message-Information-Page & CBS-Message-Information-Page-Length. defined TS 23.041. */
+#define SMSAL_CB_PER_7BIT_LEN          (93)
+#define SMSAL_CB_PER_UCS2_LEN          (88)
+#define SMSAL_CB_PER_UCS2_CONT_LEN     (82)
+
+
+#define SMSAL_PS_CBMI_MAX_ENTRY        (60)
+
+#define SMSAL_CBMI_SIM_ENTRY           (20)
+#define SMSAL_CBMI_ME_ENTRY            (40)
+
+#define SMSAL_DEFAULT_CBMI_ENTRY       (10)
+#define SMSAL_DEFAULT_DCS_ENTRY        (21)  /* CBS DCS 20 language + unspecified (other language) */
+
+#define SMSAL_MMI_CBMI_MAX_ENTRY       (SMSAL_CBMI_SIM_ENTRY + SMSAL_CBMI_ME_ENTRY)
+#define SMSAL_MMI_DCS_MAX_ENTRY        (SMSAL_CB_MAX_ENTRY)
+
+#define SMSAL_CB_UNUSED_CBMI        (0xffff) /* unused CBMIR 0xffffffff */
+#define SMSAL_CB_UNUSED_DCS         (0x0080) /* one byte */
+#define SMSAL_CB_UNUSED_ISO639      (0xffff) /* two byte */
+
+#define SMSAL_CB_HOMEZONE_MI        (0x00dd) /* HomeZone Message ID 221 */
+#define SMSAL_CB_HOMEZONE_SN        (0x0010) /* HomeZone Series Number */
+#define SMSAL_CB_HOMEZONE_DCS       (0x0000) /* HomeZone DCS */
+
+#define SMSAL_PAGE_SIZE             (40)        /* 40 messages/page */
+#define SMSAL_ONE_MSG_LEN           (160)
+#define SMSAL_ADDR_LEN              (11)
+#define SMSAL_ME_ADDR_LEN           (21)
+#define SMSAL_INVALID_INDEX         (0xffff)
+#define SMSAL_MAX_TPDU_SIZE         (175)
+#define IMCSMS_MAX_RPDU_SIZE		(249)
+#define SMSAL_CB_MSG_HEADER_LEN     (6)
+#define SMSAL_WAC_BYTE_LEN          (2)
+
+#define MAX_SMS_PDU_LEN             (255) /* TC01 3GPP/3GPP2 SMS */
+
+
+/* SMS PART END */
+
+#define PHB_MAX_ASSOCIATE_GRP 10
+#define PHB_MAX_EMAIL_LENGTH 61
+
+#define MAX_SIM_NAME_LEN               (32)
+#define MAX_PLMN_LEN             6
+#define MAX_PLMN_LIST_LEN        32
+#define MAX_NW_NAME_LEN 24
+
+/*operator name length support maximum*/
+#define MAX_NW_NAME_LENGTH     255
+
+/* DO NOT MODIFY THIS BY YOURSELF!! Please confirm with SIM task owner first.
+   1. Enlarge this max support size will cause ctrl buffer usage grow.
+   2. full SW library(ex: L4,SIM,MM lib) update is necessary                   */
+#define MAX_SUPPORT_PLMN_DATA_SIZE       2040
+#define MAX_SUPPORT_MLPL_DATA_SIZE       4096   // 3GPP2 C.S0016-D v2.0, the sizeof(MLPL) = 2 bytes = 16 bits, but we limited to 4K
+#define MAX_SUPPORT_MSPL_DATA_SIZE       4096   // 3GPP2 C.S0016-D v2.0, the sizeof(MSPL) = 2 bytes = 16 bits, but we limited to 4K
+
+#define USIM_CACHE_MAX_FILE_SIZE  50
+#ifndef __SIM_OPT_DCM__
+#define USIM_CACHE_MAX_FILE_NUM   40    // TODO: auto-count map_cache_sim_index
+#else
+#define USIM_CACHE_MAX_FILE_NUM   38    // TODO: auto-count map_cache_sim_index
+#endif
+#define USIM_CACHE_MAX_SIMAPP_FILE_NUM   27 // TODO: auto-count  map_cache_sim_index2
+#define USIM_CACHE_ISIM_FILE_START 33   // TODO: auto-count map_cache_sim_index
+
+#define NR_DEFAULT_5QI		9
+#define LTE_DEFAULT_QCI		9
+
+/* Max supported PLMN record number is decided by MAX_SUPPORT_PLMN_DATA_SIZE and record size
+   SIM task can support up to MAX_SUPPORT_PLMN_DATA_SIZE / PLMN_record_size records
+   NOTE: Record size is 5 bytes for EF_UPLMNWACT,EF_OPLMNWACT,etc.  3 bytes for EF_PLMNSEL   */
+#define MAX_SUPPORT_EF_PLMNSEL_REC       MAX_SUPPORT_PLMN_DATA_SIZE/3
+
+#define SIZE_OF_UMTS_BAND (0+4)
+#define L4C_FDN_CHECK_FAIL  2601
+
+#define L4C_EM_QUICK_TEST_MAX_COUNT 100
+
+#define IS_INTER_NUM(ton) (( (ton) & 0x10) != 0 )
+
+#define MO_CALL_ASSIGN_FAIL_CALLID 254  /* CSMCC_INVALID_CALL_ID-1 */
+#define MO_CALL_CLCC_SPECIFIED_CALLID 253 /* ALPS01797139 */
+#define MAX_NW_ECC_NUM          (16)
+#define MAX_NW_ECC_NUM_LENGTH          (41)
+
+#define MAX_EN_NUMBER_LENGTH (MAX_CC_ADDR_BCD_LEN-1) // exclude type byte
+#define MAX_SOS_URN_LENGTH 256
+#define MAX_EEN_COUNT      200
+
+typedef enum {
+    EENL_VALID_IN_THIS_COUNTRY,
+    EENL_VALID_IN_THIS_PLMN
+} eenl_validity_enum;
+
+/* This value is used by MMI and equals to LMMI_SRC to prevent it using HAL private header */
+#define L4C_SOURCE_ID_DEFAULT 0
+
+#define PS_MAX_VAL(VAL_A, VAL_B)   (((VAL_A) > (VAL_B)) ? (VAL_A):(VAL_B))
+
+/* 20130521 mtk04280 change the define value from 16 to 32  */
+#define SND_UL_CTRL_HEADER_LENGTH 32  //The size of ratdm_ps_data_req_struct(24) + snd_ul_sent_ack_npdu_struct(8). Reserve by PPP.
+
+/* Max Yin 2009-1006: Since PSPDU UMTS POOLs are removed, the NPDU/SPDU UL is used from app
+ * to RLC; therefore, the free header space is reserved for ratdm/pdcp/rlc usage.
+ */
+#define RATDM_UL_CTRL_RESERVED_HEADER_SPACE 64	// 52=RATDM (24) + PDCP(3) + RLC (36) + 1(4BYTES alignment)
+
+/* Max Yin 2009-12-04: L3_UL_RESERVED_HEADER_SPACE is used for PPP, CMUX, and TCPIP */
+#define L3_UL_RESERVED_HEADER_SPACE PS_MAX_VAL(RATDM_UL_CTRL_RESERVED_HEADER_SPACE, SND_UL_CTRL_HEADER_LENGTH)
+
+#define MAX_NUMBER_OF_EARFCN    (8)
+
+/* This is the value of how many UMTS or LTE CSG cells for fingerprint collection */
+#define NUM_CSG_CELL_TO_COLLECT_FINGERPRINT 8
+#define NUM_GAS_STORE_CSG_FINGERPRINT_CELL 50
+
+/* This field defines the GEMINI modules */
+#define CFG_CO_GEMINI_MOD   0x40
+#define CFG_MASK_MOD   0x30
+#define CFG_GEMINI_LTE_MOD   0x20
+#define CFG_GEMINI_MOD   0x10
+#define CFG_SINGLE_MOD   0x00
+#define CFG_MASK_NUM     0x0F
+
+//refer to TS27.007, subclause 7.3 +COPS
+#define MAX_PLMN_LONG_NAME_LEN      17 //16+1 for end of string
+#define MAX_PLMN_SHORT_NAME_LEN     9 //8+1 for end of string
+#define MAX_PLMN_NUMERIC_NAME_LEN   7 //6+1 for end of string
+
+#define L4C_MAX_ARFCN_SUPPORTED    8
+
+#ifdef __SENSITIVE_DATA_MOSAIC__
+#define MAX_PARTIAL_AT_CMD 10
+#define  MAX_TRACE_LENGTH 100
+#endif /* __SENSITIVE_DATA_MOSAIC__ */
+
+/* For Inactive Mode Service Recovery */
+
+#define NORMAL_OOS_RECOVERY_ROUND_DEFUALT    5
+#define NORMAL_OOS_RECOVERT_ROUND_LOW        2
+#define NORMAL_OOS_RECOVERT_ROUND_HIGH       30
+
+#define INACTIVE_FULLBAND_PERIOD_DEFUALT     200
+#define INACTIVE_FULLBAND_PERIOD_LOW         90
+#define INACTIVE_FULLBAND_PERIOD_HIGH        7200
+
+#define INACTIVE_SNIFFER_PERIOD_DEFUALT      30
+#define INACTIVE_SNIFFER_PERIOD_LOW          10
+#define INACTIVE_SNIFFER_PERIOD_HIGH         255
+
+#define INACTIVE_SCAN_TIME_DEFAULT           0
+#define INACTIVE_SCAN_TIME_LOW               180
+#define INACTIVE_SCAN_TIME_HIGH              600
+
+#define INACTIVE_SLEEP_TIME_DEFAULT          0
+#define INACTIVE_SLEEP_TIME_LOW              60
+#define INACTIVE_SLEEP_TIME_HIGH             600
+
+typedef enum
+{
+    L4C_CALL_OPERATION,
+    L4C_SS_OPERATION,
+    L4C_SMS_OPERATION,  /*used by l4_custom_approval_type() only*/
+    L4C_SMS_SCA_OPERATION,
+    L4C_SMS_DA_OPERATION,
+    L4C_CSD_OPERATION,        // internal CSD access  e.g. wap over CSD
+    L4C_INT_GPRS_OPERATION,   // internal GPRS access e.g. wap over GPRS
+    L4C_EXT_GPRS_OPERATION,   // external GPRS access e.g. GPRS dialup
+    L4C_NONE_OPERATION = 255
+}l4c_operation_type_enum; //MAUI_02956467, mtk02285, moved from l4c_common_enum.h
+#define L4C_MAX_ETWS_SECURITY_INFO_LEN  50
+
+//#ifdef __PLMN_LIST_PREF_SUPPORT__
+typedef enum
+{
+  /* This enum should sync with plmn_list_preference_enum  */
+   L4C_ACCURACY_PREFERED,
+   L4C_SPEED_PREFERED
+}l4c_plmn_list_preference_enum;
+//#endif
+
+#define MAX_HNB_NAME_LEN 48     /* Shall be multiple of 12 */
+
+#define MAX_SRC_ADDR_SBNET_MASK_LEN 32  // For IPv6
+
+#ifdef __CDMA2000_RAT__
+#define CONFIG_MTK_C2K_SUPPORT      1   // bit0
+#define CONFIG_MTK_SVLTE_SUPPORT    2   // bit1
+#define CONFIG_MTK_SRLTE_SUPPORT    4   // bit2
+#define CONFIG_MTK_C2K_OM_SOLUTION1 8   // bit3
+#endif
+
+#define MAX_ATCMD_EGMC_CONFIG_STR_LEN      32
+#define MAX_ATCMD_EGMC_PARAM_NUM        15
+#define MAX_ATCMD_EGMC_SHORT_STR_LEN    32
+#define MAX_L4C_AT_CMD_CONCURENT_NUM    1
+
+typedef enum {
+   PHB_STORAGE_NONE,
+   PHB_STORAGE_NVRAM,
+   PHB_STORAGE_SIM,
+   PHB_STORAGE_SIM2,
+   PHB_STORAGE_SIM3,
+   PHB_STORAGE_SIM4,
+   PHB_STORAGE_NUM = PHB_STORAGE_SIM4,
+   PHB_STORAGE_MAX
+} phb_storage_enum;
+
+
+typedef enum {
+   PHB_ERRNO_FAIL,
+   PHB_ERRNO_SUCCESS,
+   PHB_ERRNO_NOT_SUPPORT,
+   PHB_ERRNO_READ_FAIL,
+   PHB_ERRNO_READ_SUCCESS,
+   PHB_ERRNO_READ_EMPTY,
+   PHB_ERRNO_DELETE_EMPTY,
+   PHB_ERRNO_NOT_READY,
+   PHB_ERRNO_BUSY,
+   PHB_ERRNO_ANR_FULL,
+   PHB_ERRNO_EMAIL_FULL,
+   PHB_ERRNO_SNE_FULL,
+    PHB_ERRNO_SIM_SWITCH,
+   PHB_ERRNO_UIM_SWITCH,
+   PHB_ERRNO_SAT_FILE_CHANGE,
+   PHB_ERRNO_UTK_FILE_CHANGE
+} phb_errno_enum;
+
+typedef enum {
+   PHB_NONE,
+   PHB_ECC,
+   PHB_FDN,
+   PHB_BDN,
+   PHB_MSISDN,
+   PHB_SDN,
+   PHB_PHONEBOOK,
+   PHB_EXT1,
+   /* USIM */
+   PHB_SNE,
+   PHB_AAS,
+   PHB_ANR,
+   PHB_GAS,
+   PHB_GRP,
+   PHB_EMAIL,
+   PHB_PBC,
+   #if defined(__NG_ECALL_SUPPORT__)
+   PHB_FDNURI,
+   PHB_SDNURI,
+   #endif
+   /* USIM */
+   PHB_TYPE_ENUM_MAX
+} phb_type_enum;
+
+#if 1
+#ifndef VOIP_URI_LEN
+#define VOIP_URI_LEN                        (41)
+#endif
+#endif //remove on MAUIW1043_RHR remove stage
+
+
+#ifndef NVRAM_PHB_SIZE
+#define NVRAM_PHB_SIZE (54+MAX_PS_NAME_SIZE)
+#endif
+
+/* Max entries could be packed in peer buffer */
+#define PHB_MAX_PHB_ENTRIES            (0+10)
+
+typedef enum {
+   PHB_NO_CAUSE,
+   PHB_CAUSE_STORAGE_FULL,          /* This value is returned when just added entry causes storage full */
+   PHB_CAUSE_CAPACITY_EXCEEDED,      /* Since storage is full, attempt of adding an entry returns this value */
+   PHB_CAUSE_NOT_SUPPORT
+} phb_cause_enum;
+
+typedef enum
+{
+    APPROVAL_TYPE_NONE,
+    APPROVAL_TYPE_ECC_ONLY,
+    APPROVAL_TYPE_FDN_ONLY,
+    APPROVAL_TYPE_FULL		//check both ECC and FDN
+}l4c_phb_approval_type_enum;
+
+typedef enum {
+   PHB_BCD     = 0x01,
+   PHB_ASCII   = 0x00,
+   PHB_KSC5601 = 0x05,
+   PHB_UCS2    = 0x08,
+   PHB_UCS2_81 = 0x09,
+   PHB_UCS2_82 = 0x10
+} phb_charset_enum;
+
+
+
+typedef enum
+{
+   L4C_OK,
+   L4C_ERROR,
+   L4C_NVRAM_ERROR_INIT = 5
+
+} l4c_result_enum;
+
+typedef enum
+{
+  PDU_FETCH_FAIL,
+  PDU_SEND_SUCCESS,
+  PDU_SEND_FAIL
+} l4c_sms_result_enum;
+
+
+//mtk04121
+/* PPP Dial-up */
+typedef enum
+{
+   PPP_OK,
+   PPP_ERROR
+} ppp_result_enum;
+
+/* Johnny: for RMMI internal usage, do not add other enums here */
+typedef enum
+{
+   L4C_NO_CAUSE,
+   L4C_GEN_CAUSE
+} l4c_cause_enum;
+
+typedef enum
+{
+    ATCI_REQ_QOS = 0,
+    ATCI_MIN_QOS,
+    ATCI_NEG_QOS 	/* SATe */
+} atci_qos_enum;
+
+typedef enum {
+    SUBSCRIBED_DELAY_CLASS = 0,
+    RESERVED_NW_TO_MS_DELAY_CLASS = 0,
+    DELAY_CLASS1,
+    DELAY_CLASS2,
+    DELAY_CLASS3,
+    DELAY_CLASS4,
+    RESERVED_BIDIRECT_DELAY_CLASS = 7,
+    TOT_DELAY_CLASS = 8
+} delay_class_enum;
+
+typedef enum {
+    SUBSCRIBED_REL_CLASS = 0,
+    RESERVED_NW_TO_MS_REL_CLASS  = 0,
+    REL_CLASS1,
+    REL_CLASS2,
+    REL_CLASS3,
+    REL_CLASS4,
+    REL_CLASS5,
+    RESERVED_BIDIRECT_REL_CLASS = 7
+} reliability_class_enum;
+
+typedef enum {
+    SUBSCRIBED_PTC = 0,
+    RESERVED_NW_TO_MS_PTC = 0,
+    PTC_1,
+    PTC_2,
+    PTC_3,
+    PTC_4,
+    PTC_5,
+    PTC_6,
+    PTC_7,
+    PTC_8,
+    PTC_9,
+    RESERVED_BIDIRECT_PTC = 15
+} peak_throughput_class;
+
+typedef enum {
+    SUBSCRIBED_PREC_CLASS = 0,
+    RESERVED_NW_TO_MS_PREC_CLASS  = 0,
+    PREC_CLASS1,
+    PREC_CLASS2,
+    PREC_CLASS3,
+    RESERVED_BIDIRECT_PREC_CLASS = 7
+} precedence_class_enum;
+
+typedef enum {
+    SUBSCRIBED_MEAN_THROUGHPUT = 0,
+    RESERVED_NW_TO_MS_MEAN_THROUGHPUT = 0,
+    MEAN_THROUGHPUT1,
+    MEAN_THROUGHPUT2,
+    MEAN_THROUGHPUT3,
+    MEAN_THROUGHPUT4,
+    MEAN_THROUGHPUT5,
+    MEAN_THROUGHPUT6,
+    MEAN_THROUGHPUT7,
+    MEAN_THROUGHPUT8,
+    MEAN_THROUGHPUT9,
+    MEAN_THROUGHPUT10,
+    MEAN_THROUGHPUT11,
+    MEAN_THROUGHPUT12,
+    MEAN_THROUGHPUT13,
+    MEAN_THROUGHPUT14,
+    MEAN_THROUGHPUT15,
+    MEAN_THROUGHPUT16,
+    MEAN_THROUGHPUT17,
+    MEAN_THROUGHPUT18,
+    RESERVED_BIDIRECT_MEAN_THROUGHPUT = 30,
+    BEST_EFFORT_THROUGHPUT = 31
+} mean_throughput_enum;
+
+typedef enum {
+    SUBSCRIBED_DELIVERY_ORDER = 0,
+    RESERVED_NW_TO_MS_DELIVERY_ORDER = 0,
+    WITH_DELIVERY_ORDER = 1,
+    DELIVERY_ORDER1 = WITH_DELIVERY_ORDER,
+    WITHOUT_DELIVERY_ORDER = 2,
+    DELIVERY_ORDER2 = WITHOUT_DELIVERY_ORDER,
+    RESERVED_BIDIRECT_DELIVERY_ORDER = 3
+} delivery_order_enum;
+
+typedef enum {
+    SUBSCRIBED_TRAFFIC_CLASS = 0,
+    RESERVED_NW_TO_MS_TRAFFIC_CLASS = 0,
+    CONVERSATIONAL_CLASS,
+    TRAFFIC_CLASS1 = CONVERSATIONAL_CLASS,
+    STREAMING_CLASS,
+    TRAFFIC_CLASS2 = STREAMING_CLASS,
+    INTERACTIVE_CLASS,
+    TRAFFIC_CLASS3 = INTERACTIVE_CLASS,
+    BACKGROUND_CLASS,
+    TRAFFIC_CLASS4 = BACKGROUND_CLASS,
+    RESERVED_BIDIRECT_TRAFFIC_CLASS = 7,
+    INVALID_TRAFFIC_CLASS = 0xff
+} traffic_class_enum;
+
+typedef enum {
+    SUBSCRIBED_TRAFFIC_HNDL_PRIORITY = 0,
+    RESERVED_NW_TO_MS_TRAFFIC_HNDL_PRIORITY = 0,
+    TRAFFIC_HNDL_PRIORITY1,
+    TRAFFIC_HNDL_PRIORITY2,
+    TRAFFIC_HNDL_PRIORITY3
+} traffic_hndl_priority_enum;
+
+typedef enum {
+    SUBSCRIBED_BIT_ERROR_RATE = 0,
+    RESERVED_NW_TO_MS_BIT_ERROR_RATE = 0,
+    BIT_ERROR_RATE1,
+    BIT_ERROR_RATE2,
+    BIT_ERROR_RATE3,
+    BIT_ERROR_RATE4,
+    BIT_ERROR_RATE5,
+    BIT_ERROR_RATE6,
+    BIT_ERROR_RATE7,
+    BIT_ERROR_RATE8,
+    BIT_ERROR_RATE9,
+    RESERVED_BIDIRECT_MIN_BIT_ERROR_RATE = 10,
+    RESERVED_BIDIRECT_BIT_ERROR_RATE = 15
+} residual_bit_error_rate_enum;
+
+
+typedef enum {
+    SUBSCRIBED_DELIVERY_OF_ERR_SDU= 0,
+    RESERVED_NW_TO_MS_DELIVERY_OF_ERR_SDU = 0,
+    DELIVERY_OF_ERR_NO_DETECT = 1,
+    DELIVERY_OF_ERR_SDU1 = DELIVERY_OF_ERR_NO_DETECT,
+    DELIVERY_OF_ERR_YES = 2,
+    DELIVERY_OF_ERR_SDU2 = DELIVERY_OF_ERR_YES,
+    DELIVERY_OF_ERR_NO = 3,
+    DELIVERY_OF_ERR_SDU3 = DELIVERY_OF_ERR_NO,
+    RESERVED_BIDIRECT_DELIVERY_OF_ERR_SDU = 7
+} delivery_of_err_sdu_enum;
+
+typedef enum {
+    SUBSCRIBED_SDU_ERR_RATIO = 0,
+    RESERVED_NW_TO_MS_SDU_ERR_RATIO = 0,
+    SDU_ERR_RATIO1,
+    SDU_ERR_RATIO2,
+    SDU_ERR_RATIO3,
+    SDU_ERR_RATIO4,
+    SDU_ERR_RATIO5,
+    SDU_ERR_RATIO6,
+    SDU_ERR_RATIO7,
+    RESERVED_BIDIRECT_SDU_MIN_ERR_RATIO = 8,
+    RESERVED_BIDIRECT_SDU_ERR_RATIO = 15
+} sdu_err_ratio_enum;
+
+
+typedef enum
+{
+    ESM_CAUSE_NO_CAUSE                          = 1,    /* Cause not assigned                                   */
+    ESM_CAUSE_OPERATOR_DETERMINED_BARRING       = 8,    /* Operator determined barring                          */
+    ESM_CAUSE_INSUFFICIENT_RESOURCES            = 26,   /* Insufficient resources                               */
+    ESM_CAUSE_UNKNOWN_OR_MISSING_APN            = 27,   /* Unknown or missing APN                               */
+    ESM_CAUSE_UNKNOWN_PDN_TYPE                  = 28,   /* Unknown PDN type                                     */
+    ESM_CAUSE_USER_AUTH_FAILED                  = 29,   /* User authentication failed                           */
+    ESM_CAUSE_REQUEST_REJECTED_BY_SGW_OR_PDNGW  = 30,   /* Request rejected by Serving GW or PDN GW             */
+    ESM_CAUSE_REQUEST_REJECTED_UNSPECIFIED      = 31,   /* Request rejected unspecified                         */
+    ESM_CAUSE_SERVICE_OPT_NOT_SUPPORTED         = 32,   /* Service option not supported                         */
+    ESM_CAUSE_REQ_SERVICE_NOT_SUBSCRIBED        = 33,   /* Requested service option not subscribed              */
+    ESM_CAUSE_SERVICE_TEMP_OUT_OF_ORDER         = 34,   /* Service option temporarily out of order              */
+    ESM_CAUSE_PTI_ALREADY_USED                  = 35,   /* PTI already in use                                   */
+    ESM_CAUSE_REGULAR_DEACTIVATION              = 36,   /* Regular deactivation                                 */
+    ESM_CAUSE_EPS_QOS_NOT_ACCEPTED              = 37,   /* EPS QoS not accepted                                 */
+    ESM_CAUSE_NETWORK_FAILURE                   = 38,   /* Network failure                                      */
+    ESM_CAUSE_REACTIVATION_REQUESTED            = 39,   /* Re-activation requitred                              */
+    ESM_CAUSE_SEMANTIC_ERROR_IN_TFT             = 41,   /* Semantic error in the TFT operation                  */
+    ESM_CAUSE_SYNTACTIC_ERROR_IN_TFT            = 42,   /* Syntactical error in the TFT operation               */
+    ESM_CAUSE_INVALID_EPS_BEARER_IDENTITY       = 43,   /* Invalid EPS bearer identity                          */
+    ESM_CAUSE_SEMANTIC_ERROR_IN_PACKET_FILTERS  = 44,   /* Semantic errors in packet filter(s)                  */
+    ESM_CAUSE_SYNTACTIC_ERROR_IN_PACKET_FILTERS = 45,   /* Syntactical errors in packet filter(s)               */
+    ESM_CAUSE_EPSB_CTXT_WITHOUT_TFT_ACTIVATED   = 46,   /* EPS bearer context without TFT already activated     */
+    ESM_CAUSE_PTI_MISMATCH                      = 47,   /* PTI mismatch                                         */
+    ESM_CAUSE_LAST_PDN_DISC_NOT_ALLOWED         = 49,   /* Last PDN disconnection not allowed                   */
+    ESM_CAUSE_PDN_TYPE_IPV4_ONLY_ALLOWED        = 50,   /* PDN type IPv4 only allowed                           */
+    ESM_CAUSE_PDN_TYPE_IPV6_ONLY_ALLOWED        = 51,   /* PDN type IPv6 only allowed                           */
+    ESM_CAUSE_SINGLE_ADDRESS_ONLY_ALLOWED       = 52,   /* Single address bearers only allowed                  */
+    ESM_CAUSE_ESM_INFORMATION_NOT_RECEIVED      = 53,   /* ESM information not received                         */
+    ESM_CAUSE_PDN_CONNENCTION_NOT_EXIST         = 54,   /* PDN connection does not exist                        */
+    ESM_CAUSE_MULTIPLE_PDN_APN_NOT_ALLOWED      = 55,   /* Multiple PDN connections for a given APN not allowed */
+    ESM_CAUSE_COLLISION_WITH_NW_INIT_REQUEST    = 56,   /* Collision with network initiated request             */
+    ESM_CAUSE_UNSUPPORTED_QCI_VALUE             = 59,   /* Unsupported QCI value                                */
+    ESM_CAUSE_MAXIMUM_NUM_OF_EPS_BEARERS_REACHED = 65,  /* Maximum number of EPS bearers reached                */
+    ESM_CAUSE_REQUESTED_APN_NOT_SUPPORTED_IN_CURRENT_RAT_AND_PLMN_COMBINATION = 66, /* Requested APN not supported in current RAT and PLMN combination */
+    ESM_CAUSE_INVALID_PTI_VALUE                 = 81,   /* Invalid PTI value                                    */
+    ESM_CAUSE_SEMANTIC_INCORRECT_MSG            = 95,   /* Semantically incorrect message                       */
+    ESM_CAUSE_INVALID_MANDATORY_IE              = 96,   /* Invalid mandatory information                        */
+    ESM_CAUSE_MSG_TYPE_NON_EXISTENT             = 97,   /* Message type non-existent or not implemented         */
+    ESM_CAUSE_MSG_TYPE_NOT_COMPATIBLE_STATE     = 98,   /* Message type not compatible with protocol state      */
+    ESM_CAUSE_IE_NON_EXISTENT_NOT_IMPLEMENTED   = 99,   /* Information element non-existent or not implemented  */
+    ESM_CAUSE_CONDITIONAL_IE_ERROR              = 100,  /* Conditional IE error                                 */
+    ESM_CAUSE_MSG_NOT_COMPATIBLE_STATE          = 101,  /* Message not compatible with the protocol state       */
+    ESM_CAUSE_PROTOCOL_ERROR_UNSPECIFIED        = 111,  /* Protocol error unspecified                           */
+    ESM_CAUSE_APN_RESTRICT_VALUE_INCOMPATIBLE   = 112   /* APN restriction value incompatible with active EPS bearer context */
+
+} esm_cause_enum;
+
+typedef enum
+{
+    PCO_IE_ID_PCSCF_IPV6_ADDR = 0x0001,
+    PCO_IE_ID_IM_CN_SIGNALLING_FLAG = 0x0002,
+    PCO_IE_ID_DNSV6_ADDR = 0x0003,
+    PCO_IE_ID_BCM = 0x0005,
+    PCO_IE_ID_ETFT = 0x0011,
+    PCO_IE_ID_IPV4_ADDR_VIA_NAS_SIGNALLING = 0x000A,
+    PCO_IE_ID_IPV4_ADDR_VIA_DHCPV4 = 0x000B,
+    PCO_IE_ID_PCSCF_IPV4_ADDR = 0x000C,
+    PCO_IE_ID_DNSV4_ADDR = 0x000D,
+    PCO_IE_ID_MSISDN_REQ = 0x000E,
+    PCO_IE_ID_IPV4_LINK_MTU = 0x0010,
+    PCO_IE_ID_PCSCF_RESELECTION_SUPPORT = 0x0012,
+    PCO_IE_ID_PS_DATA_OFF_SUPPORT = 0x0017,
+
+    PCO_IE_ID_VZW_REQUEST_FF00 = 0xFF00,
+    PCO_IE_ID_VZW_EPDGV6_ADDR = 0xFF01,
+    PCO_IE_ID_VZW_EPDGV4_ADDR = 0xFF02,
+    PCO_IE_ID_VZW_5GUW = 0xFF03,
+
+} pco_ie_id_enum;
+
+typedef enum
+{
+   L4C_GPRS_ATTACHED, //0
+   L4C_NONE_GPRS, // 1
+   L4C_GPRS_DETACHED, // 2
+   L4C_INVALID_SIM,// 3
+   L4C_GPRS_ATTEMPT_ATTACH,// 4
+   L4C_GPRS_COVERAGE,//5
+   L4C_PDP_ATTEMPT_ACT,//6
+   L4C_PDP_DEACTIVED,//7
+   L4C_PDP_ACTIVED//8
+} l4c_gprs_status_enum;
+
+typedef enum
+{
+   REG_STATE_NOT_REGISTERED=0,
+   REG_STATE_REGISTERED,
+   REG_STATE_SEARCHING,
+   REG_STATE_REG_DENIED,
+   REG_STATE_UNKNOWN,
+   REG_STATE_NOT_ACTIVE,
+   REG_STATE_SMS_ONLY,
+   REG_STATE_EMERGENCY_ONLY,
+   REG_STATE_CSFB_NOT_PREFERRED
+} reg_state_enum;
+
+typedef enum
+{
+   GPRS_ATTACHED,                   /* GPRS Attached */
+   GPRS_NO_COVERAGE,             /* No GPRS coverage */
+   GPRS_LIMITED_SERVICE,       /* GPRS not Attached */
+   GPRS_INVALID_SIM,               /* SIM invalid for GPRS */
+   GPRS_REGISTERING,               /* GPRS Attach on going */
+   GPRS_CELL_FOUND,                    /* GPRS coverage found */
+   GPRS_NULL                                 /* GPRS not activated */
+} l4c_rac_gprs_status_enum;
+
+typedef enum
+{
+   L4C_PREFER_RAT_NONE = 0,
+   L4C_PREFER_RAT_GSM  = 1,
+   L4C_PREFER_RAT_UMTS = 2,
+   L4C_PREFER_RAT_LTE  = 4,
+   L4C_PREFER_RAT_INVALID
+} l4c_prefer_rat_enum;
+
+typedef enum
+{
+   L4C_SIM_NOT_INSERTED,
+   L4C_SIM_INSERTED,
+   L4C_SIM_BLOCK,
+   L4C_SIM_NONE
+}l4c_sim_status_enum;
+
+
+#define RR_NUM_OF_MAX_BAR_CELL 20
+
+typedef enum
+{
+   BAR_CELL_ADD,
+   BAR_CELL_DEL,
+   BAR_CELL_BAR_SERV,
+   BAR_CELL_QUERY,
+}bar_cell_control_enum;
+
+
+typedef enum
+{
+  CS_DOMAIN    = 0,
+  PS_DOMAIN    = 1,
+  CS_PS_DOMAIN = 2,
+  DOMAIN_NONE  = 3
+} domain_id_enum;
+
+typedef enum
+{
+    NONE_SPECIFIED = 0x0000,
+    GPRS_SUPPORT = 0x0001,
+    EDGE_SUPPORT = 0x0002,
+    UMTS_SUPPORT = 0x0004,
+    HSDPA_SUPPORT = 0x0008,
+    HSUPA_SUPPORT = 0x0010,
+    HSDPA_UPA_SUPPORT = 0x0018,
+    HSDPAP_SUPPORT = 0x0020,
+    HSDPAP_UPA_SUPPORT = 0x0030,
+    HSUPAP_SUPPORT = 0x0040,
+    HSUPAP_DPA_SUPPORT = 0x0048,
+    HSPAP_SUPPORT = 0x0060,
+    DC_DPA_SUPPORT = 0x0088,
+    DC_DPA_UPA_SUPPORT = 0x0098,
+    DC_HSDPAP_SUPPORT = 0x00a0,
+    DC_HSDPAP_UPA_SUPPORT = 0x00b0,
+    DC_HSUPAP_DPA_SUPPORT = 0x00c8,
+    DC_HSPAP_SUPPORT = 0x00e0,
+    LTE_SUPPORT = 0x1000,
+    LTE_CA_SUPPORT = 0x2000,
+    ENDC_SUPPORT = 0x4000,
+    NR_SUPPORT = 0x8000,
+    NOT_CHANGE = 0xffff
+}data_speed_support_enum;
+
+typedef enum
+{
+   DATA_SPEED_NONE_ACTIVATE = 0x0000,
+   DATA_SPEED_GPRS_CAPABILITY = 0x0001,
+   DATA_SPEED_EDGE_CAPABILITY = 0x0002,
+   DATA_SPEED_UMTS_CAPABILITY = 0x0004,
+   DATA_SPEED_HSDPA_CAPABILITY = 0x0008,           //mac-hs
+   DATA_SPEED_HSUPA_CAPABILITY = 0x0010,           //mac-e/es
+   DATA_SPEED_HSDPA_HSUPA_CAPABILITY = 0x0018,     //mac-hs + mac-e/es
+   DATA_SPEED_HSDPAP_CAPABILITY = 0x0020,          //mac-ehs
+   DATA_SPEED_HSDPAP_UPA_CAPABILITY = 0x0030,      //mac-ehs + mac-e/es
+   DATA_SPEED_HSUPAP_CAPABILITY = 0x0040,          //mac-i/is
+   DATA_SPEED_HSUPAP_DPA_CAPABILITY = 0x0048,      //mac-hs + mac-i/is
+   DATA_SPEED_HSPAP_CAPABILITY = 0x0060,           //mac-ehs + mac-i/is
+   DATA_SPEED_DC_DPA_CAPABILITY = 0x0088,          //(DC) mac-hs
+   DATA_SPEED_DC_DPA_UPA_CAPABILITY = 0x0098,      //(DC) mac-hs + mac-e/es
+   DATA_SPEED_DC_HSDPAP_CAPABILITY = 0x00a0,       //(DC) mac-ehs
+   DATA_SPEED_DC_HSDPAP_UPA_CAPABILITY = 0x00b0,   //(DC) mac-ehs + mac-e/es
+   DATA_SPEED_DC_HSUPAP_DPA_CAPABILITY = 0x00c8,   //(DC) mac-hs + mac-i/is
+   DATA_SPEED_DC_HSPAP_CAPABILITY = 0x00e0,        //(DC) mac-ehs + mac-i/is
+   DATA_SPEED_LTE_CAPABILITY = 0x1000,
+   DATA_SPEED_LTE_CA_CAPABILITY = 0x2000,
+} data_speed_activate_enum;
+
+typedef enum
+{
+    L4C_CAP_GPRS  = 0x0001,
+    L4C_CAP_EDGE  = 0x0002,
+    L4C_CAP_WCDMA = 0x0004,
+    L4C_CAP_TDSCDMA = 0x0008,
+    L4C_CAP_UMTS = (L4C_CAP_WCDMA | L4C_CAP_TDSCDMA),
+    L4C_CAP_HSDPA = 0x0010,
+    L4C_CAP_HSUPA = 0x0020,
+    L4C_CAP_HSPA  = (L4C_CAP_HSDPA | L4C_CAP_HSUPA),
+    L4C_CAP_HSPAP  = 0x0040,
+    L4C_CAP_FDD_LTE = 0x0080,
+    L4C_CAP_TDD_LTE = 0x0100,
+    L4C_CAP_LTE_CA = 0x0200,
+    L4C_CAP_LTE = (L4C_CAP_FDD_LTE | L4C_CAP_TDD_LTE),
+    L4C_CAP_FDD_NR = 0x0400,
+    L4C_CAP_TDD_NR = 0x0800,
+    L4C_CAP_NR = (L4C_CAP_FDD_NR | L4C_CAP_TDD_NR),
+    L4C_CAP_MAX = (L4C_CAP_GPRS | L4C_CAP_EDGE | L4C_CAP_UMTS | L4C_CAP_HSPA | L4C_CAP_HSPAP | L4C_CAP_LTE | L4C_CAP_LTE_CA | L4C_CAP_NR)
+}l4c_modem_capability_enum;
+
+typedef enum
+{
+   CSD_BEARER_DIALUP,
+   GPRS_BEARER_DIALUP,
+   INVALID_BEARER
+}l4c_dialup_bearer_enum; //Moved from l4c_common_enum.h
+
+typedef enum
+{
+    L4C_ACTIVATE_CNF = 1,
+    L4C_ACTIVATE_REJ,
+    L4C_ACTIVATE_IND,
+    L4C_SEC_ACTIVATE_IND,
+    L4C_DEACTIVATE_CNF,
+    L4C_DEACTIVATE_IND,
+    L4C_MODIFY_CNF,
+    L4C_MODIFY_REJ,
+    L4C_MODIFY_IND
+}l4c_handler_action_enum;
+
+typedef enum
+{
+   TCM_PDP_DEACTIVATE,
+   TCM_PDP_ACTIVATE,
+   TCM_PDP_DEACTIVATE_LOCAL /* __LOCAL_DEACTIVATE_PDP_SUPPORT__ */
+}l4c_tcm_pdp_action_enum;
+
+typedef enum
+{
+   TCM_AT_PDP_CID = 1,
+   TCM_EM_PDP_CID_1 = 2,
+   TCM_EM_PDP_CID_2
+}l4c_tcm_em_pdp_cid_enum; //mtk00714 w0634
+
+typedef enum
+{
+    L4CTCM_BEARER_NOTIFY_NOT_DEFINE = 0,
+    L4CTCM_BEARER_NOTIFY_ADDED = 1,
+    L4CTCM_BEARER_NOTIFY_MODIFIED = 2,
+    L4CTCM_BEARER_NOTIFY_DELETED = 3,
+} l4ctcm_bearer_notify_type_enum;
+
+typedef enum
+{
+    L4CTCM_DEDICATED_BEARER_EVENT_REPORT,
+} l4ctcm_ps_event_report_type_enum;
+
+typedef enum
+{
+    RMMI_UCM_ATD = 0,
+    RMMI_UCM_ATD_2,
+    RMMI_UCM_ATD_3,
+    RMMI_UCM_ATD_4,
+    RMMI_UCM_ATD_DATA, //for ATD dialing data call
+    RMMI_UCM_ATH,
+    RMMI_UCM_ATA,
+    RMMI_UCM_BLDN,
+    RMMI_UCM_CHLD,
+    RMMI_UCM_CHUP,
+    RMMI_UCM_MEM_DIAL,  //mem dial from SIM1
+    RMMI_UCM_MEM_DIAL_2, //mem dial from SIM2
+    RMMI_UCM_MEM_DIAL_3,
+    RMMI_UCM_MEM_DIAL_4
+} rmmi_ucm_action_enum;
+
+typedef enum
+{
+    RMMI_UCM_CAUSE_NONE = 0,
+    RMMI_UCM_CAUSE_ATD_NOT_ALLOWED,
+    RMMI_UCM_CAUSE_ATA_NOT_ALLOWED,
+    RMMI_UCM_CAUSE_ATH_NOT_ALLOWED,
+    RMMI_UCM_CAUSE_CHLD_NOT_ALLOWED,
+    RMMI_UCM_CAUSE_NO_CALL_TO_ANSWER,   //specific cause for ATA
+    RMMI_UCM_CAUSE_NO_CALL_TO_HANGUP,   //specific cause  for ATH
+    RMMI_UCM_CAUSE_NO_CALL_TO_HOLD,     //specific cause  for CHLD
+    RMMI_UCM_CAUSE_NO_CALL_TO_REL,      //specific cause for CHLD
+    RMMI_UCM_CAUSE_NO_CALL_TO_ECT,      //specific cause for CHLD
+    RMMI_UCM_CAUSE_NO_CALL_TO_CONFERENCE,       // specific cause for CHLD
+    RMMI_UCM_CAUSE_INVALID_CALLID,      //specific cause for CHLD
+    RMMI_UCM_CAUSE_NO_NUM_EXIST, //specific cause for memory dial or bldn when number not exist ( BQB expect return "ERROR")
+    RMMI_UCM_CAUSE_ATD_DATA_NOT_ALLOWED //MAUI_02634907
+} rmmi_ucm_cause_enum;
+
+typedef enum
+{
+    RMMI_UCM_RCODE_OK,
+    RMMI_UCM_RCODE_CONNECT,
+    RMMI_UCM_RCODE_RING,
+    RMMI_UCM_RCODE_NO_CARRIER,
+    RMMI_UCM_RCODE_ERROR,
+    RMMI_UCM_RCODE_CCWA
+} rmmi_rcode_type_enum;
+
+typedef enum
+{
+    CLIR_INVOKE,
+    CLIR_SUPPRESS,
+    CLIR_AUTO
+} rmmi_clir_enum;
+
+typedef enum
+{
+    RMMI_CLI_VALID = 0,          /* CLI valid */
+    RMMI_CLI_WITHHELD = 1,       /* CLI has been withheld by the originator */
+    RMMI_CLI_INTERWORK = 2,      /* CLI is not available due to interworking problems or limitations of originating network */
+    RMMI_CLI_COIN_PAYPHONE = 3,  /* CLI is not available due to calling party being of type payphone */
+    RMMI_CLI_OTHERS = 4          /* CLI is not available due to other reasons */
+
+}rmmi_cli_validity_enum;
+
+typedef enum
+{
+   CALL_DIAL,
+   CALL_ANSWER
+}l4c_data_call_op_enum;
+
+typedef enum
+{
+    L4C_DISCONNECT_NONE,
+    L4C_DISCONNECT_MO,
+    L4C_DISCONNECT_MT
+} l4c_ath_req_enum;
+
+typedef enum
+{
+    L4C_SS_MO,
+    L4C_SS_MT,
+    L4C_SS_NONE
+} l4c_ss_direction_enum;
+
+typedef enum
+{
+   CSMCC_REL_HELD_OR_UDUB, /*0*/
+   CSMCC_REL_ACTIVE_AND_ACCEPT, /*1*/
+   CSMCC_REL_SPECIFIC_CALL, /*2*/
+   CSMCC_HOLD_ACTIVE_AND_ACCEPT, /*3*/
+   CSMCC_HOLD_ACTIVE_EXCEPT_SPECIFIC_CALL, /*4*/
+   CSMCC_ADD_HELD_CALL, /*5*/
+   CSMCC_EXPLICIT_CALL_TRANSFER, /*6*/
+   CSMCC_ACTIVATE_CCBS_CALL, /*7*/
+   CSMCC_REL_ALL_EXCEPT_WAITING_CALL, /*8*/
+   CSMCC_REL_SPECIFIC_ACTIVE_CALL, /* 9 */
+   CSMCC_SWAP_CALL, /* 10 */
+   CSMCC_REL_HELD,  /* 11 */
+   CSMCC_REL_ACTIVE,  /* 12 */
+   CSMCC_REL_ALL,  /* 13 */
+   CSMCC_REL_UDUB,  /* 14 */
+   CSMCC_REL_CCBS,  /* 15 */
+   CSMCC_REL_ACTIVE_AND_ACCEPT_WAITING,  /* 16 */
+   CSMCC_REL_ACTIVE_AND_ACCEPT_CCBS,  /* 17 */
+   CSMCC_REL_ACTIVE_AND_ACCEPT_HELD,  /* 18 */
+   CSMCC_HOLD_ACTIVE_AND_ACCEPT_WAITING,  /* 19 */
+   CSMCC_HOLD_ACTIVE_AND_ACCEPT_CCBS,  /* 20 */
+   CSMCC_VT_FALL_TO_VOICE, /* 21 */ /*MAUI_02641977 CMCC requietment, to disconnect the vt call with cause88*/
+   CSMCC_REL_CALL_REJECT,
+
+   CSMCC_INVALID_CRSS_TYPE = 255
+} csmcc_crss_req_enum;
+
+typedef enum
+{
+   CLCC_MO_CALL,
+   CLCC_MT_CALL,
+   CLCC_UNKNOWN_DIR
+} clcc_dir_enum;
+
+typedef enum
+{
+   CSMCC_SETUP_MSG,
+   CSMCC_DISCONNECT_MSG,
+   CSMCC_ALERT_MSG,
+   CSMCC_CALL_PROCESS_MSG,
+   CSMCC_SYNC_MSG,
+   CSMCC_PROGRESS_MSG,
+   CSMCC_CALL_CONNECTED_MSG,
+   CSMCC_ALL_CALLS_DISC_MSG = 129,
+   CSMCC_MO_CALL_ID_ASSIGN_MSG = 130,
+   CSMCC_STATE_CHANGE_HELD = 131,
+   CSMCC_STATE_CHANGE_ACTIVE = 132,
+   CSMCC_STATE_CHANGE_DISCONNECTED = 133,
+   CSMCC_STATE_CHANGE_MO_DISCONNECTING =134,
+#ifdef __TC01__
+   CSMCC_MO_CALL_MODIFIED_BY_SAT = 135,
+#endif
+   CSMCC_CPI_END = 255
+}csmcc_cpi_msg_type_enum; /*mtk00924 add 041210 for +ECPI*/
+
+typedef enum
+{
+   SCP_CALL_STATE_ORIGINATING = 1,
+   SCP_CALL_STATE_INCOMING,
+   SCP_CALL_STATE_CONVERSATION,
+   SCP_CALL_STATE_CC_IN_PROGRESS,
+   SCP_CALL_STATE_ALERTING,
+   SCP_CALL_STATE_HOLD,
+   SCP_CALL_STATE_WAITING,
+   SCP_CALL_STATE_DISCONNECTING,
+   SCP_CALL_STATE_END,
+   SCP_CALL_STATE_SETUP
+}scp_call_type_enum;
+
+typedef enum {
+   INVALID_OPERATION,
+   SS_OPERATION,
+   SIM_OPERATION,
+   GPRS_OPERATION,
+   CC_OPERATION
+} csmss_string_op_enum;
+
+//0: test
+//1: reconfiguration
+//2: manually
+//3: automatically
+typedef enum
+{
+   ECALL_TEST,
+   ECALL_RECONFIGURATION,
+   ECALL_MANUALLY_INITIATED,
+   ECALL_AUTOMATICALLY_INITIATED,
+   ECALL_DISABLE = 0xff
+} ecall_type_enum;
+
+#if defined(__ECALL_SUPPORT__) || defined(__NG_ECALL_SUPPORT__)
+typedef enum
+{
+   ECALL_FORMAT_INVALID = 0,
+   ECALL_FORMAT_BINARY,
+   ECALL_FORMAT_MAX
+} ecall_format_enum;
+
+typedef enum
+{
+   ECALL_ABORT_ATTACH_REASON_TIMEOUT,
+   ECALL_ABORT_ATTACH_REASON_CANCEL,
+   ECALL_ABORT_ATTACH_REASON_INVALID
+} ecall_abort_attach_reason_enum;
+#endif
+
+//agps begin
+/* ENUMERATED NotificationToMSUser */
+typedef enum
+{
+   L4C_SS_NotificationToMSUser_notifyLocationAllowed,
+   L4C_SS_NotificationToMSUser_notifyAndVerify_LocationAllowedIfNoResponse,
+   L4C_SS_NotificationToMSUser_notifyAndVerify_LocationNotAllowedIfNoResponse,
+    // ...
+   L4C_SS_NotificationToMSUser_locationNotAllowed
+}
+L4C_SS_NotificationToMSUser;
+
+/* ENUMERATED OccurrenceInfo */
+typedef enum
+{
+   L4C_SS_OccurrenceInfo_oneTimeEvent,
+   L4C_SS_OccurrenceInfo_multipleTimeEvent
+    // ...
+}
+L4C_SS_OccurrenceInfo;
+
+/* ENUMERATED LocationEstimateType */
+typedef enum
+{
+   L4C_SS_LocationEstimateType_currentLocation,
+   L4C_SS_LocationEstimateType_currentOrLastKnownLocation,
+   L4C_SS_LocationEstimateType_initialLocation,
+    // ...
+   L4C_SS_LocationEstimateType_activateDeferredLocation,
+   L4C_SS_LocationEstimateType_cancelDeferredLocation
+}
+L4C_SS_LocationEstimateType;
+
+/* ENUMERATED LCS-FormatIndicator */
+typedef enum
+{
+   L4C_SS_LCS_FormatIndicator_logicalName,
+   L4C_SS_LCS_FormatIndicator_e_mailAddress,
+   L4C_SS_LCS_FormatIndicator_msisdn,
+   L4C_SS_LCS_FormatIndicator_url,
+   L4C_SS_LCS_FormatIndicator_sipUrl
+    // ...
+}
+L4C_SS_LCS_FormatIndicator;
+
+/* ENUMERATED VerificationResponse */
+typedef enum
+{
+   L4C_SS_VerificationResponse_permissionDenied,
+   L4C_SS_VerificationResponse_permissionGranted
+    // ...
+}
+L4C_SS_VerificationResponse;
+
+/* ENUMERATED AreaType */
+typedef enum
+{
+   L4C_SS_AreaType_countryCode,
+   L4C_SS_AreaType_plmnId,
+   L4C_SS_AreaType_locationAreaId,
+   L4C_SS_AreaType_routingAreaId,
+   L4C_SS_AreaType_cellGlobalId,
+    // ...
+   L4C_SS_AreaType_utranCellId
+}
+L4C_SS_AreaType;
+
+/* ENUMERATED MOLR-Type */
+typedef enum
+{
+   L4C_SS_MOLR_Type_locationEstimate,
+   L4C_SS_MOLR_Type_assistanceData,
+   L4C_SS_MOLR_Type_deCipheringKeys
+    // ...
+}
+L4C_SS_MOLR_Type;
+
+/* ENUMERATED LocationMethod */
+typedef enum
+{
+   L4C_SS_LocationMethod_msBasedEOTD,
+   L4C_SS_LocationMethod_msAssistedEOTD,
+   L4C_SS_LocationMethod_assistedGPS,
+    // ...
+   L4C_SS_LocationMethod_msBasedOTDOA
+}
+L4C_SS_LocationMethod;
+
+/* ENUMERATED ResponseTimeCategory */
+typedef enum
+{
+   L4C_SS_ResponseTimeCategory_lowdelay,
+   L4C_SS_ResponseTimeCategory_delaytolerant
+    // ...
+}
+L4C_SS_ResponseTimeCategory;
+//agps end
+
+/* SMS PART START */
+typedef enum
+{
+   SMSAL_DEFAULT_PID = 0x00,   /* Text SMS */
+   SMSAL_TELEX_PID   = 0x21,   /* Telex */
+   SMSAL_G3_FAX_PID  = 0x22,   /* Group 3 telefax */
+   SMSAL_G4_FAX_PID  = 0x23,   /* Group 4 telefax */
+   SMSAL_VOICE_PID   = 0x24,   /* Voice Telephone */
+   SMSAL_ERMES_PID   = 0x25,   /* ERMES (European Radio Messaging System) */
+   SMSAL_PAGING_PID  = 0x26,   /* National Paging system */
+   SMSAL_X400_PID    = 0x31,   /* Any public X.400-based message system */
+   SMSAL_EMAIL_PID   = 0x32    /* E-mail SMS */
+
+} smsal_pid_enum;
+
+typedef enum
+{
+   SMSAL_DEFAULT_DCS        = 0x00,  /* GSM 7-bit */
+   SMSAL_8BIT_DCS           = 0x04,  /* 8-bit */
+
+   SMSAL_KSC5601_DCS        = 0x05,  /* KSC5601 */
+
+   SMSAL_UCS2_DCS           = 0x08,  /* UCS2 */
+   SMSAL_RESERVED_DCS       = 0x0c,  /* reserved alphabet,
+                                        currently, MMI shall display "not support alphabet"
+                                        or "cannot display" when receive dcs indicated this value */
+   SMSAL_EXT_DCS            = 0x10  /* Special dcs for non-standard character,
+                                       used by MMI and EMS */
+} smsal_dcs_enum;
+
+typedef enum
+{
+   /* Mailbox */
+   SMSAL_LINE_1 = 0,
+   SMSAL_LINE_2 = 1,
+   SMSAL_MAX_LINES = 2,
+
+   /* SMS profile parameter */
+   SMSAL_PROFILE_1 = 0,
+   SMSAL_PROFILE_2 = 1,
+   SMSAL_PROFILE_3 = 2,
+   SMSAL_PROFILE_4 = 3, /* SMSAL_MAX_PROFILE_NUM (4) */
+   SMSAL_PROFILE_NONE = 0xff /* invalid profile ID */
+} smsal_dest_no_enum;
+
+typedef enum
+{
+   SMSAL_CB_MI          = 0x01,
+   SMSAL_CB_MIR         = 0x02,
+   SMSAL_CB_DCS         = 0x04,
+   SMSAL_CB_MI_MASK     = 0x08,
+   SMSAL_CB_MIR_MASK    = 0x10,
+   SMSAL_CB_DCS_MASK    = 0x20,
+   SMSAL_CB_ALL_LANG    = 0x40
+} smsal_cb_para_enum;
+
+/* TP-Status(TP-ST) in Status Report */
+typedef enum
+{
+   /*
+    * Short message transaction completed
+    */
+   ST_COMP_MSG_RECV_BY_SME      = 0x00,  /* Short message received by the SME */
+   ST_COMP_MSG_FORWARD_NOT_CONF = 0x01,  /* Short message forwarded by the SC to the SME
+                                            but the SC is unable to confirm deliver */
+   ST_COMP_MSG_REPLACE          = 0x02,  /* Short message replaced by the SC */
+
+   /*
+    * Temporary error, SC still trying to transfer SM
+    */
+   ST_TE1_CONGESTION           = 0x20,  /* Congestion */
+   ST_TE1_SME_BUSY             = 0x21,  /* SME busy */
+   ST_TE1_NO_RSP_FROM_SME      = 0x22,  /* No response from SME */
+   ST_TE1_SERVICE_REJECT       = 0x23,  /* Service rejected */
+   ST_TE1_QOS_NOT_AVAIL        = 0x24,  /* Quality of service not available */
+   ST_TE1_ERROR_IN_SME         = 0x25,  /* Error in SME */
+
+   /*
+    * Permanent error, SC is not making any more transfer attempts
+    */
+   ST_PE_REMOTE_PROC_ERROR    = 0x40,  /* Remote procedure error */
+   ST_PE_INCOMP_DEST          = 0x41,  /* Incompatible destination */
+   ST_PE_CONN_REJ_BY_SME      = 0x42,  /* Connection rejected by SME */
+   ST_PE_NOT_OBTAINABLE       = 0x43,  /* Not obtainable */
+   ST_PE_QOS_NOT_AVAIL        = 0x44,  /* Quality of service not available */
+   ST_PE_NO_INTERWK_AVAIL     = 0x45,  /* No interworking available */
+   ST_PE_VP_EXPIRED           = 0x46,  /* SM Validity Period Expired */
+   ST_PE_DEL_BY_ORI_SME       = 0x47,  /* SM Deleted by originating SME */
+   ST_PE_DEL_BY_SC            = 0x48,  /* SM Deleted by SC Administration */
+   ST_PE_NOT_EXIST            = 0x49,  /* SM does not exist */
+
+   /*
+    * Temporary error, SC is not making any more transfer attempts
+    */
+   ST_TE2_CONGESTION           = 0x60,  /* Congestion */
+   ST_TE2_SME_BUSY             = 0x61,  /* SME busy */
+   ST_TE2_NO_RSP_FROM_SME      = 0x62,  /* No response from SME */
+   ST_TE2_SERVICE_REJECT       = 0x63,  /* Service rejected */
+   ST_TE2_QOS_NOT_AVAIL        = 0x64,  /* Quality of service not available */
+   ST_TE2_ERROR_IN_SME         = 0x65,  /* Error in SME */
+
+   ST_SERVICE_REJECT           = 0xff   /* all reserved values interpreted as "service reject" */
+
+} smsal_st_enum;
+
+/*
+ * the difference between SMSAL_SM_PREFER and SMSAL_MT is :
+ *
+ * SMSAL_SM_PREFER : in at+cpms? , only SIM storage information will be return
+ * SMSAL_MT        : .....         both SIM/ME storage information will be return
+ */
+typedef enum
+{
+   SMSAL_SM = 0,            /* SIM only   */
+   SMSAL_ME = 1,            /* ME only    */
+   SMSAL_SR = 2,            /* status report (currently NOT support) */
+   SMSAL_BM = 3,            /* broadcast     (currently NOT support) */
+   SMSAL_TA = 4,            /* adaptation    (currently NOT support) */
+   SMSAL_SM_PREFER = 5,     /* SIM prefer, try SIM first, then ME */
+   SMSAL_ME_PREFER = 6,     /* ME prefer, try ME first, then SIM */
+   SMSAL_MT = 7,            /* any of storages associated with ME (SIM first) */
+   SMSAL_STORAGE_UNSPECIFIED = 7
+
+} smsal_storage_enum;
+
+#ifdef SMS_FOR_NEPTUNE
+/* This enum is for para_ind in both l4csmsal_set_parameter_req_struct (2 bytes) */
+/* and smsal_send_msg_req_struct(1 byte).                                        */
+typedef enum
+{
+   SMSAL_PARA_FO             =   0x01,
+   SMSAL_PARA_SCA            =   0x02,
+   SMSAL_PARA_PID            =   0x04,
+   SMSAL_PARA_DCS            =   0x08,
+   SMSAL_PARA_VP             =   0x10,
+   SMSAL_PARA_SUPP_CONCAT    =   0x20,
+   SMSAL_PARA_BEARER         =   0x40,
+   SMSAL_PARA_DIRECT_DISPLAY =   0x80,
+   SMSAL_PARA_PREFER_MEM     = 0x0100,
+   SMSAL_PARA_CBCH_REQ       = 0x0200,
+   SMSAL_PARA_MAILBOX_ADDR   = 0x0400,
+   SMSAL_PARA_PROFILE_NAME   = 0x0800,
+   SMSAL_PARA_ALL_CB_LANG    = 0x1000,
+   SMSAL_PARA_SAVE_PROFILE   = 0x2000,
+   SMSAL_PARA_RESTORE_PROFILE= 0x4000,
+
+   SMSAL_COM_PARA_FO             =   0x0001,
+   SMSAL_COM_PARA_BEARER         =   0x0002,
+   SMSAL_COM_PARA_PREFER_MEM     =   0x0004,
+   SMSAL_COM_PARA_STATUS_REP     =   0x0008,
+   SMSAL_COM_PARA_REPLY_PATH     =   0x0010,
+   SMSAL_COM_PARA_CBCH_REQ       =   0x0020, //AT+CSCB
+   SMSAL_COM_PARA_MAILBOX_ADDR   =   0x0040,
+   SMSAL_COM_PARA_ALL_CB_LANG    =   0x0080,
+   SMSAL_COM_PARA_RESTORE_PROFILE=   0x0100,
+   SMSAL_COM_PARA_MBI_NUM        =   0x0200,
+   SMSAL_COM_PARA_ECBCH_REQ      =   0x0400  //AT+ECSCBSW
+} smsal_parameter_enum;
+
+#else
+typedef enum
+{
+   SMSAL_PARA_FO               =   0x0001,
+   SMSAL_PARA_PID              =   0x0002,
+   SMSAL_PARA_DCS              =   0x0004,
+   SMSAL_PARA_VP               =   0x0008,
+   SMSAL_PARA_SCA              =   0x0010,
+   SMSAL_PARA_PROFILE_NAME     =   0x0020,
+   SMSAL_PARA_SAVE_PROFILE     =   0x0040,
+
+   SMSAL_PARA_STATUS_REP       =   0x0100,
+   SMSAL_PARA_REPLY_PATH       =   0x0200
+} smsal_profile_para_enum;
+
+typedef enum
+{
+   SMSAL_COM_PARA_FO             =   0x0001,
+   SMSAL_COM_PARA_BEARER         =   0x0002,
+   SMSAL_COM_PARA_PREFER_MEM     =   0x0004,
+   SMSAL_COM_PARA_STATUS_REP     =   0x0008,
+   SMSAL_COM_PARA_REPLY_PATH     =   0x0010,
+   SMSAL_COM_PARA_CBCH_REQ       =   0x0020, //AT+CSCB
+   SMSAL_COM_PARA_MAILBOX_ADDR   =   0x0040,
+   SMSAL_COM_PARA_ALL_CB_LANG    =   0x0080,
+   SMSAL_COM_PARA_RESTORE_PROFILE=   0x0100,
+   SMSAL_COM_PARA_MBI_NUM        =   0x0200,
+   SMSAL_COM_PARA_ECBCH_REQ      =   0x0400, //AT+ECSCBSW
+   SMSAL_COM_PARA_NR_BEARER      =   0x0800  //AT+C5GSMS
+} smsal_common_para_enum;
+#endif
+
+/* follow +CGSMS command in 07.07 */
+typedef enum
+{
+   SMS_PS_ONLY = 0,
+   SMS_CS_ONLY,
+   SMS_PREFER_PS,
+   SMS_PREFER_CS,
+   NUM_OF_SMS_SERVICE_MODE
+}sms_bearer_enum;
+
+/* follow +C5GSMS command in 07.07 */
+typedef enum
+{
+   SMS_NR_PREFER_3GPP = 0,
+   SMS_NR_PREFER_NON_3GPP = 1,
+   NUM_OF_SMS_NR_SERVICE_MODE
+}sms_nr_bearer_enum;
+
+/* follow +C5GUSMS command in 07.07 */
+typedef enum
+{
+   SMS_AVAILABLE_IN_NR_UNKNOWN = 0,
+   SMS_AVAILABLE_IN_NR_NOT_AVAILABLE = 1,
+   SMS_AVAILABLE_IN_NR_AVAILABLE = 2
+}sms_nr_available_enum;
+
+/* follow +C5GUSMS command in 07.07 */
+typedef enum
+{
+   SMS_ALLOWED_IN_NR_UNKNOWN = 0,
+   SMS_ALLOWED_IN_NR_NOT_ALLOWED = 1,
+   SMS_ALLOWED_IN_NR_ALLOWED = 2
+}sms_nr_allowed_enum;
+
+typedef enum
+{
+   /* follows intended for AT commands and MMI */
+   SMSAL_REC_UNREAD = 0,         /* received unread */
+   SMSAL_REC_READ,               /* received read */
+   SMSAL_STO_UNSENT,             /* stored unsent */
+   SMSAL_STO_SENT,               /* stored sent */
+
+   SMSAL_ALL,                    /* all (only applicable to +CMGL command)
+                                  * not for MMI
+                                  */
+
+   /* follows intended for MMI only */
+   SMSAL_INBOX_PARTIAL,          /* parts of inbox messages */
+   SMSAL_OUTBOX_PARTIAL,         /* parts of outbox messages */
+   SMSAL_STO_DRAFT,              /* stored draft */
+   SMSAL_INVALID_STATUS
+} smsal_status_enum;
+
+/* for +EQSI proprietary command */
+typedef enum
+{
+    RMMI_SMSAL_SM = 0,
+    RMMI_SMSAL_ME = 1,
+    RMMI_SMSAL_MT = 2
+} rmmi_smsal_storage_enum;
+
+typedef enum
+{
+  L4C_NORMAL_CB_UPDATE = 0, /* General case, user Configure CB setting */
+  L4C_ETWS_CB_START_RX,     /* ETWS Primary Notification trigger ME receive CB Start */
+  L4C_ETWS_CB_STOP_RX       /* ETWS Primary Notification trigger ME receive CB Stop */
+} l4c_cb_set_type_enum;
+
+/* SMS PART END */
+
+typedef enum
+{
+    SCRI_REQ_SENT = 0,
+    SCRI_CS_SESSION_ONGOING = 1,
+    SCRI_PS_SIGNALLING_ONGOING = 2,
+    SCRI_NO_PS_DATA_SESSION = 3,
+    SCRI_REQ_NOT_SENT = 4,
+    SCRI_NOT_ALLOWED = 5,
+    SCRI_REQ_IND = 6
+} end_session_result_enum;
+
+typedef enum
+{
+   SCRI_REQ_FD  = 0,
+   SCRI_REQ_AFR = 1,     /* 4G3 CSFB, release PS signaling connection for AFR */
+   SCRI_REQ_FOP = 2      /* RAU Accept with FOP on */
+} end_session_cause_enum;
+
+/* mtk03643 : cipher icon share between mmi & mm */
+typedef enum {
+    GMMREG_CIPHER_OFF,
+	GMMREG_CIPHER_ON,
+	GMMREG_CIPHER_INVALID=0xff
+} gmmreg_cipher_ind_enum; /* ripple: cipher ind */
+
+typedef enum {
+    NOT_ALLOWED_CSG     = 0x00,
+    ALLOWED_CSG         = 0x01,
+    OPERATOR_CSG        = 0x02, /* Reserved for Rel9 */
+    UNAUTH_OPERATOR_CSG = 0x03
+} csg_type_enum;
+
+#if defined(__GEMINI__)
+
+typedef enum
+{
+    SIM_RADIO_OFF = 0x00,
+    SIM1_RADIO_ON = 0x01,
+    SIM2_RADIO_ON = 0x02,
+    SIM3_RADIO_ON = 0x04,
+    SIM4_RADIO_ON = 0x08
+} sim_radio_status_enum;
+
+typedef enum
+{
+    SIM1_INSERTED = 0x01,
+    SIM2_INSERTED = 0x02,
+    SIM3_INSERTED = 0x04,
+    SIM4_INSERTED = 0x08
+} sim_inserted_status_enum;
+
+typedef enum
+{
+    SIM1_ONLY_CONFIG = SIM1_RADIO_ON,
+    SIM2_ONLY_CONFIG = SIM2_RADIO_ON,
+    DAUL_SIM_CONFIG  = SIM1_RADIO_ON | SIM2_RADIO_ON,
+    TRIPLE_SIM_CONFIG  = SIM1_RADIO_ON | SIM2_RADIO_ON | SIM3_RADIO_ON,
+    QUAD_SIM_CONFIG = SIM1_RADIO_ON | SIM2_RADIO_ON | SIM3_RADIO_ON | SIM4_RADIO_ON,
+    SIM_CONFIG_STATUS_NONE = 0xFF
+} sim_config_status_enum;
+
+typedef enum
+{
+    NO_SIM_INSERTED    = 0,
+    ONLY_SIM1_INSERTED = 1,
+    ONLY_SIM2_INSERTED = 2,
+    DUAL_SIM_INSERTED  = 3,
+    SIM_INSERT_STATUS_NONE = 0xFF
+} sim_insert_status_enum;
+
+#endif
+
+typedef enum
+{
+    PHB_APPROVE_FORMAT_FAIL = 0,
+    PHB_APPROVE_PHB_NOT_READY,
+    /* for backward compatible to PHB_CAUSE_FDN_BLOCKED */
+    PHB_APPROVE_FDN_BLOCKED = 2600
+} phb_approve_cause_enum;
+
+
+typedef enum
+{
+    ESDP_CATEGORY_WALLPAPER = 0,
+    ESDP_CATEGORY_RINGTONE,//currently disabled
+    ESDP_CATEGORY_HOMECITY,
+    ESDP_CATEGORY_THEME,
+    ESDP_CATEGORY_SHORTCUT,
+    ESDP_CATEGORY_SCREENSAVER,
+    ESDP_CATEGORY_PWRONDISPLAY,
+    ESDP_CATEGORY_PWROFFDISPLAY,
+    ESDP_CATEGORY_MAX = ESDP_CATEGORY_PWROFFDISPLAY
+}esdp_category_enum;
+
+typedef enum
+{
+   TYPE_NO_REQUIRED,
+   TYPE_PHONELOCK,
+   TYPE_CHV1,
+   TYPE_CHV2,
+   TYPE_UBCHV1,
+   TYPE_UBCHV2,
+   TYPE_NP,
+   TYPE_NSP,
+   TYPE_SP,
+   TYPE_CP,
+   TYPE_IMSI_LOCK,
+   TYPE_PERSONALIZATION_KEY,
+   TYPE_CHV1_BLOCKED,
+   TYPE_CHV2_BLOCKED,
+   TYPE_SIM_CARD_BLOCKED,
+   TYPE_UBCHV2_BLOCKED,
+   TYPE_UBCHV1_CHV1_NOT_LOCK,
+   TYPE_LINK_NS_SP,
+   TYPE_LINK_SIM_C,
+   TYPE_UNSPECIFIED,
+   TYPE_UNEXPECTED_ERROR, //Kinki: for stress test [MAUI_00859767]
+   TYPE_IGNORED_ERROR       // keep l4c/smu at previous state
+}smu_security_type_enum;
+
+//Kinki: MAUI_00632199
+typedef enum
+{
+   SMU_SIM_NOT_READY,    //default value
+   SMU_SIM_NO_IMSI,         //if no IMSI will be got in this power-on sesssion (etc.  no SIM, block SIM, IMSI can't be got.)
+   SMU_SIM_REPLACED,       //IMSI is read and doesn't match with the previous IMSI.
+   SMU_SIM_NOT_REPLACED //IMSI is read and the same as the previous one.
+}smu_sim_status_enum;
+
+typedef enum
+{
+   SMU_ADD_PLMNSEL,
+   SMU_REMOVE_PLMNSEL,
+   SMU_REPLACE_PLMNSEL,
+   SMU_INSERT_EMPTY   //Benson 20040407 add for AT+COPS
+}smu_plmnsel_op_enum;
+
+//Kinki add for MAUI_00632199
+#if defined(__GEMINI__)
+extern smu_sim_status_enum check_sim_status(kal_uint8 simInterface);
+#else
+extern smu_sim_status_enum check_sim_status(void);
+#endif
+
+/*--- SML related enum ---*/
+
+// TMO SML
+
+typedef enum {
+    SML_PROTECTION_SCHEME_NONE          = 0,
+    SML_PROTECTION_SCHEME_HMAC_SHA256   = 1,
+    SML_PROTECTION_SCHEME_RSA2048       = 2,
+} sml_protection_scheme_enum;
+
+typedef enum {
+    SML_TMO_STATE_PERMANENT_LOCK        = 0,
+    SML_TMO_STATE_TEMPORARY_UNLOCK      = 1,
+    SML_TMO_STATE_PERMANENT_UNLOCK      = 2,
+    SML_TMO_STATE_PARTIAL_UNLOCK        = 3,
+} sml_tmo_state_enum;
+
+typedef enum {
+    SML_ATT_STATE_PERMANENT_LOCK        = 0,
+    SML_ATT_STATE_TEMPORARY_UNLOCK      = 1,
+    SML_ATT_STATE_PERMANENT_UNLOCK      = 2,
+    SML_ATT_STATE_PARTIAL_UNLOCK        = 3,
+} sml_att_state_enum;
+
+typedef enum {
+    SML_EVENT_REBOOT_REQUIRED,
+    SML_EVENT_NO_REBOOT
+} sml_event_enum;
+
+
+typedef enum {
+    SML_TMO_MOVIAL_PROTECTION_SCHEME_NONE          = 0,
+    SML_TMO_MOVIAL_PROTECTION_SCHEME_RSA2048       = 1,
+
+    SML_TMO_MOVIAL_PROTECTION_SCHEME_SIZE
+} sml_tmo_movial_protection_scheme_enum;
+
+typedef enum {
+    SML_TMO_MOVIAL_STATE_PERMANENT_LOCK        = 0,
+    SML_TMO_MOVIAL_STATE_PERMANENT_UNLOCK      = 1,
+    SML_TMO_MOVIAL_STATE_TEMPORARY_UNLOCK      = 2
+} sml_tmo_movial_state_enum;
+
+
+typedef enum {
+    SML_STATE_NULL,
+    SML_STATE_LOCK,
+    SML_STATE_UNLOCK,
+    SML_STATE_AUTOLOCK,
+    SML_STATE_DISABLE
+} sml_state_enum;
+
+typedef enum {
+    SML_KEY_EMPTY,
+    SML_KEY_SET
+} sml_key_state_enum;
+
+#ifdef __SML_PUK__
+typedef enum {
+    SML_PUK_KEY_DISABLE = 0,
+    SML_PUK_KEY_ENABLE = 1
+} sml_puk_key_state_enum;
+
+typedef enum {
+    SML_PUK_OP_VERIFY = 0,
+    SML_PUK_OP_UPDATE = 1,
+
+    SML_PUK_OP_SIZE
+} sml_puk_key_op_enum;
+#endif
+
+typedef enum {
+    // For AT+ESMLCK
+    SML_OP_UNLOCK = 0,
+    SML_OP_LOCK = 1,
+    SML_OP_ADD = 2,
+    SML_OP_REMOVE = 3,
+    SML_OP_DISABLE = 4,
+    SML_OP_UPDATE_AUTOLOCK_COUNT = 5,
+#ifdef __SML_PUK__
+    SML_OP_VERIFY_PUK = 6,
+#endif
+
+    SML_OP_SIZE,
+
+    SML_OP_CHANGE_PWD = 0xFE,
+    SML_OP_VERIFY = 0xFF
+} sml_op_enum;
+
+typedef enum {
+    // For AT+ECSMLCK
+    SML_CUST_OP_UPDATE_MAX_RETRY_COUNT = 0,
+    SML_CUST_OP_UPDATE_CAT_ALGO_AND_SECURE_KEY_DATA = 1,
+    SML_CUST_OP_UPDATE_KEY_STATE = 2,
+#ifdef __SML_PUK__
+    SML_CUST_OP_UPDATE_PUK_MAX_RETRY_COUNT = 3,
+    SML_CUST_OP_UPDATE_PUK_KEY_DATA = 4,
+    SML_CUST_OP_UPDATE_PUK_KEY_STATE = 5,
+#endif
+    SML_CUST_OP_UPDATE_GENERATED_HCK = 10,
+    SML_CUST_OP_SIZE
+} sml_custom_op_enum;
+
+typedef enum {
+    SML_CAT_N,
+    SML_CAT_NS,
+    SML_CAT_SP,
+    SML_CAT_C,
+    SML_CAT_SIM,
+    SML_CAT_NS_SP,
+    SML_CAT_SIM_C,
+    SML_CAT_SIZE
+} sml_cat_enum;
+
+typedef enum {
+    SML_INPUT_WITH_PLAINKEY,
+    SML_INPUT_WITH_HCK
+} sml_key_input_type_enum;
+
+typedef enum {
+    SML_KEY_ALGO_BCD = 0,
+    SML_KEY_ALGO_PBKDF2_HMAC_SHA256_SALT128 = 1,
+} sml_key_algo_enum;
+
+#ifdef __CARRIER_RESTRICTION__
+typedef enum {
+    SMU_CRRST_STATE_NULL,
+    SMU_CRRST_STATE_LOCKED,
+    SMU_CRRST_STATE_UNLOCKED,
+    SMU_CRRST_STATE_DISABLED
+} smu_crrst_state_enum;
+
+typedef enum {
+    SMU_CRRST_KEY_STATE_NULL,
+    SMU_CRRST_KEY_STATE_LOCKED,
+    SMU_CRRST_KEY_STATE_UNLOCKED
+} smu_crrst_key_state_enum;
+
+typedef enum {
+    SMU_CRRST_CAT_N,
+    SMU_CRRST_CAT_SPN,
+    SMU_CRRST_CAT_IMSI_PREFIX,
+    SMU_CRRST_CAT_GID1,
+    SMU_CRRST_CAT_GID2,
+    SMU_CRRST_CAT_SIZE
+} smu_crrst_cat_enum;
+
+typedef enum {
+    SMU_OP_UNLOCK,
+    SMU_OP_LOCK,
+    SMU_OP_ADD,
+    SMU_OP_REMOVE,
+    SMU_OP_DISABLE,
+    SMU_OP_ENABLE,
+    SMU_OP_REMOVE_ALL,
+    SMU_OP_REMOVE_WHITE_LIST,
+    SMU_OP_REMOVE_BLACK_LIST,
+    SMU_OP_UPDATE_MSP_ACP,
+    SMU_OP_UPDATE_KEY_DATA
+} smu_crrst_op_enum;
+#endif /* __CARRIER_RESTRICTION__ */
+
+typedef enum {
+    SML_SL_CAT_N,
+    SML_SL_CAT_NS,
+    SML_SL_CAT_SP,
+    SML_SL_CAT_SIZE
+} sml_sl_cat_enum;
+
+typedef enum {
+    SML_DEVLK_STATE_LOCKED,
+    SML_DEVLK_STATE_UNLOCKED,
+} sml_device_lock_state_enum;
+
+typedef enum {
+    SML_MAGIC_HEAD,
+    SML_MAGIC_TAIL,
+    SML_CAT_META,
+    SML_CAT_KEY,
+#ifdef __SML_PUK__
+    SML_CAT_PUK_KEY,
+#endif
+    SML_CAT_CODE,
+    SML_CAT_RANGE,
+
+    // TMO Remote SIM lock
+    SML_TMO_CAT_VERSION,
+    SML_TMO_CAT_PERTECTION_SCHEME,
+    SML_TMO_CAT_STATE,
+    SML_TMO_CAT_LENGTH,
+    SML_TMO_CAT_NUM_PLMN,
+    SML_TMO_CAT_PLMN_LIST,
+    SML_TMO_CAT_NUM_GID,
+    SML_TMO_CAT_GID_LIST,
+    SML_TMO_CAT_START_TIME,
+    SML_TMO_CAT_END_TIME,
+    SML_TMO_CAT_IMEI,
+    SML_TMO_CAT_VERIFICATION_CODE,
+    SML_TMO_CAT_UNLOCK_TIME_COUNTER,
+
+    // ATT Remote SIM lock
+    SML_ATT_CAT_VERSION,
+    SML_ATT_CAT_PERTECTION_SCHEME,
+    SML_ATT_CAT_STATE,
+    SML_ATT_CAT_LENGTH,
+    SML_ATT_CAT_NUM_PLMN,
+    SML_ATT_CAT_PLMN_LIST,
+    SML_ATT_CAT_NUM_GID,
+    SML_ATT_CAT_GID_LIST,
+    SML_ATT_CAT_START_TIME,
+    SML_ATT_CAT_END_TIME,
+    SML_ATT_CAT_IMEI,
+    SML_ATT_CAT_VERIFICATION_CODE,
+    SML_ATT_CAT_UNLOCK_TIME_COUNTER,
+
+    // Subsidy lock
+    SML_SL_CAT_MAJOR_VERSION,
+    SML_SL_CAT_MINOR_VERSION,
+    SML_SL_CAT_PROTECTION_ALGORITHM,
+    SML_SL_CAT_LOCK_OPERATION,
+    SML_SL_CAT_IMEI,
+    SML_SL_CAT_TIME_STAMP,
+    SML_SL_CAT_LENGTH,
+    SML_SL_CAT_META,
+    SML_SL_CAT_KEY,
+    SML_SL_CAT_CODE,
+    SML_SL_CAT_SIGNATURE,
+
+    // VZW RSU
+    SML_VZW_RSU_MAJOR_VERSION,
+    SML_VZW_RSU_MINOR_VERSION,
+    SML_VZW_RSU_PROTECTION_ALGORITHM,
+    SML_VZW_RSU_NETWORK_LOCK_OPERATION,
+    SML_VZW_RSU_SESSION_ID,
+    SML_VZW_RSU_TIME_STAMP,
+    SML_VZW_RSU_CAT_CODE,
+    SML_VZW_RSU_CAT_NUM,
+
+    SML_CAT_MAX_RETRY_COUNT,
+
+    // Carrier Restriction
+    SMU_CRRST_KEY,
+    SMU_CRRST_BLACK_LIST_META,
+    SMU_CRRST_BLACK_LIST,
+    SMU_CRRST_WHITE_LIST_META,
+    SMU_CRRST_WHITE_LIST,
+    SMU_CRRST_ALLOW_ALL,
+    SMU_CRRST_STATE,
+    SMU_CRRST_MULTI_SIM_POLICY,
+    SMU_CRRST_ALLOWED_CARRIERS_PRIORITIZED,
+
+    SML_TMO_MOVIAL_CAT_MAJOR_VERSION,
+    SML_TMO_MOVIAL_CAT_MINOR_VERSION,
+    SML_TMO_MOVIAL_CAT_PROTECTION_ALGORITHM,
+    SML_TMO_MOVIAL_CAT_LOCK_OPERATION,
+    SML_TMO_MOVIAL_CAT_IMEI,
+    SML_TMO_MOVIAL_CAT_TIME_STAMP,
+    SML_TMO_MOVIAL_CAT_START_TIME,
+    SML_TMO_MOVIAL_CAT_UNLOCK_DURATION,
+    SML_TMO_MOVIAL_CAT_LENGTH,
+    SML_TMO_MOVIAL_CAT_META,
+    SML_TMO_MOVIAL_CAT_KEY,
+    SML_TMO_MOVIAL_CAT_CODE,
+    SML_TMO_MOVIAL_CAT_SIGNATURE,
+    SML_TMO_MOVIAL_CAT_UNLOCK_TIME_COUNTER,
+} sml_ctx_enum;
+
+typedef enum{
+    SML_OP129_CAT_N,
+    SML_OP129_CAT_START = SML_OP129_CAT_N,
+    SML_OP129_CAT_NS,
+    SML_OP129_CAT_SP,
+    SML_OP129_CAT_C,
+    SML_OP129_CAT_MAX,
+}smu_op129_cat_enum;
+
+typedef enum {
+    RAC_ATTACHING_OR_SEARCHING,
+    RAC_ATTACHED,
+    RAC_DETACHED,
+    RAC_DETACHED_NO_COVERAGE,
+} l4crac_reg_event_enum;
+
+typedef enum
+{
+    RAC_DETACH,
+    RAC_ATTACH
+} l4crac_ps_attach_enum;
+
+typedef enum
+{
+    RAC_CS = 1,
+    RAC_PS = 2,
+    RAC_CS_AND_PS = 3
+} l4crac_attach_type_enum;
+
+typedef enum
+{
+    DETACH_CAUSE_NONE = 0,
+    DETACH_CAUSE_DUPLEX_MODE_CHANGE,
+    DETACH_CAUSE_BLOCK_ILLEGAL_ME, /*the deatch is due to SIM got reject from NW and enter illegal state*/
+    DETACH_CAUSE_BLOCK_NORMAL_SERVICE,
+} l4c_rac_detach_cause_enum;
+
+typedef enum
+{
+   L4C_RAC_OK,
+   L4C_RAC_NO_CELL,
+   L4C_RAC_LIMITED_SERVICE,
+   L4C_RAC_ERROR,
+   L4C_RAC_INVALID_SIM,
+   L4C_RAC_ATTEMPT_TO_UPDATE,
+   L4C_RAC_SEARCHING, /* Johnny 2005/11/07: add new temp gsm_status for MMI: L4C_RAC_SEARCHING */
+   L4C_RAC_NULL
+} l4c_rac_response_enum;
+
+typedef enum
+{
+	L4C_APPLY_AT_RUNTIME = 0,
+    L4C_APPLY_AFTER_REBOOT,
+    L4C_APPLY_INVALID
+} l4c_hspa_mode_apply_enum;
+
+typedef enum
+{
+	L4C_HSPA_OFF = 0,
+	L4C_HSDPA_ON = 1,
+	L4C_HSDPA_HSUPA_ON = 2,
+	L4C_HSPAPLUS_ON = 3,
+	L4C_HSPA_INVLIAD
+} l4c_hspa_preference_enum; // it shall be sync to hspa_preference_enum
+// --- mtk02285, hspa_mmi
+
+typedef enum
+{
+    MANUAL_MODE    = 0,
+    AUTOMATIC_MODE = 1
+} plmn_selection_mode_enum;
+
+ typedef enum {
+   PHB_NORMAL_NUM = 129,
+   PHB_INTER_NUM = 145,
+   PHB_UNKNOW = 255
+} phb_ton_enum;
+
+/******************************
+*******RMMI related ENUM BEGIN*****
+*******************************/
+typedef enum
+{
+    RMMI_PLMN_LONG_ALPHA,
+    RMMI_PLMN_SHORT_ALPHA,
+    RMMI_PLMN_NUMERIC
+} rmmi_plmn_format_enum;
+
+typedef enum
+{
+    RMMI_DISABLE_REPORT = 0,
+    RMMI_ENABLE_REPORT,
+    RMMI_ENABLE_REPORT_FOR_STATE,
+    RMMI_REPORT_MAX_MODE
+} rmmi_report_mode_enum;
+
+typedef enum
+{
+    RMMI_TIME_ZONE_DISABLE_REPORT    = 0,
+    RMMI_TIME_ZONE_ONLY_REPORT       = 1,   // for URC +CTZV
+    RMMI_TIME_ZONE_DST_TIME_REPORT   = 2, 	// for URC +CTZE
+    RMMI_TIME_ZONE_DST_UTC_TIME_REPORT   = 3 	// for URC +CTZEU
+} rmmi_time_zone_report_mode_enum;
+
+typedef enum
+{
+    RMMI_DISABLE_NW_REG_REPORT        = 0,
+    RMMI_ENABLE_NW_REG_REPORT         = 1,
+    RMMI_ENABLE_LOC_REPORT            = 2,
+    RMMI_ENABLE_LOC_AND_CAUSE_REPORT  = 3,
+    RMMI_ENABLE_PSM_REPORT            = 4,
+    RMMI_ENABLE_PSM_AND_CAUSE_REPORT  = 5,
+    RMMI_NW_REG_REPORT_MODE_MAX,
+} rmmi_nw_reg_report_mode_enum;
+
+typedef enum
+{
+    RMMI_NUM_PARTIAL_HEAD_TAIL,
+    RMMI_VERBOSE_FULL_HEAD_TAIL
+} rmmi_result_code_format;
+
+typedef enum
+{
+    RMMI_SUPPRESS_OFF,
+    RMMI_SUPRESS_ON
+} rmmi_result_code_suppress_enum;
+
+typedef enum
+{
+    RMMI_SIMPLE_ERROR,
+    RMMI_NUMERIC_ERROR,
+    RMMI_TEXT_ERROR
+} rmmi_error_report_mode_enum;
+
+typedef enum
+{
+    RMMI_UART_TO_SIM1,
+    RMMI_UART_TO_SIM2,
+    RMMI_UART_TO_SIM3,
+    RMMI_UART_TO_SIM4,
+    RMMI_SIM_UART_SETTING_NONE = 0xFF
+}rmmi_sim_uart_setting_enum;
+
+
+typedef enum
+{
+    RMMI_CHSET_IRA,
+    RMMI_CHSET_HEX,
+    RMMI_CHSET_GSM,
+    RMMI_CHSET_PCCP437,
+    RMMI_CHSET_PCDN,
+    RMMI_CHSET_88591,
+    RMMI_CHSET_UCS2,
+    RMMI_CHSET_UCS2_0X81,
+    RMMI_CHSET_TOTAL_NUM
+} rmmi_chset_enum;
+
+#ifdef 	__EPSFB_SUPPORT__
+
+typedef enum
+{
+    RMMI_EPSFB_STATE_START,
+    RMMI_EPSFB_STATE_SUCCESS,
+    RMMI_EPSFB_STATE_FAIL,
+    RMMI_EPSFB_STATE_MAX
+} rmmi_epsfb_state_enum;
+
+
+typedef enum
+{
+    RMMI_EPSFB_TYPE_HANDOVER,
+    RMMI_EPSFB_TYPE_REDIRECTION,
+    RMMI_EPSFB_TYPE_MAX
+} rmmi_epsfb_type_enum;
+
+#endif
+
+/******************************
+*******RMMI related ENUM END*******
+*******************************/
+
+
+typedef enum
+{
+    L4C_SETTING_FLIGHT_MODE,
+    L4C_SETTING_WLAN_FLIGHT_MODE,
+    L4C_SETTING_DUAL_SIM_MODE,
+    L4C_SETTING_DUAL_SIM_UART,
+    L4C_SETTING_3G_SERVICE_BITMAP, //Phased out. SIM switch does not use this NVRAM anymore.
+    L4C_SETTING_MMDC_MODE,
+    L4C_SETTING_MAX
+}l4c_nvram_setting_enum;
+
+typedef enum
+{
+   MT_CALL_ALLOW,
+   MT_CALL_REJECT,
+   MT_CALL_APPROVAL_ENABLE,
+   MT_CALL_APPROVAL_DISABLE
+}l4c_mt_call_approval_enum;
+
+typedef enum
+{
+   ALS_DIAL_BY_SETTING, //dial call according to the ALS setting in NVRAM
+   ALS_DIAL_LINE1,
+   ALS_DIAL_LINE2
+}l4c_als_dial_type_enum;
+
+typedef enum
+{
+   INFO_ECC_CHECK_BY_MODEM, //let modem check if dialed number is ECC (it's current MAUI solution default value)
+   INFO_ECC_CALL,  //inform the dialed number is a ECC call
+   INFO_NORMAL_CALL,  //inform the dialed number is a normal call
+   INFO_ECALL_START,
+   INFO_ECALL_TEST = 0x00 + INFO_ECALL_START, //inform the dialed number is a test Ecall
+   INFO_ECALL_RECONFIGURATION = 0x01 + INFO_ECALL_START, //inform the dialed number is a reconfiguration Ecall
+   INFO_ECALL_MANUALLY_INITIATED = 0x02 + INFO_ECALL_START,  //inform the dialed number is a manually Ecall
+   INFO_ECALL_AUTOMATICALLY_INITIATED = 0x03 + INFO_ECALL_START  //inform the dialed number is a automatically Ecall
+}l4c_mmi_ecc_info_enum;
+
+typedef enum
+{
+   SINGLE_VOICE_CALL,
+   SINGLE_DATA_CALL,
+   SINGLE_FAX_CALL,
+   FOLLOW_VOICE_CALL,
+   ALT_DATA_VOICE_CALL,
+   ALT_FAX_VOICE_CALL,
+   FOLLOW_DATA_CALL,
+   ALT_DATA_DATA_CALL,
+   ALT_FAX_FAX_CALL,
+   UNKNOWN_CALL
+} l4ccsm_cc_call_mode_enum;
+
+
+typedef enum
+{
+    L4C_NONE_SPECIFIED = 0x0000,
+    L4C_GPRS_SUPPORT = 0x0001,
+    L4C_EDGE_SUPPORT = 0x0002,
+    L4C_UMTS_SUPPORT = 0x0004,
+    L4C_HSDPA_SUPPORT = 0x0008,
+    L4C_HSUPA_SUPPORT = 0x0010,
+    L4C_HSDPA_UPA_SUPPORT = 0x0018,
+
+    L4C_HSDPAP_SUPPORT = 0x0020,
+    L4C_HSDPAP_UPA_SUPPORT = 0x0030,
+    L4C_HSUPAP_SUPPORT = 0x0040,
+    L4C_HSUPAP_DPA_SUPPORT = 0x0048,
+    L4C_HSPAP_SUPPORT = 0x0060,
+    L4C_DC_DPA_SUPPORT = 0x0088,
+    L4C_DC_DPA_UPA_SUPPORT = 0x0098,
+    L4C_DC_HSDPAP_SUPPORT = 0x00a0,
+    L4C_DC_HSDPAP_UPA_SUPPORT = 0x00b0,
+    L4C_DC_HSUPAP_DPA_SUPPORT = 0x00c8,
+    L4C_DC_HSPAP_SUPPORT = 0x00e0,
+
+    /* C2K specific*/
+    L4C_1XRTT_SUPPORT = 0x0100,
+    L4C_HRPD_SUPPORT  = 0x0200,
+    L4C_EHRPD_SUPPORT = 0x0400,
+
+    L4C_LTE_SUPPORT = 0x1000,
+    L4C_LTE_CA_SUPPORT = 0x2000,
+
+    L4C_ENDC_SUPPORT = 0x4000,
+    L4C_NR_SUPPORT = 0x8000,
+
+    L4C_NOT_CHANGE = 0xffff
+} l4c_data_speed_support_enum; // it shall be sync to data_speed_support_enum
+//bit7          6       5       4       3       2       1       0
+//DUAL CARRIER  HSUPA+  HSDPA+  HSUPA   HSDPA   UMTS    EDGE    GPRS
+
+
+typedef enum
+{
+    L4C_NONE_ACTIVATE = 0,
+    L4C_GPRS_CAPABILITY,
+    L4C_EDGE_CAPABILITY,
+    L4C_UMTS_CAPABILITY,
+    L4C_HSDPA_CAPABILITY,           //mac-hs
+    L4C_HSUPA_CAPABILITY,           //mac-e/es
+    L4C_HSDPA_HSUPA_CAPABILITY,     //mac-hs + mac-e/es
+
+    L4C_HSDPAP_CAPABILITY,          //mac-ehs
+    L4C_HSDPAP_UPA_CAPABILITY,      //mac-ehs + mac-e/es
+    L4C_HSUPAP_CAPABILITY,          //mac-i/is
+    L4C_HSUPAP_DPA_CAPABILITY,      //mac-hs + mac-i/is
+    L4C_HSPAP_CAPABILITY,           //mac-ehs + mac-i/is
+    L4C_DC_DPA_CAPABILITY,          //(DC) mac-hs
+    L4C_DC_DPA_UPA_CAPABILITY,      //(DC) mac-hs + mac-e/es
+    L4C_DC_HSDPAP_CAPABILITY,       //(DC) mac-ehs
+    L4C_DC_HSDPAP_UPA_CAPABILITY,   //(DC) mac-ehs + mac-e/es
+    L4C_DC_HSUPAP_DPA_CAPABILITY,   //(DC) mac-hs + mac-i/is
+    L4C_DC_HSPAP_CAPABILITY,        //(DC) mac-ehs + mac-i/is
+    L4C_LTE_CAPABILITY,
+    L4C_LTE_CA_CAPABILITY,
+} l4c_data_bearer_capablility_enum;
+// l4c_data_bearer_capablility_enum !!! no sync since R7R8 !!! with data_speed_activate_enum
+// should be converted from data_speed_activate_enum to l4c_data_bearer_capablility_enum
+// l4c_convert_data_speed_support_enum ....
+
+
+#if defined(__BT_SUPPORT__)
+//defined later
+typedef enum
+{
+    RMMI_CIND_BEGIN = 0,
+    RMMI_CIND_SERVICE,
+    RMMI_CIND_CALL,
+    RMMI_CIND_CALLSETUP,
+    RMMI_CIND_CALLHELD,
+    RMMI_CIND_BATTCHG,
+    RMMI_CIND_SIGNAL,
+    RMMI_CIND_ROAM,
+    RMMI_CIND_END
+} rmmi_cind_enum;
+#else /* defined(__BT_SUPPORT__) */
+typedef enum
+{
+    RMMI_CIND_BEGIN = 0,
+    RMMI_CIND_BATTCHG,
+    RMMI_CIND_SIGNAL,
+    RMMI_CIND_SERVICE,
+    RMMI_CIND_MESSAGE,
+    RMMI_CIND_CALL,
+    RMMI_CIND_ROAM,
+    RMMI_CIND_SMSMEMSTATUS,
+    RMMI_CIND_CALLSETUP,
+    RMMI_CIND_END
+} rmmi_cind_enum;
+#endif /* defined(__BT_SUPPORT__) */
+
+typedef enum
+{
+    RMMI_CIND_CC_NONE = 0,
+    RMMI_CIND_CC_ACTIVE = 1
+} rmmi_cind_call;
+
+typedef enum
+{
+    RMMI_CIND_CSUP_NONE = 0,
+    RMMI_CIND_CSUP_INCOMING,
+    RMMI_CIND_CSUP_OUTGOING,
+    RMMI_CIND_CSUP_ALERT,
+    RMMI_CIND_CSU_PEND
+} rmmi_cind_callsetup;
+
+typedef enum
+{
+    RMMI_CIND_HELD_NONE = 0,
+    RMMI_CIND_HELD_ACTIVE_HOLD = 1,
+    RMMI_CIND_HELD_HOLD = 2
+} rmmi_cind_callheld;
+
+typedef enum
+{
+    NW_BAND_PGSM900 = 0x01,
+    NW_BAND_EGSM900 = 0x02,
+    NW_BAND_RGSM900 = 0x04,
+    NW_BAND_DCS1800 = 0x08,
+    NW_BAND_PCS1900 = 0x10,
+    NW_BAND_GSM450 = 0x20,
+    NW_BAND_GSM480 = 0x40,
+    NW_BAND_GSM850 = 0x80
+} l4c_nw_band_enum;
+
+#define VGSM_SPEC_CAUSE_ENUM(cause, value)  \
+    VGSM_##cause = value + VGSM_CAUSE_START,
+#define VGSM_PROPRIETARY_CAUSE_ENUM(cause, value)  \
+    VGSM_##cause = value + VGSM_CAUSE_START,
+
+typedef enum {
+/* ============================== CM cause ============================== */
+   CM_RADIO_LINK_FAIL = 0, /* Ripple: add for SAT3 use. sec 11.3.2, spec.. 11.14 */
+// 3GPP 24.008 clause 10.5.4.11(Annex H) CC+SS cause value
+// 3GPP 24.011 clause 8.2.5.4 SMS RP cause value
+// 3GPP 24.011 clause 8.1.4.2 SMS CP cause value
+// Class(000): 0-15 -> normal event             CC+SS    SMS
+   CM_UNASSIGNED_NUM                     = 1,  // X       X
+   CM_NO_ROUTE_TO_DESTINATION            = 3,  // X
+   CM_CHANNEL_UN_ACCP                    = 6,  // X
+   CM_OPR_DTR_BARRING                    = 8,  // X       X
+   CM_CALL_BARRED                        = 10, //         X
+   CM_RESERVED                           = 11, //         X
+// Class(001): 16-31 -> normal event
+   CM_NORMAL_CALL_CLR                    = 16, // X
+   CM_USER_BUSY                          = 17, // X       X! (SMS: nwk failure)
+   CM_NO_USER_RESPONDING                 = 18, // X
+   CM_NO_ANSWER_ON_ALERT                 = 19, // X
+   CM_CALL_REJECTED                      = 21, // X       X
+   CM_NUMBER_CHANGED                     = 22, // X       X! (SMS: congestion)
+   CM_CALL_REJECT_DUO_TO_FEATURE         = 24, // X
+   CM_PRE_EMPTION                        = 25, // X
+   CM_NON_SEL_USER_CLEAR                 = 26, // X
+   CM_DEST_OUT_OF_ORDER                  = 27, // X       X
+   CM_INVALID_NUMBER_FORMAT              = 28, // X       X
+   CM_FACILITY_REJECT                    = 29, // X       X
+   CM_RES_STATUS_ENQ                     = 30, // X       X! (SMS:Unknown_Sub)
+   CM_NORMAL_UNSPECIFIED                 = 31, // X
+// Class(010): 32-48 -> resource unavailable
+   CM_NO_CIRCUIT_CHANNEL_AVAIL           = 34, // X
+   CM_NETWORK_OUT_OF_ORDER               = 38, // X       X
+   CM_TEMPORARY_FAILURE                  = 41, // X       X
+   CM_SWITCH_EQUIPMENT_CONGESTION        = 42, // X       X
+   CM_ACCESS_INFO_DISCARDED              = 43, // X
+   CM_REQUESTED_CKT_CHANEL_NOT_AVIL      = 44, // X
+   CM_RESOURCE_UNAVAIL_UNSPECIFIED       = 47, // X       X
+// Class(011): 49-64 -> service or option not available
+   CM_QOS_UNAVAIL                        = 49, // X
+   CM_REQ_FAC_NOT_SUBS                   = 50, // X       X
+   CM_IC_BAR_CUG                         = 55, // X
+   CM_BEARER_CAP_NOT_AUTHORISED          = 57, // X
+   CM_BEARER_CAP_NOT_AVAIL               = 58, // X
+   CM_SER_UNAVAILABLE                    = 63, // X
+// Class(100): 65-80 -> service or option not implementated
+   CM_BEARER_SER_UNIMPL                  = 65, // X
+   CM_ACM_EXCEEDED                       = 68, // X
+   CM_REQ_FACILITY_UNAVAIL               = 69, // X       X
+   CM_RESTR_DIGITAL_INFO                 = 70, // X
+   CM_SER_OPT_UNIMPL                     = 79, // X
+// Class(101): 81-95 -> invalid message
+   CM_INVALID_TI_VALUE                   = 81, // X       X
+   CM_USER_NOT_IN_CUG                    = 87, // X
+   CM_INCOMPATIBLE_DEST                  = 88, // X
+   CM_INVALID_TRANSIT_NW_SEL             = 91, // X
+   CM_SEMANTIC_ERR                       = 95, // X       X
+// Class(110): 96-112 -> protocol error
+   CM_INVALID_MANDATORY_INF              = 96, // X       X
+   CM_MSG_TYPE_UNIMPL                    = 97, // X       X
+   CM_MSG_TYPE_NOT_COMPATIBLE            = 98, // X       X
+   CM_IE_NON_EX                          = 99, // X       X
+   CM_COND_IE_ERR                       = 100, // X
+   CM_INCOMP_MESG_WITH_STATE            = 101, // X
+   CM_RECOVERY_ON_TIMER_EXPIRY          = 102, // X
+   CM_PROTOCOL_ERR_UNSPECIFIED          = 111, // X       X
+// Class(111): 113-127 -> interworking
+   CM_INTER_WRK_UNSPECIFIED             = 127, // X       X
+/* ============================== ~CM cause ============================== */
+
+/* ============================== SMS cause ============================== */
+// 3GPP 23.040 clause 9.2.3.22 SMS TP cause values
+// 128-255 -> SMS cause value
+
+   /* PID error */
+   TELEMATIC_INT_WRK_NOT_SUPPORT = 0x80, /* telematic interworking not support */
+   SMS_TYPE0_NOT_SUPPORT         = 0x81, /* short message type 0 not support */
+   CANNOT_REPLACE_MSG            = 0x82,
+   UNSPECIFIED_PID_ERROR         = 0x8F,
+
+   /* DCS error */
+   ALPHABET_NOT_SUPPORT          = 0x90, /* data coding scheme (alphabet) not support */
+   MSG_CLASS_NOT_SUPPORT         = 0x91, /* message class not support */
+   UNSPECIFIED_TP_DCS            = 0x9f,
+
+   /* Command error */
+   CMD_CANNOT_ACTION             = 0xa0, /* command cannot be actioned */
+   CMD_NOT_SUPPORT               = 0xa1, /* command unsupported */
+   UNSPECIFIED_CMD_ERROR         = 0xaf,
+
+   TPDU_NOT_SUPPORT              = 0xb0,
+   SC_BUSY                       = 0xc0,
+   NO_SC_SUBSCRIPTION            = 0xc1,
+   SC_SYS_FAILURE                = 0xc2,  /* SC system failure */
+   INVALID_SME_ADDR              = 0xc3,
+   DEST_SME_BARRED               = 0xc4,  /* destination SME barred */
+   SM_REJ_DUP_SM                 = 0xc5,  /* SM rejected-duplicate SM */
+   TP_VPF_NOT_SUPPORT            = 0xc6,
+   TP_VP_NOT_SUPPORT             = 0xc7,
+
+   SIM_STORAGE_FULL              = 0xd0,
+   NO_SMS_STO_IN_SIM             = 0xd1,  /* No SMS storage capability in SIM */
+   ERROR_IN_MS                   = 0xd2,
+   MEM_CAP_EXCEEDED              = 0xd3,  /* Memory Capacity Exceeded */
+
+   /* SIM Application Toolkit */
+   SMS_SAT_BUSY                  = 0xd4,  /* SIM Application Toolkit Busy */
+   SMS_SAT_DL_ERROR              = 0xd5,  /* SIM data download error */
+
+   /* 0XE0 to 0xFE are specific to application */
+   SMS_CP_RETRY_EXCEED           = 0xe0,
+   SMS_RP_TR1M_TIMEOUT           = 0xe1,
+   SMS_CONNECTION_BROKEN         = 0xe2,
+
+   UNSPECIFIED_TP_FCS            = 0xff,
+
+// 3GPP 27.005 clause 3.2.5 SMS ATcmd cause values
+// 256-511 -> SMS AT command cause value
+   INVALID_PDU_MODE_PARA  = 304,   /* invalid pdu mode parameter */
+   INVALID_TEXT_MODE_PARA = 305,   /* invalid text mode parameter */
+   SMS_SIM_FAILURE        = 313,   /* sim failure */
+   MEM_FAILURE	          = 320,   /* memory failure */
+   INVALID_MEM_INDEX	  = 321,   /* invalid memory index */
+   MEM_FULL	          = 322,   /* memory full */
+   SCA_UNKNOWN	          = 330,   /* SMSC address unknown */
+   SMS_NO_NW_SERVICE      = 331,   /* no network service */
+   NO_CNMA_EXPECTED       = 340,   /* no +CNMA acknowledgement expected */
+   SMSAL_UNSPECIFIED_ERROR_CAUSE = 500,
+
+// 512-767 -> SMS proprietary cause values
+   SMSAL_NO_ERROR             = 512,
+   MSG_LEN_EXCEEDED           = 513,   /* message length exceeds
+                                          maximum length */
+   INVALID_REQ_PARAMETER      = 514,   /* invalid request parameters */
+   SMS_ME_STORAGE_FAILURE     = 515,   /* ME storage failure */
+   SMSAL_INVALID_BEARER       = 516,   /* Invalid bearer service */
+   SMSAL_INVALID_SERVICE_MODE = 517,   /* Invalid service mode */
+   SMSAL_INVALID_STORAGE_TYPE = 518,   /* Invalid storage type */
+   SMSAL_INVALID_MSG_FORMAT   = 519,   /* Invalid message format */
+   TOO_MANY_MO_CONCAT_MSG     = 520,   /* Too many MO concatenated messages */
+   SMSAL_NOT_READY            = 521,
+   SMSAL_NO_MO_SERVICE        = 522,
+   NOT_SUPP_SR_CMD_IN_STORAGE = 523,   /* not support TP-Status-Report & TP-Command in storage */
+   SMSAL_NOT_SUPPORT_MSG_TYPE = 524,   /* Reserved MTI */
+   SMS_RL_NO_FREE_ENTITY      = 525,   /* no free entity in RL layer */
+   SMS_PORT_NUM_ALREADY_REG   = 526,   /* The port number is already registerred */
+   SMS_PORT_NUM_NO_FREE_ENTITY= 527,   /* There is no free entity for port number */
+   SMS_RL_MMS_STATE_ERR       = 528,   /* More Message to Send state error */
+   SMS_MO_SMS_NOT_ALLOW       = 529,   /* MO SMS is not allow */
+   SMS_PS_SUSPENDED           = 530,   /* GPRS is suspended */
+   SMS_ME_STORAGE_FULL        = 531,   /* ME storage full */
+   SMS_SIM_REFRESHING         = 532,   /* doing SIM refresh */
+   SMS_MSPM_CNF_FAIL          = 533,   /* MSPM CNF returns with fail */
+   SMS_RL_ENTITY_NOT_FOUND	  = 534,	/* More Message to Send state error */
+   SMS_RP_TR2M_TIMEOUT 		  = 535,
+   SMS_ABORT_BY_USER		  = 536,
+/* ============================== ~SMS cause ============================== */
+
+/* ============================== CC cause ============================== */
+// 768-1023 -> CC proprietary cause values
+	CSMCC_CMD_NOT_ALLOW = 768,
+	CSMCC_ILLEGAL_CALL_ID,
+	CSMCC_CALL_ALLOC_FAIL,
+	CSMCC_BC_FILL_FAIL,
+	CSMCC_CALL_RE_EST,
+	CSMCC_ILLEGAL_DTMF_TONE,
+	CSMCC_ILLEGAL_BC,
+	CSMCC_MODIFY_ACTUAL_MODE,
+	CSMCC_DATA_ACT_FAIL,
+	CSMCC_NO_RESPONSE_FROM_NW,
+	CSMCC_CALL_ACCEPT_NOT_ALLOW,
+        CSMCC_SAT_CALL_CTRL_REJECTED, /* call rejected by SAT call control: added for MAUI_01300426 */
+        CSMCC_VT_NO_UMTS_CAPABILITY,  /*[MAUI_01712442]*/
+
+   CM_L4C_GEN_CAUSE = 896,
+   CM_L4C_CC_CALL_ABORT = 897,  /*CSD call is aborted by user during call establishment
+   				or MT call abort MO call/USSD*/
+   CM_L4C_CC_CALL_DISC_IND = 898,  /*CSD call is disconnected due to lower layer failure*/
+/* ============================== ~CC cause ============================== */
+
+/* ============================== SS cause ============================== */
+// 1024-1279 -> SS proprietary cause values
+// 3GPP 23.080 clause 4.3 SS Error Types
+   CM_SS_ERR_START                                = 1024,
+   CM_SS_ERR_UNKNOWNSUBSCRIBER                    =   1 + CM_SS_ERR_START,
+   CM_SS_ERR_ILLEGALSUBSCRIBER                    =   9 + CM_SS_ERR_START,
+   CM_SS_ERR_BEARERSERVICENOTPROVISIONED          =  10 + CM_SS_ERR_START,
+   CM_SS_ERR_TELESERVICENOTPROVISIONED            =  11 + CM_SS_ERR_START,
+   CM_SS_ERR_ILLEGALEQUIPMENT                     =  12 + CM_SS_ERR_START,
+   CM_SS_ERR_CALLBARRED                           =  13 + CM_SS_ERR_START,
+   CM_SS_ERR_ILLEGALSS_OPERATION                  =  16 + CM_SS_ERR_START,
+   CM_SS_ERR_SS_ERRORSTATUS                       =  17 + CM_SS_ERR_START,
+   CM_SS_ERR_SS_NOTAVAILABLE                      =  18 + CM_SS_ERR_START,
+   CM_SS_ERR_SS_SUBSCRIPTIONVIOLATION             =  19 + CM_SS_ERR_START,
+   CM_SS_ERR_SS_INCOMPABILITY                     =  20 + CM_SS_ERR_START,
+   CM_SS_ERR_FACILITYNOTSUPPORTED                 =  21 + CM_SS_ERR_START,
+   CM_SS_ERR_ABSENTSUBSCRIBER                     =  27 + CM_SS_ERR_START,
+   CM_SS_ERR_SHORTTERMDENIAL                      =  29 + CM_SS_ERR_START,
+   CM_SS_ERR_LONGTERMDENIAL                       =  30 + CM_SS_ERR_START,
+   CM_SS_ERR_SYSTEMFAILURE                        =  34 + CM_SS_ERR_START,
+   CM_SS_ERR_DATAMISSING                          =  35 + CM_SS_ERR_START,
+   CM_SS_ERR_UNEXPECTEDDATAVALUE                  =  36 + CM_SS_ERR_START,
+   CM_SS_ERR_PW_REGISTRATIONFAILURE               =  37 + CM_SS_ERR_START,
+   CM_SS_ERR_NEGATIVEPW_CHECK                     =  38 + CM_SS_ERR_START,
+   CM_SS_ERR_NUMBEROFPW_ATTEMPTSVIOLATION         =  43 + CM_SS_ERR_START,
+   CM_SS_ERR_POSITIONMETHODFAILURE                =  54 + CM_SS_ERR_START,
+   CM_SS_ERR_UNKNOWNALPHABET                      =  71 + CM_SS_ERR_START,
+   CM_SS_ERR_USSD_BUSY                            =  72 + CM_SS_ERR_START,
+   CM_SS_ERR_REJECTEDBYUSER                       = 121 + CM_SS_ERR_START,
+   CM_SS_ERR_REJECTEDBYNETWORK                    = 122 + CM_SS_ERR_START,
+   CM_SS_ERR_DEFLECTIONTOSERVEDSUBSCRIBER         = 123 + CM_SS_ERR_START,
+   CM_SS_ERR_SPECIALSERVICECODE                   = 124 + CM_SS_ERR_START,
+   CM_SS_ERR_INVALIDDEFLECTIONTONUMBER            = 125 + CM_SS_ERR_START,
+   CM_SS_ERR_MAXNUMBEROFMPTY_PARTICIPANTSEXCEEDED = 126 + CM_SS_ERR_START,
+   CM_SS_ERR_RESOURCESNOTAVAILABLE                = 127 + CM_SS_ERR_START,
+
+   CM_SS_GENERALPROBLEM_START                     = 1152,
+   CM_SS_GENERALPROBLEM_UNRECOGNIZEDCOMPONENT     =       CM_SS_GENERALPROBLEM_START,
+   CM_SS_GENERALPROBLEM_MISTYPEDCOMPONENT         = 1   + CM_SS_GENERALPROBLEM_START,
+   CM_SS_GENERALPROBLEM_BADLYSTRUCTUREDCOMPONENT  = 2   + CM_SS_GENERALPROBLEM_START,
+
+   CM_SS_INVOKEPROBLEM_START                      = 1155,
+   CM_SS_INVOKEPROBLEM_DUPLICATEINVOKEID          =       CM_SS_INVOKEPROBLEM_START,
+   CM_SS_INVOKEPROBLEM_UNRECOGNIZEDOPERATION      = 1  +  CM_SS_INVOKEPROBLEM_START,
+   CM_SS_INVOKEPROBLEM_MISTYPEDPARAMETER          = 2  +  CM_SS_INVOKEPROBLEM_START,
+   CM_SS_INVOKEPROBLEM_RESOURCELIMITATION         = 3  +  CM_SS_INVOKEPROBLEM_START,
+   CM_SS_INVOKEPROBLEM_INITIATINGRELEASE          = 4  +  CM_SS_INVOKEPROBLEM_START,
+   CM_SS_INVOKEPROBLEM_UNRECOGNIZEDLINKDID        = 5  +  CM_SS_INVOKEPROBLEM_START,
+   CM_SS_INVOKEPROBLEM_LINKEDRESONSEUNEXPECTED    = 6  +  CM_SS_INVOKEPROBLEM_START,
+   CM_SS_INVOKEPROBLEM_UNEXPECTEDLINKEDOPERATION  = 7  +  CM_SS_INVOKEPROBLEM_START,
+
+   CM_SS_RETURNRESULTPROBLEM_START                     = 1163,
+   CM_SS_RETURNRESULTPROBLEM_RR_UNRECOGNIZEDINVOKEID   =      CM_SS_RETURNRESULTPROBLEM_START,
+   CM_SS_RETURNRESULTPROBLEM_RR_RETURNRESULTUNEXPECTED = 1 +  CM_SS_RETURNRESULTPROBLEM_START,
+   CM_SS_RETURNRESULTPROBLEM_RR_MISTYPEDPARAMETER      = 2 +  CM_SS_RETURNRESULTPROBLEM_START,
+
+   CM_SS_RETURNERRORPROBLEM_START                      = 1166,
+   CM_SS_RETURNERRORPROBLEM_RE_UNRECOGNIZEDINVOKEID    =      CM_SS_RETURNERRORPROBLEM_START,
+   CM_SS_RETURNERRORPROBLEM_RE_RETURNERRORUNEXPECTED   = 1 +  CM_SS_RETURNERRORPROBLEM_START,
+   CM_SS_RETURNERRORPROBLEM_RE_UNRECOGNIZEDERROR       = 2 +  CM_SS_RETURNERRORPROBLEM_START,
+   CM_SS_RETURNERRORPROBLEM_RE_UNEXPECTEDERROR         = 3 +  CM_SS_RETURNERRORPROBLEM_START,
+   CM_SS_RETURNERRORPROBLEM_RE_MISTYPEDPARAMETER       = 4 +  CM_SS_RETURNERRORPROBLEM_START,
+
+// LPP proprietary cause, refer to lcs_emm_status_enum
+   CM_SS_LCS_EMM_STATUS_START           = 1171,
+   CM_SS_LCS_EMM_STATUS_SUCCESS         =       CM_SS_LCS_EMM_STATUS_START,
+   CM_SS_LCS_EMM_STATUS_ERR_CONN_FAIL   = 1 +   CM_SS_LCS_EMM_STATUS_START,
+   CM_SS_LCS_EMM_STATUS_ERR_NW_NO_LCS   = 2 +   CM_SS_LCS_EMM_STATUS_START,
+   CM_SS_LCS_EMM_STATUS_ERR_CS_LCS_ONLY = 3 +   CM_SS_LCS_EMM_STATUS_START,
+
+//other SS proprietary cause
+   CM_SS_OTHER_CAUSE_START                  =   1181,
+   CM_SS_CTRL_BY_SIM_FAIL_NOT_INFORM_USER   =       CM_SS_OTHER_CAUSE_START,
+   CM_SS_SAT_USSD_END_NOT_INFORM_USER       = 1 +   CM_SS_OTHER_CAUSE_START,
+
+
+/* ============================== ~SS cause ============================== */
+
+/* ============================== MM cause ============================== */
+// 3GPP 24.008 clause 10.5.3.6(Annex G) MM reject cause values
+// 3GPP 24.008 clause 10.5.5.14(Annex G) GMM cause values
+// 2048 -> MM cause values
+   CM_MM_CAUSE_START                     = 2048,
+   CM_MM_CAUSE_NONE                     =     0x00 + CM_MM_CAUSE_START,
+   CM_MM_IMSI_UNKNOWN_IN_HLR            =     0x02 + CM_MM_CAUSE_START,
+   CM_MM_ILLEGAL_MS                     =     0x03 + CM_MM_CAUSE_START,
+   CM_MM_IMSI_UNKNOWN_IN_VLR            =     0x04 + CM_MM_CAUSE_START,
+   CM_MM_IMEI_NOT_ACCEPTED              =     0x05 + CM_MM_CAUSE_START,
+   CM_MM_ILLEGAL_ME                     =     0x06 + CM_MM_CAUSE_START,
+   CM_MM_GPRS_NOT_ALLOWED               =     0x07 + CM_MM_CAUSE_START,
+   CM_MM_GPRS_NON_GPRS_NOT_ALLOWED      =     0x08 + CM_MM_CAUSE_START,
+   CM_MM_MS_ID_NOT_DERIVED_BY_NW        =     0x09 + CM_MM_CAUSE_START,
+   CM_MM_IMPLICIT_DETACH                =     0x0a + CM_MM_CAUSE_START,
+   CM_MM_PLMN_NOT_ALLOWED               =     0x0b + CM_MM_CAUSE_START,
+   CM_MM_LOCATION_AREA_NOT_ALLOWED      =     0x0c + CM_MM_CAUSE_START,
+   CM_MM_ROAMING_AREA_NOT_ALLOWED       =     0x0d + CM_MM_CAUSE_START,
+   CM_MM_GPRS_NOT_ALLOWED_IN_PLMN       =     0x0e + CM_MM_CAUSE_START,
+   CM_MM_NO_SUITABLE_CELLS_IN_LA        =     0x0f + CM_MM_CAUSE_START,
+   CM_MM_MSC_TEMP_NOT_REACHABLE         =     0x10 + CM_MM_CAUSE_START,
+   CM_MM_NETWORK_FAILURE                =     0x11 + CM_MM_CAUSE_START,
+   CM_MM_MAC_FAILURE                    =     0x14 + CM_MM_CAUSE_START,
+   CM_MM_SYNC_FAILURE                   =     0x15 + CM_MM_CAUSE_START,
+   CM_MM_CONGESTION                     =     0x16 + CM_MM_CAUSE_START,
+   CM_MM_NOT_AUTHORIZED_FOR_THIS_CSG    =     0x19 + CM_MM_CAUSE_START,
+   CM_MM_SERV_OPTION_NOT_SUPPORTED      =     0x20 + CM_MM_CAUSE_START,
+   CM_MM_REQ_SERV_OPTION_NOT_SUBSCRIBED =     0x21 + CM_MM_CAUSE_START,
+   CM_MM_SERV_OPTION_TEMP_OUT_OF_ORDER  =     0x22 + CM_MM_CAUSE_START,
+   CM_MM_CALL_CANNOT_BE_IDENTIFIED      =     0x26 + CM_MM_CAUSE_START,
+   CM_MM_NO_PDP_CONTEXT_ACTIVATED       =     0x28 + CM_MM_CAUSE_START,
+   CM_MM_RETRY_UPON_ENTRY_INTO_NEWCELL_MIN =  0x30 + CM_MM_CAUSE_START,  /* 30..3f */
+   CM_MM_RETRY_UPON_ENTRY_INTO_NEWCELL_MAX =  0x3f + CM_MM_CAUSE_START,
+   CM_MM_SEMANTICALLY_INCORRECT_MSG        =  0x5f + CM_MM_CAUSE_START,
+   CM_MM_INVALID_MM_MAND_INFO              =  0x60 + CM_MM_CAUSE_START,
+   CM_MM_MSG_TYPE_NON_EXISTENT             =  0x61 + CM_MM_CAUSE_START,
+   CM_MM_MSG_TYPE_NOT_IMPLEMENTED          =  0x61 + CM_MM_CAUSE_START,
+   CM_MM_MSG_TYPE_INCOMPAT_WITH_PROTO_STATE = 0x62 + CM_MM_CAUSE_START,
+   CM_MM_IE_NOT_IMPLEMENTED                 = 0x63 + CM_MM_CAUSE_START,
+   CM_MM_CONDITIONAL_MM_IE_ERROR            = 0x64 + CM_MM_CAUSE_START,
+   CM_MM_MSG_NOT_COMPAT_WITH_PROTO_STATE    = 0x65 + CM_MM_CAUSE_START,  /* 65..6f */
+   CM_MM_PROTO_ERROR_UNSPECIFIED            = 0x6f + CM_MM_CAUSE_START,
+
+   /* RR connection establishment failure */
+   CM_MM_ACCESS_BARRED  ,
+   CM_MM_ASSIGNMENT_REJECT ,
+   CM_MM_RANDOM_ACCES_FAILURE ,
+   CM_MM_RR_NO_SERVICE ,
+   CM_RR_PLMN_SRCH_REJ_EMERGENCY,
+   CM_MM_RR_CONN_RELEASE,
+
+   /* other cause */
+   CM_MM_AUTH_FAILURE,
+   CM_MM_IMSI_DETACH,
+   CM_MM_ABORT_BY_NW ,
+   CM_MM_CONN_TIMEOUT,
+   /* MM internal casuse */
+   CM_MM_CM_ENQUEUE_FAIL,
+   CM_MM_NOT_UPDATED ,
+   CM_MM_STATE_NOT_ALLOWED_CM,
+   CM_MM_EMERGENCY_NOT_ALLOWED,
+   CM_MM_NO_SERVICE,
+   CM_MM_ACCESS_CLASS_BARRED,
+   CM_MM_PS_SERVICE_ERROR, /* mtk02475: mapping gmmcm_result_enum to ps_cause_enum in SMS*/
+   CM_MM_MT_CALL_INCOMING,
+/* 24.008 CR# 1791 Start */
+   CM_MM_CONGESTION_CONTROL,
+/* 24.008 CR# 1791 End*/
+#if defined(__GEMINI__)
+   CM_RR_SUSPEND_FOR_CS_SIG,      /* may be short time */
+   CM_RR_SUSPEND_FOR_CS_CALL,   /* may be long time */
+   CM_RR_SUSPEND_FOR_PS_SIG,     /* may be short time */
+   CM_RR_SUSPEND_FOR_PS_DATA,  /* may be short time or long time */
+   CM_RR_SUSPEND_UNSPECIFIED, /* race condtion, RR cannot obtain semaphore, but not yet receive suspend cause from another RR */
+   CM_RR_VIRTUAL_CONNECTED_MODE,
+   CM_RR_MSPM_SESSION_NOT_ALLOWED,
+ #endif
+   CM_MM_NO_RETRY,
+   CM_MM_EMM_TIMER_T3442_RUNNING,
+   CM_MM_EMM_SS_EPS_ONLY_CAUSE_18,
+#ifdef __TC01__
+   CM_MM_RLF_BEFORE_ECC_CONNECT, /* Cause for sending the CEER cause before ecc connected during RLF for TMO US */
+#endif /* __TC01__ */
+   CM_MM_RETRY_NEEDED, /* CM will retry on timer expiry(8.5) or CS registered */
+   CM_MM_WAIT_FOR_NETWORK_RELEASE,
+   CM_MM_CAUSE_END                       = 2048 + 256,
+/* ============================== ~MM cause ============================== */
+
+/* ============================== SIM cause ============================== */
+   SIM_CAUSE_START                                     = 2560,
+   SIM_CAUSE_CMD_SUCCESS                               =     SIM_CAUSE_START,
+   SIM_CAUSE_CMD_FAIL                                  = 1 + SIM_CAUSE_START,
+   SIM_CAUSE_FATAL_ERROR                               = 2 + SIM_CAUSE_START,
+   SIM_CAUSE_NO_INSERTED                               = 3 + SIM_CAUSE_START,
+   SIM_CAUSE_CHV_NOT_INIT                              = 4 + SIM_CAUSE_START,
+   SIM_CAUSE_CHV_VERIFY_ERROR                          = 5 + SIM_CAUSE_START, /* SIM_CHV_RETRY_ALLOW */
+   SIM_CAUSE_CHV_BLOCK                                 = 6 + SIM_CAUSE_START, /* SIM_CHV_BLOCK */
+   SIM_CAUSE_ACCESS_NOT_ALLOW                          = 7 + SIM_CAUSE_START, /* */
+   SIM_CAUSE_SAT_CMD_BUSY                              = 8 + SIM_CAUSE_START, /* */
+   SIM_CAUSE_DL_ERROR                                  = 9 + SIM_CAUSE_START, /* */
+   SIM_CAUSE_MEMORY_PROBLEM                            = 10 + SIM_CAUSE_START, /* */
+   SIM_CAUSE_TECHNICAL_PROBLEM                         = 11 + SIM_CAUSE_START, /* */
+   SIM_CAUSE_PUK_UNLOCK                                = 12 + SIM_CAUSE_START, /* add new enum value to
+                                                                               distinguish whether normal poweron or PUK-unlock-poweron */
+   SIM_CAUSE_END,
+/* ============================== ~SIM cause ============================== */
+
+/* ============================== PHB cause ============================== */
+   PHB_CAUSE_FDN_BLOCKED = 2600,
+   PHB_L4C_ERROR = 2601,  /*called number is not approved by PHB*/
+   PHB_CAUSE_SMS_DESTINATION_FDN_BLOCKED = 2602,   // for TC10 IPC_ADAPTER
+   PHB_CAUSE_SMS_SCA_FDN_BLOCKED = 2603,           // for TC10 IPC_ADAPTER
+/* ============================== ~PHB cause ============================== */
+
+    REPORT_TO_UPPER_LAYER_CAUSE_START,
+
+/* ============================== SM cause ============================== */
+// 3GPP 24.008 clause 10.5.6.6(Annex I) SM/LLC/SNDCP/PDP/GPRS cause values
+// 3072 -> SM cause values
+
+    SM_CAUSE_START                   	= 0x0C00,
+    //ESM_CAUSE_START                     = SM_CAUSE_START,
+    SM_CAUSE_EMPTY                      =   0x01 + SM_CAUSE_START, // there is no such cause in SM spec, just invent a default empty value for coding usage
+    OPERATOR_DETERMINED_BARRING         =   0x08 + SM_CAUSE_START, //__REL4__
+    LLC_SND_FAILURE                     =   0X19 + SM_CAUSE_START,
+    INSUFF_RESOURCE                     =   0X1A + SM_CAUSE_START,
+    UNKNOWN_APN                         =   0X1B + SM_CAUSE_START,
+    UNKNOWN_PDP_ADDR_OR_TYPE            =   0X1C + SM_CAUSE_START,
+    AUTHENTICATION_FAILURE              =   0X1D + SM_CAUSE_START,
+    ACTIVATION_REJ_GGSN                 =   0X1E + SM_CAUSE_START,
+    ACTIVATION_REJ_UNSPECIFIED          =   0X1F + SM_CAUSE_START,
+    UNSUPPORTED_SERVICE_OPTION          =   0X20 + SM_CAUSE_START,
+    UNSUBSCRIBED_SERVICE_OPTION         =   0X21 + SM_CAUSE_START,
+    SERVICE_OPTION_TEMPORARILY_OUT_OF_ORDER =   0X22 + SM_CAUSE_START,
+    PTI_ALREADY_USED                    =   0X23 + SM_CAUSE_START, // ESM cause
+    REGULAR_DEACTIVATION                =   0X24 + SM_CAUSE_START,
+    QOS_NOT_ACCEPTED                    =   0X25 + SM_CAUSE_START,
+    NETWORK_FAIL                        =   0X26 + SM_CAUSE_START,
+    REACTIVATION_REQD                   =   0X27 + SM_CAUSE_START,
+    UNSUPPORTED_NW_CONTEXT_ACTIVATION   =   0X28 + SM_CAUSE_START, /* Came and went from 4.08 + SM_CAUSE_START,should this be removed? */
+    SEMANTIC_ERROR_IN_TFT_OP            =   0X29 + SM_CAUSE_START,
+    SYNTACTICAL_ERROR_IN_TFT_OP         =   0X2A + SM_CAUSE_START,
+    UNKNOWN_PDP_CONTEXT                 =   0X2B + SM_CAUSE_START,
+    SEMANTIC_ERROR_IN_PACKET_FILTER     =   0X2C + SM_CAUSE_START,
+    SYNTAX_ERROR_IN_PACKET_FILTER       =   0X2D + SM_CAUSE_START,
+    PDP_CONTEXT_WO_TFT_ALREADY_ACT      =   0X2E + SM_CAUSE_START,
+    PTI_MISMATCH                        =   0X2F + SM_CAUSE_START, // ESM cause
+    ACTIVATION_REJ_BCM_VIOLATION        =   0X30 + SM_CAUSE_START, // __REL7__
+    LAST_PDN_DISC_NOT_ALLOWED           =   0X31 + SM_CAUSE_START, // ESM cause
+    PDP_TYPE_IPV4_ONLY_ALLOWED          =   0X32 + SM_CAUSE_START, // __REL8__
+    PDP_TYPE_IPV6_ONLY_ALLOWED          =   0X33 + SM_CAUSE_START, // __REL8__
+    SINGLE_ADDR_BEARERS_ONLY_ALLOWED    =   0X34 + SM_CAUSE_START, // __REL8__
+    ESM_INFORMATION_NOT_RECEIVED        =   0X35 + SM_CAUSE_START, // ESM cause
+    PDN_CONNENCTION_NOT_EXIST           =   0X36 + SM_CAUSE_START, // ESM cause
+    MULTIPLE_PDN_APN_NOT_ALLOWED        =   0X37 + SM_CAUSE_START, // ESM cause
+    COLLISION_WITH_NW_INITIATED_REQ     =   0X38 + SM_CAUSE_START, // __REL8__
+    UNSUPPORTED_QCI_VALUE               =   0X3B + SM_CAUSE_START, // ESM cause
+    MAXIMUM_NUM_OF_PDP_CONTEXTS_REACHED =   0X41 + SM_CAUSE_START, /* Cause65 */
+    REQUESTED_APN_NOT_SUPPORTED_IN_CURRENT_RAT_AND_PLMN_COMBINATION = 0X42 + SM_CAUSE_START, /* Cause66 */
+    /* The following cause values are only for sm internal usage */
+    INVALID_TI                          =   0X51 + SM_CAUSE_START,
+    SM_SEMANTICALLY_INCORRECT_MSG       =   0X5F + SM_CAUSE_START,
+    INVALID_MAND_INFO                   =   0X60 + SM_CAUSE_START,
+    SM_MSG_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENTED =   0X61 + SM_CAUSE_START,
+    SM_MSG_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE =   0X62 + SM_CAUSE_START,
+    IE_NON_EXISTENCE_OR_NOT_IMPLEMENTED =   0X63 + SM_CAUSE_START,
+    CONDITIONAL_IE_ERROR                =   0X64 + SM_CAUSE_START,
+    SM_MSG_NOT_COMPATIBLE_WITH_PROTOCOL_STATE =   0X65 + SM_CAUSE_START,
+    SM_PROTOCOL_ERROR_UNSPECIFIED             =   0X6F + SM_CAUSE_START,
+    APN_RESTRICTION_VALUE_INCOMPATIBLE_WITH_ACTIVE_PDP_CTX =   0X70 + SM_CAUSE_START, /* 24.008 R6 CR 841 */
+    SM_CAUSE_END,
+/* ============================== ~SM cause ============================== */
+
+ /* ============================== ESM cause ============================== */
+ // 3GPP 24.301 ESM SPEC caue values
+
+    ESM_CAUSE_START                         = 0x0D00,
+    ESM_NO_CAUSE                            = 1   + ESM_CAUSE_START,  /* Cause not assigned                                   */
+    ESM_OPERATOR_DETERMINED_BARRING         = 8   + ESM_CAUSE_START,  /* Operator determined barring                          */
+    ESM_INSUFFICIENT_RESOURCES              = 26  + ESM_CAUSE_START,  /* Insufficient resources                               */
+    ESM_UNKNOWN_OR_MISSING_APN              = 27  + ESM_CAUSE_START,  /* Unknown or missing APN                               */
+    ESM_UNKNOWN_PDN_TYPE                    = 28  + ESM_CAUSE_START,  /* Unknown PDN type                                     */
+    ESM_USER_AUTH_FAILED                    = 29  + ESM_CAUSE_START,  /* User authentication failed                           */
+    ESM_REQUEST_REJECTED_BY_SGW_OR_PDNGW    = 30  + ESM_CAUSE_START,  /* Request rejected by Serving GW or PDN GW             */
+    ESM_REQUEST_REJECTED_UNSPECIFIED        = 31  + ESM_CAUSE_START,  /* Request rejected unspecified                         */
+    ESM_SERVICE_OPT_NOT_SUPPORTED           = 32  + ESM_CAUSE_START,  /* Service option not supported                         */
+    ESM_REQ_SERVICE_NOT_SUBSCRIBED          = 33  + ESM_CAUSE_START,  /* Requested service option not subscribed              */
+    ESM_SERVICE_TEMP_OUT_OF_ORDER           = 34  + ESM_CAUSE_START,  /* Service option temporarily out of order              */
+    ESM_PTI_ALREADY_USED                    = 35  + ESM_CAUSE_START,  /* PTI already in use                                   */
+    ESM_REGULAR_DEACTIVATION                = 36  + ESM_CAUSE_START,  /* Regular deactivation                                 */
+    ESM_EPS_QOS_NOT_ACCEPTED                = 37  + ESM_CAUSE_START,  /* EPS QoS not accepted                                 */
+    ESM_NETWORK_FAILURE                     = 38  + ESM_CAUSE_START,  /* Network failure                                      */
+    ESM_REACTIVATION_REQUESTED              = 39  + ESM_CAUSE_START,  /* Re-activation requitred                              */
+    ESM_SEMANTIC_ERROR_IN_TFT               = 41  + ESM_CAUSE_START,  /* Semantic error in the TFT operation                  */
+    ESM_SYNTACTIC_ERROR_IN_TFT              = 42  + ESM_CAUSE_START,  /* Syntactical error in the TFT operation               */
+    ESM_INVALID_EPS_BEARER_IDENTITY         = 43  + ESM_CAUSE_START,  /* Invalid EPS bearer identity                          */
+    ESM_SEMANTIC_ERROR_IN_PACKET_FILTERS    = 44  + ESM_CAUSE_START,  /* Semantic errors in packet filter(s)                  */
+    ESM_SYNTACTIC_ERROR_IN_PACKET_FILTERS   = 45  + ESM_CAUSE_START,  /* Syntactical errors in packet filter(s)               */
+    ESM_EPSB_CTXT_WITHOUT_TFT_ACTIVATED     = 46  + ESM_CAUSE_START,  /* EPS bearer context without TFT already activated     */
+    ESM_PTI_MISMATCH                        = 47  + ESM_CAUSE_START,  /* PTI mismatch                                         */
+    ESM_LAST_PDN_DISC_NOT_ALLOWED           = 49  + ESM_CAUSE_START,  /* Last PDN disconnection not allowed                   */
+    ESM_PDN_TYPE_IPV4_ONLY_ALLOWED          = 50  + ESM_CAUSE_START,  /* PDN type IPv4 only allowed                           */
+    ESM_PDN_TYPE_IPV6_ONLY_ALLOWED          = 51  + ESM_CAUSE_START,  /* PDN type IPv6 only allowed                           */
+    ESM_SINGLE_ADDRESS_ONLY_ALLOWED         = 52  + ESM_CAUSE_START,  /* Single address bearers only allowed                  */
+    ESM_ESM_INFORMATION_NOT_RECEIVED        = 53  + ESM_CAUSE_START,  /* ESM information not received                         */
+    ESM_PDN_CONNENCTION_NOT_EXIST           = 54  + ESM_CAUSE_START,  /* PDN connection does not exist                        */
+    ESM_MULTIPLE_PDN_APN_NOT_ALLOWED        = 55  + ESM_CAUSE_START,  /* Multiple PDN connections for a given APN not allowed */
+    ESM_COLLISION_WITH_NW_INIT_REQUEST      = 56  + ESM_CAUSE_START,  /* Collision with network initiated request             */
+    ESM_UNSUPPORTED_QCI_VALUE               = 59  + ESM_CAUSE_START,  /* Unsupported QCI value                                */
+    ESM_MAXIMUM_NUM_OF_EPS_BEARERS_REACHED  = 65  + ESM_CAUSE_START,  /* Maximum number of EPS bearers reached                */
+    ESM_REQUESTED_APN_NOT_SUPPORTED_IN_CURRENT_RAT_AND_PLMN_COMBINATION = 66  + ESM_CAUSE_START,  /* Requested APN not supported in current RAT and PLMN combination */
+    ESM_INVALID_PTI_VALUE                   = 81  + ESM_CAUSE_START,  /* Invalid PTI value                                    */
+    ESM_SEMANTIC_INCORRECT_MSG              = 95  + ESM_CAUSE_START,  /* Semantically incorrect message                       */
+    ESM_INVALID_MANDATORY_IE                = 96  + ESM_CAUSE_START,  /* Invalid mandatory information                        */
+    ESM_MSG_TYPE_NON_EXISTENT               = 97  + ESM_CAUSE_START,  /* Message type non-existent or not implemented         */
+    ESM_MSG_TYPE_NOT_COMPATIBLE_STATE       = 98  + ESM_CAUSE_START,  /* Message type not compatible with protocol state      */
+    ESM_IE_NON_EXISTENT_NOT_IMPLEMENTED     = 99  + ESM_CAUSE_START,  /* Information element non-existent or not implemented  */
+    ESM_CONDITIONAL_IE_ERROR                = 100 + ESM_CAUSE_START,  /* Conditional IE error                                 */
+    ESM_MSG_NOT_COMPATIBLE_STATE            = 101 + ESM_CAUSE_START,  /* Message not compatible with the protocol state       */
+    ESM_PROTOCOL_ERROR_UNSPECIFIED          = 111 + ESM_CAUSE_START,  /* Protocol error unspecified                           */
+    ESM_APN_RESTRICT_VALUE_INCOMPATIBLE     = 112 + ESM_CAUSE_START,  /* APN restriction value incompatible with active EPS bearer context */
+
+    ESM_CAUSE_END,
+ /* ============================== ~SM cause ============================== */
+
+
+ /* ============================== SM Proprietary cause ============================== */
+ //
+ // SM proprietary cause
+ //
+     SM_PROPRIETARY_CAUSE_START = 0x0E00,
+
+     /* In restrict region 0x0E00~0x0E3F, the value of this region cannot be change, AP uses this cause value to perform special handling */
+     SM_PROPRIETARY_RESTRICT_REGION_BEGIN = 0x0E00,
+
+     SM_LOCAL_REJECT_ACT_REQ_DUE_TO_REACH_RETRY_COUNTER = 0x0E0F, /* 0x0E0F = 3599 */
+
+     SM_PROPRIETARY_RESTRICT_REGION_END = 0x0E3F,
+
+
+     /* In free region 0x0E40~0x0EFF, there's no restriction, we can change the order of causes freely */
+     /* If AP needs to use one cause to do error handling, needs to move to SM_PROPRIETARY_RESTRICT_REGION and assign a value */
+     SM_PROPRIETARY_FREE_REGION_BEGIN = 0x0E40,
+
+     SM_PROPRIETARY_CAUSE_IRAT_TO_LTE_LOCAL_DEACTIVATED,
+     SM_PROPRIETARY_CAUSE_IRAT_TO_LTE_BUT_BEARER_MAP_INVALID, // bearer doesn't exit after mapping
+     SM_PROPRIETARY_CAUSE_IRAT_TO_LTE_BUT_LTE_BEARER_MAP_FAILED, // bearer mapping failure and local released
+     SM_PROPRIETARY_CAUSE_IRAT_TO_LTE_BUT_BEARER_MAP_FAILED_DUE_TO_DETACH, // bearer local released
+     SM_PROPRIETARY_CAUSE_IRAT_RETRY_NEEDED_AFTER_IRAT,
+     SM_PROPRIETARY_CAUSE_IRAT_TO_5GNR_LOCAL_DEACTIVATED,
+
+     SM_LOCAL_REJECT_ACT_REQ_DUE_TO_CURRENT_STATE_NOT_COMPATIBLE,
+     SM_LOCAL_REJECT_ACT_REQ_DUE_TO_QOS_NOT_REASONALBE,
+     SM_LOCAL_REJECT_ACT_REQ_DUE_TO_QOS_TRAFFIC_CLASS_NOT_SUPPORTED,
+     SM_LOCAL_REJECT_ACT_REQ_DUE_TO_NO_AVAILABLE_TI,
+     SM_LOCAL_REJECT_ACT_REQ_DUE_TO_PROCESS_QUEUE_FULL,
+     SM_LOCAL_REJECT_ACT_REQ_DUE_TO_GPRS_SUSPENDED,
+     SM_LOCAL_REJECT_ACT_REQ_DUE_TO_NSAPI_INVALID,
+     SM_LOCAL_REJECT_ACT_REQ_DUE_TO_GPRS_DETACH,
+     SM_LOCAL_REJECT_ACT_REQ_DUE_TO_GPRS_ATTACH_FAILURE,
+     SM_LOCAL_REJECT_ACT_REQ_DUE_TO_GEMINI_SM_CONTEXT_MEMORY_OCCUPIED,
+
+     SM_LOCAL_REJECT_SEC_ACT_REQ_DUE_TO_CURRENT_STATE_NOT_COMPATIBLE,
+     SM_LOCAL_REJECT_SEC_ACT_REQ_DUE_TO_NO_AVAILABLE_TI,
+     SM_LOCAL_REJECT_SEC_ACT_REQ_DUE_TO_LINKED_NSAPI_INVALID,
+     SM_LOCAL_REJECT_SEC_ACT_REQ_DUE_TO_PROCESS_QUEUE_FULL,
+     SM_LOCAL_REJECT_SEC_ACT_REQ_DUE_TO_NOT_SUPPORT_SECONDARY_PDP,
+     SM_LOCAL_REJECT_SEC_ACT_REQ_DUE_TO_GPRS_SUSPENDED,
+     SM_LOCAL_REJECT_SEC_ACT_REQ_DUE_TO_GPRS_DETACH,
+     SM_LOCAL_REJECT_SEC_ACT_REQ_DUE_TO_COMPOSE_TFT_ERROR,
+     SM_LOCAL_REJECT_SEC_ACT_REQ_DUE_TO_NO_NW_INIT_SEC_ACT_REQ_PROCEDURE,
+     SM_LOCAL_REJECT_SEC_ACT_REQ_DUE_TO_TOKEN_ID_NOT_ACCEPTED,
+     SM_LOCAL_REJECT_SEC_ACT_REQ_DUE_TO_LOCAL_PARA_NOT_SYNC_WITH_NW_SM_AIR_MSG,
+     SM_LOCAL_REJECT_SEC_ACT_REQ_DUE_TO_TFT_ENCODE_ERROR,
+
+     SM_LOCAL_REJECT_MOD_REQ_DUE_TO_PROCESS_QUEUE_FULL,
+     SM_LOCAL_REJECT_MOD_REQ_DUE_TO_GPRS_SUSPENDED,
+     SM_LOCAL_REJECT_MOD_REQ_DUE_TO_GPRS_DETACH,
+     SM_LOCAL_REJECT_MOD_REQ_DUE_TO_CURRENT_STATE_NOT_COMPATIBLE,
+     SM_LOCAL_REJECT_MOD_REQ_DUE_TO_GEMINI_SM_CONTEXT_MEMORY_OCCUPIED,
+     SM_LOCAL_REJECT_MOD_REQ_DUE_TO_FIRST_PDP_NOT_SUPPORT_QOS_MODIFY_FROM_UE,
+     SM_LOCAL_REJECT_MOD_REQ_DUE_TO_MODIFY_COLLISION_WITH_NW,
+     SM_LOCAL_REJECT_MOD_REQ_DUE_TO_REACH_RETRY_COUNTER,
+     SM_LOCAL_REJECT_MOD_REQ_DUE_TO_TFT_ENCODE_ERROR,
+     SM_LOCAL_REJECT_MOD_REQ_DUE_TO_NOTHING_NEED_TO_MODIFY,
+
+     SM_LOCAL_REJECT_DEACT_REQ_DUE_TO_GEMINI_SM_CONTEXT_MEMORY_OCCUPIED,
+     SM_LOCAL_REJECT_DEACT_REQ_DUE_TO_GPRS_DETACH,
+
+     SM_LOCAL_DEACTIVATION_DUE_TO_MT_SEC_PDP_COLLISION,
+     SM_LOCAL_DEACTIVATION_DUE_TO_REACH_RETRY_COUNTER,
+     SM_LOCAL_DEACTIVATION_DUE_TO_TEAR_DOWN,
+     SM_LOCAL_DEACTIVATION_DUE_TO_RCV_STATUS_MSG_IN_INACT_PEER_PENDING_STATE,
+     SM_LOCAL_DEACTIVATION_DUE_TO_GPRS_SUSPENDED,
+     SM_LOCAL_DEACTIVATION_DUE_TO_MT_PDP_COLLISION,
+     SM_LOCAL_DEACTIVATION_DUE_TO_SYNC_BY_NSAPI_STATUS_IND,
+
+     SM_LOCAL_REJECT_DUE_TO_CURRENT_RAT_IS_UNKNOWN,
+     SM_LOCAL_REJECT_DUE_TO_PS_SWITCH,
+     SM_LOCAL_REJECT_DUE_TO_LLC_SND_FAILURE,
+     SM_LOCAL_REJECT_DUE_TO_INSUFF_RESOURCE,
+     SM_LOCAL_REJECT_DUE_TO_QOS_NOT_ACCEPTED,
+     SM_LOCAL_REJECT_DUE_TO_RAB_DEACTIVATE_IND,
+     SM_LOCAL_REJECT_DUE_TO_PS_SIG_CONN_EST_FAILURE,
+
+     SM_PROPRIETARY_CAUSE_SILENT_DEACTIVATION_IN_ESM_TRANSFERRED_EPSB_CONTEXT,
+     SM_PROPRIETARY_CAUSE_GPRS_DETACH,
+     SM_PROPRIETARY_DEACT_IN_WRONG_STATE,
+
+     SM_PROPRIETARY_CAUSE_NULL,
+     SM_PROPRIETARY_CAUSE_GEMINI_SUSPEND_DUE_TO_CALL_ONGOING,
+     SM_PROPRIETARY_FREE_REGION_END = 0x0EFF,
+
+     SM_PROPRIETARY_CAUSE_END = 0x0EFF,
+
+ /* ============================== ~SM Proprietary  cause ============================== */
+
+/* ============================== ABM cause ============================== */
+//
+// ABM error causes, Kevin Chien
+//
+//    ABM_CAUSE_START = 0x0E00,
+//    ABM_E_SUCCESS,
+//    ABM_E_INVALID_NW_ACC_ID,
+//    ABM_E_GPRS_REACTIVATE,
+//    ABM_E_GPRS_PROTOCOL_REJECTION,
+//    ABM_E_CSD_REACTIVATE,
+//    ABM_E_CSD_PPP_NEGOTIATED_FAILED,
+//    ABM_E_CSD_ACT_FAILED,
+//    ABM_E_CSD_CALL_SETUP_FAILED,
+//    ABM_E_WIFI_REACTIVATE,
+//    ABM_E_WIFI_NOTREADY,
+//    ABM_E_REJECTED,
+//    ABM_E_SLOT_LIMITED,
+//    ABM_E_ABORT,
+//    ABM_E_NON_AUTO_DEACT,
+//    ABM_E_BEARER_IS_HOLD, /* 3287 */
+/* ============================== ~ABM cause ============================== */
+
+/* ============================== TCM cause ============================== */
+    TCM_CAUSE_START             = 0x0F00,
+
+    /* CANNOT CHANGE THE CAUSE VALUE, AP WOULD USE IT TO DO ERROR HANDLING */
+    #if __GROUP_TCM_L4C_CAUSE_CANNOT_BE_CHANGED__ || 1
+    TCM_L4C_CHECKED_ACT_WITH_CID_UNEXPECTED = 0x0F01,
+    TCM_L4C_CHECKED_ACT_WITH_CID_NOT_DEFINED = 0x0F02,
+    TCM_L4C_CHECKED_ACT_WITH_FSM_UNEXPECTED = 0x0F03,
+    TCM_L4C_CHECKED_ACT_WITH_CID_SECONDARY_WITHOUT_TFT = 0x0F04,
+    TCM_L4C_CHECKED_ACT_WITH_PRIMARY_IS_NOT_ACTIVATED = 0x0F05,
+
+    TCM_L4C_CHECKED_DEACT_WITH_CID_UNEXPECTED = 0x0F06,
+    TCM_L4C_CHECKED_DEACT_WITH_FSM_UNEXPECTED = 0x0F07,
+    TCM_L4C_CHECKED_DEACT_WITH_ACTIVATED_FROM_UNEXPECTED  = 0x0F08,
+
+    TCM_L4C_CHECKED_MODIFY_WITH_CID_UNEXPECTED = 0x0F09,
+    TCM_L4C_CHECKED_MODIFY_WITH_FSM_UNEXPECTED  = 0x0F0A,
+    TCM_L4C_CHECKED_MODIFY_WITH_NO_QOS_OR_TFT_SET = 0x0F0B,
+
+    TCM_L4C_CHECKED_CGDATA_WITH_CID_UNEXPECTED = 0x0F0C,
+    TCM_L4C_CHECKED_CGDATA_WITH_FSM_UNEXPECTED = 0x0F0D,
+
+    TCM_L4C_DCONT_CID_UNEXPECTED = 0x0F0E,
+    TCM_L4C_DCONT_NOT_ALLOW_FOR_PPP_TYPE = 0x0F0F,
+    TCM_L4C_DCONT_INVALID_PARAMETER = 0x0F10,
+    TCM_L4C_DCONT_INVALID_PDP_TYPE = 0x0F11,
+    TCM_L4C_DCONT_CID_ALREADY_IN_USE = 0x0F12,
+    TCM_L4C_DCONT_INVALID_APN = 0x0F13,
+
+    TCM_L4C_DSCONT_CID_UNEXPECTED = 0x0F14,
+    TCM_L4C_DSCONT_INVALID_PARAMETER = 0x0F15,
+    TCM_L4C_DSCONT_CID_PRIMARY_IS_NOT_IN_USE = 0x0F16,
+    TCM_L4C_DSCONT_CID_PRIMARY_IS_NOT_ACTIVATED = 0x0F17,
+    TCM_L4C_DSCONT_NOT_ALLOW_FOR_PPP_TYPE = 0x0F18,
+    TCM_L4C_DSCONT_CID_ALREADY_IN_USE = 0x0F19,
+
+    TCM_L4C_PRCO_CID_ALREADY_IN_USE = 0x0F1A,
+    TCM_L4C_PRCO_CID_UNEXPECTED = 0x0F1B,
+
+    TCM_L4C_ACT_NOT_SUPPORT_EMERGENCY_BEARER_ACTIVATION = 0x0F1C,
+    TCM_L4C_ACT_ALLOC_NSAPI_FAIL = 0x0F1D,
+
+    TCM_L4C_DEACT_IND_BY_TIMER_EXPIRY = 0x0F1E,
+    TCM_L4C_DEACT_IND_BY_NO_USER_RESPONSE_TILL_RAT_CHANGE_COMPLETE_IND = 0x0F1F,
+
+    TCM_L4C_MOD_PRESERVED_PDP_CONTEXT = 0x0F20,
+    TCM_L4C_MOD_CHECK_TFT_FAIL = 0x0F21,
+    TCM_L4C_MOD_REJ_DUE_TO_DEACT_IND = 0x0F22,
+
+    TCM_L4C_SET_MULTI_PDN_SUCCESS = 0x0F23,
+    TCM_L4C_SET_MULTI_PDN_CID_UNEXPECTED = 0x0F24,
+    TCM_L4C_SET_MULTI_PDN_PARA_UNEXPECTED = 0x0F25,
+    TCM_L4C_SET_MULTI_PDN_INVALID_PDP_TYPE_AND_LEN = 0x0F26,
+    TCM_L4C_SET_MULTI_PDN_INVALID_APN = 0x0F27,
+
+    TCM_PPP_CHECKED_ACT_WITH_CID_UNEXPECTED = 0x0F28,
+    TCM_PPP_CHECKED_ACT_WITH_PDP_TYPE_LEN_UNEXPECTED = 0x0F29,
+    TCM_PPP_CHECKED_ACT_WITH_INVALID_CONFIG_PROTOCOL = 0x0F2A,
+    TCM_PPP_CHECKED_ACT_WITH_CID_NOT_DEFINED = 0x0F2B,
+    TCM_PPP_CHECKED_ACT_WITH_FSM_UNEXPECTED = 0x0F2C,
+
+    TCM_PPP_CHECKED_DEACT_WITH_CID_UNEXPECTED = 0x0F2D,
+    TCM_PPP_CHECKED_DEACT_WITH_FSM_UNEXPECTED = 0x0F2E,
+    TCM_PPP_CHECKED_DEACT_WITH_ACTIVATED_FROM_UNEXPECTED = 0x0F2F,
+
+    TCM_PPP_CHECKED_CGDATA_WITH_CID_UNEXPECTED = 0x0F30,
+    TCM_PPP_CHECKED_CGDATA_WITH_FSM_UNEXPECTED = 0x0F31,
+
+    TCM_DISPATCH_PDP_ACT_CHECK_TFT_FAIL = 0x0F32,
+
+    TCM_UPCM_BIND_CNF_BEARER_HAS_BEEN_DEACTIVATED_ALREADY = 0x0F33,
+    TCM_UPCM_UNBIND_CNF_BEARER_HAS_BEEN_DEACTIVATED_ALREADY = 0x0F34,
+
+    TCM_ACL_APN_NOT_EXIST_IN_ACL = 0x0F35,
+    TCM_ACL_ACTION_NOT_ALLOWED = 0x0F36,
+    TCM_ACL_SIM_FILE_FULL = 0x0F37,
+    TCM_ACL_ADD_ENTRY_FAILED = 0x0F38,
+    TCM_ACL_DEL_ENTRY_FAILED = 0x0F39,
+    TCM_ACL_SET_ENTRY_FAILED = 0x0F3A,
+    TCM_ACL_SIM_READ_FAILED = 0x0F3B,
+    TCM_ACL_SIM_WRITE_FAILED = 0x0F3C,
+
+    // ESM proprietary failure cause
+    TCM_ESM_CAUSE_START = 0x0F3D,
+    TCM_ESM_FAIL_CAUSE_EMPTY = 0x0F3E,
+    TCM_ESM_USER_CANCEL = 0x0F3F,
+    TCM_ESM_CID_ALREADY_CONNECT = 0x0F40,
+    TCM_ESM_PDN_NOT_ACTIVATED = 0x0F41,
+    TCM_ESM_BEARER_NOT_ACTIVATED = 0x0F42,
+    TCM_ESM_RMV_LAST_PDN_NOT_ALLOWED = 0x0F43,
+    TCM_ESM_LOCAL_RELEASE = 0x0F44,
+    TCM_ESM_DETACH = 0x0F45,
+    TCM_ESM_IE_ERROR = 0x0F46,
+    TCM_ESM_TIMER_TIMEOUT = 0x0F47,
+    TCM_ESM_TX_FAILURE = 0x0F48,
+    TCM_ESM_FAIL_CAUSE_RAT_CHANGE = 0x0F49,
+    TCM_ESM_FAIL_CAUSE_PS_SWITCH = 0x0F4A,
+    TCM_ESM_ACTION_NOT_ALLOWED = 0x0F4B,
+    TCM_ESM_FAIL_CAUSE_T3346_CONGESTION = 0x0F4C,
+    TCM_ESM_FAIL_CAUSE_THROTTLING_RUNNING = 0x0F4D,
+    TCM_ESM_FAIL_CAUSE_SERIOUS_ERROR_AT_LOW_LAYER = 0x0F4E,
+    TCM_ESM_FAIL_CAUSE_OTHERS = 0x0F4F,
+    TCM_ESM_CAUSE_END = 0x0F50,
+
+    /* Inter-RAT related */
+    RAT_TCM_RETRY_NEEDED_AFTER_IRAT_IF_IN_3GPP = 0x0F51,
+    RAT_TCM_LOCAL_REJECTED_DUE_TO_PS_SWITCH = 0x0F52,
+	AP_RETRY_NEEDED_AFTER_LTE_TO_C2K_IRAT = 0x0F53,
+
+    /* RAT_TCM related */
+    RAT_TCM_DEACT_SUCCESS_DUE_TO_CONTEXT_NEVER_ACTIVATED = 0x0F54,
+    RAT_TCM_MODIFY_FAIL_DUE_TO_CONTEXT_DEACTIVATED = 0x0F55,
+    RAT_TCM_MODIFY_FAIL_DUE_TO_CONTEXT_NOT_ACTIVATED = 0x0F56,
+    RAT_TCM_DEACTIVATED_DUE_TO_NAS_TFT_TRIGGERED_DEACTIVATION = 0x0F57,
+    RAT_TCM_23G_MT_PRIMARY_PDP_IS_ABORTED_DUE_TO_CHANGE_TO_4G = 0x0F58,
+    RAT_TCM_DEACTIVATE_SUCCESS_IMMEDIATELY_BECAUSE_ACTIVATION_IS_NOT_PROCESSED_BY_TCM_YET = 0x0F59,
+    RAT_TCM_EGACT_ACTIVATE_REJ_DUE_TO_ERROR_RAT = 0x0F5A,
+    RAT_TCM_EGACT_DEACTIVATE_REJ_DUE_TO_ERROR_RAT = 0x0F5B,
+    RAT_TCM_DEACTIVATED_DUE_TO_INACTIVITY_TIMER_TIMEOUT = 0x0F5C,
+
+	/* TCM internal error cause */
+	TCM_ETCM_CID_NOT_DEFINE_TFT_QOS = 0x0F5D,
+	TCM_ETCM_CID_IS_NOT_PRIMARY = 0x0F5E,
+	TCM_ETCM_TFT_VALIDATION_ERROR = 0x0F5F,
+	TCM_ETCM_PTI_IS_FULL = 0x0F60,
+
+    /* TCM Proprietary AT command related */
+    TCM_L4C_CHECKED_EGLD_WITH_CID_UNEXPECTED = 0x0F61,
+    TCM_L4C_CHECKED_EGLD_WITH_FSM_UNEXPECTED = 0x0F62,
+    TCM_L4C_CHECKED_EAPNSYNC_WRONG_APN_IDX = 0x0F63,
+    TCM_L4C_CHECKED_EAPNSYNC_APN_TOO_LONG = 0x0F64,
+    TCM_L4C_CHECKED_EAPNSYNC_TOO_MUCH_APN_SETTING = 0x0F65,
+
+    /* NRSPCA Phase 1/2 related */
+    TCM_L4C_MOD_PRIMARY_QOS_IS_NOT_ALLOWED = 0x0F66,
+    TCM_L4C_MOD_QOS_FOR_NO_MS_PF_IS_NOT_ALLOWED = 0x0F67,
+
+    /* CANNOT CHANGE THE CAUSE VALUE, AP WOULD USE IT TO DO ERROR HANDLING */
+    #endif // __GROUP_TCM_L4C_CAUSE_CANNOT_BE_CHANGED__
+
+    /* CAN ADD NEW TCM CAUSE HERE <---------------- */
+    /* RAT_TCM related */
+	RAT_TCM_ACT_FAIL_DUE_TO_IRAT_ONGOING = 0x0F6B,
+    RAT_TCM_MODIFY_FAIL_DUE_TO_IRAT_ONGOING = 0x0F6C,
+    RAT_TCM_DEACT_FAIL_DUE_TO_IRAT_ONGOING = 0x0F6D,
+    RAT_TCM_LOCAL_REJECTED_DUE_TO_FSM_UNEXPECTED = 0x0F6E,
+    RAT_TCM_LOCAL_REJECTED_DUE_TO_GUARANTEE_RSPONSE_TIME_TIMEOUT = 0x0F6F,
+
+    /* PLEASE ADD TO NEXT REGION IF NEW CAUSE NUMBER >= 0x0F70*/
+    #if __GROUP_TCM_L4C_REGION_2_AND_ESM_CAUSE_START__ || 1
+    TCM_REGION_2_CAUSE_START = 0x0F70,
+
+    TCM_L4C_CHECKED_CID_INVALID = 0x0F71,
+    TCM_L4C_CHECKED_CID_ALREADY_IN_ACTION = 0x0F72,
+    TCM_L4C_CHECKED_ACT_WITH_UNEXPECTED_LTE_ATTACH_PDN_IN_23G = 0x0F73,
+
+    TCM_UGTCM_DEACT_DUE_TO_USER_FORCE_TO_LOCAL_RELEASE = 0x0F74,
+    TCM_L4C_ACT_NOT_SUPPORT_HANDOVER_OF_EMERGENCY_BEARER = 0x0F75,
+
+    TCM_UGTCM_DEACT_DUE_TO_AOSP_SHUTDOWN = 0x0F76,
+    TCM_UGTCM_DEACT_DUE_TO_AOSP_HANDOVER = 0x0F77,
+    //TCM_UGTCM_DEACT_DUE_TO_APN_CHANGED = 0x0F78, // merged cause conflicts with existed cause. move it to 0x0F7B.
+
+    TCM_ESM_FAIL_CAUSE_GEMINI_SUSPEND = 0x0F78, // gemini SUSPEND due to CS semaphore occupied by another protocal stack, wait for resume
+    TCM_ESM_FAIL_CAUSE_GEMINI_FAILURE = 0x0F79, // gemini failure due to HPS(or higher) semaphore occupied by another protocal stack
+    TCM_ESM_FAIL_CAUSE_GEMINI_SUSPEND_DUE_TO_CALL_ONGOING = 0x0F7A,
+
+    TCM_UGTCM_DEACT_DUE_TO_APN_CHANGED = 0x0F7B,
+    TCM_ESM_DETACH_REATTACH = 0x0F7C,
+    TCM_VGTCM_DEACT_DUE_TO_AOSP_SHUTDOWN = 0x0F7D,
+	TCM_ESM_FAIL_CAUSE_REQ_RES_APN_MISMATCH = 0x0F7E,
+    TCM_UGTCM_DEACT_DUE_TO_IMS_HANDOVER = 0x0F7F,
+    /* CAN ADD NEW CAUSE HERE <---------------- */
+
+	/* PLEASE ADD TO NEXT REGION IF NEW CAUSE NUMBER >= 0x0F8E*/
+	TCM_ESM_DEACT_DUE_TO_DRB_RELEASE = 0x0F8E,  // put here due to specail cause for AP query.
+	/* CAN ADD NEW CAUSE HERE <---------------- */
+
+    /* PLEASE ADD TO NEXT REGION IF NEW CAUSE NUMBER >= 0x0F8F*/
+    TCM_REGION_2_CAUSE_END = 0x0F8F,
+    #endif // __GROUP_TCM_L4C_REGION_2_AND_ESM_CAUSE_START__
+
+    #if __GROUP_TCM_L4C_REGION_3_CAUSE_START__ || 1
+    TCM_REGION_3_CAUSE_START = 0x0F90,
+    TCM_L4C_DCONT_PSI_UNEXPECTED = 0x0F91,
+    TCM_L4C_CHECKED_ACT_WITH_UNEXPECTED_LTE_ATTACH_PDN_IN_5G = 0x0F92,
+    TCM_L4C_CHECKED_ACT_WITH_CID_SECONDARY_NOT_SUPPORT_IN_5G = 0x0F93,
+
+    TCM_VGTCM_DEACT_DUE_TO_USER_FORCE_TO_LOCAL_RELEASE = 0x0F94,
+
+    TCM_L4C_EGPCO_CID_UNEXPECTED = 0x0F95,
+    TCM_L4C_EGPCO_PSI_UNEXPECTED = 0x0F96,
+
+    TCM_L4C_EGDCONT_CID_UNEXPECTED = 0x0F97,
+    TCM_L4C_EGDCONT_PSI_UNEXPECTED = 0x0F98,
+    TCM_L4C_EGDCONT_INVALID_PDP_TYPE = 0x0F99,
+
+    RAT_TCM_HANDOVER_REESTABLISHMENT_NEEDED = 0x0F9A,
+    RAT_TCM_HANDOVER_REESTABLISHMENT_FAIL_DUE_TO_NO_WITHOUT_N26_INFO = 0x0F9B,
+
+    TCM_VGTCM_DEACT_DUE_TO_INTERRAT = 0x0F9C,
+
+    /* CAN ADD NEW CAUSE HERE <---------------- */
+
+    /* PLEASE ADD TO NEXT REGION IF NEW CAUSE NUMBER >= 0x0FAF*/
+    TCM_REGION_3_CAUSE_END = 0x0FAF,
+    #endif // __GROUP_TCM_L4C_REGION_3_CAUSE_START__
+
+    #if __GROUP_TCM_L4C_REGION_4_CAUSE_START__ || 1
+    TCM_REGION_4_CAUSE_START = 0x0FB0,
+    /* CAN ADD NEW CAUSE HERE <---------------- */
+    TCM_L4C_PSI_NOT_DEFINED = 0x0FB1,
+    TCM_L4C_VGTCM_PROCEDURE_ONGOING_ON_CORRESPONDING_CID = 0x0FB2,
+    TCM_L4C_CHANGE_PSI_FOR_ACTIVE_CID_NOT_ALLOWED = 0x0FB3,
+    TCM_L4C_CGAUTH_CID_UNEXPECTED = 0x0FB4,
+    TCM_L4C_CGAUTH_PSI_UNEXPECTED = 0x0FB5,
+    TCM_L4C_VGTCM_UNEXPECTED_FIC_TYPE = 0x0FB6,
+    TCM_L4C_PEER_TO_PEER_MODIFY_WITHOUT_P_CSCF = 0x0FB7,
+    TCM_L4C_PEER_TO_PEER_MODIFY_WITH_P_CSCF = 0x0FB8,
+    TCM_L4C_MODIFY_DUE_TO_INTERRAT = 0x0FB9,
+	TCM_L4C_CHECKED_ACT_WITH_PDP_TYPE_NOT_SET = 0x0FBA,
+    /* PLEASE ADD TO NEXT REGION IF NEW CAUSE NUMBER >= 0x0FCF*/
+    TCM_REGION_4_CAUSE_END = 0x0FCF,
+    #endif // __GROUP_TCM_L4C_REGION_4_CAUSE_START__
+
+    #if __GROUP_TCM_L4C_REGION_5_CAUSE_START__ || 1
+    TCM_REGION_5_CAUSE_START = 0x0FD0,
+    /* CAN ADD NEW CAUSE HERE <---------------- */
+    TCM_ESM_REGION_2_CAUSE_START = TCM_REGION_5_CAUSE_START,
+    TCM_ESM_4G5_EPS_BEARER_MAPPED_FAILED = 0x0FD1,
+    TCM_ESM_ATTACH_FAILURE = 0x0FD2,//ATTACH FAILURE DUE TO T3410 EXPIRY (IN DOCOMO)
+    TCM_ESM_REGION_2_CAUSE_END = 0x0FE0,
+
+    /* PLEASE CREATE NEW REGION IF NEW CAUSE NUMBER >= 0x0FFF*/
+    TCM_REGION_5_CAUSE_END = 0x0FFF,
+    #endif // __GROUP_TCM_L4C_REGION_5_CAUSE_START__
+
+    TCM_CAUSE_END,
+/* ============================== ~TCM cause ============================== */
+
+/* ============================== L4C cause ============================== */
+    L4C_CAUSE_START = 0x1000,
+
+    L4C_TYPE_1_OLD_CAUSE_START = L4C_CAUSE_START,
+    L4C_CMD_CONFLICT = 0x1000,
+    L4C_CMD_CONFLICT_CHANNEL_BUSY = 0x1001,
+    L4C_LOCAL_DISCONNECT_CSD = 0x1002, //MAUI_01801045
+
+    L4C_OPTION_CONFLICT = 0x1003,
+    L4C_AT_CMD_INVALID_PARAMETER_OR_MISSING = 0x1004,
+    L4C_AT_CMD_PARAMETER_OUT_OF_RANGE = 0x1005,
+    L4C_AT_CMD_INVALID_PARAMETER = 0x1006,
+    L4C_AT_CMD_CID_UNEXPECTED = 0x1007,
+    L4C_CONTEXT_CONFLICT_PPP_DEACTIVATING = 0x1008,
+    L4C_CONTEXT_CONFLICT_ACT_ALREADY_ACTIVATED = 0x1009,
+    L4C_CONTEXT_CONFLICT_DEACT_ALREADY_DEACTIVATED = 0x100A,
+    L4C_CONTEXT_CONFLICT_V4V6FB_NOT_COMPLETED = 0x100B,
+    L4C_CONTEXT_CONFLICT_ACT_ABORTED_BY_ANOTHER_DEACT = 0x100C,
+    L4C_CONTEXT_CONFLICT_CID0_NOT_ACTIVATED_BY_ATTACH = 0x100D,
+    L4C_AT_CMD_CONFIGURATION_ONGOING = 0x100E,
+    L4C_CONTEXT_CONFLICT_DUAL_PS_ATTACH = 0x100F,
+    L4C_CONTEXT_CONFLICT_DUAL_ALWAYS_TYPE = 0x1010,
+    L4C_AT_CMD_RAC_NOTIFY_CGACT_ERROR = 0x1011,
+    L4C_INIT_ATTACH_INVALID_APN = 0x1012,
+    L4C_AT_CMD_IN_WRONG_STATE = 0x1013,
+    L4C_OMADM_CHECKING_FAIL = 0x1014,
+    L4C_CONTEXT_CONFLICT_DUAL_DATA_TYPE = 0x1015,
+    L4C_AT_CMD_RAC_NOTIFY_EGTYPE_ERROR,
+    L4C_AT_CMD_ERAT_NOTIFY_CALL_EXIST = 0x1017,
+    L4C_AT_CMD_CGACT_COPS_CONFLICT = 0x1018,
+    /* CAN ADD NEW CAUSE HERE <---------------- */
+
+    /* PLEASE ADD TO NEXT REGION IF NEW CAUSE NUMBER >= 0x101f*/
+    L4C_TYPE_1_OLD_CAUSE_END = 0x101f,
+
+
+
+    L4C_TYPE_2_CAUSE_START = 0x1020,
+    /* CAN ADD NEW CAUSE HERE <---------------- */
+    L4C_CGEV_IND_CAUSE_NO_CAUSE = 0x1021,
+
+    /* PLEASE ADD TO NEXT REGION IF NEW CAUSE NUMBER >= 0x103f*/
+    L4C_TYPE_2_CAUSE_END = 0x103f,
+    L4C_TYPE_3_CAUSE_START = 0x1040,
+    /* CAN ADD NEW CAUSE HERE <---------------- */
+
+    /* PLEASE ADD TO NEXT REGION IF NEW CAUSE NUMBER >= 0x105f*/
+    L4C_TYPE_3_CAUSE_END = 0x105f,
+    L4C_TYPE_4_CAUSE_START = 0x1060,
+    /* CAN ADD NEW CAUSE HERE <---------------- */
+
+    /* PLEASE ADD TO NEXT REGION IF NEW CAUSE NUMBER >= 0x107f*/
+    L4C_TYPE_4_CAUSE_END = 0x107f,
+
+    L4C_TYPE_5_C2K_CAUSE_START = 0x1080,
+    /* CAN ADD NEW CAUSE HERE <---------------- */
+    L4C_CMD_CONFLICT_C2K_IRAT_ONGOING = 0x1080, /* +CMD ERROR : 4224 */
+    L4C_CMD_CONFLICT_C2K_AP_DEACT_RETRY_NEEDED = 0x1081, /* +CMD ERROR : 4225 */
+
+    /* PLEASE ADD TO NEXT REGION IF NEW CAUSE NUMBER >= 0x109f*/
+    L4C_TYPE_5_C2K_CAUSE_END = 0x109f,
+
+    L4C_TYPE_6_CAUSE_START = 0x10a0,
+    /* CAN ADD NEW CAUSE HERE <---------------- */
+
+    /* PLEASE ADD TO NEXT REGION IF NEW CAUSE NUMBER >= 0x10bf*/
+    L4C_TYPE_6_CAUSE_END = 0x10bf,
+    L4C_TYPE_7_CAUSE_START = 0x10c0,
+    /* CAN ADD NEW CAUSE HERE <---------------- */
+
+    /* PLEASE ADD TO NEXT REGION IF NEW CAUSE NUMBER >= 0x10df*/
+    L4C_TYPE_7_CAUSE_END = 0x10df,
+    L4C_TYPE_8_CAUSE_START = 0x10e0,
+    /* CAN ADD NEW CAUSE HERE <---------------- */
+
+    /* PLEASE CREATE NEW REGION IF NEW CAUSE NUMBER >= 0x10ff*/
+    L4C_TYPE_8_CAUSE_END = 0x10ff,
+    L4C_CAUSE_END = L4C_TYPE_8_CAUSE_END,
+/* ============================== ~L4C cause ============================== */
+
+/* ============================== HIF cause ============================== */
+    HIF_CAUSE_START = 0x1100,
+
+    /* IPCore related */
+    HIF_IPC_OK = HIF_CAUSE_START,
+
+    /* MSG_ID_IPCORE_UPCM_PDN_BIND_RSP */
+    HIF_IPC_PDN_BIND_RSP_UNSUPPORTED_IP_ADDR_TYPE,  /* Unknown IP address type */
+    HIF_IPC_PDN_BIND_RSP_NULL_PARAM,                /* No parameter is passed to IPCore */
+    HIF_IPC_PDN_BIND_RSP_INVALID_NETIF,             /* Network interface is not found */
+    HIF_IPC_PDN_BIND_RSP_NEW_SESSION_FAIL,          /* New session creation is failed */
+    HIF_IPC_PDN_BIND_RSP_SESSION_RLOCK_FAIL,        /* Session read lock is failed */
+    HIF_IPC_PDN_BIND_RSP_EPSB_FAIL,                 /* EPS Bearer is not default EPSB */
+
+    UPCM_PDN_UNBIND_RSP_EPSB_NONACT  , /* EPS Bearer is not active*/
+    UPCM_PDN_UNBIND_RSP_EPSB_NONPDN  , /* EPS Bearer is not default EPSB */
+    UPCM_PDN_UNBIND_RSP_EPSB_NONBIND , /* EPS Bearer is not binding yet, It implys the EPSB is default EPSB */
+    UPCM_PDN_BIND_REQ_ERROR_ACTIVATED_BEARER_IS_NOT_FOUND,
+
+    N3EPC_DISPATCHER_BIND_ERROR_AS_BEARER_NOT_ACTIVATED_BEFORE = 0x1150,
+    N3EPC_DISPATCHER_BIND_ERROR_AS_PDN_ALREADY_BIND,                           /*dispatcher state is bind, again a bind req*/
+    N3EPC_DISPATCHER_BIND_ERROR_AS_PREV_BIND_IN_PROGRESS,                      /*Previous bind req in progress with ipcore*/
+    N3EPC_DISPATCHER_BINDING_GOING_TO_UNBIND_ERROR_AS_PREV_BIND_IN_PROGRESS,   /*Previous bind req in progress with ipcore*/
+    N3EPC_DISPATCHER_UNBIND_ERROR_AS_DUPLICATE_UNBIND_REQ,                     /*alreay unbind or going to unbind, again unbind req*/
+    HIF_CAUSE_END,
+    /* ============================== ~HIF cause ============================== */
+
+/* ============================== PAM cause ============================== */
+    PAM_CAUSE_START = 0x01200,
+
+    PAM_PDN_ACCESS_GRANTED,
+
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_08 = 8 + PAM_CAUSE_START,    /* Operator determined barring */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_26 = 26 + PAM_CAUSE_START,   /* Insufficient resource */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_27 = 27 + PAM_CAUSE_START,   /* Missing or unknown apn */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_28 = 28 + PAM_CAUSE_START,   /* Unknow PDN type */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_29 = 29 + PAM_CAUSE_START,   /* User authentication failed */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_30 = 30 + PAM_CAUSE_START,   /* Activation rejected by S-GW or PDN-GW */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_31 = 31 + PAM_CAUSE_START,   /* Activation rejected, unspecified */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_32 = 32 + PAM_CAUSE_START,   /* Service option not supported */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_33 = 33 + PAM_CAUSE_START,   /* Requested service option not subscribed */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_34 = 34 + PAM_CAUSE_START,   /* Service option temporarily out of order */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_35 = 35 + PAM_CAUSE_START,   /* PTI already in use */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_36 = 36 + PAM_CAUSE_START,   /* Regular deactivation */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_37 = 37 + PAM_CAUSE_START,   /* QoS not accepted */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_38 = 38 + PAM_CAUSE_START,   /* Network failure */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_39 = 39 + PAM_CAUSE_START,   /* Reactivation requested */
+
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_41 = 41 + PAM_CAUSE_START,   /* Semantic error in the TFT operation */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_42 = 42 + PAM_CAUSE_START,   /* Syntactical error in the TFT operation */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_43 = 43 + PAM_CAUSE_START,   /* Invalid EPS bearer identity */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_44 = 44 + PAM_CAUSE_START,   /* Semantic errors in packet filter(s) */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_45 = 45 + PAM_CAUSE_START,   /* Syntactical error in packet filter(s) */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_46 = 46 + PAM_CAUSE_START,   /* Unused */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_47 = 47 + PAM_CAUSE_START,   /* PTI mismatch */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_49 = 49 + PAM_CAUSE_START,   /* Last PDN disconnection not allowed */
+
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_50 = 50 + PAM_CAUSE_START,   /* PDN type IPv4 only allowed */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_51 = 51 + PAM_CAUSE_START,   /* PDN type IPv6 only allowed */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_52 = 52 + PAM_CAUSE_START,   /* single address bearers only allowed */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_53 = 53 + PAM_CAUSE_START,   /* ESM information not received */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_54 = 54 + PAM_CAUSE_START,   /* PDN connection does not exist */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_55 = 55 + PAM_CAUSE_START,   /* Multiple PDN connections for a given APN not allowed */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_56 = 56 + PAM_CAUSE_START,   /* Collision with network initiated request */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_59 = 59 + PAM_CAUSE_START,   /* Unsupported QCI value */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_65 = 65 + PAM_CAUSE_START,   /* Maximum number of PDP contexts reached */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_66 = 66 + PAM_CAUSE_START,   /* Requested apn not supported in current RAT and PLMN combination */
+
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_81 = 81 + PAM_CAUSE_START,   /* Invalid PTI value */
+
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_95 = 95 + PAM_CAUSE_START,   /* Semantically incorrect message */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_96 = 96 + PAM_CAUSE_START,   /* Invalid mandatory information */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_97 = 97 + PAM_CAUSE_START,   /* Message type non-existent or not implemented */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_98 = 98 + PAM_CAUSE_START,   /* Message type not compatible with protocol state */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_99 = 99 + PAM_CAUSE_START,   /* Information element non-existent or not implemented */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_100 = 100 + PAM_CAUSE_START, /* Conditional IE error */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_101 = 101 + PAM_CAUSE_START, /* Message not compatible with the protocol state */
+
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_111 = 111 + PAM_CAUSE_START, /* Protocol error unspecified */
+    PAM_PDN_ACCESS_REJECT_DUE_TO_CAUSE_112 = 112 + PAM_CAUSE_START, /* Apn restriction value incompatiable with EPB bearer context */
+
+    PAM_PDN_ACCESS_REJECT_NOT_IN_ACL = 200 + PAM_CAUSE_START,       /* Requested APN not in ACL */
+    PAM_PDN_ACCESS_REJECT_READ_EF_ACL_ONGOING = 201 + PAM_CAUSE_START, /* PAM has not get EF_ACL yet */
+
+    PAM_CAUSE_END,
+/* ============================== ~PAM cause ============================== */
+
+/* ============================== PAM VZW cause ============================== */
+  	PAM_VZW_CAUSE_START = 0x01300,
+
+  	PAM_VZW_PDN_ACCESS_GRANTED  = 0x01 + PAM_VZW_CAUSE_START,
+
+  	PAM_VZW_PDN_ACCESS_REJECT_DISABLE_IN_APN_TABLE              = 0x02 + PAM_VZW_CAUSE_START,
+  	PAM_VZW_PDN_ACCESS_REJECT_ASK_APN_CHANGE_NOT_READY          = 0x03 + PAM_VZW_CAUSE_START,
+  	PAM_VZW_PDN_ACCESS_REJECT_CHANGE_APN_CLASS                  = 0x04 + PAM_VZW_CAUSE_START,
+  	PAM_VZW_PDN_ACCESS_REJECT_CHANGE_APN_CLASS_AND_THROTTLE     = 0x05 + PAM_VZW_CAUSE_START,
+  	PAM_VZW_PDN_ACCESS_REJECT_THROTTLE_FOREVER                  = 0x06 + PAM_VZW_CAUSE_START,
+  	PAM_VZW_PDN_ACCESS_REJECT_THROTTLE                          = 0x07 + PAM_VZW_CAUSE_START,
+  	PAM_VZW_PDN_ACCESS_REJECT_THROTTLE_WITH_BACKOFF_TIMER       = 0x08 + PAM_VZW_CAUSE_START, // R12 VzW
+  	PAM_VZW_PDN_ACCESS_REJECT_THROTTLE_FOREVER_CANDIDATE        = 0x09 + PAM_VZW_CAUSE_START, // R11 VzW 7767
+  	PAM_VZW_PDN_ACCESS_REJECT_THROTTLE_NO_RSP                   = 0x0A + PAM_VZW_CAUSE_START,
+  	PAM_VZW_PDN_ACCESS_REJECT_NOT_IN_ACL                        = 0x0B + PAM_VZW_CAUSE_START,
+  	PAM_VZW_PDN_ACCESS_REJECT_STOP_ATTACH_FOR_CLASS1_AND_CLASS2_NOT_ENABLED = 0x0C + PAM_VZW_CAUSE_START,
+  	PAM_VZW_PDN_ACCESS_REJECT_WAIT_TIME_NOT_EXPIRED             = 0x0D + PAM_VZW_CAUSE_START,
+  	PAM_VZW_PDN_ACCESS_REJECT_EXCEED_MAX_PDN_CONN_TRIES         = 0x0E + PAM_VZW_CAUSE_START,
+  	PAM_VZW_PDN_ACCESS_REJECT_THROTTLE_BY_MAX_PDN_CONN_TRIES    = 0x0F + PAM_VZW_CAUSE_START,
+  	PAM_VZW_PDN_ACCESS_REJECT_NO_AVAILABLE_CLASS_CAN_BE_USED    = 0x10 + PAM_VZW_CAUSE_START,
+    PAM_VZW_PDN_ACCESS_REJECT_APN_IN_USE                        = 0x11 + PAM_VZW_CAUSE_START, // __PAM_CHECK_APN_UNIQUENESS__
+    PAM_VZW_PDN_ACCESS_REJECT_VZ_REQ_LTEDATA_39683_FEB_2016     = 0x12 + PAM_VZW_CAUSE_START,
+    PAM_VZW_PDN_ACCESS_REJECT_VZ_REQ_LTEDATA_39684_FEB_2016     = 0x13 + PAM_VZW_CAUSE_START,
+    PAM_VZW_PDN_ACCESS_REJECT_ALLOC                             = 0x14 + PAM_VZW_CAUSE_START, // VzW DR 7775
+    PAM_VZW_PDN_ACCESS_REJECT_MOD                               = 0x15 + PAM_VZW_CAUSE_START, // VzW DR 7775
+
+	/* VzW SA DR start from 0x1320*/
+	PAM_VZW_PDU_ACCESS_GRANTED  								= 0x20 + PAM_VZW_CAUSE_START,
+	PAM_VZW_PDU_ACCESS_REJECT_THROTTLE_FOREVER					= 0x21 + PAM_VZW_CAUSE_START, // VzW SA DR 3.1.3.2.3
+	PAM_VZW_PDU_ACCESS_REJECT_THROTTLE							= 0x22 + PAM_VZW_CAUSE_START, // VzW SA DR 3.1.3.2.3
+	PAM_VZW_PDU_ACCESS_REJECT_THROTTLE_WITH_BACKOFF_TIMER		= 0x23 + PAM_VZW_CAUSE_START, // VzW SA DR 3.1.3.2.3
+	PAM_VZW_PDU_ACCESS_REJECT_THROTTLE_NO_RSP					= 0x24 + PAM_VZW_CAUSE_START, // VzW SA DR 3.1.3.2.3
+	PAM_VZW_PDU_ACCESS_REJECT_MOD								= 0x25 + PAM_VZW_CAUSE_START, // VzW SA DR 3.1.3.2.4
+	PAM_VZW_PDU_ACCESS_REJECT_EST								= 0x26 + PAM_VZW_CAUSE_START, // VzW SA DR 3.1.3.2.4
+	PAM_VZW_PDU_ACCESS_THROTTLE_EXEMPTION						= 0x27 + PAM_VZW_CAUSE_START, // VzW SA DR 3.1.1
+
+    // VzW SA DR 3.1.3.2.7
+    PAM_VZW_PDU_ACCESS_REJECT_WAIT_TIME_NOT_EXPIRED                    = 0x28 + PAM_VZW_CAUSE_START,
+    PAM_VZW_PDU_ACCESS_REJECT_EXCEED_MAX_MAX_PDU_SESSION_TRIES         = 0x29 + PAM_VZW_CAUSE_START,
+	PAM_VZW_PDU_ACCESS_REJECT_THROTTLE_BY_MAX_PDU_SESSION_TRIES        = 0x30 + PAM_VZW_CAUSE_START,
+
+
+  	PAM_VZW_CAUSE_END           = 0xFF + PAM_VZW_CAUSE_START,
+
+/* ============================== ~PAM VZW cause ============================== */
+/** PAM cause continues in later "Ext. Part for PAM cause" **/
+
+/* ============================== PAM AT&T cause ============================== */
+	PAM_ATT_CAUSE_START = 0x01400,
+
+	PAM_ATT_PDN_ACCESS_GRANTED  = 0x01 + PAM_ATT_CAUSE_START,
+
+	PAM_ATT_PDN_ACCESS_REJECT_IMS_PDN_BLOCK_TEMP    = 0x02 + PAM_ATT_CAUSE_START,
+	PAM_ATT_PDN_ACCESS_REJECT_IMS_PDN_BLOCK_FOREVER = 0x03 + PAM_ATT_CAUSE_START,   /* Not used for <CDR-DAM-2120> and <CDR-DAM-2130> */
+
+	PAM_ATT_CAUSE_END           = 0xFF + PAM_ATT_CAUSE_START,
+/* ============================== ~PAM AT&T cause ============================== */
+
+/* ============================== L4BPDN cause ============================== */
+    L4BPDN_CAUSE_START = 0X01500,
+
+    L4BPDN_AT_OK                            = 0x01 + L4BPDN_CAUSE_START,
+    L4BPDN_AT_ERROR_CMD_MODE_NOT_SUPPORT    = 0x02 + L4BPDN_CAUSE_START,
+    L4BPDN_AT_ERROR_CURRENT_RAT_UNKNOWN     = 0x03 + L4BPDN_CAUSE_START,
+
+    L4BPDN_AT_ERROR_CID_IS_NOT_ACTIVE_FOR_CGCONTRDP      = 0x04 + L4BPDN_CAUSE_START,
+    L4BPDN_AT_ERROR_CID_IS_NOT_VALID                     = 0x05 + L4BPDN_CAUSE_START,
+    L4BPDN_AT_ERROR_IE_PARSE_RESULT_IS_NOT_OK            = 0x06 + L4BPDN_CAUSE_START,
+    L4BPDN_AT_ERROR_PCO_ID_IS_NOT_VALID                  = 0x07 + L4BPDN_CAUSE_START,
+    L4BPDN_AT_ERROR_PCO_ID_IS_NOT_SUPPORTED              = 0x08 + L4BPDN_CAUSE_START,
+    L4BPDN_AT_ERROR_PCO_ID_SUPPORTED_IS_NOT_PRESENT      = 0x09 + L4BPDN_CAUSE_START,
+    L4BPDN_AT_ERROR_CID_IS_NOT_ACTIVE_FOR_BINDING        = 0x0A + L4BPDN_CAUSE_START,
+    L4BPDN_AT_ERROR_CID_IS_NOT_ACTIVE_FOR_UNBINDING      = 0x0B + L4BPDN_CAUSE_START,
+    L4BPDN_AT_ERROR_CMD_NOT_SUPPORT_IN_CURRENT_DOMAIN    = 0X0C + L4BPDN_CAUSE_START,
+    L4BPDN_AT_ERROR_CID_IS_ALREADY_BINDED                = 0x0D + L4BPDN_CAUSE_START,
+    L4BPDN_AT_ERROR_CID_IS_ALREADY_UNBINDED              = 0x0E + L4BPDN_CAUSE_START,
+    L4BPDN_AT_ERROR_CMD_NOT_SUPPORT                      = 0x0F + L4BPDN_CAUSE_START,
+    L4BPDN_AT_ERROR_CGCMOD_NOT_SUPPORT_IN_C2K            = 0x10 + L4BPDN_CAUSE_START,
+    L4BPDN_AT_ERROR_EGACT_NOT_SUPPORT_IN_C2K             = 0x11 + L4BPDN_CAUSE_START,
+    L4BPDN_AT_ERROR_CID_IS_ACTIVE_BUT_NOT_PRIMARY_PDP    = 0x12 + L4BPDN_CAUSE_START,
+    L4BPDN_AT_ERROR_CID_IS_NOT_ACTIVE_FOR_SENDING_DATA   = 0x13 + L4BPDN_CAUSE_START,
+    L4BPDN_CGEV_IND_FROM_CVAL_WITHOUT_CAUSE              = 0x14 + L4BPDN_CAUSE_START,
+    L4BPDN_CGEV_IND_NO_CAUSE                             = 0x15 + L4BPDN_CAUSE_START,
+    L4BPDN_AT_ERROR_EGACT_UNEXPECTED_RAT_IN_C2K          = 0x16 + L4BPDN_CAUSE_START,
+    L4BPDN_AT_ERROR_C2K_LTE_DEACT_RETRY_NEEDED           = 0x17 + L4BPDN_CAUSE_START,
+
+    L4BPDN_LEISIM_CAUSE_START = 0X01580,
+    L4BPDN_LEISIM_AT_ERROR_CID_IS_ALREADY_BINDED         = 0x01 + L4BPDN_LEISIM_CAUSE_START,
+    L4BPDN_LEISIM_AT_ERROR_CID_PDN_TRANSFER_ONGOING      = 0x02 + L4BPDN_LEISIM_CAUSE_START,
+
+    L4BPDN_LEISIM_OTHER_DIRECTION_IRAT_STARTED_ABORT_REVIVE                = 0x03 + L4BPDN_LEISIM_CAUSE_START,
+    L4BPDN_LEISIM_EHRPD_ALL_3_ROUNDS_REVIVE_FAIL                           = 0x04 + L4BPDN_LEISIM_CAUSE_START,
+    L4BPDN_LEISIM_DEACT_ABORT_REVIVE                                       = 0x05 + L4BPDN_LEISIM_CAUSE_START,
+    L4BPDN_LEISIM_EHRPD_ONE_PDN_REVIVE_SUCCESS_NO_NEED_REVIVE_OTHER        = 0x06 + L4BPDN_LEISIM_CAUSE_START,
+    L4BPDN_LEISIM_OTHER_DIRECTION_IRAT_STARTED_ABORT_EHRPD_2ND_REVIVE      = 0x07 + L4BPDN_LEISIM_CAUSE_START,
+    L4BPDN_LEISIM_OTHER_DIRECTION_IRAT_STARTED_ABORT_EHRPD_3ND_REVIVE      = 0x08 + L4BPDN_LEISIM_CAUSE_START,
+
+
+    L4BPDN_LEISIM_CAUSE_END,
+    L4BPDN_CAUSE_END   = 0xFF + L4BPDN_CAUSE_START,
+/* ============================== L4BPDN cause ============================== */
+
+/* ============================== D2 cause ============================== */
+    D2_CAUSE_START                   = 0X01600,
+    D2AT_OK                          = 0x01 + D2_CAUSE_START,
+    D2AT_ERROR_EIF_ERROR             = 0x02 + D2_CAUSE_START,
+    D2AT_ERROR_EIF_FORMAT_ERROR      = 0x03 + D2_CAUSE_START,
+    D2AT_ERROR_INVALID_INTERFACE_ID  = 0x04 + D2_CAUSE_START,
+    D2AT_ERROR_INVALID_STATE         = 0x05 + D2_CAUSE_START,
+    D2AT_ERROR_DSCONT_WITHOUT_PRIMARY= 0x06 + D2_CAUSE_START,
+
+    D2_NETIF_CAUSE_START                = 0x40 + D2_CAUSE_START,
+    D2_NETIF_OK                         = 0x00 + D2_NETIF_CAUSE_START,
+    D2_NETIF_ERROR                      = 0x01 + D2_NETIF_CAUSE_START,
+    D2_NETIF_INVALID_INTERFACE_ID       = 0x02 + D2_NETIF_CAUSE_START,
+    D2_NETIF_POOL_FULL                  = 0x03 + D2_NETIF_CAUSE_START,
+    D2_NETIF_INVALID_STATE              = 0x04 + D2_NETIF_CAUSE_START,
+    D2_NETIF_INVALID_PARAMETER          = 0x05 + D2_NETIF_CAUSE_START,
+
+    D2AM_NW_CAUSE_START                    = 0x50 + D2_CAUSE_START,      /* 0x01650 */
+
+    D2AM_IA_CAUSE_START                 = 0x60 + D2_CAUSE_START,      /* 0x01660 */
+    D2AM_IA_APN_NOT_SET                 = 0x01 + D2AM_IA_CAUSE_START,   /* 0x01661 */
+    D2AM_IA_APN_NOT_FOUND               = 0x02 + D2AM_IA_CAUSE_START,   /* 0x01662 */
+    D2AM_IA_APN_CID_ALLOC_FAIL          = 0x03 + D2AM_IA_CAUSE_START,   /* 0x01663 */
+    D2AM_IA_TARGET_DETACH               = 0x04 + D2AM_IA_CAUSE_START,   /* 0x01664 */
+    D2AM_IA_RF_OFF                      = 0x05 + D2AM_IA_CAUSE_START,   /* 0x01665 */
+    D2AM_IA_APN_ON_WIFI                 = 0x06 + D2AM_IA_CAUSE_START,   /* 0x01666 */
+    D2AM_IA_ICCID_NOT_GET               = 0x07 + D2AM_IA_CAUSE_START,   /* 0x01667 */
+    D2AM_IA_IMS_ON_WIFI                 = 0x08 + D2AM_IA_CAUSE_START,   /* 0x01668 */
+    D2AM_IA_UNBIND_ONGOING				= 0x09 + D2AM_IA_CAUSE_START,	/* 0x01669 */
+
+    D2AM_OTHER_CAUSE_START              = 0x70 + D2_CAUSE_START,         /* 0x01670 */
+    D2AM_DATA_NOT_ALLOWED               = 0x01 + D2AM_OTHER_CAUSE_START, /* 0x01671 (5745) */
+    D2AM_IMPORTANT_USER_USING           = 0x02 + D2AM_OTHER_CAUSE_START, /* 0x01672 (5746) */
+    D2AM_IMS_CALLING_ON_OTHER_SIM       = 0x03 + D2AM_OTHER_CAUSE_START, /* 0x01673 (5747) */
+    D2AM_DUAL_MDALLOW                   = 0x04 + D2AM_OTHER_CAUSE_START, /* 0x01674 (5748) */
+    D2AM_MDALLOW_NOT_SUPPORT            = 0x05 + D2AM_OTHER_CAUSE_START, /* 0x01675 (5749) */
+    D2AM_PS_MODE_UNKNOWN                = 0x06 + D2AM_OTHER_CAUSE_START, /* 0x01676 (5750) */
+    D2AM_CS_CALLING_ON_OTHER_SIM        = 0x07 + D2AM_OTHER_CAUSE_START, /* 0x01677 (5751) */
+    D2AM_VZW_DATA_NOT_ALLOWED           = 0x08 + D2AM_OTHER_CAUSE_START, /* 0x01678 (5752) */
+    D2AM_DSBP_ONGOING                   = 0x09 + D2AM_OTHER_CAUSE_START, /* 0x01679 (5753) */
+    D2AM_SIM_NOT_READY                  = 0x0A + D2AM_OTHER_CAUSE_START, /* 0x0167A (5754) */
+
+    /* Exported to AP, Do NOT move them */
+    D2CPM_CAUSE_START                = 0xD0 + D2_CAUSE_START,
+    D2CPM_OK                         = 0x00 + D2CPM_CAUSE_START,    /* Success */
+//    D2CM_OK                          = D2CPM_OK,
+//    D2PM_OK                          = D2CPM_OK
+    D2CPM_INVAL_ARG                  = 0x01 + D2CPM_CAUSE_START,    /* Invalid argument */
+//    D2CM_INVAL_ARG                   = D2CPM_INVAL_ARG,
+//    D2PM_INVAL_ARG                   = D2CPM_INVAL_ARG,
+    D2CPM_NOT_CONN                   = 0x02 + D2CPM_CAUSE_START,    /* Transport endpoint is not connected */
+//    D2CM_NOT_CONN                    = D2CPM_NOT_CONN,
+//    D2PM_NOT_CONN                    = D2CPM_NOT_CONN,
+    D2CPM_ALREADY_PROG               = 0x03 + D2CPM_CAUSE_START,    /* Operation already in progress */
+//    D2CM_ALREADY_PROG                = D2CPM_ALREADY_PROG,
+//    D2PM_ALREADY_PROG                = D2CPM_ALREADY_PROG,
+    D2CPM_CONN_ABORT                 = 0x04 + D2CPM_CAUSE_START,    /* Software caused connection abort */
+//    D2CM_CONN_ABORT                  = D2CPM_CONN_ABORT,
+//    D2PM_CONN_ABORT                  = D2CPM_CONN_ABORT,
+    D2CPM_NO_ADDR                    = 0x05 + D2CPM_CAUSE_START,    /* No such device or address */
+//    D2CM_NO_ADDR                     = D2CPM_NO_ADDR,
+//    D2PM_NO_ADDR                     = D2CPM_NO_ADDR,
+    D2CPM_NOT_PERM                   = 0x06 + D2CPM_CAUSE_START,    /* Operation not permitted */
+//    D2CM_NOT_PERM                    = D2CPM_NOT_PERM,
+//    D2PM_NOT_PERM                    = D2CPM_NOT_PERM,
+    D2CPM_IN_USE                     = 0x07 + D2CPM_CAUSE_START,    /* Address already in use */
+//    D2CM_IN_USE                      = D2CPM_IN_USE,
+//    D2PM_IN_USE                      = D2CPM_IN_USE,
+    D2CPM_CONFLICT                   = 0x08 + D2CPM_CAUSE_START,    /* Name not unique on network */
+//    D2CM_CONFLICT                    = D2CPM_CONFLICT,
+//    D2PM_CONFLICT                    = D2CPM_CONFLICT,
+    D2CPM_UNRECOV                    = 0x09 + D2CPM_CAUSE_START,    /* State not recoverable */
+//    D2CM_UNRECOV                     = D2CM_UNRECOV,
+//    D2PM_UNRECOV                     = D2PM_UNRECOV,
+    D2CPM_CAUSE_END,
+    D2CM_CAUSE_START                 = 0xE0 + D2_CAUSE_START,
+    D2CM_CAUSE_END,
+
+    D2PM_CAUSE_START                 = 0xF0 + D2_CAUSE_START,
+    D2PM_D2RM_REJ                    = 0x01 + D2PM_CAUSE_START,  /* Rejected or frustrated by IWLAN */
+    D2PM_NW_UNKNOWN                  = 0x02 + D2PM_CAUSE_START,  /* Unknown network error */
+    D2PM_CAUSE_END,
+    /* Exported to AP, Do NOT move them */
+
+    D2_CAUSE_END                      = 0xFF + D2_CAUSE_START,
+/* ============================== DAST cause ============================== */
+
+/* ============================== DDM cause ============================== */
+    DDM_CAUSE_START                     = 0x01700,
+    DDM_AT_OK                           = 0x01 + DDM_CAUSE_START,
+    DDM_DEFINE_ATTACH_PDN_FAIL          = 0x02 + DDM_CAUSE_START,
+    DDM_BLOCK_ACT_DATA_CALL             = 0x03 + DDM_CAUSE_START,
+    DDM_REUSE_PDP_TYPE_NOT_MATCH        = 0x04 + DDM_CAUSE_START,
+    DDM_IA_IS_ONGOING                   = 0x05 + DDM_CAUSE_START,
+    DDM_ACT_IS_ONGOING                  = 0x06 + DDM_CAUSE_START,
+    DDM_DEACT_IS_ONGOING                = 0x07 + DDM_CAUSE_START,
+    DDM_CAUSE_END                       = 0xFF + DDM_CAUSE_START,
+/* ============================== DDM cause ============================== */
+
+
+/* ============================== SDM cause ============================== */
+    SDM_CAUSE_START                     = 0x01800,
+    SDM_CAUSE_REQUEST_AP_RETRY          = 0x01 + SDM_CAUSE_START,
+    SDM_CAUSE_END                       = 0xFF + SDM_CAUSE_START,
+/* ============================== SDM cause ============================== */
+
+/* ============================== Individual AT CMD cause ============================== */
+    IND_AT_CMD_CAUSE_START              = 0x01900,
+    /* Each AT CMD can define it's own error cause under this range */
+     /************************AT+ERFTX error causes START**********************/
+
+    /*==========EL1 causes==========*/
+    L4CEL1_ERR_CAUSE_START              = 0x00 + IND_AT_CMD_CAUSE_START,
+    L4CEL1_ERR_NOT_IN_FLIGHT            = 0x01 + IND_AT_CMD_CAUSE_START,
+    L4CEL1_ERR_SIM_IN_SLOT              = 0x02 + IND_AT_CMD_CAUSE_START,
+    L4CEL1_ERR_PARA_BAND                = 0x03 + IND_AT_CMD_CAUSE_START,
+    L4CEL1_ERR_PARA_UL_BW               = 0x04 + IND_AT_CMD_CAUSE_START,
+    L4CEL1_ERR_PARA_UL_FREQ             = 0x05 + IND_AT_CMD_CAUSE_START,
+    L4CEL1_ERR_PARA_DUPLEX_MODE         = 0x06 + IND_AT_CMD_CAUSE_START,
+    L4CEL1_ERR_PARA_TDD_CFG             = 0x07 + IND_AT_CMD_CAUSE_START,
+    L4CEL1_ERR_PARA_SP_SF_CFG           = 0x08 + IND_AT_CMD_CAUSE_START,
+    L4CEL1_ERR_PARA_VRB                 = 0x09 + IND_AT_CMD_CAUSE_START,
+    L4CEL1_ERR_PARA_MCS                 = 0x0A + IND_AT_CMD_CAUSE_START,
+    L4CEL1_ERR_ROUTE_VALID              = 0x0B + IND_AT_CMD_CAUSE_START,
+    L4CEL1_ERR_TEST_ONGOING             = 0x0C + IND_AT_CMD_CAUSE_START,
+    L4CEL1_ERR_ANT_STATE                = 0x0D + IND_AT_CMD_CAUSE_START,
+    /*0x0E ~ 0x12 are reserved for future use*/
+    L4CEL1_ERR_OTHERS                   = 0x13 + IND_AT_CMD_CAUSE_START,
+    L4CEL1_ERR_CAUSE_END                = 0x14 + IND_AT_CMD_CAUSE_START,
+
+
+    /*==========C2K causes==========*/
+    L4CCL1_ERR_CAUSE_START          = 0x01 + L4CEL1_ERR_CAUSE_END,
+    L4CCL1_ERR_PARA_TXPOWER             = 0x02 + L4CEL1_ERR_CAUSE_END,
+    L4CCL1_ERR_PARA_CHANNEL             = 0x03 + L4CEL1_ERR_CAUSE_END,
+    /*0x04 ~ 0x09 are reserved for future use*/
+    L4CCL1_ERR_CAUSE_END            = 0x0A + L4CEL1_ERR_CAUSE_END,
+
+    /*==========GL1 causes==========*/
+    L4CGL1_ERR_CAUSE_START              = 0x01 + L4CCL1_ERR_CAUSE_END,
+    L4CGL1_ERR_CAUSE_NOT_IN_FLIGHT      = 0x02 + L4CCL1_ERR_CAUSE_END,
+    L4CGL1_ERR_CAUSE_PARA_BAND          = 0x03 + L4CCL1_ERR_CAUSE_END,
+    L4CGL1_ERR_CAUSE_PARA_FREQ          = 0x04 + L4CCL1_ERR_CAUSE_END,
+    L4CGL1_ERR_CAUSE_PARA_PATTERN       = 0x05 + L4CCL1_ERR_CAUSE_END,
+    L4CGL1_ERR_CAUSE_PARA_AFCDAC        = 0x06 + L4CCL1_ERR_CAUSE_END,
+    L4CGL1_ERR_CAUSE_PARA_TIMESLOTMASK  = 0x07 + L4CCL1_ERR_CAUSE_END,
+    L4CGL1_ERR_CAUSE_PARA_PCL           = 0x08 + L4CCL1_ERR_CAUSE_END,
+    L4CGL1_ERR_CAUSE_PARA_CS            = 0x09 + L4CCL1_ERR_CAUSE_END,
+    L4CGL1_ERR_CAUSE_PARA_REPEAT_TIME   = 0x0A + L4CCL1_ERR_CAUSE_END,
+    /*0x02 ~0x2f reserved for future use*/
+    L4CGL1_ERR_CAUSE_END                = 0x30 + L4CCL1_ERR_CAUSE_END,
+    /*==========TL1 causes==========*/
+    L4CTL1_ERR_CAUSE_START              = 0x01 + L4CGL1_ERR_CAUSE_END,
+    L4CTL1_ERR_NOT_IN_FLIGHT            = 0x02 + L4CGL1_ERR_CAUSE_END,
+    L4CTL1_ERR_FREQ			            = 0x03 + L4CGL1_ERR_CAUSE_END,
+    L4CTL1_ERR_BAND                     = 0x04 + L4CGL1_ERR_CAUSE_END,
+    L4CTL1_ERR_NOT_STOP_TX              = 0x05 + L4CGL1_ERR_CAUSE_END,
+    /*0x04 ~ 0x09 are reserved for future use*/
+    L4CTL1_ERR_CAUSE_END                = 0x0A + L4CGL1_ERR_CAUSE_END,
+
+    /*==========UL1 causes==========*/
+    L4CUL1_ERR_CAUSE_START              = 0x01 + L4CTL1_ERR_CAUSE_END,
+    L4CUL1_ERR_NOT_IN_FLIGHT            = 0x02 + L4CTL1_ERR_CAUSE_END,
+    L4CUL1_ERR_PARA_UL_FREQ             = 0x03 + L4CTL1_ERR_CAUSE_END,
+    L4CUL1_ERR_COMMAND                  = 0x04 + L4CTL1_ERR_CAUSE_END,
+    /*0x05 ~ 0x09 are reserved for future use*/
+    L4CUL1_ERR_CAUSE_END                = 0x0A + L4CTL1_ERR_CAUSE_END,
+
+    /*No Error cause*/
+    L4C_L1_NO_ERROR                     = 0x01 + L4CUL1_ERR_CAUSE_END,
+
+    /************************AT+ERFTX error causes END**********************/
+    IND_AT_CMD_CAUSE_END                = 0xFF + IND_AT_CMD_CAUSE_START,
+/* ============================== Individual AT CMD cause ============================== */
+
+/* ============================== VGSM cause ============================== */
+    VGSM_CAUSE_START                    = 0x01A00,
+    #include "vgsm_cause_enum.h"        /* To avoid file dependency of common file */
+    VGSM_CAUSE_END                      = 0xFF + VGSM_CAUSE_START,
+/* ============================== VGSM cause ============================== */
+
+
+/* ============================== Ext. Part for PAM cause ============================== */
+    EXT_PAM_CAUSE_START = 0x01B00,
+
+   PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_8  =  8 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Operator determined barring */
+    PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_26 = 26 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Insufficient Resource for specific DNN */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_27 = 27 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Missing or unknown DNN */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_28 = 28 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; unknown PDU session type */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_29 = 29 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; User authentication or authorization failed */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_30 = 30 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Request rejected by Serving GW or PDN GW */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_31 = 31 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Request rejected unspecified */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_32 = 32 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Service option not supported */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_33 = 33 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Requested service option not subscribed */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_34 = 34 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Service option temporarily out of order */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_35 = 35 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; PTI already in use                      */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_36 = 36 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Regular deactivation                    */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_37 = 37 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; EPS QoS not accepted                    */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_38 = 38 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Network failure                         */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_39 = 39 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Reactivation requested */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_41 = 41 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Semantic error in the TFT operation    */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_42 = 42 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Syntactical error in the TFT operation */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_43 = 43 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Invalid PDU session identity           */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_44 = 44 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Semantic errors in packet filter(s)    */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_45 = 45 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Syntactical errors in packet filter(s) */
+    PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_46 = 46 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Out of LADN Service Area */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_47 = 47 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; PTI mismatch                       */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_49 = 49 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Last PDN disconnection not allowed */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_50 = 50 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; IPv4 only allowed */
+    PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_51 = 51 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; IPv6 only allowed */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_54 = 54 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; PDN session does not exist */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_55 = 55 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Multiple PDN connections for a given APN not allowed */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_56 = 56 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Collision with network initiated request             */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_57 = 57 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; IPv4v6 only allowed */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_59 = 59 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Unsupported QCI value */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_58 = 58 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; PDU session type Unstructed only allowed */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_61 = 61 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; PDU session type Ethernet only allowed */
+    PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_65 = 65 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Maximum number of PDU sessions reached */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_66 = 66 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Requested APN not supported in current RAT and PLMN combination */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_67 = 67 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; insufficient resources for specific slice and DNN */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_68 = 68 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; not supported SSC mode */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_69 = 69 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; insufficient resources for specific slice */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_70 = 70 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Missing or unknown DNN in a slice */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_81 = 81 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Invalid PTI value */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_82 = 82 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Maximum data rate per UE for user-plane integrity protection is too low */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_83 = 83 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Semantic error in QoS operation                     */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_84 = 84 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Syntactic error in QoS operation                    */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_85 = 85 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Invalid mapped EPS bearer identity                  */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_95 = 95 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Semantically incorrect message                      */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_96 = 96 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Invalid mandatory information                       */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_97 = 97 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Message type non-existent or not implemented        */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_98 = 98 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Message type not compatible with protocol state     */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_99 = 99 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Information element non-existent or not implemented */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_100 = 100 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Conditional IE error                           */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_101 = 101 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Message not compatible with the protocol state */
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_CAUSE_111 = 111 + EXT_PAM_CAUSE_START,  /* Specific for 5GC; Protocol error unspecified                     */
+
+	PAM_5G_PDU_SESSION_NOT_FORWARDED_CAUSE_START = EXT_PAM_CAUSE_START + 128, /* Specific for 5GC; Allocate a range for VGMM Cause indicating VGSM Message not Forwarded */
+    PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_DNN_NOT_SUPPORT_IN_SLICE = PAM_5G_PDU_SESSION_NOT_FORWARDED_CAUSE_START + 1,
+	PAM_5G_PDU_SESSION_ACCESS_REJECT_DUE_TO_MAX_PDU_SESSION_REACHED  = PAM_5G_PDU_SESSION_NOT_FORWARDED_CAUSE_START + 2,
+    PAM_VGSM_REJECT_DUE_TO_LADN_OUT_OF_SERVICE_AREA = PAM_5G_PDU_SESSION_NOT_FORWARDED_CAUSE_START + 3,
+
+    EXT_PAM_CAUSE_END = EXT_PAM_CAUSE_START + 0xFF,
+
+/* ============================== ~EXT PAM cause ============================== */
+
+    REPORT_TO_UPPER_LAYER_CAUSE_END = 0x3000
+
+}ps_cause_enum;
+#undef  VGSM_SPEC_CAUSE_ENUM
+#undef  VGSM_PROPRIETARY_CAUSE_ENUM
+
+
+typedef enum {// string  SIA   SIB   SIC
+   L4_ALLSS,
+   L4_EMLPP,  // "75",    -     -     -
+   L4_EMLPP0, // "750",   -     -     -
+   L4_EMLPP1, // "751",   -     -     -
+   L4_EMLPP2, // "752",   -     -     -
+   L4_EMLPP3, // "753",   -     -     -
+   L4_EMLPP4, // "754",   -     -     -
+   L4_CD,     // "66",    -     -     -
+   L4_CLIP,   // "30",    -     -     -
+   L4_CLIR,   // "31",    -     -     -
+   L4_COLP,   // "76",    -     -     -
+   L4_COLR,   // "77",    -     -     -
+   L4_CFU,    // "21",   DN    BS     -
+   L4_CFB,    // "67",   DN    BS     -
+   L4_CFNRY,  // "61",   DN    BS     T
+   L4_CFNRC,  // "62",   DN    BS     -
+   L4_CFA,    // "002",  DN    BS     T
+   L4_CFC,    // "004",  DN    BS     T
+   L4_CW,     // "43",   BS     -     -
+   L4_HOLD,
+   L4_MPTY,
+   L4_UUS1,   // "361",   R     -     -
+   L4_UUS2,   // "362",   R     -     -
+   L4_UUS3,   // "363",   R     -     -
+   L4_UUSALL, // "360",   R     -     -
+   L4_BAOC,   // "33",   PW    BS     -
+   L4_BOIC,   // "331",  PW    BS     -
+   L4_BOICEXHC, // "332",PW    BS     -
+   L4_BAIC,   // "35",   PW    BS     -
+   L4_BAICROAM, // "351",PW    BS     -
+   L4_BAC,    // "330",  PW    BS     -
+   L4_BOC,    // "333",  PW    BS     -
+   L4_BIC,    // "353",  PW    BS     -
+   L4_ECT,    // "96",
+   L4_CCBS,   // "37",    N (1-5)
+   L4_FM,     // "214",
+   L4_CNAP,   // "300",   -     -     -
+   L4_MSP1,   // "591",  PW
+   L4_MSP2,   // "592",  PW
+   L4_MSP3,   // "593",  PW
+   L4_MSP4,   // "594",  PW
+   L4_MC,     // "88",       NBR_USER (1-NBR_SB)
+   L4_CDIP
+} l4_ss_code_enum;
+
+typedef enum { //                           Basic Service group number
+// L4_ALL_BS_AND_TS               = N/A    1-12
+//         TELESERVICES
+   L4_ALL_TELESERVICES            = 10, // 1-6 + 12
+   L4_TELEPHONY                   = 11, // 1
+   L4_ALL_DATA_TELESERVICES       = 12, // 2-6
+   L4_FACSIMILE_SERVICES          = 13, // 6
+   L4_SHORT_MESSAGE_SERVICES      = 16, // 2
+   L4_ALL_TELESERVICES_EXCEPT_SMS = 19, // 1 + 3-6 + 12
+//         VOICE GROUP SERVICES
+   L4_VOICE_GROUP_CALL_SERVICE    = 17,
+   L4_VOICE_BROADCAST_SERVICE     = 18,
+//         BEARER SERVICE
+   L4_ALL_BEARER_SERVICES         = 20, // 7-11
+   L4_ALL_ASYNC_SERVICES          = 21, // 7
+   L4_ALL_SYNC_SERVICES           = 22, // 8
+   L4_ALL_DATA_CIRCUIT_SYNC       = 24, // 8
+   L4_ALL_DATA_CIRCUIT_ASYNC      = 25, // 7
+   L4_AUXILIARY_TELEPHONY         = 89,
+   L4_ALL_GPRS_BEARER_SERVICES    = 99,  // 13
+   /* Johnny: these enums do not exist in 22.030, only for MMI display,
+      user should not input these enums for tele/bearer service code */
+   L4_BS_ALLPADACCESSCA_SERVICES = 100,
+   L4_BS_ALLDATAPDS_SERVICES = 101
+} l4_bs_code_enum;
+
+typedef enum {
+    L4_GERAN_RXLEVEL,
+    L4_GERAN_BER,
+    L4_UTRA_RSCP,
+    L4_UTRA_ECNO,
+    L4_EUTRA_RSRQ,
+    L4_EUTRA_RSRP,
+    L4_NR_SS_RSRQ,
+    L4_NR_SS_RSRP,
+    L4_NR_SS_SINR,
+} l4_cesq_param_enum;
+
+
+typedef enum{
+    L4C_AT_CMD_PARAM_NONE,      //init value
+    L4C_AT_CMD_PARAM_EMPTY,     //e.g. AT+XXX=,,  param1=NULL
+    L4C_AT_CMD_PARAM_INTEGER,
+    L4C_AT_CMD_PARAM_SIGN_INTEGER,
+    //L4C_AT_CMD_PARAM_STRING_PTR,
+    L4C_AT_CMD_PARAM_STRING_S,
+    L4C_AT_CMD_PARAM_MAX
+}l4c_at_cmd_param_type;
+
+typedef enum{
+    L4C_AT_CMD_PROCESS_ERROR,
+    L4C_AT_CMD_PROCESS_WAIT_CNF,
+    L4C_AT_CMD_PROCESS_IMMEDIATE_OK,
+    L4C_AT_CMD_PROCESS_MAX,
+}l4c_at_cmd_process_type_enum;
+
+
+typedef enum
+{
+    UE_MODE_PS_MODE_2       = 0,
+    UE_MODE_CS_PS_MODE_1,
+    UE_MODE_CS_PS_MODE_2,
+    UE_MODE_PS_MODE_1,
+    UE_MODE_INVALID,
+
+} ue_mode_enum;
+
+typedef enum
+{
+    VOICE_CENTRIC = 0,
+    DATA_CENTRIC
+} ue_usage_setting_enum;
+
+typedef enum
+{
+    SUSP_RESU_NORMAL_MODE = 0,
+    SUSP_RESU_SUSPEND_BY_MCC_CHANGE_MODE = 1,
+    SUSP_RESU_SUSPEND_BY_PLMN_CHANGE_MODE = 2,
+    SUSP_RESU_SUSPEND_ALL_MODE = 3,
+}susp_resu_mode_enum;
+
+typedef enum
+{
+    SUSP_RESU_SUSPEND_STATUS = 0,
+    SUSP_RESU_RESUME_STATUS = 1
+}susp_resu_status_enum;
+
+typedef enum
+{
+    SUSP_RESU_MODE_CHANGE = 0,
+    SUSP_RESU_RESUME_REQ = 1
+}susp_resu_action_enum;
+
+typedef enum
+{
+    SUSP_RESU_BY_GMSS = 0,
+    SUSP_RESU_BY_RAC = 1,
+    SUSP_RESU_BY_AP = 2,
+    SUSP_RESU_BY_SIM = 3,
+    SUSP_RESU_BY_L4C = 4,
+    SUSP_RESU_SRC_MAX
+}susp_resu_source_enum;
+
+typedef enum
+{
+    SUSP_RESU_OK = 0,
+	SUSP_RESU_ERROR = 1
+}susp_resu_result_enum;
+
+
+
+/* TS 27.007 && TS 24.167 */
+typedef enum
+{
+    L4_CS_VOICE_ONLY = 1,
+    L4_CS_VOICE_PREFERRED_IMS_PS_VOICE_AS_SECONDARY,        /* CS voice preferred, IMS PS Voice as secondary */
+    L4_IMS_PS_VOICE_PREFERRED_CS_VOICE_AS_SECONDARY,        /* IMS PS voice preferred, CS Voice as secondary */
+    L4_IMS_PS_VOICE_ONLY
+} l4_voice_domain_preference_enum;
+
+/* 34.109 */
+typedef enum{
+    RATCM_MSG_CLOSE_UE_TEST_LOOP = 0x40,
+    RATCM_MSG_CLOSE_UE_TEST_LOOP_COMPLETE = 0x41,
+    RATCM_MSG_OPEN_UE_TEST_LOOP = 0x42,
+    RATCM_MSG_OPEN_UE_TEST_LOOP_COMPLETE = 0x43,
+    RATCM_MSG_ACTIVATE_RB_TEST_MODE = 0x44,
+    RATCM_MSG_ACTIVATE_RB_TEST_MODE_COMPLETE = 0x45,
+    RATCM_MSG_DEACTIVATE_RB_TEST_MODE = 0x46,
+    RATCM_MSG_DEACTIVATE_RB_TEST_MODE_COMPLETE = 0x47,
+    RATCM_MSG_RESET_UE_POSITIONING_STORED_INFO = 0x48  //MAUI_02601231
+}ratcm_utest_loopback_mode_cmd_enum;
+
+typedef enum{
+    RATCM_MSG_CLOSE_UE_TEST_LOOP_MODE_1 = 0x00,
+    RATCM_MSG_CLOSE_UE_TEST_LOOP_MODE_2 = 0x01,
+    RATCM_MSG_CLOSE_UE_TEST_LOOP_MODE_3 = 0x02,
+    RATCM_MSG_CLOSE_UE_TEST_LOOP_MODE_4 = 0x03
+}ratcm_utest_close_loop_mode_enum;
+
+typedef enum
+{
+    L4_IMS_SMMA_OP_UPDATE_MEM = 1,
+    L4_IMS_SMMA_OP_UPDATE_FILE,
+} l4_ims_smma_op_enum;
+
+/* TS27.007 AT+CVMOD */
+typedef enum
+{
+    VOICE_MODE_CS_ONLY,
+    VOICE_MODE_VOIP_ONLY,
+    VOICE_MODE_CS_PREFERRED,
+    VOICE_MODE_VOIP_PREFERRED
+} voice_mode_enum;
+
+/* For VDM triggered PLMN search request */
+typedef enum
+{
+    VDM_NW_SELECTION_ANY_PLMN_FOR_EMERG = 0,
+    VDM_NW_SELECTION_PLMN_RESELECTION
+} vdm_nw_selection_type_enum;
+
+/* For VDM triggered PLMN search result */
+typedef enum
+{
+    VDM_NWSEL_RESULT_FAILURE = 0,
+    VDM_NWSEL_RESULT_SUCCESS
+} vdm_nw_selection_result_enum;
+
+/* For VDM Gemini CS semaphore operations */
+typedef enum{
+    VDM_VOICE_STATUS_START = 0,
+    VDM_VOICE_STATUS_STOP
+} vdm_voice_status_enum;
+
+typedef enum
+{
+    VDM_CALL_DOMAIN_NULL = 0,   // VDM ADS fails or domain not decided yet
+    VDM_CALL_DOMAIN_WG_CS = 1,  // 3gpp CS
+    VDM_CALL_DOMAIN_C2K_CS = 2, // 3gpp2 CS
+    VDM_CALL_DOMAIN_LTE = 3,
+    VDM_CALL_DOMAIN_WIFI = 4,
+    VDM_CALL_DOMAIN_NR = 5,
+    VDM_CALL_DOMAIN_MAX,
+} vdm_call_domain_enum;
+
+#define VG_ACCESS_CATEGORY_EMERGENCY_BM      0x0000000000000004
+#define VG_ACCESS_CATEGORY_MO_MMTEL_VOICE_BM 0x0000000000000010
+#define VG_ACCESS_CATEGORY_MO_MMTEL_VIDEO_BM 0x0000000000000020
+#define VG_ACCESS_CATEGORY_MO_SMS_BM         0x0000000000000040
+#define VG_ACCESS_CATEGORY_IMS_REG_BM        0x0000000000000200
+
+/* type of IMS service */
+typedef enum
+{
+    IMS_SERVICE_TYPE_NOT_DEFINED = 0,
+    IMS_SERVICE_TYPE_NORMAL_VOICE_CALL,      // MMTEL voice
+    IMS_SERVICE_TYPE_NORMAL_VIDEO_CALL,      // MMTEL video
+    IMS_SERVICE_TYPE_EMERGENCY_CALL,
+    IMS_SERVICE_TYPE_SMS,                    // SMSoIP
+    IMS_SERVICE_TYPE_NORMAL_VOICE_CALL_HO,   // MMTEL voice handover from WLAN
+    IMS_SERVICE_TYPE_NORMAL_VIDEO_CALL_HO,   // MMTEL video handover from WLAN
+    IMS_SERVICE_TYPE_SMS_HO,                 // SMSoIP handover from WLAN
+    IMS_SERVICE_TYPE_REG_SIG,                // IMS registration related signalling
+    IMS_SERVICE_TYPE_MAX,                    // Add new services above here
+} ims_service_type_enum;
+
+/* IMS service/UAC session */
+typedef enum
+{
+    IMS_SERVICE_STATUS_START = 0,
+    IMS_SERVICE_STATUS_STOP,
+
+} ims_service_status_enum;
+
+/* UAC result of IMS service */
+typedef enum
+{
+    IMS_SERVICE_UAC_RESULT_NONE = 0,         // for UAC stop only
+    IMS_SERVICE_UAC_RESULT_OK,               // allowed
+    IMS_SERVICE_UAC_RESULT_BARRED,
+    IMS_SERVICE_UAC_RESULT_NO_COVERAGE,
+    IMS_SERVICE_UAC_RESULT_GEMINI_SUSPEND,
+    IMS_SERVICE_UAC_RESULT_DEREGISTERED
+
+} ims_service_uac_result_enum;
+
+typedef enum
+{
+    ERRC_INITIAL,
+    ERRC_STANDBY,
+    ERRC_IDLE,
+    ERRC_CONNECTED,
+    ERRC_FLIGHT,
+    ERRC_IDLE_IRSUS,
+    ERRC_CONN_IRSUS
+} em_errc_state_enum;
+
+typedef enum
+{
+    CN_ASSOCIATE_EPC,
+    CN_ASSOCIATE_5GC
+} cn_associate_enum;
+
+typedef enum
+{
+    LTE_RRC_STATE_NULL,
+    LTE_RRC_STATE_IDLE,
+    LTE_RRC_STATE_ATMPT_CONNECTION,
+    LTE_RRC_STATE_CONNECTED,
+    LTE_RRC_STATE_ENDING,
+    LTE_RRC_STATE_ATMPT_OUTBND_MOBILITY,
+    LTE_RRC_STATE_ATMPT_INBND_MOBILITY,
+    LTE_RRC_STATE_LIMIT_SERVICE
+} em_lte_rrc_state_enum;
+
+typedef enum
+{
+    LTE_RRC_CAUSE_EST_EMERGENCY,
+    LTE_RRC_CAUSE_EST_HIGH_PRIO_ACC,
+    LTE_RRC_CAUSE_EST_MT_ACC,
+    LTE_RRC_CAUSE_EST_MO_SIGNAL,
+    LTE_RRC_CAUSE_EST_MO_DATA,
+    LTE_RRC_CAUSE_REEST_RECFG_FAIL,
+    LTE_RRC_CAUSE_REEST_HO_FAIL,
+    LTE_RRC_CAUSE_REEST_OTHER_FAIL,
+    LTE_RRC_CAUSE_REL_OTHER_RECFG_FAIL,
+    LTE_RRC_CAUSE_REL_CONN_FAIL_IRAT_RESEL,
+    LTE_RRC_CAUSE_REL_CONN_FAIL_T311_EXP,
+    LTE_RRC_CAUSE_REL_CONN_FAIL_CELL_NOT_SUIT,
+    LTE_RRC_CAUSE_REL_CONN_FAIL_REEST_REJ,
+    LTE_RRC_CAUSE_REL_LOAD_BAL_TAU_REQD,
+    LTE_RRC_CAUSE_REL_OTHER,
+    LTE_RRC_CAUSE_REL_T310_EXP,
+    LTE_RRC_CAUSE_REL_RND_ACC,
+    LTE_RRC_CAUSE_REL_MAX_RLC_RETRANS,
+    LTE_RRC_CAUSE_REL_SUCC_MOB_FROM_EUTRAN,
+    LTE_RRC_CAUSE_EST_FAIL_NO_RESP_FROM_CELL,
+    LTE_RRC_CAUSE_EST_FAIL_REJ,
+    LTE_RRC_CAUSE_EST_FAIL_CELL_RESEL,
+    LTE_RRC_CAUSE_EST_FAIL_ABORTED,
+    LTE_RRC_CAUSE_EST_FAIL_CELL_BARRED,
+    LTE_RRC_CAUSE_EST_FAIL_T300_EXP,
+    LTE_RRC_CAUSE_EST_FAIL_OTHER,
+    LTE_RRC_CAUSE_EST_MO_CALL,
+    LTE_RRC_CAUSE_REEST_CMPL,
+    LTE_RRC_CAUSE_RESEL_FAIL,
+    LTE_RRC_CAUSE_ENTER_LTE_FROM_STBY,
+    LTE_RRC_CAUSE_ENTER_STBY,
+    LTE_RRC_CAUSE_ABORT,
+    LTE_RRC_CAUSE_EST_MO_VOLTE_CALL,
+    LTE_RRC_CAUSE_REL_CSFB_HIGH,
+    LTE_RRC_CAUSE_NO_SERVICE = 254,
+    LTE_RRC_CAUSE_NA = 255
+} em_lte_rrc_cause_enum;
+
+/*****************************************************************************
+* DESCRIPTION
+*   This enum is defined the state for +CUSATS:<UICC_STATE> report
+*****************************************************************************/
+
+typedef enum
+{
+    CUSATS_BEFORE_PROFILE_DL,       // Only used for +CUSATA: <UICC_state>
+    CUSATS_UICC_START_HALTED,
+    CUSATS_PROFILE_DL_COMPLETED,
+    CUSATS_AWAITING_PIN_VERIFY,
+    CUSATS_UICC_ACTIVE
+}cusats_uicc_state_enum;
+
+/*****************************************************************************
+* DESCRIPTION
+*   This enum is defined for status of executed 3/4G full band search before
+*   EAS sends CELLSELECT_IND to ENAS with NO_CELL
+*****************************************************************************/
+typedef enum
+{
+    FULL_BAND_SEARCHED_FALSE = 0,
+    FULL_BAND_SEARCHED_TRUE,
+    FULL_BAND_SEARCHED_UNKNOWN
+} full_band_searched_enum;
+
+/*****************************************************************************
+* DESCRIPTION
+*   This enum is defined for the type of iRAT
+*****************************************************************************/
+typedef enum
+{
+    AP_BASED_IRAT,
+    MD_BASED_IRAT,
+    MD_BASED_IRAT_LCG,
+    CDMA_ONLY_MODE //no effect on LWG modem, it is used in CDMA modem
+}l4c_irat_type_enum;
+
+
+/*****************************************************************************
+* DESCRIPTION
+*   This enum is defined for result of AT+ECMSS
+*****************************************************************************/
+typedef enum
+{
+    CMSS_UNABLE_TO_GET_PDU = 0,
+    CMSS_OPERATION_SUCCESS = 1,
+    CMSS_FAIL_OVER_CS_GET_PDU_SUCCESS = 2
+} ecmss_result_type_enum;
+
+/*****************************************************************************
+* DESCRIPTION
+*   This enum is defined for the result of set AUX PLMN
+*****************************************************************************/
+typedef enum
+{
+   SET_AUX_PLMN_SUCCESSFUL = 0,
+   SET_AUX_PLMN_FAIL = 1
+} set_aux_plmn_result_enum;
+
+/*****************************************************************************
+* DESCRIPTION
+*   This enum is defined for the result of set MRU command
+*****************************************************************************/
+typedef enum
+{
+   SET_MRU_SUCCESSFUL = 0,
+   SET_MRU_INVALID_CHANNEL = 1,
+   SET_MRU_INVALID_RAT = 2,
+   SET_MRU_INVALID_PLMN = 3
+} set_mru_result_enum;
+
+/*****************************************************************************
+* DESCRIPTION
+*   This enum is defined for the reason of RATCM trigger GAS to do the init procedure
+*   Different reason will lead to different init flow
+*   This is also used for RAC init procedure and its related modules
+*****************************************************************************/
+typedef enum
+{
+    POWER_ON,
+    SIM_SWITCH,
+    DYNAMIC_SBP
+} init_cause_enum;
+
+/*****************************************************************************
+* DESCRIPTION
+*   This enum is defined for reconfigue type of re-init procedure triggered
+*   by modem itself.
+*****************************************************************************/
+typedef enum
+{
+    RECONFIG_SIM_SWITCH = 1,
+    RECONFIG_SBP_CHANGE = 2,
+    RECONFIG_DUPLEX_MODE = 4,
+    RECONFIG_IMS_CHANGE = 8,
+
+    RECONFIG_PRE_DSBP_CHANGE = 0x10,
+    RECONFIG_DSBP_CHANGE = 0x20,
+    RECONFIG_PRE_DSBP_CHANGE_ALL = 0x40,
+    RECONFIG_DSBP_CHANGE_ALL = 0x80,
+
+    RECONFIG_DSBP_ALL_RF_OFF= 0x100,
+    RECONFIG_DSBP_ALL_RF_ON = 0x200,
+
+    RECONFIG_DSBP_NOT_OCCUR = 0x400,  // indicates no DSBP Reconfigure for correspondign SIM Ready
+
+} l4c_me_reconfig_enum;
+
+// [MD DSBP] temp. usage before AP is ready, should be deleted after MD DSBP is ready
+#define _MD_DSBP_   1
+/*****************************************************************************
+* DESCRIPTION
+*   This enum is defined for cause of RF_OFF_REQ
+*****************************************************************************/
+typedef enum
+{
+    RFOFF_CAUSE_UNSPECIFIED = 0,        /* Default value */
+    RFOFF_CAUSE_DUPLEX_MODE = 1,        /* RF off cause when executing duplex mode (e.g. receiving +ECSRA) */
+    RFOFF_CAUSE_FLIGHT_MODE = 2,          /* RF off cause when UE enter into flight mode (triggered by user) */
+    RFOFF_CAUSE_SIM_SWITCH = 3,         /* RF off cause when performaing SIM switch */
+    RFOFF_CAUSE_DSBP = 4,              /* RF off cause when performing DSBP */
+    RFOFF_CAUSE_MAX = RFOFF_CAUSE_DSBP,
+} rfoff_cause_enum;
+
+/*****************************************************************************
+* DESCRIPTION
+*   This enum is defined for RF on/off usage of L4 and Middleman modules
+*****************************************************************************/
+typedef enum
+{
+    L4_RF_OFF = 0,
+    L4_RF_ON = 1,
+} l4_rf_state_enum;
+
+/*****************************************************************************
+* DESCRIPTION
+*   This enum is defined for SIM on/off usage of L4 and Middleman modules
+*****************************************************************************/
+typedef enum
+{
+    L4_SIM_OFF = 0,
+    L4_SIM_ON = 1,
+} l4_sim_state_enum;
+
+/*****************************************************************************
+* DESCRIPTION
+*   This enum is defined for tools to identify modem features.
+*****************************************************************************/
+typedef enum
+{
+    MODEM_LR11 = 1,
+    MODEM_LR12 = 2,
+    MODEM_GEN93= 3
+} ps_tool_info_enum;
+
+typedef enum{
+    SIGNAL_MODULATION_BPSK,
+    SIGNAL_MODULATION_QPSK,
+    SIGNAL_MODULATION_8PSK,
+    SIGNAL_MODULATION_16QAM,
+    SIGNAL_MODULATION_32QAM,
+    SIGNAL_MODULATION_64QAM,
+    SIGNAL_MODULATION_INVALID = 0xFF
+} signal_modulation_enum;
+
+typedef enum
+{
+    CA_CONFIGURATION,
+    CA_ACTIVATION
+} ca_info_enum;
+
+typedef enum
+{
+    CA_CONFIGURED,
+    CA_NOT_CONFIGURED,
+    CA_ACTIVATED,
+    CA_DEACTIVATED
+} ca_state_enum;
+
+typedef enum
+{
+    CA_ICON_BY_CONFIG,
+    CA_ICON_BY_ACTIVATION
+} ca_icon_display_mode_enum;
+
+typedef enum
+{
+    GMSS_RAT_INVALID = 0,                              /* Invalid RAT */
+    GMSS_RAT_GSM = 1,                                /* GSM */
+    GMSS_RAT_UMTS = 2,                                /* UMTS */
+    GMSS_RAT_GSM_UMTS = GMSS_RAT_GSM | GMSS_RAT_UMTS,    /* UMTS & GSM*/
+    GMSS_RAT_LTE = 4,                               /* LTE */
+    GMSS_RAT_GSM_LTE = GMSS_RAT_GSM | GMSS_RAT_LTE,   /* LTE & UMTS*/
+    GMSS_RAT_UMTS_LTE = GMSS_RAT_UMTS | GMSS_RAT_LTE,   /* LTE & GSM*/
+    GMSS_RAT_GSM_UMTS_LTE = GMSS_RAT_GSM_UMTS | GMSS_RAT_LTE, /* LTE & UMTS & GSM */
+    GMSS_RAT_CDMA2000_1xRTT = 32,                      /* CDMA2000 1xRTT */
+    GMSS_RAT_CDMA2000_HRPD = 64,                       /* CDMA2000 HRPD (1xEV-DO) */
+    GMSS_RAT_3GPP2_ALL = GMSS_RAT_CDMA2000_1xRTT | GMSS_RAT_CDMA2000_HRPD,   /* All 3GPP2 access technology */
+    GMSS_RAT_C2K = GMSS_RAT_3GPP2_ALL,
+    GMSS_RAT_GSM_C2K = GMSS_RAT_GSM | GMSS_RAT_C2K,
+    GMSS_RAT_UMTS_C2K = GMSS_RAT_UMTS | GMSS_RAT_C2K,
+    GMSS_RAT_LTE_C2K = GMSS_RAT_LTE | GMSS_RAT_C2K,
+    GMSS_RAT_GSM_LTE_C2K = GMSS_RAT_GSM_LTE | GMSS_RAT_C2K,
+    GMSS_RAT_UMTS_LTE_C2K = GMSS_RAT_UMTS_LTE | GMSS_RAT_C2K,
+    GMSS_RAT_GSM_UMTS_C2K = GMSS_RAT_GSM_UMTS | GMSS_RAT_C2K,
+    GMSS_RAT_GSM_UMTS_LTE_C2K = GMSS_RAT_GSM_UMTS_LTE | GMSS_RAT_C2K,
+
+
+    GMSS_RAT_NR = 128,                                 /* New Radio */
+    GMSS_RAT_LTE_NR = GMSS_RAT_LTE | GMSS_RAT_NR,
+    GMSS_RAT_GSM_NR = GMSS_RAT_GSM | GMSS_RAT_NR,
+    GMSS_RAT_UMTS_NR = GMSS_RAT_UMTS | GMSS_RAT_NR,
+    GMSS_RAT_GSM_UMTS_NR = GMSS_RAT_GSM_UMTS | GMSS_RAT_NR,
+    GMSS_RAT_GSM_LTE_NR = GMSS_RAT_GSM_LTE | GMSS_RAT_NR,
+    GMSS_RAT_UMTS_LTE_NR = GMSS_RAT_UMTS_LTE | GMSS_RAT_NR,
+    GMSS_RAT_NR_C2K= GMSS_RAT_NR | GMSS_RAT_C2K,
+    GMSS_RAT_GSM_NR_C2K = GMSS_RAT_GSM_NR | GMSS_RAT_C2K,
+    GMSS_RAT_UMTS_NR_C2K = GMSS_RAT_UMTS_NR | GMSS_RAT_C2K,
+    GMSS_RAT_LTE_NR_C2K = GMSS_RAT_LTE_NR | GMSS_RAT_C2K,
+    GMSS_RAT_GSM_UMTS_NR_C2K = GMSS_RAT_GSM_UMTS_NR | GMSS_RAT_C2K,
+    GMSS_RAT_GSM_LTE_NR_C2K = GMSS_RAT_GSM_LTE_NR | GMSS_RAT_C2K,
+    GMSS_RAT_UMTS_LTE_NR_C2K = GMSS_RAT_UMTS_LTE_NR | GMSS_RAT_C2K,
+    GMSS_RAT_GSM_UMTS_LTE_NR = GMSS_RAT_GSM_UMTS_LTE | GMSS_RAT_NR,
+    GMSS_RAT_GSM_UMTS_LTE_NR_C2K = GMSS_RAT_GSM_UMTS_LTE_NR | GMSS_RAT_C2K,
+    GMSS_RAT_3GPP_ALL = GMSS_RAT_GSM_UMTS_LTE_NR  /* All 3GPP access technology */
+ } gmss_rat_enum;
+
+typedef enum
+{
+    EMC_SCAN_REQ_SOURCE_GMSS = 0,
+    EMC_SCAN_REQ_SOURCE_VDM = 1,
+    EMC_SCAN_REQ_MAX
+}emc_scan_source_enum;
+
+typedef enum
+{
+    UL_THROTTLE_NO_ACTION = 0,
+    UL_THROTTLE_ONGOING,
+    UL_THROTTLE_ABORTING
+} l4c_ipcore_ul_throttle_action_enum;
+
+typedef enum
+{
+    L4_PS_NULL_CONFIG   = 0,
+    L4_PS_ATTACH_CONFIG = 1,
+    L4_PS_DETACH_CONFIG = 2
+} l4_ps_type_config_enum;
+
+typedef enum
+{
+    L4_PS_CONFIG_FAIL = 0,
+    L4_PS_CONFIG_SUCCESS = 1,
+
+    /* For single PS project, another SIM PS detach action is not complete.
+          Inhereited from +CME ERROR: 4111 for AT+EGTYPE=4   */
+    L4_PS_CONFIG_DUAL_PS_ATTACH_CONFLICT = 4111,
+
+    /* For single PS project, cannot set both SIM to PS attach
+          Inherited from +CME ERRPR: 4112 for AT+EGTYPE=4  */
+    L4_PS_CONFIG_DUAL_ALWAYS_ATTACH_CONFLICT = 4112
+} l4_ps_config_result_enum;
+
+typedef enum
+{
+    SDM_RETRY_NONE = 0,
+    SDM_RETRY_CS_ONLY,
+    SDM_RETRY_IMS_ONLY,
+	SDM_RETRY_WIFI_CS_ONLY,
+    SDM_RETRY_PREFER_CS_TEHN_IMS,
+    SDM_RETRY_PREFER_IMS_TEHN_CS,
+    SDM_RETRY_NO_PREFERENCE,
+}sdm_retry_domain_preference_enum;
+
+typedef struct
+{
+    sdm_retry_domain_preference_enum when_TR1M_expires;
+}sdm_special_retry_setting;
+
+typedef struct
+{
+    kal_uint16 max_cs_trial_num;
+    kal_uint16 max_ims_trial_num;
+    kal_uint16 max_total_trial_num;
+    sdm_retry_domain_preference_enum general_retry_pref_for_cs_fail;
+    sdm_retry_domain_preference_enum general_retry_pref_for_ims_fail;
+    sdm_special_retry_setting special_retry_pref;
+}prefer_retry_domain_setting_struct;
+
+/* Procedure enums for PAM procedures */
+typedef enum {
+    PAM_PROC_NONE,
+    PAM_PRI_PDP_ACT,
+    PAM_SEC_PDP_ACT,
+    PAM_PDP_MODIFY,
+    PAM_PDP_MT_DEACT,
+    PAM_PDP_MO_DEACT
+} pam_procedure_enum ;
+
+/*****************************************************************************
+* DESCRIPTION
+*   This enum is defined for IA APN change cases.
+*****************************************************************************/
+
+// preserved to wait the removal of nwsel_eval_ia_apn_change_req_struct in nwsel_eval_struct.h
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#else
+
+typedef enum
+{
+    IA_APN_CHANGE_NAME = 0,     /* IA APN name change, NWSEL will judge if need to enable EUTRAN */
+    IA_APN_CHANGE_PARAMETER,    /* IA APN parameter change and previous attach failure due to wrong APN setting with corresponding cause, need to enable EUTRAN */
+    IA_APN_CHANGE_OTHER,        /* Any IA APN change other than above 2 causes and previous attach failure due to wrong APN setting */
+    IA_APN_CHANGE_HANDOVER,     /* need to enable EUTRAN and trigger a handover attach with corresponding APN*/
+    IA_APN_CHANGE_IMS_RELEASED, /* IA APN is IMS, IMS is released from WiFi. Need to enable EUTRAN */
+    IA_APN_CHANGE_IA_SET        /* Align EIAAPN set timing, to enable EUTRAN */
+} ia_apn_change_cause_enum;
+
+#endif
+
+typedef enum
+{
+/******North America******/
+    EMM_OP_ATT = 0,        //311410
+    EMM_OP_VZW,            //311480
+    EMM_OP_SPRINT,         //310120
+    EMM_OP_TMO_US,         //310026,310160,310490
+    EMM_OP_TELCEL,         //334020
+
+/******Sounth America*****/
+    EMM_OP_MOVISTAR,	   //71606
+
+/******China**************/
+    EMM_OP_CMCC,           //46000,46002,46004,46007,46008
+    EMM_OP_CU,             //46001,46006
+    EMM_OP_CT,             //46003,46011
+
+/******Taiwan*************/
+    EMM_OP_CHT,            //46692
+    EMM_OP_FAR_EAST,       //46601
+    EMM_OP_TWN,            //46697
+
+/******Asia Others********/
+    EMM_OP_TURKCELL,       //28601
+    EMM_OP_AWN,            //52003
+    EMM_OP_VDF_INDIA,      //40401,40405,40411,40413,40415,40420,40427,40430,40443,40446,40460,40484,40486,40488
+                           //40566,40567,405750,405751,405752,405753,405754,405755,405756
+    EMM_OP_BAL_INDIA,      //40402,40403,40406,40410,40416,40431,40440,40445,40449,40470,40490,40492,40493,40494,
+                           //40495,40496,40497,40498,40551,40552,40553,40554,40555,40556
+    EMM_OP_OOREDOO,        //41405
+    EMM_OP_KT,             //45002,45008
+    EMM_OP_RJIO_INDIA,     //405840,405854,405855,405856,405857,405858,405859,405860-405869,405870-405874
+    EMM_OP_PARTNER,        //42501
+
+/*******Europe***********/
+    EMM_OP_VDF_PORTUGAL,   //26801
+    EMM_OP_SEATEL,         //45611
+
+/**********South Korea*************/
+    EMM_OP_SKT,             //45005,45012
+    EMM_OP_LGU,             //45006
+
+    EMM_OP_NONE
+} emm_op_enum;
+
+typedef enum
+{
+/******North America******/
+    VGMM_OP_ATT = 0,        //311410
+    VGMM_OP_VZW,            //311480
+    VGMM_OP_SPRINT,         //310120
+    VGMM_OP_TMO_US,         //310026,310160,310490
+    VGMM_OP_TELCEL,         //334020
+
+/******Sounth America*****/
+    VGMM_OP_MOVISTAR,	    //71606
+
+/******China**************/
+    VGMM_OP_CMCC,           //46000,46002,46004,46007,46008
+    VGMM_OP_CU,             //46001,46006
+    VGMM_OP_CT,             //46003,46011
+
+/******Taiwan*************/
+    VGMM_OP_CHT,            //46692
+    VGMM_OP_FAR_EAST,       //46601
+    VGMM_OP_TWN,            //46697
+
+/******Asia Others********/
+    VGMM_OP_TURKCELL,       //28601
+    VGMM_OP_AWN,            //52003
+    VGMM_OP_VDF_INDIA,      //40401,40405,40411,40413,40415,40420,40427,40430,40443,40446,40460,40484,40486,40488
+                            //40566,40567,405750,405751,405752,405753,405754,405755,405756
+    VGMM_OP_BAL_INDIA,      //40402,40403,40406,40410,40416,40431,40440,40445,40449,40470,40490,40492,40493,40494,
+                            //40495,40496,40497,40498,40551,40552,40553,40554,40555,40556
+    VGMM_OP_OOREDOO,        //41405
+    VGMM_OP_KT,             //45002,45008
+    VGMM_OP_RJIO_INDIA,     //405840,405854,405855,405856,405857,405858,405859,405860-405869,405870-405874
+
+/*******Europe***********/
+    VGMM_OP_VDF_PORTUGAL,   //26801
+    VGMM_OP_SEATEL,         //45611
+    VGMM_OP_NONE
+} vgmm_op_enum;
+
+/*****************************************************************************
+* DESCRIPTION
+*   This enum is defined to sync 27.007 <AcT> definition for +CxREG command
+*****************************************************************************/
+typedef enum
+{
+    ACCESS_TECH_GSM = 0,
+    ACCESS_TECH_GSM_COMPACT = 1,
+    ACCESS_TECH_UTRAN = 2,
+    ACCESS_TECH_GSM_EGPRS = 3,
+    ACCESS_TECH_UTRAN_HSDPA = 4,
+    ACCESS_TECH_UTRAN_HSUPA = 5,
+    ACCESS_TECH_UTRAN_HSDPA_HSUPA = 6,
+    ACCESS_TECH_EUTRAN = 7,
+    ACCESS_TECH_EC_GSM_IOT = 8,
+    ACCESS_TECH_EUTRAN_NB_IOT = 9,
+    ACCESS_TECH_EUTRAN_5GCN = 10,
+    ACCESS_TECH_NR_5GCN = 11,
+    ACCESS_TECH_NR_EPS = 12,
+    ACCESS_TECH_NG_RAN = 13,
+    ACCESS_TECH_EUTRAN_NR_DUAL_CONNECTION = 14, // ENDC
+    ACCESS_TECH_MAX,
+    ACCESS_TECH_INVALID = 0xff,
+} access_technology_enum;
+
+typedef enum {
+    NWSEL_STATUS_IND_UPDATE_SEARCHING = 1,
+    /* NWSEL end search list, and report final state.
+    No service and limited service (acceptable cell) are known by NWSEL only. */
+    NWSEL_STATUS_IND_IN_NO_SERVICE = 2,
+    NWSEL_STATUS_IND_CAMP_ON_CELL = 3, // limited or normal service
+    NWSEL_STATUS_IND_IN_ABNORMAL_STATE = 4, // abnormal LU
+    NWSEL_STATUS_IND_IN_LIMITED_SERVICE = 5,
+} nwsel_status_enum;
+
+typedef enum {
+    NO_RESULT,
+    ATTACH_CNF,
+    DETACH_IND,
+} nas_sv_attach_detach_result_type_enum;
+
+#ifdef __GEMINI__
+
+typedef enum
+{
+	ABORT_SUCCESS = 0,
+	RETRY_AFTER_IRAT
+
+} rsim_auth_abort_result_enum;
+#endif
+
+//plz keep synced with ims_access_rat_enum in ims_interface_md.h
+typedef enum
+{
+    SCBM_RAT_LTE = 0,
+    SCBM_RAT_WIFI,
+    SCBM_RAT_EHRPD,
+    SCBM_RAT_GSM,
+    SCBM_RAT_UMTS,
+    SCBM_RAT_NUM
+} scbm_rat_enum;
+
+typedef enum
+{
+    EXIT_SCBM_INVALID,
+    EXIT_SCBM_TIMER_EXPIRE, //exit scbm on timer expiry
+    EXIT_SCBM_NORMAL_CALL,  //exit scbm due to normal call
+    EXIT_SCBM_ECC_CALL,     //exit scbm due to ECC (shall be start ECBM as instead)
+    EXIT_SCBM_SECOND_T911,  //exit scbm due to 2nd T911 (shall be re-started soon after)
+}exit_scbm_reason_enum;
+
+typedef enum
+{
+    MD_SCBM_EXIT,           //MD reports scbm is exited
+    MD_SCBM_ENTER,          //MD reports scbm is entered
+    MD_SCBM_DISABLE,        //MD reports scbm is disabled
+    MD_SCBM_REINIT_TIMER,   //MD reports scbm timer need to be re-init
+}md_scbm_status_enum;
+
+typedef enum
+{
+    VG_OPTION1 = 0x01, // ENAS + LTE
+    VG_OPTION2 = 0x02, // 5G NAS + NR
+    VG_OPTION3 = 0x04, // ENAS + LTE + NR
+    VG_OPTION1_OPTION2 = VG_OPTION1 | VG_OPTION2,
+    VG_OPTION1_OPTION3 = VG_OPTION1 | VG_OPTION3,
+    VG_OPTION1_OPTION2_OPTION3 = VG_OPTION1 | VG_OPTION2 | VG_OPTION3,
+    VG_ENDC    = VG_OPTION3,
+    VG_OPTION4 = 0x08, // 5G NAS + NR + ELTE
+    VG_NEDC    = VG_OPTION4,
+    VG_OPTION5 = 0x10, // 5G NAS + ELTE
+    VG_OPTION7 = 0x40, // 5G NAS + ELTE + NR
+    VG_NG_ENDC = VG_OPTION7,
+    VG_OPTION2_OPTION3 = VG_OPTION2 | VG_OPTION3,
+    VG_OPTION2_OPTION3_OPTION5 = VG_OPTION2_OPTION3 | VG_OPTION5,
+    VG_OPTION1_OPTION2_OPTION3_OPTION5 = VG_OPTION1 | VG_OPTION2 | VG_OPTION3 | VG_OPTION5,
+} vg_option_enum;
+
+typedef enum
+{
+	  GSM_CAPABILITY = 0x01,
+} rat_capability_enum;
+
+#define VGSM_MAX_QFI_NUM        64
+
+typedef enum {
+    VGSM_FLOW_ACTION_EST,
+    VGSM_FLOW_ACTION_MOD,
+    VGSM_FLOW_ACTION_REL,
+
+    VGSM_MAX_NUM_OF_FLOW_ACTION,
+} vgsm_flow_action_enum;
+
+typedef enum {
+    VGSM_FLOW_STATE_INACTIVE,
+    VGSM_FLOW_STATE_ACTIVE,
+    VGSM_MAX_NUM_OF_FLOW_STATE,
+} vgsm_flow_state_enum;
+
+typedef enum {
+    ALWAYS_ON_PDU_SESSION_IND_NOT_ALLOWED = 0,
+    ALWAYS_ON_PDU_SESSION_IND_REQUIRED = 1,
+
+    ALWAYS_ON_PDU_SESSION_IND_ENUM_MAX,
+} always_on_pdu_session_ind_enum;
+
+typedef enum {
+    ALWAYS_ON_PDU_SESSION_REQ_NOT_REQUESTED = 0,
+    ALWAYS_ON_PDU_SESSION_REQ_REQUESTED = 1,
+
+    ALWAYS_ON_PDU_SESSION_REQ_ENUM_MAX,
+} always_on_pdu_session_req_enum;
+
+typedef enum {
+    PDUS_ACCESS_TYPE_3GPP,
+    PDUS_ACCESS_TYPE_N3GPP,
+    PDUS_ACCESS_TYPE_ANY,
+    PDUS_ACCESS_TYPE_MAX_NUM,
+} pdus_access_type_enum;
+
+typedef enum {
+    REL_REQ_BEHAVIOR_REGULAR_RELEASE,
+    REL_REQ_BEHAVIOR_LOCAL_RELEASE_WITHOUT_REGISTRATION_UPDATE,
+    REL_REQ_BEHAVIOR_LOCAL_RELEASE_WITH_REGISTRATION_UPDATE,
+} rel_req_behavior_enum;
+
+/*****************************************************************************
+* DESCRIPTION
+*   Secondary Cell Group connected status, used by EN-DC oe NE-DC
+*****************************************************************************/
+typedef enum
+{
+    INDICATED_NR_SCG_STATUS_NO_UPDATE = 0,      // recipient could drop the info
+    INDICATED_NR_SCG_STATUS_DISCONNECTED,
+    INDICATED_NR_SCG_STATUS_CONNECTED,
+} indicated_nr_scg_status_enum;
+
+/*****************************************************************************
+* DESCRIPTION
+*   NRRC state
+*****************************************************************************/
+
+typedef enum
+{
+    INDICATED_NRRC_STATE_IDLE,
+    INDICATED_NRRC_STATE_CONNECTED,
+    INDICATED_NRRC_STATE_INACTIVE,
+	INDICATED_NRRC_STATE_ENDC,
+} indicated_nrrc_state_enum;
+
+typedef enum
+{
+    VDM_CALL_STATUS_FIRST_CALL_ATTEMPT = 0x01,
+    VDM_CALL_STATUS_FIRST_IMS_CALL_ATTEMPT = 0x02,
+    VDM_CALL_STATUS_FIRST_IMS_CALL_CONNECTED = 0x04,
+    VDM_CALL_STATUS_LAST_IMS_CALL_DISCONNECTED = 0x08, // connected ims call -> disconnected
+    VDM_CALL_STATUS_ALL_IMS_CALL_END = 0x10,
+    VDM_CALL_STATUS_ALL_CALL_END = 0x20,
+    VDM_CALL_STATUS_IMS_GROUP = VDM_CALL_STATUS_FIRST_IMS_CALL_ATTEMPT | VDM_CALL_STATUS_FIRST_IMS_CALL_CONNECTED | VDM_CALL_STATUS_LAST_IMS_CALL_DISCONNECTED | VDM_CALL_STATUS_ALL_IMS_CALL_END,
+    VDM_CALL_STATUS_ALL = VDM_CALL_STATUS_IMS_GROUP | VDM_CALL_STATUS_FIRST_CALL_ATTEMPT | VDM_CALL_STATUS_ALL_CALL_END,
+} vdm_call_status_enum;
+
+typedef kal_uint8 op_feature_bitmap;
+
+typedef enum
+{
+    OP_FEATURE_NONE                     = 0,
+    OP_FEATURE_VG_OPTION2_DISABLED      = 1<<0, // 1
+    OP_FEATURE_VG_OPTION3_DISABLED      = 1<<1, // 2
+    OP_FEATURE_PREFER_ENDC              = 1<<2, // 4
+
+    OP_FEATURE_GSM_SUNSET               = 1<<3, // 8
+    OP_FEATURE_WCDMA_SUNSET             = 1<<4, // 16
+    OP_FEATURE_UMTS_SUNSET              = 1<<5, // 32
+    OP_FEATURE_SA_STORED_ONLY_SEARCH    = 1<<6, // 64
+    OP_FEATURE_ENDC_BEFORE_SA_SEARCH    = 1<<7, // 128
+    OP_FEATURE_END = OP_FEATURE_ENDC_BEFORE_SA_SEARCH // should be the last entry
+} op_feature_enum;
+
+
+/*****************************************************************************
+* SCG Event type
+*****************************************************************************/
+typedef enum {
+   SCG_EVENT_NONE = 0,
+   SCG_EVENT_FAILURE,       // When UE occurred SCG failure
+   SCG_EVENT_RELEASE,       // Whatever it is released by UE or NW
+} scg_event_enum;
+
+/*****************************************************************************
+* DESCRIPTION
+*   PLMN operation
+*****************************************************************************/
+typedef enum {
+    SET_PLMN_FREQ_OPERATION_REMOVE_ALL,
+    SET_PLMN_FREQ_OPERATION_UPDATE
+} set_plmn_freq_operation_enum;
+
+/*****************************************************************************
+* For globalized MAX CID/PSI definition
+*****************************************************************************/
+#define MAX_PS_CID_NUM (MAX_NUM_OF_SUPPORTED_QOS_FLOW)      // max cid number supported in AT command (bearer/flow level)
+#define MAX_PS_PDN_NUM (MAX_L4_PS_PDN_NUM)      // max pdn counts supported in AT command (PDN/PDUS level)
+
+#define PS_NULL_CID (0xFF)
+#define PS_CID_NOT_ALLOCATED (0xFE)
+#define PS_NULL_PSI (0)
+
+#define PS_MIN_CID (0)
+#define PS_MAX_CID (MAX_PS_CID_NUM)
+#define PS_MIN_PSI (1)
+#define PS_MAX_PSI (L4_PS_MAX_PSI)
+
+/*****************************************************************************
+* DESCRIPTION
+*   This enum is used by OSTD to notify MD the AP core status from Sleep Management
+*****************************************************************************/
+typedef enum
+{
+    OSTD_AP_CORE_UNKNOWN = 0,
+    OSTD_AP_CORE_SUSPEND,
+    OSTD_AP_CORE_AWAKE,
+} ostd_ap_core_status_enum;
+
+
+typedef enum
+{
+	CC_CALL_STATE_NULL = 0xC0,
+	CC_CALL_STATE_CALL_INITIATED = 0xC1,
+	CC_CALL_STATE_MM_CONN_PENDING = 0xC2,
+	CC_CALL_STATE_MO_CALL_PROC = 0xC3,
+	CC_CALL_STATE_CALL_DELIVERED = 0xC4,
+	CC_CALL_STATE_CALL_PRESENT = 0xC6,
+	CC_CALL_STATE_CALL_RECVD = 0xC7,
+	CC_CALL_STATE_CONNECT_REQ = 0xC8,
+	CC_CALL_STATE_MT_CALL_CNF = 0xC9,
+	CC_CALL_STATE_ACTIVE = 0xCA,
+	CC_CALL_STATE_DISC_REQ = 0xCB,
+	CC_CALL_STATE_DISC_IND = 0xCC,
+	CC_CALL_STATE_RELEASE_REQ = 0xD3,
+	CC_CALL_STATE_MO_MODIFY = 0xDA,
+	CC_CALL_STATE_MT_MODIFY = 0xDB,
+	CC_CALL_STATE_CONN_IND = 0xDC,
+	CC_CALL_STATE_CC_PROMPT_PRESENT = 0xE2,
+	CC_CALL_STATE_WAIT_FOR_NW_INFO = 0xE3,
+	CC_CALL_STATE_CC_ESTAB_PRESENT = 0xE4,
+	CC_CALL_STATE_CC_ESTAB_CNF = 0xE5,
+	CC_CALL_STATE_RECALL_PRESENT = 0xE6,
+} cc_call_state_enum;
+
+#ifdef __IPC_ADAPTER__
+#define PS_IPCA_IMEI_BM(val) (0x01<<(val))
+// refer to region_type_T
+typedef	enum
+{
+    PS_IPCA_REGION_WORLD            = PS_IPCA_IMEI_BM(0),
+    PS_IPCA_REGION_CHINA            = PS_IPCA_IMEI_BM(1),
+    PS_IPCA_REGION_GLOBAL           = PS_IPCA_IMEI_BM(2),
+    PS_IPCA_REGION_JPN              = PS_IPCA_IMEI_BM(3),
+    PS_IPCA_REGION_KOR              = PS_IPCA_IMEI_BM(4),
+    PS_IPCA_REGION_LATIN_AMERICA    = PS_IPCA_IMEI_BM(5),
+    PS_IPCA_REGION_N_AMERICA_CAN    = PS_IPCA_IMEI_BM(6),
+    PS_IPCA_REGION_N_AMERICA        = PS_IPCA_IMEI_BM(7),
+    PS_IPCA_REGION_N_AMERICA_3GPP2  = PS_IPCA_IMEI_BM(8),
+    PS_IPCA_REGION_USA_FACTORY      = PS_IPCA_IMEI_BM(9),
+    PS_IPCA_REGION_CHN_FACTORY      = PS_IPCA_IMEI_BM(10),
+    PS_IPCA_REGION_JPN_FACTORY      = PS_IPCA_IMEI_BM(11),
+    PS_IPCA_REGION_KOR_FACTORY      = PS_IPCA_IMEI_BM(12),
+    PS_IPCA_REGION_ETC_FACTORY      = PS_IPCA_IMEI_BM(13),
+    PS_IPCA_REGION_GCF              = PS_IPCA_IMEI_BM(14),
+    PS_IPCA_REGION_UNKNOWN          = 0xffff
+} ps_ipca_region_enum;
+#endif
+
+/* IPC NET NW SCAN - ENUM for band */
+typedef enum
+{
+    NW_SCAN_BAND_NONE    = 0,
+    NW_SCAN_LTE_BAND_1   = 1,
+    NW_SCAN_LTE_BAND_2   = 2,
+    NW_SCAN_LTE_BAND_3   = 3,
+    NW_SCAN_LTE_BAND_4   = 4,
+    NW_SCAN_LTE_BAND_5   = 5,
+    NW_SCAN_LTE_BAND_6   = 6,
+    NW_SCAN_LTE_BAND_7   = 7,
+    NW_SCAN_LTE_BAND_8   = 8,
+    NW_SCAN_LTE_BAND_9   = 9,
+    NW_SCAN_LTE_BAND_10  = 10,
+    NW_SCAN_LTE_BAND_11  = 11,
+    NW_SCAN_LTE_BAND_12  = 12,
+    NW_SCAN_LTE_BAND_13  = 13,
+    NW_SCAN_LTE_BAND_14  = 14,
+    NW_SCAN_LTE_BAND_17  = 17,
+    NW_SCAN_LTE_BAND_18  = 18,
+    NW_SCAN_LTE_BAND_19  = 19,
+    NW_SCAN_LTE_BAND_20  = 20,
+    NW_SCAN_LTE_BAND_21  = 21,
+    NW_SCAN_LTE_BAND_22  = 22,
+    NW_SCAN_LTE_BAND_23  = 23,
+    NW_SCAN_LTE_BAND_24  = 24,
+    NW_SCAN_LTE_BAND_25  = 25,
+    NW_SCAN_LTE_BAND_26  = 26,
+    NW_SCAN_LTE_BAND_27  = 27,
+    NW_SCAN_LTE_BAND_28  = 28,
+    NW_SCAN_LTE_BAND_29  = 29,
+    NW_SCAN_LTE_BAND_30  = 30,
+    NW_SCAN_LTE_BAND_31  = 31,
+    NW_SCAN_LTE_BAND_32  = 32,
+    NW_SCAN_LTE_BAND_33  = 33,
+    NW_SCAN_LTE_BAND_34  = 34,
+    NW_SCAN_LTE_BAND_35  = 35,
+    NW_SCAN_LTE_BAND_36  = 36,
+    NW_SCAN_LTE_BAND_37  = 37,
+    NW_SCAN_LTE_BAND_38  = 38,
+    NW_SCAN_LTE_BAND_39  = 39,
+    NW_SCAN_LTE_BAND_40  = 40,
+    NW_SCAN_LTE_BAND_41  = 41,
+    NW_SCAN_LTE_BAND_42  = 42,
+    NW_SCAN_LTE_BAND_43  = 43,
+    NW_SCAN_LTE_BAND_44  = 44,
+    NW_SCAN_LTE_BAND_45  = 45,
+    NW_SCAN_LTE_BAND_46  = 46,
+    NW_SCAN_LTE_BAND_47  = 47,
+    NW_SCAN_LTE_BAND_48  = 48,
+    NW_SCAN_LTE_BAND_49  = 49,
+    NW_SCAN_LTE_BAND_50  = 50,
+    NW_SCAN_LTE_BAND_51  = 51,
+    NW_SCAN_LTE_BAND_52  = 52,
+    NW_SCAN_LTE_BAND_65  = 65,
+    NW_SCAN_LTE_BAND_66  = 66,
+    NW_SCAN_LTE_BAND_67  = 67,
+    NW_SCAN_LTE_BAND_68  = 68,
+    NW_SCAN_LTE_BAND_69  = 69,
+    NW_SCAN_LTE_BAND_70  = 70,
+    NW_SCAN_LTE_BAND_71  = 71,
+    NW_SCAN_LTE_BAND_72  = 72,
+    NW_SCAN_LTE_BAND_73  = 73,
+    NW_SCAN_LTE_BAND_74  = 74,
+    NW_SCAN_LTE_BAND_75  = 75,
+    NW_SCAN_LTE_BAND_76  = 76,
+    NW_SCAN_LTE_BAND_85  = 85,
+    NW_SCAN_UMTS_BAND_1  = 101,
+    NW_SCAN_UMTS_BAND_2  = 102,
+    NW_SCAN_UMTS_BAND_3  = 103,
+    NW_SCAN_UMTS_BAND_4  = 104,
+    NW_SCAN_UMTS_BAND_5  = 105,
+    NW_SCAN_UMTS_BAND_6  = 106,
+    NW_SCAN_UMTS_BAND_7  = 107,
+    NW_SCAN_UMTS_BAND_8  = 108,
+    NW_SCAN_UMTS_BAND_9  = 109,
+    NW_SCAN_UMTS_BAND_10 = 110,
+    NW_SCAN_UMTS_BAND_11 = 111,
+    NW_SCAN_UMTS_BAND_12 = 112,
+    NW_SCAN_UMTS_BAND_13 = 113,
+    NW_SCAN_UMTS_BAND_14 = 114,
+    NW_SCAN_UMTS_BAND_19 = 119,
+    NW_SCAN_UMTS_BAND_20 = 120,
+    NW_SCAN_UMTS_BAND_21 = 121,
+    NW_SCAN_UMTS_BAND_22 = 122,
+    NW_SCAN_UMTS_BAND_25 = 125,
+    NW_SCAN_UMTS_BAND_26 = 126,
+    NW_SCAN_UMTS_BAND_32 = 132,
+    NW_SCAN_UMTS_BAND_33 = 133,
+    NW_SCAN_UMTS_BAND_34 = 134,
+    NW_SCAN_UMTS_BAND_35 = 135,
+    NW_SCAN_UMTS_BAND_36 = 136,
+    NW_SCAN_UMTS_BAND_37 = 137,
+    NW_SCAN_UMTS_BAND_38 = 138,
+    NW_SCAN_UMTS_BAND_39 = 139,
+    NW_SCAN_UMTS_BAND_40 = 140,
+    NW_SCAN_GSM_BAND_850 = 151,
+    NW_SCAN_GSM_BAND_900 = 152,
+    NW_SCAN_GSM_BAND_1800= 153,
+    NW_SCAN_GSM_BAND_1900= 154,
+    NW_SCAN_NR_BAND_1    = 1001,
+    NW_SCAN_NR_BAND_2    = 1002,
+    NW_SCAN_NR_BAND_3    = 1003,
+    NW_SCAN_NR_BAND_4    = 1004,
+    NW_SCAN_NR_BAND_5    = 1005,
+    NW_SCAN_NR_BAND_6    = 1006,
+    NW_SCAN_NR_BAND_7    = 1007,
+    NW_SCAN_NR_BAND_8    = 1008,
+    NW_SCAN_NR_BAND_9    = 1009,
+    NW_SCAN_NR_BAND_10   = 1010,
+    NW_SCAN_NR_BAND_11   = 1011,
+    NW_SCAN_NR_BAND_12   = 1012,
+    NW_SCAN_NR_BAND_13   = 1013,
+    NW_SCAN_NR_BAND_14   = 1014,
+    NW_SCAN_NR_BAND_15   = 1015,
+    NW_SCAN_NR_BAND_16   = 1016,
+    NW_SCAN_NR_BAND_17   = 1017,
+    NW_SCAN_NR_BAND_18   = 1018,
+    NW_SCAN_NR_BAND_19   = 1019,
+    NW_SCAN_NR_BAND_20   = 1020,
+    NW_SCAN_NR_BAND_21   = 1021,
+    NW_SCAN_NR_BAND_22   = 1022,
+    NW_SCAN_NR_BAND_23   = 1023,
+    NW_SCAN_NR_BAND_24   = 1024,
+    NW_SCAN_NR_BAND_25   = 1025,
+    NW_SCAN_NR_BAND_26   = 1026,
+    NW_SCAN_NR_BAND_27   = 1027,
+    NW_SCAN_NR_BAND_28   = 1028,
+    NW_SCAN_NR_BAND_29   = 1029,
+    NW_SCAN_NR_BAND_30   = 1030,
+    NW_SCAN_NR_BAND_31   = 1031,
+    NW_SCAN_NR_BAND_32   = 1032,
+    NW_SCAN_NR_BAND_33   = 1033,
+    NW_SCAN_NR_BAND_34   = 1034,
+    NW_SCAN_NR_BAND_35   = 1035,
+    NW_SCAN_NR_BAND_36   = 1036,
+    NW_SCAN_NR_BAND_37   = 1037,
+    NW_SCAN_NR_BAND_38   = 1038,
+    NW_SCAN_NR_BAND_39   = 1039,
+    NW_SCAN_NR_BAND_40   = 1040,
+    NW_SCAN_NR_BAND_41   = 1041,
+    NW_SCAN_NR_BAND_42   = 1042,
+    NW_SCAN_NR_BAND_43   = 1043,
+    NW_SCAN_NR_BAND_44   = 1044,
+    NW_SCAN_NR_BAND_45   = 1045,
+    NW_SCAN_NR_BAND_46   = 1046,
+    NW_SCAN_NR_BAND_47   = 1047,
+    NW_SCAN_NR_BAND_48   = 1048,
+    NW_SCAN_NR_BAND_49   = 1049,
+    NW_SCAN_NR_BAND_50   = 1050,
+    NW_SCAN_NR_BAND_51   = 1051,
+    NW_SCAN_NR_BAND_52   = 1052,
+    NW_SCAN_NR_BAND_53   = 1053,
+    NW_SCAN_NR_BAND_54   = 1054,
+    NW_SCAN_NR_BAND_55   = 1055,
+    NW_SCAN_NR_BAND_56   = 1056,
+    NW_SCAN_NR_BAND_57   = 1057,
+    NW_SCAN_NR_BAND_58   = 1058,
+    NW_SCAN_NR_BAND_59   = 1059,
+    NW_SCAN_NR_BAND_60   = 1060,
+    NW_SCAN_NR_BAND_61   = 1061,
+    NW_SCAN_NR_BAND_62   = 1062,
+    NW_SCAN_NR_BAND_63   = 1063,
+    NW_SCAN_NR_BAND_64   = 1064,
+    NW_SCAN_NR_BAND_65   = 1065,
+    NW_SCAN_NR_BAND_66   = 1066,
+    NW_SCAN_NR_BAND_67   = 1067,
+    NW_SCAN_NR_BAND_68   = 1068,
+    NW_SCAN_NR_BAND_69   = 1069,
+    NW_SCAN_NR_BAND_70   = 1070,
+    NW_SCAN_NR_BAND_71   = 1071,
+    NW_SCAN_NR_BAND_72   = 1072,
+    NW_SCAN_NR_BAND_73   = 1073,
+    NW_SCAN_NR_BAND_74   = 1074,
+    NW_SCAN_NR_BAND_75   = 1075,
+    NW_SCAN_NR_BAND_76   = 1076,
+    NW_SCAN_NR_BAND_77   = 1077,
+    NW_SCAN_NR_BAND_78   = 1078,
+    NW_SCAN_NR_BAND_79   = 1079,
+    NW_SCAN_NR_BAND_80   = 1080,
+    NW_SCAN_NR_BAND_81   = 1081,
+    NW_SCAN_NR_BAND_82   = 1082,
+    NW_SCAN_NR_BAND_83   = 1083,
+    NW_SCAN_NR_BAND_84   = 1084,
+    NW_SCAN_NR_BAND_85   = 1085,
+    NW_SCAN_NR_BAND_86   = 1086,
+    NW_SCAN_NR_BAND_87   = 1087,
+    NW_SCAN_NR_BAND_88   = 1088,
+    NW_SCAN_NR_BAND_89   = 1089,
+    NW_SCAN_NR_BAND_90   = 1090,
+    NW_SCAN_NR_BAND_91   = 1091,
+    NW_SCAN_NR_BAND_92   = 1092,
+    NW_SCAN_NR_BAND_93   = 1093,
+    NW_SCAN_NR_BAND_94   = 1094,
+    NW_SCAN_NR_BAND_95   = 1095,
+    NW_SCAN_NR_BAND_96   = 1096,
+    NW_SCAN_NR_BAND_97   = 1097,
+    NW_SCAN_NR_BAND_98   = 1098,
+    NW_SCAN_NR_BAND_99   = 1099,
+    NW_SCAN_NR_BAND_100  = 1100,
+    NW_SCAN_NR_BAND_101  = 1101,
+    NW_SCAN_NR_BAND_102  = 1102,
+    NW_SCAN_NR_BAND_103  = 1103,
+    NW_SCAN_NR_BAND_104  = 1104,
+    NW_SCAN_NR_BAND_105  = 1105,
+    NW_SCAN_NR_BAND_106  = 1106,
+    NW_SCAN_NR_BAND_107  = 1107,
+    NW_SCAN_NR_BAND_108  = 1108,
+    NW_SCAN_NR_BAND_109  = 1109,
+    NW_SCAN_NR_BAND_110  = 1110,
+    NW_SCAN_NR_BAND_111  = 1111,
+    NW_SCAN_NR_BAND_112  = 1112,
+    NW_SCAN_NR_BAND_113  = 1113,
+    NW_SCAN_NR_BAND_114  = 1114,
+    NW_SCAN_NR_BAND_115  = 1115,
+    NW_SCAN_NR_BAND_116  = 1116,
+    NW_SCAN_NR_BAND_117  = 1117,
+    NW_SCAN_NR_BAND_118  = 1118,
+    NW_SCAN_NR_BAND_119  = 1119,
+    NW_SCAN_NR_BAND_120  = 1120,
+    NW_SCAN_NR_BAND_121  = 1121,
+    NW_SCAN_NR_BAND_122  = 1122,
+    NW_SCAN_NR_BAND_123  = 1123,
+    NW_SCAN_NR_BAND_124  = 1124,
+    NW_SCAN_NR_BAND_125  = 1125,
+    NW_SCAN_NR_BAND_126  = 1126,
+    NW_SCAN_NR_BAND_127  = 1127,
+    NW_SCAN_NR_BAND_128  = 1128,
+    NW_SCAN_NR_BAND_129  = 1129,
+    NW_SCAN_NR_BAND_130  = 1130,
+    NW_SCAN_NR_BAND_131  = 1131,
+    NW_SCAN_NR_BAND_132  = 1132,
+    NW_SCAN_NR_BAND_133  = 1133,
+    NW_SCAN_NR_BAND_134  = 1134,
+    NW_SCAN_NR_BAND_135  = 1135,
+    NW_SCAN_NR_BAND_136  = 1136,
+    NW_SCAN_NR_BAND_137  = 1137,
+    NW_SCAN_NR_BAND_138  = 1138,
+    NW_SCAN_NR_BAND_139  = 1139,
+    NW_SCAN_NR_BAND_140  = 1140,
+    NW_SCAN_NR_BAND_141  = 1141,
+    NW_SCAN_NR_BAND_142  = 1142,
+    NW_SCAN_NR_BAND_143  = 1143,
+    NW_SCAN_NR_BAND_144  = 1144,
+    NW_SCAN_NR_BAND_145  = 1145,
+    NW_SCAN_NR_BAND_146  = 1146,
+    NW_SCAN_NR_BAND_147  = 1147,
+    NW_SCAN_NR_BAND_148  = 1148,
+    NW_SCAN_NR_BAND_149  = 1149,
+    NW_SCAN_NR_BAND_150  = 1150,
+    NW_SCAN_NR_BAND_151  = 1151,
+    NW_SCAN_NR_BAND_152  = 1152,
+    NW_SCAN_NR_BAND_153  = 1153,
+    NW_SCAN_NR_BAND_154  = 1154,
+    NW_SCAN_NR_BAND_155  = 1155,
+    NW_SCAN_NR_BAND_156  = 1156,
+    NW_SCAN_NR_BAND_157  = 1157,
+    NW_SCAN_NR_BAND_158  = 1158,
+    NW_SCAN_NR_BAND_159  = 1159,
+    NW_SCAN_NR_BAND_160  = 1160,
+    NW_SCAN_NR_BAND_161  = 1161,
+    NW_SCAN_NR_BAND_162  = 1162,
+    NW_SCAN_NR_BAND_163  = 1163,
+    NW_SCAN_NR_BAND_164  = 1164,
+    NW_SCAN_NR_BAND_165  = 1165,
+    NW_SCAN_NR_BAND_166  = 1166,
+    NW_SCAN_NR_BAND_167  = 1167,
+    NW_SCAN_NR_BAND_168  = 1168,
+    NW_SCAN_NR_BAND_169  = 1169,
+    NW_SCAN_NR_BAND_170  = 1170,
+    NW_SCAN_NR_BAND_171  = 1171,
+    NW_SCAN_NR_BAND_172  = 1172,
+    NW_SCAN_NR_BAND_173  = 1173,
+    NW_SCAN_NR_BAND_174  = 1174,
+    NW_SCAN_NR_BAND_175  = 1175,
+    NW_SCAN_NR_BAND_176  = 1176,
+    NW_SCAN_NR_BAND_177  = 1177,
+    NW_SCAN_NR_BAND_178  = 1178,
+    NW_SCAN_NR_BAND_179  = 1179,
+    NW_SCAN_NR_BAND_180  = 1180,
+    NW_SCAN_NR_BAND_181  = 1181,
+    NW_SCAN_NR_BAND_182  = 1182,
+    NW_SCAN_NR_BAND_183  = 1183,
+    NW_SCAN_NR_BAND_184  = 1184,
+    NW_SCAN_NR_BAND_185  = 1185,
+    NW_SCAN_NR_BAND_186  = 1186,
+    NW_SCAN_NR_BAND_187  = 1187,
+    NW_SCAN_NR_BAND_188  = 1188,
+    NW_SCAN_NR_BAND_189  = 1189,
+    NW_SCAN_NR_BAND_190  = 1190,
+    NW_SCAN_NR_BAND_191  = 1191,
+    NW_SCAN_NR_BAND_192  = 1192,
+    NW_SCAN_NR_BAND_193  = 1193,
+    NW_SCAN_NR_BAND_194  = 1194,
+    NW_SCAN_NR_BAND_195  = 1195,
+    NW_SCAN_NR_BAND_196  = 1196,
+    NW_SCAN_NR_BAND_197  = 1197,
+    NW_SCAN_NR_BAND_198  = 1198,
+    NW_SCAN_NR_BAND_199  = 1199,
+    NW_SCAN_NR_BAND_200  = 1200,
+    NW_SCAN_NR_BAND_201  = 1201,
+    NW_SCAN_NR_BAND_202  = 1202,
+    NW_SCAN_NR_BAND_203  = 1203,
+    NW_SCAN_NR_BAND_204  = 1204,
+    NW_SCAN_NR_BAND_205  = 1205,
+    NW_SCAN_NR_BAND_206  = 1206,
+    NW_SCAN_NR_BAND_207  = 1207,
+    NW_SCAN_NR_BAND_208  = 1208,
+    NW_SCAN_NR_BAND_209  = 1209,
+    NW_SCAN_NR_BAND_210  = 1210,
+    NW_SCAN_NR_BAND_211  = 1211,
+    NW_SCAN_NR_BAND_212  = 1212,
+    NW_SCAN_NR_BAND_213  = 1213,
+    NW_SCAN_NR_BAND_214  = 1214,
+    NW_SCAN_NR_BAND_215  = 1215,
+    NW_SCAN_NR_BAND_216  = 1216,
+    NW_SCAN_NR_BAND_217  = 1217,
+    NW_SCAN_NR_BAND_218  = 1218,
+    NW_SCAN_NR_BAND_219  = 1219,
+    NW_SCAN_NR_BAND_220  = 1220,
+    NW_SCAN_NR_BAND_221  = 1221,
+    NW_SCAN_NR_BAND_222  = 1222,
+    NW_SCAN_NR_BAND_223  = 1223,
+    NW_SCAN_NR_BAND_224  = 1224,
+    NW_SCAN_NR_BAND_225  = 1225,
+    NW_SCAN_NR_BAND_226  = 1226,
+    NW_SCAN_NR_BAND_227  = 1227,
+    NW_SCAN_NR_BAND_228  = 1228,
+    NW_SCAN_NR_BAND_229  = 1229,
+    NW_SCAN_NR_BAND_230  = 1230,
+    NW_SCAN_NR_BAND_231  = 1231,
+    NW_SCAN_NR_BAND_232  = 1232,
+    NW_SCAN_NR_BAND_233  = 1233,
+    NW_SCAN_NR_BAND_234  = 1234,
+    NW_SCAN_NR_BAND_235  = 1235,
+    NW_SCAN_NR_BAND_236  = 1236,
+    NW_SCAN_NR_BAND_237  = 1237,
+    NW_SCAN_NR_BAND_238  = 1238,
+    NW_SCAN_NR_BAND_239  = 1239,
+    NW_SCAN_NR_BAND_240  = 1240,
+    NW_SCAN_NR_BAND_241  = 1241,
+    NW_SCAN_NR_BAND_242  = 1242,
+    NW_SCAN_NR_BAND_243  = 1243,
+    NW_SCAN_NR_BAND_244  = 1244,
+    NW_SCAN_NR_BAND_245  = 1245,
+    NW_SCAN_NR_BAND_246  = 1246,
+    NW_SCAN_NR_BAND_247  = 1247,
+    NW_SCAN_NR_BAND_248  = 1248,
+    NW_SCAN_NR_BAND_249  = 1249,
+    NW_SCAN_NR_BAND_250  = 1250,
+    NW_SCAN_NR_BAND_251  = 1251,
+    NW_SCAN_NR_BAND_252  = 1252,
+    NW_SCAN_NR_BAND_253  = 1253,
+    NW_SCAN_NR_BAND_254  = 1254,
+    NW_SCAN_NR_BAND_255  = 1255,
+    NW_SCAN_NR_BAND_256  = 1256,
+    NW_SCAN_NR_BAND_257  = 1257,
+    NW_SCAN_NR_BAND_258  = 1258,
+    NW_SCAN_NR_BAND_259  = 1259,
+    NW_SCAN_NR_BAND_260  = 1260,
+    NW_SCAN_NR_BAND_261  = 1261
+} nw_scan_band_enum;
+
+#ifdef __MBIM_MS_NETWORK_BLACKLIST__
+typedef enum{
+    NW_BLACK_LIST_OPERATOR_SUCCESS, /* read or write success */
+    NW_BLACK_LIST_NOT_SUPPORT,      /* not support black list */
+    NW_BLACK_LIST_INVALID_PARAM,    /* parameters is invalid */
+    NW_BLACK_LIST_OPERATOR_FAILURE  /* read or write failure */
+}nw_black_list_operator_result_enum;
+#endif
+
+typedef enum
+{
+    MAIF_MCC_231        = 0,    //Slovakia
+    MAIF_MCC_234        = 1,    //United Kingdom
+    MAIF_MCC_240        = 2,    //Sweden
+    MAIF_MCC_244        = 3,    //Finland
+    MAIF_MCC_246	    = 4,    //Lithuania
+    MAIF_MCC_260 	    = 5,    //Poland
+    MAIF_MCC_262 	    = 6,    //Germany
+    MAIF_MCC_286        = 7,    //Turkey
+    MAIF_MCC_293        = 8,    //Slovenia
+    MAIF_MCC_310        = 9,    //USA
+    MAIF_MCC_334        = 10,   //Mexico
+    MAIF_MCC_404_405    = 11,   //India
+    MAIF_MCC_414        = 12,   //Myanmar
+    MAIF_MCC_424        = 13,   //United Arab Emirates
+    MAIF_MCC_450        = 14,   //South Korea
+    MAIF_MCC_454        = 15,   //Hong Kong
+    MAIF_MCC_454_460    = 16,   //Hong Kong + China
+    MAIF_MCC_456        = 17,   //Cambodia
+    MAIF_MCC_460        = 18,   //China
+    MAIF_MCC_466        = 19,   //Taiwan
+    MAIF_MCC_505        = 20,   //Australia
+    MAIF_MCC_525        = 21,   //Singapore
+    MAIF_MCC_530        = 22,   //New Zealand
+    MAIF_MCC_639        = 23,   //Kenya
+    MAIF_MCC_714        = 24,   //Panama
+    MAIF_MCC_732        = 25,   //Colombia
+    MAIF_MCC_MAX        = 26,
+} maif_mcc_enum;
+
+/* bitmap */
+typedef enum
+{
+    L4C_SIG_UNKNOWN     = 0,
+    L4C_SIG_LTE_RSRP    = 1,
+    L4C_SIG_LTE_RS_SNR  = 2,
+    L4C_SIG_LTE_RSRQ    = 4,
+} l4c_errc_handover_signal_type_enum;
+
+/* bitmap */
+typedef enum
+{
+    L4C_SIG_NR_UNKNOWN  = 0,
+    L4C_SIG_NR_SS_RSRP  = 1,
+    L4C_SIG_NR_SS_RSRQ  = 2,
+    L4C_SIG_NR_SS_SINR  = 4,
+} l4c_nrrc_handover_signal_type_enum;
+
+typedef enum
+{
+    L4C_AT_HO_SIG_LTE_RSRP   = 0,
+    L4C_AT_HO_SIG_LTE_RS_SNR = 1,
+    L4C_AT_HO_SIG_UMTS_RSCP  = 2,
+    L4C_AT_HO_SIG_UMTS_ECNO  = 3,
+    L4C_AT_HO_SIG_LTE_RSRQ   = 4,
+    L4C_AT_HO_SIG_NR_SS_RSRP = 5,
+} l4c_atcmd_urc_ho_signal_type_enum;
+
+typedef enum
+{
+    L4C_NORMAL_REPORT          = 0,
+    L4C_INITIAL_REPORT         = 1,
+    L4C_THRESHOLD_CROSS_REPORT = 2
+} l4c_signal_reporting_type_enum;
+
+typedef enum
+{
+    PORT_DEFAULT = 0x89,
+	PORT_UNLOCK = 0xAB,
+ 	PORT_LOCK = 0xCD
+}port_lock_enum;
+
+typedef enum
+{
+    PORTLOCK_READ_MODE,
+    PORTLOCK_WRITE_MODE
+}port_lock_mode_enum;
+
+typedef enum
+{
+    PORTLOCK_FAILURE,
+    PORTLOCK_SUCCESS,
+    PORTLOCK_REBOOT_REQUIRED
+}port_lock_status_rsp_enum;
+
+typedef enum
+{
+    VZW_BARRING_TIMER_TYPE_TPLMN,
+    VZW_BARRING_TIMER_TYPE_T5GNRSA,
+    VZW_BARRING_TIMER_TYPE_MAX,
+}vzw_barring_timer_type_enum;
+
+typedef enum
+{
+    DISABLE_ALLOWED_MCC_LIST,
+    ENABLE_ALLOWED_MCC_LIST
+}allowed_mcc_list_action_enum;
+
+typedef enum
+{
+    L4C_NW_DRB_STATE_REPORT_NONE = 0x00,
+    L4C_NW_DRB_STATE_REPORT_LTE = 0x01,
+    L4C_NW_DRB_STATE_REPORT_ENDC = 0x02,
+    L4C_NW_DRB_STATE_REPORT_NR = 0x04
+} l4c_nw_drb_state_enum;
+
+#endif /* _PS_PUBLIC_ENUM_H_ */
diff --git a/mcu/interface/protocol/general/ps_public_struct.h b/mcu/interface/protocol/general/ps_public_struct.h
new file mode 100644
index 0000000..3442060
--- /dev/null
+++ b/mcu/interface/protocol/general/ps_public_struct.h
@@ -0,0 +1,3090 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * ps_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file contains the ABM network internal APIs 
+ *   and these APIs can only be used by MMI CBM and DA
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ ****************************************************************************/
+#ifndef _PS_PUBLIC_STRUCT_H_
+#define _PS_PUBLIC_STRUCT_H_
+
+#include "kal_public_defs.h"
+//#include "kal_non_specific_general_types.h"
+#include "kal_public_defs.h"
+#include "ps_public_enum.h"
+#include "sim_ps_enum.h"
+#include "sim_public_enum.h"
+#include "kal_general_types.h"
+#include "sim_exported_enum.h"
+#include "l3_inc_enums_public.h"
+#include "atcmd_struct.h"
+
+#if (!defined(__MAUI_BASIC__)) && (!(defined(__NR_L1SIM__) || defined(__LTE_L1SIM__)))
+#include "mcd_l3_inc_struct.h"
+#endif
+#include "gmss_public.h"
+
+//used to be in mcd_l4_common.h
+extern kal_uint32 l4_pun_src_buff[180];
+extern kal_uint32 l4_pun_dest_buff[200];
+
+#if defined(__WHITE_CELL_LOCK__)
+#define MAX_NUM_BAND    40
+#else
+#define MAX_NUM_BAND    8
+#endif
+
+#define MAX_NUM_CHANNEL 32
+#define MAX_NUM_OF_SIGNAL_THRESH  10
+
+typedef struct _l4_addr_bcd_struct
+{
+	kal_uint8 addr_length;
+	kal_uint8 addr_bcd[MAX_CC_ADDR_BCD_LEN];
+} l4_addr_bcd_struct;
+
+#if (defined L1_SIM)
+#ifdef MAX_PS_NAME_SIZE
+#undef MAX_PS_NAME_SIZE
+#endif
+#define MAX_PS_NAME_SIZE     (42)
+#endif
+
+typedef struct _l4_name_struct
+{
+	kal_uint8 name_length;
+	kal_uint8 name_dcs;
+	kal_uint8 name[MAX_PS_NAME_SIZE];
+} l4_name_struct;
+
+
+
+#if defined(__WIFI_SUPPORT__)
+/* WIFI test*/
+#include "wndrv_ft_types.h"
+#endif
+
+#ifdef __MULTI_LEVEL_BACKLIGHT_SUPPORT__
+#include "custom_hw_default.h"
+#endif
+
+#include "global_type.h"
+
+typedef struct l4c_result_struct
+{
+   kal_uint8   flag;    /*l4c_result_enum*/
+   kal_uint16   cause;
+
+} l4c_result_struct;
+
+typedef struct
+{
+   kal_uint32	total_rx_data;
+   kal_uint32	total_tx_data;
+   kal_uint32	last_rx_data;
+   kal_uint32	last_tx_data;
+} l4c_gprs_statistics_info_struct;
+
+typedef struct
+{
+    kal_uint8 apn[MAX_APN_LEN];
+} l4c_tcm_acl_entry_struct;
+
+/* Poying: MSBB. */
+typedef struct {
+    kal_uint16 protocol_id;
+    kal_uint8 protocol_config_len;
+    kal_uint8 protocol_config[MAX_CONFIG_OPTION_CONTENT_LEN];
+} config_option_struct;
+
+typedef struct
+{
+    kal_bool    is_sst_present; 
+    kal_uint8   sst; 
+
+    kal_bool    is_sd_present; 
+    kal_uint8   sd[TCM_S_NSSAI_SD_LEN]; 
+
+    kal_bool    is_mapped_configured_sst_present;
+    kal_uint8   mapped_configured_sst; 
+
+    kal_bool    is_mapped_configured_sd_present; 
+    kal_uint8   mapped_configured_sd[TCM_S_NSSAI_SD_LEN]; 
+} l4c_tcm_s_nssai_struct; 
+
+typedef struct
+{
+    kal_uint8               context_id;
+    kal_uint8               apn_length;
+    kal_uint8               apn [ MAX_APN_LEN ];
+    kal_uint8               dcomp_algo;      /*atci_dcomp_algo_enum*/
+    kal_uint8               hcomp_algo;      /*atci_hcomp_algo_enum*/
+    pdp_addr_type_enum      pdp_type;        /*pdp_type_enum*/
+    pdp_addr_len_enum       pdp_addr_len;
+    kal_uint8               addr_val[ MAX_PDP_ADDR_LEN ];
+    kal_uint8               ipv4addralloc;
+	kal_uint8               request_type;               //R12
+    kal_uint8               p_cscf_discovery;			//R10
+    kal_uint8               im_cn_signalling_flag;		//R10
+    nas_priority_config_enum nas_priority_config ;   // __MTC_SUPPORT__
+    eab_override_config_enum eab_override_config ;   // __MTC_SUPPORT__
+    l4c_tcm_securepco_enum  secure_pco;
+    l4c_tcm_activate_pdp_request_ipv4_mtu_enum act_pdp_with_pco_req_v4_mtu;
+    l4c_tcm_local_addr_ind_enum local_addr_ind;
+    l4c_tcm_non_ip_mtu_discovery_enum   non_ip_mtu_discovery; 
+    l4c_tcm_reliable_data_service_enum  reliable_data_service; 
+    l4c_tcm_ssc_mode_enum               ssc_mode;
+    kal_bool                            s_nssai_present;
+    l4c_tcm_s_nssai_struct              s_nssai; 
+    l4c_tcm_access_type_enum            access_type; 
+    l4c_tcm_rqos_ind_enum               rqos_ind;
+    l4c_tcm_mh6_pdu_enum                mh6_pdu;
+    l4c_tcm_always_on_pdu_enum          always_on_pdu; 
+    kal_uint8                           psi;
+    l4c_tcm_ladn_dnn_enum               ladn_dnn;
+
+    /* Used for SSC Mode 3 PDU session re-restablishment in 5G. */
+    kal_bool  old_psi_present; 
+    kal_uint8 old_psi;
+
+    kal_bool  vgpdp_type_present;
+    pdp_addr_type_enum vgpdp_type;
+    kal_bool  vgapn_present;
+    kal_uint8 vgapn_length;
+    kal_uint8 vgapn[MAX_APN_LEN];
+} l4c_prim_pdp_info_struct;
+
+typedef struct
+{
+    kal_uint8               context_id;
+    pdp_addr_type_enum      roaming_ip_type; 
+    kal_uint8               psi;
+} l4c_extended_pdp_info_struct;
+
+
+typedef struct
+{
+    kal_uint8 apn_idx; /* apn table entry index */
+    kal_uint8 apn_length;
+    kal_uint8 apn[MAX_APN_LEN];
+    kal_uint16 inactivity_time; /* unit: minute */
+}l4c_apn_info_struct;
+
+
+typedef struct
+{
+    kal_uint8     context_id;      /* child context */
+    kal_uint8     prim_context_id;  /* parent context */
+    kal_uint8     dcomp_algo;     /* atci_dcomp_algo_enum */
+    kal_uint8     hcomp_algo;     /* atci_hcomp_algo_enum */
+	//mtk04121
+	kal_uint8  	  im_cn_signalling_flag;		//R10
+} l4c_sec_pdp_info_struct;
+
+//mtk02219
+#if !defined(__LTE_RAT__)
+typedef struct {
+    kal_uint8 pfi;
+    kal_uint8 epi;
+    kal_uint8 src_addr_sb_net_mask_len;
+    kal_uint8 src_addr_sb_net_mask[MAX_SRC_ADDR_SBNET_MASK_LEN];
+    kal_bool   prot_number_present;
+    kal_uint8  prot_number_next_hdr;
+    kal_uint8 dst_port_len;
+    kal_uint16 dst_port_range[2];
+    kal_uint8 src_port_len;
+    kal_uint16 src_port_range[2];
+    kal_bool   ipsec_spi_present;
+    kal_uint32 ipsec_spi;
+    kal_uint8 tos_len;
+    kal_uint8 tos_traffic_class_mask[2];
+    kal_bool   flow_label_present;
+    kal_uint32 flow_label;
+} l4c_pf_struct;
+
+typedef struct
+{
+   kal_uint8 context_id;
+   kal_uint8 tot_pf_count;
+   l4c_pf_struct pf[8]; //mtk02126 8 is the max number of packet filters in 27.007 v 7.05 
+} l4c_tft_struct;
+#else
+
+//mtk02219
+typedef struct {
+    kal_uint8 pfi;
+    kal_uint8 epi;
+    kal_uint8 src_addr_sb_net_mask_len;
+    kal_uint8 src_addr_sb_net_mask[MAX_SRC_ADDR_SBNET_MASK_LEN];
+    kal_bool   prot_number_present;
+    kal_uint8  prot_number_next_hdr;
+    kal_uint8 dst_port_len;
+    kal_uint16 dst_port_range[2];
+    kal_uint8 src_port_len;
+    kal_uint16 src_port_range[2];
+    kal_bool   ipsec_spi_present;
+    kal_uint32 ipsec_spi;
+    kal_uint8 tos_len;
+    kal_uint8 tos_traffic_class_mask[2];
+    kal_bool   flow_label_present;
+    kal_uint32 flow_label;
+} l4c_pf_struct_only_for_mmi;
+
+//mtk02219
+typedef struct
+{
+   kal_uint8 context_id;
+   kal_uint8 tot_pf_count;
+   l4c_pf_struct_only_for_mmi pf[8]; //mtk02126 8 is the max number of packet filters in 27.007 v 7.05 
+} l4c_tft_struct_only_for_mmi;
+#endif
+
+typedef struct
+{
+    atci_qos_enum            qos_type;          /*atci_qos_enum*/
+    kal_uint8                context_id;
+    delay_class_enum         delay_class;       /*delay_class_enum*/
+    reliability_class_enum   reliability_class; /*reliability_class_enum*/
+    peak_throughput_class    peak_throughput;   /*peak_throughput_class*/
+    precedence_class_enum    precedence_class;  /*precedence_class_enum*/
+    mean_throughput_enum     mean_throughput;   /*mean_throughput_enum*/
+} l4c_qos_struct;
+
+typedef struct
+{
+    atci_qos_enum            qos_type;          /*atci_qos_enum*/
+    kal_uint8                context_id;
+    kal_uint8 traffic_class;
+    kal_uint8 delivery_order;
+    kal_uint8 delivery_of_err_sdu;
+    kal_uint8 max_sdu_size;
+    kal_uint8 max_bitrate_up_lnk;
+    kal_uint8 max_bitrate_down_lnk;
+    kal_uint8 residual_bit_err_rate;
+    kal_uint8 sdu_err_ratio;
+    kal_uint8 transfer_delay;
+    kal_uint8 traffic_hndl_priority;
+    kal_uint8 guarntd_bit_rate_up_lnk;
+    kal_uint8 guarntd_bit_rate_down_lnk;
+    kal_uint8 signalling_indication;
+    kal_uint8 source_statistics_descriptor;
+    kal_uint8 ext_max_bitrate_down_lnk;
+    kal_uint8 ext_guarntd_bit_rate_down_lnk;
+    kal_uint8 ext_max_bitrate_up_lnk;
+    kal_uint8 ext_guarntd_bit_rate_up_lnk;
+    kal_uint8 ext2_max_bitrate_down_lnk;
+    kal_uint8 ext2_guarntd_bit_rate_down_lnk;
+    kal_uint8 ext2_max_bitrate_up_lnk;
+    kal_uint8 ext2_guarntd_bit_rate_up_lnk;   
+} l4c_eqos_struct;
+
+//mtk04121
+typedef struct
+{
+    kal_uint8   context_id;
+    kal_uint8   qci;
+    kal_bool    max_bitrate_present;
+    kal_uint8   max_bitrate_up_lnk;
+    kal_uint8   max_bitrate_down_lnk;
+    kal_uint8   ext_max_bitrate_up_lnk;
+    kal_uint8   ext_max_bitrate_down_lnk;
+    kal_uint8   ext2_max_bitrate_up_lnk;
+    kal_uint8   ext2_max_bitrate_down_lnk;
+    kal_bool    guarntd_bit_rate_present;
+    kal_uint8   guarntd_bit_rate_up_lnk;
+    kal_uint8   guarntd_bit_rate_down_lnk;
+    kal_uint8   ext_guarntd_bit_rate_up_lnk;
+    kal_uint8   ext_guarntd_bit_rate_down_lnk;
+    kal_uint8   ext2_guarntd_bit_rate_up_lnk;
+    kal_uint8   ext2_guarntd_bit_rate_down_lnk;
+    
+    kal_bool    is_use_ext_qos_for_dl_gbr;
+    kal_bool    is_use_ext_qos_for_ul_gbr;
+    kal_bool    is_use_ext_qos_for_dl_mbr;
+    kal_bool    is_use_ext_qos_for_ul_mbr;
+    kal_uint64  ext_eps_qos_dl_gbr;
+    kal_uint64  ext_eps_qos_ul_gbr;
+    kal_uint64  ext_eps_qos_dl_mbr;
+    kal_uint64  ext_eps_qos_ul_mbr;    
+} l4c_eps_qos_struct;
+
+//mtk04121
+typedef struct
+{
+    kal_uint8   qci;
+    kal_uint8   unused1;
+    kal_uint8   unused2;
+    kal_uint8   unused3;
+    kal_uint8   max_bitrate_up_lnk;
+    kal_uint8   max_bitrate_down_lnk;
+    kal_uint8   guarntd_bit_rate_up_lnk;
+    kal_uint8   guarntd_bit_rate_down_lnk;
+    kal_uint8   ext_max_bitrate_up_lnk;
+    kal_uint8   ext_max_bitrate_down_lnk;
+    kal_uint8   ext_guarntd_bit_rate_up_lnk;
+    kal_uint8   ext_guarntd_bit_rate_down_lnk;
+    kal_uint8   ext2_max_bitrate_up_lnk;
+    kal_uint8   ext2_max_bitrate_down_lnk;
+    kal_uint8   ext2_guarntd_bit_rate_up_lnk;
+    kal_uint8   ext2_guarntd_bit_rate_down_lnk;
+
+    kal_bool    is_use_ext_qos_for_dl_gbr;
+    kal_bool    is_use_ext_qos_for_ul_gbr;
+    kal_bool    is_use_ext_qos_for_dl_mbr;
+    kal_bool    is_use_ext_qos_for_ul_mbr;
+    kal_uint64  ext_eps_qos_dl_gbr;
+    kal_uint64  ext_eps_qos_ul_gbr;
+    kal_uint64  ext_eps_qos_dl_mbr;
+    kal_uint64  ext_eps_qos_ul_mbr;     
+} tcm_eps_qos_struct;
+
+typedef struct
+{
+    kal_uint8  qfi;
+    kal_bool   vqi_present;
+    kal_uint32 vqi;
+    kal_bool   dl_gfbr_present;
+    kal_uint64 dl_gfbr;
+    kal_bool   ul_gfbr_present;
+    kal_uint64 ul_gfbr;
+    kal_bool   dl_mfbr_present;
+    kal_uint64 dl_mfbr;
+    kal_bool   ul_mfbr_present;
+    kal_uint64 ul_mfbr;
+    kal_bool   avg_window_present; /* used for neg_qos. */
+    kal_uint32 avg_window;         /* used for neg_qos. */
+} tcm_vgqos_struct; 
+
+typedef struct
+{
+    kal_uint8        context_id; 
+    tcm_vgqos_struct vgqos;
+} l4c_vgqos_struct;
+
+typedef struct
+{
+    kal_uint8 authentication_type;
+    kal_uint8 user_name[MAX_GPRS_USER_NAME_LEN];
+    kal_uint8 password[MAX_GPRS_PASSWORD_LEN];
+    kal_uint8 dns[MAX_GPRS_IP_ADDR];
+    kal_uint8 sec_dns[MAX_GPRS_IP_ADDR];
+    kal_uint8 apn[MAX_GPRS_APN_LEN];
+    kal_uint8 apn_length;
+   
+    //nvram_editor_qos_struct req_qos;
+    kal_uint8 dcomp_algo; // Fixed value: SND_NO_DCOMP
+    kal_uint8 hcomp_algo; // Fixed value: SND_NO_PCOMP
+    kal_uint8 pdp_type; // Fixed value: IPV4_ADDR_TYPE 0x21 for IPv4
+    kal_uint8 pdp_addr_len; // Fixed value: NULL_PDP_ADDR_LEN = 0x01, if use fixed IP address, this should be IPV4_ADDR_LEN = 0x04
+    kal_uint8 pdp_addr_val[MAX_GPRS_IP_ADDR]; // should be all 0
+} l4c_gprs_account_info_struct; //10A_DA_Revise, new gprs account struct, mtk02285
+
+typedef struct
+{
+   kal_uint8 call_id;
+   kal_uint8 call_state;
+   kal_uint8 mpty;
+   kal_uint8 number[MAX_CC_ADDR_LEN];
+} l4c_call_list_entry_struct;
+
+typedef struct
+{
+   kal_uint8 length;
+   l4c_call_list_entry_struct list[L4C_MAX_CALL_LIST_LEN];
+} l4c_call_list_struct;
+
+typedef struct
+{
+   kal_uint8 type;
+   kal_uint8 length;
+   kal_uint8 number[MAX_CC_ADDR_LEN];
+} l4c_number_struct;
+
+typedef struct
+{
+   kal_uint8 type;
+   kal_uint8 length;
+   kal_uint8 number[MAX_CC_ADDR_LEN];
+} l4c_sub_addr_struct;
+
+typedef struct {
+   kal_uint8 bs_code;
+   kal_uint8 ss_status;
+   kal_uint8 no_reply_timer;
+   kal_uint8 subaddress_flag;
+   kal_char address[MAX_CC_ADDR_LEN];
+   kal_char subaddress[MAX_CC_SUB_ADDR_LEN];
+} forwarding_list_struct;
+
+typedef struct {
+   kal_uint8 bs_code;
+   kal_uint8 ss_status;
+} barring_list_struct;
+
+typedef struct {
+   kal_uint8 ss_status;
+   kal_uint8 subaddress_flag;
+   l4_addr_bcd_struct address;
+   l4_addr_bcd_struct subaddress;
+   kal_uint8 bs_code;
+} ccbs_list_struct;
+
+typedef struct
+{
+    kal_bool cug_flag;
+    kal_uint8 clir_flag;
+    kal_uint8 call_type;
+    csmss_string_op_enum opcode;
+    l4c_number_struct addr;
+} l4c_ss_string_info_struct;
+
+typedef struct {
+    kal_uint8 icon_attr;
+    kal_uint8 icon_id;
+} sat_icon_struct;
+
+typedef struct {
+    kal_uint8 length;
+    kal_uint8 procomm[256];
+    rsat_config_enum is_wait_for_rsp;
+} sat_procomm_struct;
+
+typedef struct {
+    kal_uint8 p_class;
+    kal_uint8 d_class;
+    kal_uint8 r_class;
+    kal_uint8 peak_rate;
+    kal_uint8 mean_rate;
+    kal_uint8 proto_type;
+} sat_gprs_bearer_para_struct;
+
+typedef struct {
+    kal_uint8 speed;
+    kal_uint8 service_name;
+    kal_uint8 ce;
+} sat_csd_bearer_para_struct;
+
+//agps begin
+/* OCTET STRING Ext-GeographicalInformation */
+typedef struct L4C_SS_Ext_GeographicalInformation
+{
+   kal_uint8 numOctets;
+   kal_uint8 stringData[20];
+}
+L4C_SS_Ext_GeographicalInformation;
+
+/* OCTET STRING DecipheringKeys */
+typedef struct L4C_SS_DecipheringKeys
+{
+   kal_uint8 numOctets;
+   kal_uint8 stringData[15];
+}
+L4C_SS_DecipheringKeys;
+
+/* OCTET STRING Add-GeographicalInformation */
+typedef struct L4C_SS_Add_GeographicalInformation
+{
+   kal_uint8 numOctets;
+   kal_uint8 stringData[91];
+}
+L4C_SS_Add_GeographicalInformation;
+
+/* BIT STRING DeferredLocationEventType */
+#define   L4C_SS_DeferredLocationEventType_msAvailable   0x00000001
+
+#define   L4C_SS_DeferredLocationEventType_enteringIntoArea   0x00000002
+
+#define   L4C_SS_DeferredLocationEventType_leavingFromArea   0x00000004
+
+#define   L4C_SS_DeferredLocationEventType_beingInsideArea   0x00000008
+
+typedef struct L4C_SS_DeferredLocationEventType
+{
+   kal_uint8 numBits;
+   kal_uint8 stringData[2];
+}
+L4C_SS_DeferredLocationEventType;
+
+/* OCTET STRING AddressString */
+typedef struct L4C_SS_AddressString
+{
+   kal_uint8 numOctets;
+   kal_uint8 stringData[20];
+}
+L4C_SS_AddressString;
+
+typedef L4C_SS_AddressString L4C_SS_ISDN_AddressString;
+
+typedef struct
+{
+	kal_uint32		valueLen;
+	kal_uint8  	*value;
+}L4C_LCS_applib2_UnKnowExtensionItem;
+
+typedef struct
+{
+	kal_uint32						valueLen;		// Extension Number
+	L4C_LCS_applib2_UnKnowExtensionItem		*value;		// Point to the first 
+}L4C_LCS_applib2_UnKnowExtensionItemArray;
+
+/* SEQUENCE PrivateExtension */
+typedef struct L4C_SS_PrivateExtension
+{
+   L4C_LCS_applib2_UnKnowExtensionItemArray	UnKnowItem;
+}
+L4C_SS_PrivateExtension;
+
+/* SEQUENCE OF PrivateExtensionList */
+typedef struct L4C_SS_PrivateExtensionList	
+{	
+   kal_uint8 numElements;	
+	
+   L4C_SS_PrivateExtension element[10];	
+}	
+L4C_SS_PrivateExtensionList;
+
+/* SEQUENCE ExtensionContainer */
+typedef struct L4C_SS_ExtensionContainer
+{
+   kal_uint8 validity;
+
+   #define L4C_SS_ExtensionContainer_privateExtensionList_valid 0x02
+   #define L4C_SS_ExtensionContainer_pcs_Extensions_valid 0x01
+
+   L4C_SS_PrivateExtensionList privateExtensionList; /* OPTIONAL */
+}
+L4C_SS_ExtensionContainer;
+
+/* OCTET STRING USSD-DataCodingScheme */
+typedef struct L4C_SS_USSD_DataCodingScheme
+{
+   kal_uint8 numOctets;
+   kal_uint8 stringData[1];
+}
+L4C_SS_USSD_DataCodingScheme;
+
+/* OCTET STRING USSD-String */
+typedef struct L4C_SS_USSD_String
+{
+   kal_uint8 numOctets;
+   kal_uint8 stringData[160];
+}
+L4C_SS_USSD_String;
+
+/* DEFINED NameString */
+typedef L4C_SS_USSD_String L4C_SS_NameString;
+
+/* DEFINED RequestorIDString */
+typedef L4C_SS_USSD_String L4C_SS_RequestorIDString;
+
+/* SEQUENCE LCSClientName */
+typedef struct L4C_SS_LCSClientName
+{
+   kal_uint8 validity;
+
+   #define L4C_SS_LCSClientName_lcs_FormatIndicator_valid 0x01
+
+   L4C_SS_USSD_DataCodingScheme dataCodingScheme; /* MANDATORY */
+   L4C_SS_NameString nameString; /* MANDATORY */
+
+   kal_uint8 lcs_FormatIndicator; /* OPTIONAL */ /* L4C_SS_LCS_FormatIndicator */
+}
+L4C_SS_LCSClientName;
+
+/* SEQUENCE LCSRequestorID */
+typedef struct L4C_SS_LCSRequestorID
+{
+   kal_uint8 validity;
+
+   #define L4C_SS_LCSRequestorID_lcs_FormatIndicator_valid 0x01
+
+   L4C_SS_USSD_DataCodingScheme dataCodingScheme; /* MANDATORY */
+   L4C_SS_RequestorIDString requestorIDString; /* MANDATORY */
+
+   kal_uint8 lcs_FormatIndicator; /* OPTIONAL */ /* L4C_SS_LCS_FormatIndicator */
+}
+L4C_SS_LCSRequestorID;
+
+/* DEFINED LCSCodewordString */
+typedef L4C_SS_USSD_String L4C_SS_LCSCodewordString;
+
+/* SEQUENCE LCSCodeword */
+typedef struct L4C_SS_LCSCodeword
+{
+   L4C_SS_USSD_DataCodingScheme dataCodingScheme; /* MANDATORY */
+   L4C_SS_LCSCodewordString lcsCodewordString; /* MANDATORY */
+}
+L4C_SS_LCSCodeword;
+
+/* INTEGER LCSServiceTypeID */
+typedef kal_uint8 L4C_SS_LCSServiceTypeID;
+
+/* INTEGER AgeOfLocationInformation */
+typedef kal_uint16 L4C_SS_AgeOfLocationInformation;
+
+/* SEQUENCE LocationNotificationRes */
+typedef struct L4C_SS_LocationNotificationRes
+{
+   kal_uint8 validity;
+
+   #define L4C_SS_LocationNotificationRes_verificationResponse_valid 0x01
+
+   kal_uint8 verificationResponse; /* OPTIONAL */ /* L4C_SS_VerificationResponse */
+}
+L4C_SS_LocationNotificationRes;
+
+/* OCTET STRING LCS-ReferenceNumber */
+typedef struct L4C_SS_LCS_ReferenceNumber
+{
+   kal_uint8 numOctets;
+   kal_uint8 stringData[1];
+}
+L4C_SS_LCS_ReferenceNumber;
+
+/* OCTET STRING GSN-Address */
+typedef struct L4C_SS_GSN_Address
+{
+   kal_uint8 numOctets;
+   kal_uint8 stringData[17];
+}
+L4C_SS_GSN_Address;
+
+/* SEQUENCE LCS-AreaEventReportArg */
+typedef struct L4C_SS_LCS_AreaEventReportArg
+{
+   kal_uint8 validity;
+
+   #define L4C_SS_LCS_AreaEventReportArg_r_gmlc_address_valid 0x01
+
+   L4C_SS_LCS_ReferenceNumber referenceNumber; /* MANDATORY */
+   L4C_SS_GSN_Address h_gmlc_address; /* MANDATORY */
+   L4C_SS_GSN_Address r_gmlc_address; /* OPTIONAL */
+}
+L4C_SS_LCS_AreaEventReportArg;
+
+typedef struct L4C_SS_LCS_AreaEventCancellationArg
+{
+   L4C_SS_LCS_ReferenceNumber referenceNumber; /* MANDATORY */
+   L4C_SS_GSN_Address h_gmlc_address; /* MANDATORY */
+}
+L4C_SS_LCS_AreaEventCancellationArg;
+
+/* OCTET STRING AreaIdentification */
+typedef struct L4C_SS_AreaIdentification
+{
+   kal_uint8 numOctets;
+   kal_uint8 stringData[7];
+}
+L4C_SS_AreaIdentification;
+
+/* SEQUENCE Area */
+typedef struct L4C_SS_Area
+{
+   kal_uint8 areaType; /* MANDATORY */ /* L4C_SS_AreaType */
+   L4C_SS_AreaIdentification areaIdentification; /* MANDATORY */
+}
+L4C_SS_Area;
+
+/* SEQUENCE OF AreaList */
+typedef struct L4C_SS_AreaList	
+{	
+   kal_uint8 numElements;
+	
+   L4C_SS_Area element[10];	
+}	
+L4C_SS_AreaList;
+
+/* SEQUENCE AreaDefinition */
+typedef struct L4C_SS_AreaDefinition
+{
+   L4C_SS_AreaList areaList; /* MANDATORY */
+}
+L4C_SS_AreaDefinition;
+
+/* INTEGER IntervalTime */
+typedef kal_uint16 L4C_SS_IntervalTime;
+
+/* SEQUENCE AreaEventInfo */
+typedef struct L4C_SS_AreaEventInfo
+{
+   kal_uint8 validity;
+
+   #define L4C_SS_AreaEventInfo_occurrenceInfo_valid 0x02
+   #define L4C_SS_AreaEventInfo_intervalTime_valid 0x01
+
+   L4C_SS_AreaDefinition areaDefinition; /* MANDATORY */
+   kal_uint8 occurrenceInfo; /* OPTIONAL */ /* L4C_SS_OccurrenceInfo */
+   L4C_SS_IntervalTime intervalTime; /* OPTIONAL */
+}
+L4C_SS_AreaEventInfo;
+
+/* SEQUENCE LCS-AreaEventRequestArg */
+typedef struct L4C_SS_LCS_AreaEventRequestArg
+{
+   kal_uint8 validity;
+
+   #define L4C_SS_LCS_AreaEventRequestArg_r_gmlc_address_valid 0x01
+
+   L4C_SS_LCS_ReferenceNumber referenceNumber; /* MANDATORY */
+   L4C_SS_GSN_Address h_gmlc_address; /* MANDATORY */
+   L4C_SS_GSN_Address r_gmlc_address; /* OPTIONAL */
+   L4C_SS_DeferredLocationEventType deferredLocationEventType; /* MANDATORY */
+   L4C_SS_AreaEventInfo areaEventInfo; /* MANDATORY */
+}
+L4C_SS_LCS_AreaEventRequestArg;
+
+/* SEQUENCE ResponseTime */
+typedef struct L4C_SS_ResponseTime
+{
+   kal_uint8 responseTimeCategory; /* MANDATORY */ /* L4C_SS_ResponseTimeCategory */
+}
+L4C_SS_ResponseTime;
+
+/* OCTET STRING Vertical-Accuracy */
+typedef struct L4C_SS_Vertical_Accuracy
+{
+   kal_uint8 numOctets;
+   kal_uint8 stringData[1];
+}
+L4C_SS_Vertical_Accuracy;
+
+/* OCTET STRING Horizontal-Accuracy */
+typedef struct L4C_SS_Horizontal_Accuracy
+{
+   kal_uint8 numOctets;
+   kal_uint8 stringData[1];
+}
+L4C_SS_Horizontal_Accuracy;
+
+/* SEQUENCE LCS-QoS */
+typedef struct L4C_SS_LCS_QoS
+{
+   kal_uint8 validity;
+
+   #define L4C_SS_LCS_QoS_horizontal_accuracy_valid 0x10
+   #define L4C_SS_LCS_QoS_verticalCoordinateRequest_valid 0x08
+   #define L4C_SS_LCS_QoS_vertical_accuracy_valid 0x04
+   #define L4C_SS_LCS_QoS_responseTime_valid 0x02
+   #define L4C_SS_LCS_QoS_extensionContainer_valid 0x01
+
+   L4C_SS_Horizontal_Accuracy horizontal_accuracy; /* OPTIONAL */
+   kal_int8 verticalCoordinateRequest; /* OPTIONAL */
+   L4C_SS_Vertical_Accuracy vertical_accuracy; /* OPTIONAL */
+   L4C_SS_ResponseTime responseTime; /* OPTIONAL */
+   L4C_SS_ExtensionContainer extensionContainer; /* OPTIONAL */
+}
+L4C_SS_LCS_QoS;
+
+/* BIT STRING SupportedGADShapes */
+#define   L4C_SS_SupportedGADShapes_ellipsoidPoint   0x00000001
+
+#define   L4C_SS_SupportedGADShapes_ellipsoidPointWithUncertaintyCircle   0x00000002
+
+#define   L4C_SS_SupportedGADShapes_ellipsoidPointWithUncertaintyEllipse   0x00000004
+
+#define   L4C_SS_SupportedGADShapes_polygon   0x00000008
+
+#define   L4C_SS_SupportedGADShapes_ellipsoidPointWithAltitude   0x00000010
+
+#define   L4C_SS_SupportedGADShapes_ellipsoidPointWithAltitudeAndUncertaintyElipsoid   0x00000020
+
+#define   L4C_SS_SupportedGADShapes_ellipsoidArc   0x00000040
+
+typedef struct L4C_SS_SupportedGADShapes
+{
+   kal_uint8 numBits;
+   kal_uint8 stringData[2];
+}
+L4C_SS_SupportedGADShapes;
+
+/* OCTET STRING GPSAssistanceData */
+typedef struct L4C_SS_GPSAssistanceData
+{
+   kal_uint8 numOctets;
+   kal_uint8 stringData[38];
+}
+L4C_SS_GPSAssistanceData;
+
+/* SEQUENCE LCSClientExternalID */
+typedef struct L4C_SS_LCSClientExternalID
+{
+   kal_uint8 validity;
+
+   #define L4C_SS_LCSClientExternalID_externalAddress_valid 0x02
+   #define L4C_SS_LCSClientExternalID_extensionContainer_valid 0x01
+
+   L4C_SS_ISDN_AddressString externalAddress; /* OPTIONAL */
+   L4C_SS_ExtensionContainer extensionContainer; /* OPTIONAL */
+}
+L4C_SS_LCSClientExternalID;
+
+/* SEQUENCE LocationType */
+typedef struct L4C_SS_LocationType
+{
+   kal_uint8 validity;
+
+   #define L4C_SS_LocationType_deferredLocationEventType_valid 0x01
+
+   kal_uint8 locationEstimateType; /* MANDATORY */ /* L4C_SS_LocationEstimateType */
+
+   L4C_SS_DeferredLocationEventType deferredLocationEventType; /* OPTIONAL */
+}
+L4C_SS_LocationType;
+
+/* SEQUENCE LCS-MOLRArg */
+typedef struct L4C_SS_LCS_MOLRArg
+{
+   kal_uint16 validity;
+
+   #define L4C_SS_LCS_MOLRArg_locationMethod_valid 0x0200
+   #define L4C_SS_LCS_MOLRArg_lcs_QoS_valid 0x0100
+   #define L4C_SS_LCS_MOLRArg_lcsClientExternalID_valid 0x0080
+   #define L4C_SS_LCS_MOLRArg_mlc_Number_valid 0x0040
+   #define L4C_SS_LCS_MOLRArg_gpsAssistanceData_valid 0x0020
+   #define L4C_SS_LCS_MOLRArg_supportedGADShapes_valid 0x0010
+   #define L4C_SS_LCS_MOLRArg_lcsServiceTypeID_valid 0x0008
+   #define L4C_SS_LCS_MOLRArg_ageOfLocationInfo_valid 0x0004
+   #define L4C_SS_LCS_MOLRArg_locationType_valid 0x0002
+   #define L4C_SS_LCS_MOLRArg_pseudonymIndicator_valid 0x0001
+
+   kal_uint8 molr_Type; /* MANDATORY */ /* L4C_SS_MOLR_Type */
+   kal_uint8 locationMethod; /* OPTIONAL */ /* L4C_SS_LocationMethod */
+   L4C_SS_LCS_QoS lcs_QoS; /* OPTIONAL */
+   L4C_SS_LCSClientExternalID lcsClientExternalID; /* OPTIONAL */
+   L4C_SS_ISDN_AddressString mlc_Number; /* OPTIONAL */
+   L4C_SS_GPSAssistanceData gpsAssistanceData; /* OPTIONAL */
+
+   L4C_SS_SupportedGADShapes supportedGADShapes; /* OPTIONAL */
+
+   L4C_SS_LCSServiceTypeID lcsServiceTypeID; /* OPTIONAL */
+   L4C_SS_AgeOfLocationInformation ageOfLocationInfo; /* OPTIONAL */
+   L4C_SS_LocationType locationType; /* OPTIONAL */
+   kal_uint8 pseudonymIndicator; /* OPTIONAL */
+}
+L4C_SS_LCS_MOLRArg;
+
+/* SEQUENCE LocationNotificationArg */
+typedef struct L4C_SS_LocationNotificationArg
+{
+   kal_uint8 validity;
+
+   #define L4C_SS_LocationNotificationArg_lcsClientExternalID_valid 0x10
+   #define L4C_SS_LocationNotificationArg_lcsClientName_valid 0x08
+   #define L4C_SS_LocationNotificationArg_lcsRequestorID_valid 0x04
+   #define L4C_SS_LocationNotificationArg_lcsCodeword_valid 0x02
+   #define L4C_SS_LocationNotificationArg_lcsServiceTypeID_valid 0x01
+
+   kal_uint8 notificationType; /* MANDATORY */ /* L4C_SS_NotificationToMSUser */
+   L4C_SS_LocationType locationType; /* MANDATORY */
+   L4C_SS_LCSClientExternalID lcsClientExternalID; /* OPTIONAL */
+   L4C_SS_LCSClientName lcsClientName; /* OPTIONAL */
+
+   L4C_SS_LCSRequestorID lcsRequestorID; /* OPTIONAL */
+   L4C_SS_LCSCodeword lcsCodeword; /* OPTIONAL */
+   L4C_SS_LCSServiceTypeID lcsServiceTypeID; /* OPTIONAL */
+}
+L4C_SS_LocationNotificationArg;
+
+/* SEQUENCE LCS-MOLRRes */
+typedef struct L4C_SS_LCS_MOLRRes
+{
+   kal_uint8 validity;
+
+   #define L4C_SS_LCS_MOLRRes_locationEstimate_valid 0x04
+   #define L4C_SS_LCS_MOLRRes_decipheringKeys_valid 0x02
+   #define L4C_SS_LCS_MOLRRes_add_LocationEstimate_valid 0x01
+
+   L4C_SS_Ext_GeographicalInformation locationEstimate; /* OPTIONAL */
+   L4C_SS_DecipheringKeys decipheringKeys; /* OPTIONAL */
+
+   L4C_SS_Add_GeographicalInformation add_LocationEstimate; /* OPTIONAL */
+}
+L4C_SS_LCS_MOLRRes;
+//agps end
+
+//eq begin
+typedef struct {
+		
+    kal_uint32 PWM1_freq_Level_Info[5];
+	kal_uint32 PWM1_duty_Level_Info[5]; 
+	kal_uint32 PWM2_freq_Level_Info[5]; 
+	kal_uint32 PWM2_duty_Level_Info[5];
+	kal_uint32 PWM3_freq_Level_Info[5]; 
+	kal_uint32 PWM3_duty_Level_Info[5]; 
+
+	kal_uint8   MainLCD_Contrast_Level_Info[15];
+	kal_uint8   MainLCD_Bias_Level_Info[5];
+	kal_uint8   MainLCD_Linerate_Level_Info[5];
+	kal_uint8   MainLCD_Temp_Level_Info[5];
+   
+	kal_uint8   SubLCD_Contrast_Level_Info[15];
+	kal_uint8   SubLCD_Bias_Level_Info[5];
+	kal_uint8   SubLCD_Linerate_Level_Info[5];
+	kal_uint8   SubLCD_Temp_Level_Info[5];
+
+	kal_uint32   Battery_Level_Info[10];
+
+#ifdef __MULTI_LEVEL_BACKLIGHT_SUPPORT__
+        kal_uint32 bl_PWM_freq_Level_Info[PWM_MAX_BACKLIGHT_LEVEL]; 
+	kal_uint32 bl_PWM_duty_Level_Info[PWM_MAX_BACKLIGHT_LEVEL]; 
+#endif
+}
+l4c_hw_profile_struct;
+
+typedef struct {
+    kal_uint8 rtc_sec;
+    kal_uint8 rtc_min;
+    kal_uint8 rtc_hour;
+    kal_uint8 rtc_day;
+    kal_uint8 rtc_mon;
+    kal_uint8 rtc_wday;
+    kal_uint8 rtc_year;
+} rtc_format_struct;
+
+typedef struct {
+    kal_uint8 alarm_format;
+    kal_uint8 alarm_index;
+    kal_uint8 type;
+    kal_uint8 text[30];
+    kal_uint8 recurr;
+    rtc_format_struct data_time;
+} rtc_alarm_info_struct;
+
+typedef struct mmi_at_alarm_info_struct
+{
+   kal_uint8 alarm_index;
+   kal_uint8 recurr;
+   rtc_format_struct date_time;
+} mmi_at_alarm_info_struct;
+
+typedef enum{
+    VT_EM_REVERSE_INVALID = -1,
+    VT_EM_REVERSE_DATA = 0,
+    VT_EM_REVERSE_NULL
+}vt_em_reverse_channel_data_type;
+
+typedef enum{
+    VT_EM_AL_INVALID = -1,
+    VT_EM_AL2_WITH_SEQUENCE_NUMBER = 0,
+    VT_EM_AL2_WITHOUT_SEQUENCE_NUMBER,
+    VT_EM_AL3_CONTROL_FIELD_SIZE_0,
+    VT_EM_AL3_CONTROL_FIELD_SIZE_1,
+    VT_EM_AL3_CONTROL_FIELD_SIZE_2
+}vt_em_al_choice;
+
+typedef enum{
+    VT_EM_MUX_LEVEL_INVALID = -1,
+    VT_EM_MUX_LEVEL_0 = 0,
+    VT_EM_MUX_LEVEL_1,
+    VT_EM_MUX_LEVEL_1_WITH_DOUBLE_FLAG,
+    VT_EM_MUX_LEVEL_2,
+    VT_EM_MUX_LEVEL_2_WITH_OPTIONAL_HEADER,
+    VT_EM_MUX_LEVEL_3,
+    VT_EM_MUX_LEVEL_3_WITH_OPTIONAL_HEADER
+}vt_em_mux_level_choice;
+
+typedef enum{
+    VT_EM_WNSRP_INVALID = -1,
+    VT_EM_WNSRP_OFF = 0,
+    VT_EM_WNSRP_ON
+}vt_em_wnsrp_choice;
+
+typedef enum{
+    VT_EM_CODEC_INVALID = -1,
+    VT_EM_CODEC_MPEG4_H263 = 0,
+    VT_EM_CODEC_H263_MPEG4
+}vt_em_video_codec_preference_choice;
+
+typedef enum{
+    VT_EM_AUTO_DROP_INVALID = -1,
+    VT_EM_DISABLE_AUTO_DROP_IF_CHANNEL_FAIL = 0,
+    VT_EM_ENABLE_AUTO_DROP_IF_CHANNEL_FAIL
+}vt_em_auto_drop_if_channel_fail_choice;
+
+typedef enum{
+    VT_EM_TERMINAL_TYPE_INVALID = -1,
+    VT_EM_TERMINAL_TYPE_NORMAL = 0,
+    VT_EM_TERMINAL_TYPE_MASTER,
+    VT_EM_TERMINAL_TYPE_SLAVE
+}vt_em_terminal_type_choice;
+
+typedef struct{
+    vt_em_mux_level_choice mux_level_choice;
+    vt_em_wnsrp_choice  wnsrp_choice;
+    vt_em_al_choice audio_al_choice;
+    vt_em_al_choice video_al_choice;
+    vt_em_reverse_channel_data_type video_reverse_data_type_choice;
+    vt_em_video_codec_preference_choice video_codec_preference_choice;
+    vt_em_auto_drop_if_channel_fail_choice auto_drop_if_channel_fail_choice;
+    vt_em_terminal_type_choice  terminal_type_choice;
+    kal_int32 timer_T101; //default =  -1  (if its value equals -1, no change should be made) 
+    kal_int32 timer_T109; //default =  -1  (if its value equals -1, no change should be made) 
+    kal_int32 timer_T401; //default =  -1  (if its value equals -1, no change should be made) 
+    kal_int32   user_specified_1; //default =  -1  (if its value equals -1, no change should be made) 
+    kal_int32   user_specified_2; //default =  -1  (if its value equals -1, no change should be made) 
+    kal_uint8   user_specified_3[64]; //get input length by strlen() (end by EOF)
+}vt_em_config_struct;
+
+typedef struct
+{			
+	kal_uint8	mcc[3];	//MCC
+	kal_uint8	mnc[3];	//MNC
+	kal_uint8	lac[2];	//LAC
+	kal_uint16	cell_id;	 //cell ID
+	kal_uint8	nc_info_index; // index in rlc array to acquire the corresponding arfcn, bsic, rxlevel...
+    kal_uint8       rac;//RAC EM_RAC
+#ifdef __PS_SERVICE__
+    /*091014 WISDOM_EM Michael Shuang NMO*/
+    kal_uint8 nmo;
+#endif
+    kal_uint8 supported_Band;
+} rr_em_lai_info_struct;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef struct
+{
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+    kal_uint8 unused;
+}pmu6223_config_param_struct;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef struct
+{
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+    kal_uint8 unused;
+}pmu6238_config_param_struct;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+typedef struct
+{
+    //pmu6326_read_reg_struct read_reg;
+    //pmu6326_write_reg_struct write_reg;
+    kal_uint8 unused;
+}pmu6326_config_param_struct;
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef struct
+{
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+    kal_uint8 unused;
+}pmic_config_param_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    
+    kal_uint8 src_id;
+    kal_uint16 arfcn;         /* input */
+    kal_int16  afc;           /* input */
+    kal_uint8  band;          /* input */
+    kal_int8   tsc;           /* input */
+    kal_int8   pcl[4];        /* input */
+    kal_uint8  pattern;       /* input */
+    kal_int8   timeSlotmask;  /* input */
+    kal_uint8  cs[4];         /* input */
+    kal_bool   isEgprs;       /* input */
+}rf_test_gsm_tx_test_struct, l4cl1_em_rf_test_gsm_tx_test_req_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    
+    kal_uint8 src_id;
+    kal_int16 arfcn;      /* input */
+    kal_int16 gain;       /* input */
+    kal_uint8 band;       /* input */
+    kal_uint8  pattern;   /* input */
+}rf_test_gsm_rx_test_struct, l4cl1_em_rf_test_gsm_rx_test_req_struct;
+
+#if defined(__2G_RX_DIVERSITY_PATH_SUPPORT__)
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint8 src_id;
+    kal_int16 arfcn;      /* input */
+    kal_int16 gain_prx;   /* input */
+    kal_int16 gain_drx;   /* input */
+    kal_uint8 band;       /* input */
+    kal_uint8 pattern;   /* input */
+} rf_test_gsm_rx_test_two_path_struct, l4cl1_em_rf_test_gsm_rx_test_two_path_req_struct;
+#endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_int32 rssi_edBm;
+    kal_int16 error_cause;
+}l4cl1_em_rf_test_gsm_rx_test_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_uint8 src_id;
+   kal_int16 error_cause;
+}l4cl1_em_rf_test_gsm_tx_test_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;              /* input */ /* output */
+    kal_uint8 band;                /* input */   
+    kal_int16 arfcn_in;            /* input */
+    kal_int16 arfcn_out[20];       /* output */
+    kal_int16 power[20];           /* output */    
+    kal_int16 error_cause;         /* output */
+}rf_test_gsm_power_scan_struct, 
+l4cl1_em_rf_test_gsm_power_scan_req_struct, 
+l4cl1_em_rf_test_gsm_power_scan_cnf_struct;
+
+#if defined(__2G_RX_DIVERSITY_PATH_SUPPORT__)
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_int32 rssi_edBm_prx;
+    kal_int32 rssi_edBm_drx;
+    kal_int16 error_cause;
+}l4cl1_em_rf_test_gsm_rx_test_two_path_ind_struct;
+#endif
+
+typedef struct
+{
+    rf_test_gsm_tx_test_struct gsm_tx_test;
+    rf_test_gsm_rx_test_struct gsm_rx_test;   
+    rf_test_gsm_power_scan_struct gsm_power_scan;    
+#if defined(__2G_RX_DIVERSITY_PATH_SUPPORT__)	
+    rf_test_gsm_rx_test_two_path_struct  gsm_rx_test_2_path;
+#endif	
+}rf_test_gsm_param_struct;
+
+
+typedef struct
+{
+    kal_bool  tas_en;
+    kal_bool  rxd_en;
+    kal_bool  tx_on_flag;
+    kal_uint8 error_cause;
+    kal_uint8 rat;
+    kal_uint8 repeat_times;
+    kal_uint8 dl_bw;
+    kal_uint8 ul_bw; 
+    kal_uint8 vrb_start;
+    kal_uint8 vrb_len;
+    kal_uint8 ant_state;
+    kal_int16 tx_power;
+    kal_int16 rxm_gain;
+    kal_int16 rxd_gain;
+    kal_uint16 band;
+    EARFCN    arfcn; 
+}em_rf_scan_req_struct;
+
+typedef struct
+{
+    kal_uint8 mono_enable;    /* input */
+}fm_radio_mono_struct;
+  
+typedef struct
+{
+    kal_uint8 stereo_enable;  /* input */
+    kal_uint8 sblend_onoff;    /* input */
+}fm_radio_stereo_struct;
+
+typedef struct
+{
+    kal_uint8 level;                  /* input */   
+}fm_radio_rssi_struct;
+
+typedef struct
+{
+    kal_uint8 item_value;          /* input */   
+}fm_radio_if_count_delta_struct;
+
+typedef struct
+{
+    fm_radio_mono_struct fm_radio_mono;
+    fm_radio_stereo_struct fm_radio_stereo;   
+    fm_radio_rssi_struct fm_radio_rssi;    
+    fm_radio_if_count_delta_struct fm_radio_if;
+}fm_radio_config_param_struct;
+
+#if defined(__WIFI_SUPPORT__)
+typedef struct
+{
+    kal_uint8 ich;    /* output */
+    kal_uint8 qch;   /* output */
+}rf_test_wifi_tx_get_dac_offset_struct;
+
+typedef struct
+{
+    kal_uint8 contry_code[2];   /* input */
+    kal_uint32 ch_freq;               /* input */
+    kal_uint8 tx_rate;  /* input */    
+    kal_uint8 tx_ant;                /* input */
+    kal_uint8 gain;                   /* input */
+    wndrv_test_bandwidth_enum txBw;
+    wndrv_test_guard_intval_enum txGI;
+    wndrv_test_mode_sel_enum txMode;
+}rf_test_wifi_tx_common_struct;
+
+typedef struct
+{
+    kal_uint8 contry_code[2];      /* input */
+    kal_uint32 ch_freq;                 /* input */
+    kal_uint8 tx_rate;  /* input */
+    kal_uint8 tx_ant;                     /* input */
+    kal_uint8 gain;                        /* input */
+    kal_uint32 pkt_count;             /* input */
+    kal_uint32 pkt_interval;         /* input */
+    kal_uint32 pkt_length;             /* input */
+    kal_uint8 tx_pattern;               /* input */
+    kal_bool short_peramble;       /* input */
+    kal_uint8 mac_header[24];     /* input */
+    wndrv_test_bandwidth_enum txBw;                       /* input */
+    wndrv_test_guard_intval_enum txGI;                         /* input */
+    wndrv_test_mode_sel_enum txMode;                 /* input */
+}rf_test_wifi_tx_cont_pkt_struct;
+
+typedef struct
+{
+    kal_uint32 ch_freq;                     /* input */
+    kal_uint32 pau_total;                  /* output -- pau_rx_ptk_count */
+    kal_uint32 pau_err;                    /* output -- pau_crc_err_count */
+    kal_uint32 pau_ccca;                  /* output -- pau_cca_count */
+    kal_uint32 pau_fifo_full;            /* output -- pau_rx_fifo_full_count */
+    kal_uint32 int_ok;                      /* int_rx_ok_num */
+    kal_uint32 int_err;                     /* int_crc_err_num */
+    kal_uint32 rssi_mean;                /* int_rssi_mean */
+    kal_uint32 rssi_max;                  /* int_rssi_max */
+    kal_uint32 rssi_min;                    /* int_rssi_min */
+    kal_uint32 rssi_variance;            /* int_rssi_variance */
+    kal_uint32 int_long_preamble;    /* int_long_preamble_num */
+    kal_uint32 int_short_preamble;   /* int_short_preamble_num */
+    wndrv_test_bandwidth_enum   rxBw;                         /* input */ 
+}rf_test_wifi_rx_cont_pkt_struct;
+
+typedef struct
+{
+    kal_uint8 pwr_mgt;     /* input */
+}rf_test_wifi_power_save_struct;
+
+typedef struct
+{
+    kal_uint32 mcr_index;
+    kal_uint32 mcr32;
+}rf_test_wifi_reg_mcr32_write_struct;
+
+typedef struct
+{
+    kal_uint32 mcr_index;  /* input */
+    kal_uint32 mcr32;         /* output */
+}rf_test_wifi_reg_mcr32_read_struct;
+
+typedef struct
+{
+    kal_uint32 mcr_index;  /* input */
+    kal_uint16 mcr16;         /* input */
+}rf_test_wifi_reg_mcr16_write_struct;
+
+typedef struct
+{
+    kal_uint32 mcr_index;      /* intput */
+    kal_uint16 mcr16;             /* output */
+}rf_test_wifi_reg_mcr16_read_struct;
+
+typedef struct
+{
+    kal_uint32 bbcr_index;   /* intput */
+    kal_uint8 bbcr;              /* intput */
+}rf_test_wifi_reg_bbcr_write_struct;
+
+typedef struct
+{
+    kal_uint32 bbcr_index;    /* intput */
+    kal_uint8 bbcr;               /* output */
+}rf_test_wifi_reg_bbcr_read_struct;
+
+typedef struct
+{
+    kal_uint32 eeprom_index;   /* intput */
+    kal_uint16 eeprom;              /* intput */
+}rf_test_wifi_reg_eeprom_write_struct;
+
+typedef struct
+{
+    kal_uint32 eeprom_index;      /* intput */
+    kal_uint16 eeprom;                 /* output */
+}rf_test_wifi_reg_eeprom_read_struct;
+
+typedef struct
+{
+    kal_uint32 efuse_index; /* intput */
+    kal_uint32 efuse; /* intput */
+}rf_test_wifi_reg_efuse_write_struct;
+
+typedef struct
+{
+    kal_uint32 efuse_index; /* intput */
+    kal_uint32 efuse; /* intput */
+}rf_test_wifi_reg_efuse_read_struct;
+
+typedef struct
+{
+    rf_test_wifi_tx_get_dac_offset_struct wifi_get_dac;
+    rf_test_wifi_tx_common_struct wifi_tx_common;
+    rf_test_wifi_tx_cont_pkt_struct wifi_tx_cont_pkt;
+    rf_test_wifi_rx_cont_pkt_struct wifi_rx_cont_pkt;
+    rf_test_wifi_power_save_struct wifi_power_save;
+    rf_test_wifi_reg_mcr32_write_struct wifi_mcr32_write;
+    rf_test_wifi_reg_mcr32_read_struct wifi_mcr32_read;
+    rf_test_wifi_reg_mcr16_write_struct wifi_mcr16_write;
+    rf_test_wifi_reg_mcr16_read_struct wifi_mcr16_read;
+    rf_test_wifi_reg_bbcr_write_struct wifi_bbcr_write;
+    rf_test_wifi_reg_bbcr_read_struct wifi_bbcr_read;
+    rf_test_wifi_reg_eeprom_write_struct wifi_eeprom_write;
+    rf_test_wifi_reg_eeprom_read_struct wifi_eeprom_read;
+    rf_test_wifi_reg_efuse_write_struct wifi_efuse_write;
+    rf_test_wifi_reg_efuse_read_struct  wifi_efuse_read;
+}rf_test_wifi_param_struct;
+#endif
+
+//typedef struct _l4cul1_rssi_measurement_ind_struct
+//{
+//    LOCAL_PARA_HDR
+//    kal_int16      rssi;          /* RSSI. Range: -400 ~ -100 means (-100 ~ -25)dBm 0.25 dB step */
+//    kal_uint16     uarfcn;        /* UARFCN */
+//
+//} l4cul1_rssi_measurement_ind_struct;
+
+
+//eq end
+
+typedef struct 
+{
+    kal_uint8 addr_length;
+    kal_uint8 addr_bcd[11];
+}l4c_sms_addr_struct;
+
+typedef struct 
+{
+	l4c_sms_addr_struct          sca;
+	kal_uint8	tpdu[176];
+	kal_uint8 pdu_len;
+	kal_uint8 tpdu_len;
+}l4c_usm_cmgw_struct;
+
+typedef struct 
+{
+	kal_uint8 mode;
+	kal_uint8	mt;
+	kal_uint8 bm;
+	kal_uint8 ds;
+	kal_uint8 bfr;
+}l4c_usm_cnmi_struct;
+
+typedef struct 
+{
+	kal_uint16	reply_index;
+	kal_uint16	data_len;
+	kal_uint8		length;
+	kal_uint8		pdu[176];
+}l4c_usm_cmss_struct;
+
+typedef struct {
+   l4_name_struct name;
+   l4c_number_struct number_info;
+} l4c_sms_mailbox_info_struct;
+
+typedef struct {
+    kal_uint8  line_no; /* Number of Line*/
+    kal_uint8  msp_no;
+    kal_uint8  waiting_num;
+    kal_uint8  ind_type;
+    kal_bool   is_show_num;
+    kal_bool   is_clear;
+    kal_bool   is_from_storage;
+} l4csmsal_msg_waiting_ind_ext_struct;
+
+typedef struct {
+   kal_uint16 mid[60];      // = [SMSAL_MMI_CBMI_MAX_ENTRY]
+   kal_uint16 dcs[30];      // = [SMSAL_CB_MAX_ENTRY]
+   kal_uint16 mir[60];      // = [SMSAL_CB_MAX_ENTRY*2]
+   kal_uint8 mid_mask[60];  // = [SMSAL_MMI_CBMI_MAX_ENTRY]
+   kal_uint8 mir_mask[30];  // = [SMSAL_CB_MAX_ENTRY]
+   kal_uint8 dcs_mask[30];  // = [SMSAL_CB_MAX_ENTRY]
+   kal_uint8 para_ind; /* used in set_cb_mode_req only */
+
+   kal_bool is_all_language_on;
+
+   /* used in get_cb_mode_cnf */
+   kal_bool     is_cb_ready;
+   kal_bool     is_sim_change;
+
+   l4c_cb_set_type_enum    set_type;
+} l4c_cb_info_struct;
+
+typedef struct {
+    kal_uint16 ref; /* concat. message reference*/
+    kal_uint8 total_seg; /* total segments*/
+    kal_uint8 seg; /* indicate which segment*/
+} smsal_concat_struct;
+
+typedef struct {
+    kal_uint8 mem1; /* Storage type for Memory1*/
+    kal_uint8 mem2; /* Storage type for Memory2*/
+    kal_uint8 mem3; /* Storage type for Memory3*/
+    kal_uint16 used1;
+    kal_uint16 used2;
+    kal_uint16 used3;
+    kal_uint16 total1;
+    kal_uint16 total2;
+    kal_uint16 total3;
+} smsal_prefer_storage_struct;
+
+/* Message Waiting Indication Status */
+typedef struct
+{
+#ifdef __REL6__
+    kal_uint8 mbi_id[5]; //5 = NUM_OF_MSG_WAITING_TYPE
+#else
+   kal_uint8 mbi_id[4]; //4 = NUM_OF_MSG_WAITING_TYPE
+#endif
+} smsal_mbi_struct;
+
+typedef struct {
+    kal_uint8  mti; /* smsal_mti_enum */
+    kal_uint8  status; /* Status of message*/
+    kal_uint8  storage_type;
+    kal_uint16 index; /* Index of message*/
+} smsal_inbox_struct;
+
+typedef struct {
+    kal_uint16 msg_count; /* Message Count*/
+    smsal_inbox_struct inbox_list[40];
+} smsal_inbox_list_struct;
+
+typedef struct {
+    kal_uint8  mti; /* smsal_mti_enum */
+    kal_uint8  status; /* Status of message*/
+    kal_uint8  storage_type;
+    kal_uint16 index; /* Index of message*/
+} smsal_outbox_struct;
+
+typedef struct {
+    kal_uint16 msg_count; /* Message Count*/
+    smsal_outbox_struct outbox_list[40];
+} smsal_outbox_list_struct;
+
+// Enhanced Voice Mail Information
+typedef struct
+{
+    kal_uint16  id;
+
+    kal_uint8   msg_len_insec;
+    kal_uint8   msg_retention_day;  // max 31
+
+    kal_uint8   priority;
+
+    kal_uint8   msg_ext_flg;
+
+    l4_addr_bcd_struct   calling_line_addr;
+
+    kal_uint8   msg_ext_len;
+    kal_uint8   *msg_ext_data;
+}smsal_evmi_msg_struct;
+
+typedef struct {
+    kal_uint8 addr_length;
+    kal_uint8 addr_bcd[11];
+} sms_addr_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                    is_cbs_required;
+} smsal_4g5g_cbch_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16  cbmi[CB_MAX_MSG_CBMI_NUM];
+    kal_uint16  cbmid[CB_MAX_MSG_CBMID_NUM];
+    kal_uint16  cbmir[CB_MAX_MSG_CBMIR_NUM];
+    kal_uint8   dcs[CB_MAX_LANG_NUM]; /* DCS is one byte in TS23.041 9.3.18 & TS23.038, however, here 2 bytes represents ISO639 + DCS */
+    kal_bool    is_all_language_on;
+} smsal_4g5g_cb_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                  message_id;
+    kal_uint16                  serial_number;
+    kal_uint8                   data_coding_scheme;
+} smsal_4g5g_cb_data_ind_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    kal_uint16 message_id;          
+    kal_uint16 serial_number;        
+} smsal_4g5g_cb_msg_removal_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                    is_etws_needed;
+    kal_bool                    is_etws_testing_on;
+} l4c_4g5g_etws_setting_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                  warning_type;
+    kal_uint16                  message_id;
+    kal_uint16                  serial_number;
+} l4c_4g5g_etws_information_ind_struct;
+
+
+typedef struct {
+   kal_uint8 storage;
+   kal_uint8 type;
+   kal_uint8 num_index; 
+   kal_uint8 aas_id;
+   kal_uint16 index;
+   kal_uint16 record_index;
+   l4c_number_struct tel;
+   l4_name_struct alpha_id;
+} l4c_phb_entry_struct;
+
+typedef struct { 
+    kal_uint16 record_size;   /* size of record in storage */
+    kal_uint16 record_num;    /* rec number */
+    kal_uint8  alpha_length;  /* alpha length */
+    kal_uint8 occurrence;
+    kal_bool is_support;      /* to indicate the EF is supported or not */
+} l4c_phb_desc_struct;
+
+typedef l4_name_struct phb_sne_struct;
+typedef l4_name_struct phb_aas_struct;
+typedef l4_name_struct phb_gas_struct;
+
+typedef struct {
+    kal_uint8 email_length;
+    kal_uint16 record_index; /* Record index in physical storage*/
+    kal_uint16 adn_record_index; /* adn record index */
+    kal_uint8 email_address[PHB_MAX_EMAIL_LENGTH]; /* email address */
+    kal_uint8 email_dcs;
+} phb_email_struct;
+
+typedef struct
+{
+    kal_uint8 gas_id[PHB_MAX_ASSOCIATE_GRP];
+} phb_grp_struct;
+
+typedef struct
+{
+    kal_uint8 ctrl_info;
+    kal_uint8 hidden_info;
+} phb_pbc_struct;
+
+typedef union {
+    phb_sne_struct sne;
+    phb_aas_struct aas;
+    phb_gas_struct gas;
+    phb_grp_struct grp;
+    phb_email_struct email;
+    phb_pbc_struct pbc;
+} l4c_phb_usim_field;
+
+typedef struct {
+    l4c_phb_usim_field field;
+} l4c_phb_usim_entry;
+
+typedef struct {
+   kal_uint8 storage;
+   kal_uint8 type;
+   kal_uint16 index;
+   kal_uint16 record_index;
+   l4_addr_bcd_struct tel;
+   l4_name_struct alpha_id;
+} l4c_phb_bcd_entry_struct;
+
+
+typedef struct
+{
+	kal_uint16 num_of_entry;
+	l4c_phb_bcd_entry_struct	phb_entry[1000/NVRAM_PHB_SIZE];
+} l4c_phb_entries_struct;
+
+/* for AT/MMI */
+typedef struct {
+   kal_uint8   plmn_id[7];
+   kal_uint8   status; /*l4c_cops_status_enum*/
+} l4c_plmn_info_struct;
+
+typedef struct {
+   kal_uint8   plmn_id[7];
+   kal_uint8   status; /*l4c_cops_status_enum*/
+   kal_uint8 rat;
+   kal_uint8 lac[3];
+   endc_sib_status_enum  endc_sib_status;
+} l4c_rat_plmn_info_struct;
+
+typedef struct l4c_nw_time_zone_time_struct
+{
+	kal_uint8 year;
+	kal_uint8 month;
+	kal_uint8 day;
+	kal_uint8 hour;
+	kal_uint8 min;
+	kal_uint8 sec;
+	kal_uint8 time_zone;
+} l4c_nw_time_zone_time_struct;
+
+//mtk01616_080301: NOTE! this structure should sync with rac_ecc_number_struct
+typedef struct l4c_rac_ecc_number_struct
+{
+	kal_uint8          category;
+	l4_addr_bcd_struct	tel_number;
+} l4c_rac_ecc_number_struct;
+
+//mtk02374
+typedef struct {
+    kal_uint8 chv1_count;
+    kal_uint8 chv2_count;
+    kal_uint8 ubchv1_count;
+    kal_uint8 ubchv2_count;
+    kal_uint8 is_chv1_enabled;
+    kal_uint8 is_chv1_verified;
+    kal_uint8 is_chv2_enabled;
+    kal_uint8 is_chv2_verified;
+    kal_uint8 chv_key_ref[2];
+} sim_chv_info_struct;
+
+typedef struct {
+    kal_uint8 chv1_status;
+    kal_uint8 chv2_status;
+    kal_uint8 ubchv1_status;
+    kal_uint8 ubchv2_status;
+} sim_chv_status_struct;
+
+typedef struct {
+    kal_uint8 ecc[3];
+    kal_uint8 esc; // emergency service category //
+    kal_uint8 name_length;
+    kal_uint8 name_dcs;
+    kal_uint8 name[MAX_SIM_NAME_LEN]; 
+} sim_ecc_entry_struct;
+
+typedef struct
+{
+    kal_bool cache_updated;
+	kal_uint16 file_info_len;
+    kal_uint8 file_info_buff[USIM_CACHE_MAX_FILE_SIZE];
+	kal_uint8 sw1;
+	kal_uint8 sw2;
+} usim_cache_struct;
+
+typedef struct {
+   kal_uint8 alpha_id_dcs;
+   kal_uint8 alpha_id_size;
+   kal_uint8 alpha_id[32];
+   kal_uint8 ton_npi;
+   kal_uint8 digit_size;
+   kal_uint8 digit[41];
+} l4csmu_addr_struct;
+
+typedef struct {
+   kal_uint8 alpha_id_size;
+   kal_uint8 alpha_id[21];
+   kal_uint8 ton_npi;
+   kal_uint8 digit_size;
+   kal_uint8 digit[4];//[41];
+   kal_uint8 index_level;
+   kal_bool network_specific;
+   kal_bool premium_rate;
+} l4csmu_info_num_struct;
+
+typedef struct {
+    kal_uint8   rand[16];
+    kal_bool    is_auth_present;
+    kal_uint8   auth[16];
+    sim_interface_enum   sim_id;
+} smu_supc_sim_authenticate_request_struct;
+
+typedef struct {
+    kal_uint16 result;
+    kal_uint8   kc[8];
+    kal_uint8   sres[4];
+    kal_uint8   ck[16];
+    kal_uint8   ik[16];
+    kal_uint8   res[16];
+    kal_uint8   res_len;
+    kal_uint8   auts[16];
+    kal_uint8   auts_len;
+} smu_supc_sim_authenticate_response_struct;
+
+typedef struct {
+  LOCAL_PARA_HDR
+   kal_uint8 cmd_detail[5];
+   kal_bool is_icon_available;
+   sat_icon_struct icon_info;
+  kal_uint8 bearer_type;
+} l4csmu_sat_open_channel_ind_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 cmd_detail[5];
+  kal_uint8 state;
+  kal_bool is_icon_available;
+  sat_icon_struct icon_info;
+} l4csmu_sat_close_channel_ind_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 cmd_detail[5];
+  kal_uint8 state;
+   kal_bool is_icon_available;
+   sat_icon_struct icon_info;
+} l4csmu_sat_send_data_ind_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 cmd_detail[5];
+  kal_uint8 state;
+  kal_bool is_icon_available;
+  sat_icon_struct icon_info;
+} l4csmu_sat_recv_data_ind_struct;
+
+typedef struct {
+    kal_uint8 hnb_name_length;
+    kal_uint8 hnb_name[MAX_HNB_NAME_LEN];
+    csg_type_enum csg_type;
+    kal_uint32 csg_id;
+    kal_int8 power_level;
+} csg_info_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8   gsm_tx_pwr_red;
+    kal_uint8   umts_tx_pwr_red;
+} l4c_max_tx_pwr_red_req_struct;
+
+typedef struct {
+    pdp_addr_type_enum ip_addr_type;
+    kal_uint8 ipv4[IPV4_ADDR_LEN];
+    kal_uint8 ipv6[IPV6_ADDR_LEN];
+} ip_addr_struct;
+
+typedef struct 
+{
+    EARFCN                      earfcn;
+    kal_uint8                   bandwidth;
+} interrat_lte_cell_info_struct;
+
+typedef struct {
+    kal_bool  is_dnsv4_present ;
+    kal_uint8 dnsv4[IPV4_ADDR_LEN] ;
+} ipv4_dns_struct ;
+
+typedef struct {
+    kal_bool  is_dnsv6_present ;
+    kal_uint8 dnsv6[IPV6_ADDR_LEN] ;
+} ipv6_dns_struct ;
+
+#define NUM_OF_DNS_ADDR 2 
+typedef struct {
+    ipv4_dns_struct v4[NUM_OF_DNS_ADDR];
+    ipv6_dns_struct v6[NUM_OF_DNS_ADDR];
+} dns_struct ;
+
+/* to replace l4ctst_at_response_ind_struct */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 length;
+    kal_uint8 string[128];
+}atptst_at_response_ind_struct;
+
+typedef struct {
+    kal_uint8 ref_count;
+    kal_uint16 msg_len;
+    ratcm_utest_loopback_mode_cmd_enum  cmd;
+} upcm_ratcm_test_mode_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool  remote_wakeup_enable;
+}l4c_usb_suspend_req_struct;
+
+#ifndef __MTK_TARGET__
+// for MSG_ID_L4C_INJECT_SBP_CHANGE_IND
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool                    is_sbp_feature_change;
+    sbp_md_feature_enum         sbp_feature;
+    kal_bool                    new_feature_val;
+    kal_bool                    is_sbp_data_change;
+    sbp_md_feature_data_enum    sbp_data;
+    kal_uint8                   new_data_val;
+}l4c_inject_sbp_change_ind_struct;
+
+typedef struct {
+  LOCAL_PARA_HDR
+  rat_enum rat_mode;
+} l4c_ut_set_rac_rat_mode_context_ind_struct;
+#endif
+
+typedef struct
+{
+    // if is_in_dynamic_sbp = TRUE, sbp_id is SIM SBP ID, else it is legacy SBP ID
+    kal_uint32              sbp_id;
+    kal_uint32              sbp_sub_id;
+    kal_bool                is_in_dynamic_sbp;
+    protocol_id_enum        ps_id;
+    kal_uint8                       mcc[MAX_MCC_STR_LEN];
+    kal_uint8                       mnc[MAX_MNC_STR_LEN];
+    kal_uint8                       iccid[21];
+    kal_uint8 trans_id;  // trans_id correspondign to SIM READY IND
+    kal_bool is_boot_up;
+} sbp_reconfig_custom_param_struct;
+
+typedef kal_bool (*SBP_RECONFIG_CUSTOM_FUNC)(sbp_reconfig_custom_param_struct *param_ptr);
+
+
+typedef struct {
+    module_type     mod_id;
+    sap_type        sap_id;
+    kal_uint8       reconfig_type;
+    kal_uint8       gemini_check;
+    SBP_RECONFIG_CUSTOM_FUNC             custom_func_ptr;     /* IMS customized  */            
+}reconfigure_module_info_struct;
+
+typedef struct {
+    module_type     mod_id;
+    kal_uint8       max_sim_num;         /* Num of modules */
+}l4bpwr_module_info_struct;
+
+typedef struct {
+    module_type     mod_id;
+    sap_type        sap_id;
+    kal_uint32       reconfig_type;
+    kal_uint8       gemini_check;
+    SBP_RECONFIG_CUSTOM_FUNC             custom_func_ptr;     /* IMS customized  */            
+}sbp_reconfigure_module_info_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8  reconfig_type;
+}l4c_me_reconfigure_req_struct, l4c_me_volte_reconfigure_req_struct, l4c_me_ims_reconfigure_req_struct, l4c_me_dsbp_reconfigure_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8  reconfig_type;
+    kal_uint8  trans_id;  // trans_id corresponding to SIM READY IND
+	kal_uint32 sim_sbp_id;
+}l4c_me_dsbp_reconfigure_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    sbp_reconfig_custom_param_struct sbp_parameters;
+    kal_bool is_all;
+} l4c_sbp_dsbp_reconfigure_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_all;
+} l4c_sbp_dsbp_reconfigure_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 trans_id;  // trans_id correspondign to SIM READY IND
+}l4bsbp_me_reconfigure_not_occur_req_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4_rf_state_enum   rf_state;
+    rfoff_cause_enum   rfoff_cause;
+    l4_sim_state_enum  sim_state;
+    kal_bool           is_power_off;        /* used by IMC to teardown IMS anyway */
+}l4bpwr_phone_state_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool          result;
+    kal_uint16        cause;
+}l4bpwr_phone_state_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    ostd_ap_core_status_enum ap_core_status;
+}ostd_ap_core_status_req_struct, l4bpwr_ap_core_status_req_struct;
+
+typedef struct
+{
+    kal_uint8 result; 
+    kal_uint8 plmn_id[7];	
+	kal_uint8 lac[2];
+	kal_uint16 cell_id;
+	kal_uint16 arfcn;
+	kal_uint8 bsic;
+	kal_uint8 si3_raw_data[23];	
+}l4c_pseudo_bs_info_struct;
+
+
+#if (defined L1_SIM)
+   typedef union{
+      kal_uint32 u_integer_num;
+      kal_int32 integer_num;
+      kal_uint8 string_s[MAX_ATCMD_EGMC_SHORT_STR_LEN];
+   }l4c_at_cmd_param_union;
+#else
+   typedef union{
+      kal_uint32 u_integer_num;
+      kal_int32 integer_num;
+      kal_uint8 string_s[MAX_ATCMD_EGMC_SHORT_STR_LEN+1];
+   }l4c_at_cmd_param_union;
+#endif
+
+typedef struct{
+    kal_uint8 param_num;
+
+    l4c_at_cmd_param_type   type[MAX_ATCMD_EGMC_PARAM_NUM];
+    l4c_at_cmd_param_union  param[MAX_ATCMD_EGMC_PARAM_NUM];
+}l4c_general_modem_configure_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_uint8 src_id;
+    kal_uint8 configure_string[MAX_ATCMD_EGMC_CONFIG_STR_LEN+1];
+    l4c_general_modem_configure_struct data;
+}l4c_general_modem_configure_set_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_uint8 src_id;
+    kal_bool  result;
+    kal_uint8 configure_string[MAX_ATCMD_EGMC_CONFIG_STR_LEN+1];
+    l4c_general_modem_configure_struct data;
+}l4c_general_modem_configure_set_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_uint8 src_id;
+    kal_uint8 configure_string[MAX_ATCMD_EGMC_CONFIG_STR_LEN+1];
+}l4c_general_modem_configure_query_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_uint8 src_id;
+    kal_uint8 configure_string[MAX_ATCMD_EGMC_CONFIG_STR_LEN+1];
+    l4c_general_modem_configure_struct data;
+}l4c_general_modem_configure_query_cnf_struct;
+
+typedef struct{
+	kal_char *plmnId;
+	emm_op_enum op;
+} plmn_id_op_struct;
+
+typedef struct{
+	kal_char *plmnId;
+	vgmm_op_enum op;
+} vgmm_plmn_id_op_struct;
+
+#ifdef __TX_PWR_EXTENSION__
+typedef struct {
+	LOCAL_PARA_HDR
+	/*
+	*nv_write 0: clear band_no power offset in NVRAM
+	*nv_write 1: write band_no power offset to NVRAM
+	*nv_write 0xFF: not clear and not write band_no power offset to NVRAM
+	*
+	*/
+  kal_uint8  src_id;
+	kal_uint8  nv_write;
+	kal_uint8  band_no;
+	kal_int16  max_tx_pwr_offset;	/* 1/16 dB*/
+}l4cnl1_set_max_tx_pwr_offset_req_struct;
+
+typedef struct {
+	LOCAL_PARA_HDR
+    kal_uint8  src_id;
+	kal_bool   result;		
+}l4cnl1_set_max_tx_pwr_offset_cnf_struct;
+
+typedef struct {
+	kal_uint8  band;
+	kal_uint8  tx_path; /*0/1*/
+	kal_int32   pwr_value;		
+}nl1_tx_pwr_struct;
+
+typedef struct {
+	LOCAL_PARA_HDR
+    kal_uint8  src_id;
+}l4cnl1_get_tx_pwr_req_struct;
+
+typedef struct {
+	LOCAL_PARA_HDR
+    kal_uint8          src_id;
+	nl1_tx_pwr_struct  tx_pwr[2];
+}l4cnl1_get_tx_pwr_cnf_struct;
+typedef l4cnl1_get_tx_pwr_cnf_struct l4cnl1_get_tx_power_cnf_struct;    // for logging
+#endif
+
+
+typedef struct _l4_cnap_struct
+{
+    kal_uint8 name_length;
+    kal_uint8 name_dcs;
+    kal_uint8 name[MAX_CHAR_CNAP * 2+1+2]; // +2 addition for KSC5601 DCS alphabet type
+} l4_cnap_struct;
+
+typedef struct {
+    kal_uint8 mcc2;
+    kal_uint8 mcc1;
+    kal_uint8 mnc3;
+    kal_uint8 mcc3;
+    kal_uint8 mnc2;
+    kal_uint8 mnc1;
+} pam_plmn_id_struct;
+
+typedef struct
+{
+    kal_uint8           apn_len;
+    ps_cause_enum       pam_cause;
+    pam_plmn_id_struct  plmn_id;
+    rat_enum            reject_rat;
+    kal_bool            is_backoff_timer_deactivated;
+    kal_uint32          backoff_timer_timeout_timestamp;
+    pam_procedure_enum  reject_proc;
+} pam_non_standard_backoff_timer_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    at_cabtsri_ind_struct                  cabtsri_ind;  // for standard AT cmd: +CABTSRI    
+	pam_non_standard_backoff_timer_struct  info;  // for other related back-off timer info
+} pam_backoff_timer_report_ind_struct; //this struct should be removed after L4/TCM remove MSG_ID_PAM_BACKOFF_TIMER_REPORT_IND
+
+
+typedef struct {
+    kal_bool  is_sst_present;
+    kal_uint8 sst;
+    
+    kal_bool  is_sd_present;
+    kal_uint8 sd[S_NSSAI_SD_LEN];
+    
+    kal_bool  is_mapped_configured_sst_present;
+    kal_uint8 mapped_configured_sst;
+    
+    kal_bool  is_mapped_configured_sd_present;
+    kal_uint8 mapped_configured_sd[S_NSSAI_SD_LEN];
+} pdus_s_nssai_struct;
+
+typedef struct {
+    kal_bool   qos_5qi_present;
+    kal_bool   gfbr_ul_present;
+    kal_bool   gfbr_dl_present;
+    kal_bool   mfbr_ul_present;
+    kal_bool   mfbr_dl_present;
+    kal_bool   avg_window_present;
+    kal_bool   ebi_present;
+    
+    kal_uint8  qos_5qi;
+    kal_uint64 gfbr_ul;
+    kal_uint64 gfbr_dl;
+    kal_uint64 mfbr_ul;
+    kal_uint64 mfbr_dl;
+    kal_uint16 avg_window;
+    kal_uint8  ebi;
+} qos_params_struct;
+
+typedef struct {
+    kal_uint8 qfi_with_default_rule;
+    kal_uint32 num_of_active_flow;
+    vgsm_flow_state_enum state[VGSM_MAX_QFI_NUM];
+    qos_params_struct flow_params[VGSM_MAX_QFI_NUM]; 
+
+} pdus_qos_flow_struct;
+
+typedef struct {
+    kal_uint8 qfi;
+    qos_params_struct qos_profile;
+} qf_params_struct;
+
+typedef struct {
+    kal_uint8 num_of_qf_params;
+    qf_params_struct qf_params[VGSM_MAX_QFI_NUM];
+} qos_flow_descriptions_struct;
+
+typedef struct {
+    kal_uint8 qfi;
+    vgsm_flow_action_enum qfi_action;
+        
+} qos_flow_action_struct;
+
+typedef struct {
+    kal_uint8 num_of_flow_action;
+    qos_flow_action_struct flow_action[VGSM_MAX_QFI_NUM];
+    
+} qos_flow_action_table_struct;
+
+typedef struct {
+    kal_uint64 dl;
+    kal_uint64 ul;
+} pdus_session_ambr_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	sbp_reconfig_custom_param_struct sbp_parameters;
+} l4c_sms_dsbp_reconfigure_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	sbp_reconfig_custom_param_struct sbp_parameters;
+}l4c_imcsms_dsbp_reconfigure_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    sbp_reconfig_custom_param_struct sbp_parameters;
+}l4c_dsbp_setting_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	sbp_reconfig_custom_param_struct sbp_parameters;
+}l4c_smsal_dsbp_reconfigure_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	sbp_reconfig_custom_param_struct sbp_parameters;
+} l4c_atci_dsbp_reconfigure_ind_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    vdm_call_status_enum                    indication;
+    vdm_call_domain_enum                    call_domain;
+    kal_bool                                is_emergency;
+} vdm_me_call_status_req_struct;
+
+
+
+typedef struct {
+    module_type     mod_id;
+    sap_type        sap_id;
+    vdm_call_status_enum       reg_type;
+    kal_uint8       gemini_check;          
+} call_status_notify_module_info_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    ia_apn_change_cause_enum cause;
+} ia_apn_change_req_struct; 
+
+typedef struct {
+    LOCAL_PARA_HDR
+        
+    kal_uint8 ap_cid;
+    kal_uint8 d2_cid;
+    kal_uint8 ps_cid;
+} l4aps_tcm_update_cid_mapping_req_struct; 
+
+typedef struct {
+    LOCAL_PARA_HDR
+        
+    kal_uint8 d2_cid;
+    kal_bool result;
+} l4aps_tcm_update_cid_mapping_cnf_struct; 
+
+typedef struct {
+    kal_uint16 ref; /* concat. message reference*/
+    kal_uint8 total_seg; /* total segments*/
+    kal_uint8 seg; /* indicate which segment*/
+} sms_concat_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	sbp_reconfig_custom_param_struct sbp_parameters;
+}tcm_dsbp_reconfigure_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	sbp_reconfig_custom_param_struct sbp_parameters;
+}sm_dsbp_reconfigure_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 hvolte_mode;    
+} l4c_hvolte_mode_switch_ind_struct;
+
+typedef struct
+{
+    l4_rf_state_enum    rf_state;
+    rfoff_cause_enum    rfoff_cause;
+    l4_sim_state_enum   sim_state;
+} phone_state_info_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool            is_power_off;
+    phone_state_info_struct phone_state_info[MAX_SIM_NUM];
+}l4bpwr_phone_state_finished_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool            is_power_off;
+    phone_state_info_struct phone_state_info[MAX_SIM_NUM];
+}l4bpwr_mt_phone_state_ind_struct;
+
+#if defined(__ECALL_SUPPORT__) || defined(__NG_ECALL_SUPPORT__)
+typedef struct
+{
+    kal_uint16 len;
+    kal_uint8  uri[MAX_PHB_XDN_URI_LEN + 1];    
+
+} l4_phb_uri_struct;
+#endif /* (__ECALL_SUPPORT__) || (__NG_ECALL_SUPPORT__) */
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    sbp_reconfig_custom_param_struct sbp_parameters;
+} l4c_cc_dsbp_reconfigure_ind_struct;
+
+/* For AT SLA support*/
+typedef struct
+{
+    kal_uint8          cmd[20]; /* This value should be same as ATP_TABLE_DATA_SIZE*/
+}atp_factory_at_cmd_table_item;
+
+
+typedef struct
+{
+    kal_uint8          num_of_band;
+    nw_scan_band_enum  band[MAX_NUM_BAND];
+    kal_uint8          num_of_channel;
+    kal_uint32         channel[MAX_NUM_CHANNEL];
+} network_scan_input_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8          diff;
+    kal_uint8          period;
+} l4c_nl1icd_rfpd_set_ind_struct;
+
+#if (!defined(__MAUI_BASIC__)) && (!(defined(__NR_L1SIM__) || defined(__LTE_L1SIM__)))
+typedef struct {
+    plmn_id_struct plmn_id;
+    kal_uint16 tac;
+} public_enas_tai_struct;
+
+typedef struct en_sos_urn_association_struct {
+    kal_uint8   emergency_number_byte_count;
+    kal_uint8   emergency_number[MAX_EN_NUMBER_LENGTH];
+    kal_uint16  emergency_sos_urn_count;
+    kal_uint8   emergency_sos_urn[MAX_SOS_URN_LENGTH];
+} en_sos_urn_association_struct;
+
+typedef struct extended_emergency_number_list_struct {
+    plmn_id_struct                  eenl_plmn;
+    eenl_validity_enum              eenl_validity;
+    kal_uint8                       en_sos_urn_association_count;
+    en_sos_urn_association_struct  *en_sos_urn_association;
+} extended_emergency_number_list_struct;
+
+typedef struct
+{
+    /* Cell Identity NR */
+    NRARFCN            nrarfcn;           // NRARFCN
+    kal_uint16         pci;               // PCID
+    kal_uint16         dl_freq_band;      // BAND
+    kal_uint8          num_of_plmn_list;
+    plmn_id_struct     plmn_list[MAX_NUM_MULTI_PLMN];           // MCC + MNC
+    kal_uint8          cell_id[5];        // CI
+    kal_uint8          tac[3];            // TAC
+    kal_bool           reg_status;        // 0 for non-serving cell; 1 for serving cell
+
+    /* 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 for invalid
+    kal_int16          csi_rsrq_in_qdb;   // not support, 0x8000 for invalid
+    kal_int16          csi_sinr_in_qdb;   // not support, 0x8000 for invalid
+} network_scan_5g_output_struct;
+
+typedef struct
+{
+    /* Cell Identity LTE */
+    EARFCN             earfcn;                                  // EARFCN
+    kal_uint16         pci;                                     // PCID
+    kal_uint16         dl_freq_band;                            // BAND
+    kal_uint8          num_of_plmn_id;                          // Number of elements in plmn_id_list
+    plmn_id_struct     plmn_id_list[MAX_NUM_MULTI_PLMN];        // MCC + MNC
+    kal_uint32         cell_id;                                 // CI
+    kal_uint16         tac;                                     // TAC
+    kal_bool           reg_status;                              // 0 for non-serving cell; 1 for seving cell
+
+    /* Signal Strength LTE */
+    kal_int16          rssi;                                    // RSSI
+    kal_int16          rsrp;                                    // RSRP
+    kal_int16          rsrq;                                    // RSRQ
+    kal_int16          snr;                                     // SNR
+} network_scan_4g_output_struct;
+
+/* 2G Part*/
+typedef struct
+{
+    /* Cell Identity 2G*/
+    kal_uint16           arfcn;           //ARFCN
+    kal_uint8            bsic;            //BSIC
+    plmn_id_struct       plmn_id;         //MCC + MNC
+    kal_uint16           cell_id;         // CI
+    kal_uint8            lai[2];          //LAC
+    /* Signal Strength 2G */
+    kal_int16            rssi;            //RSSI
+    kal_bool             reg_status;      // 0: non-Serving cell; 1: Serving cell
+} network_scan_2g_output_struct;
+
+typedef struct 
+{
+    /* Cell Identity UMTS*/
+    kal_uint16               uarfcn;              // UARFCN
+    kal_uint16               psc;                 // PSC
+    plmn_id_struct           plmn_id;             //  MCC + MNC
+    kal_uint32               cell_id;             // CI
+    kal_uint16               lac;                 //LAC
+    /* Signal Strength UMTS*/ 
+    kal_int16                rscp;                // rscp
+    kal_int16                ecno;                // EcNO
+    kal_int32                rssi;                // RSSI
+    kal_bool                 reg_status;         // Registration Status (Serving Cell/Non Serving cell)
+    umts_duplex_mode_type    umts_duplex_mode;    //  Duplex mode(UMTS_WCDMA_DUPLEX_MODE)
+} network_scan_3g_output_struct;
+
+typedef union
+{
+    network_scan_2g_output_struct nw_scan_2g_output;
+    network_scan_3g_output_struct nw_scan_3g_output;
+} network_scan_23g_union;
+
+typedef union
+{
+    network_scan_2g_output_struct nw_scan_2g_output;
+    network_scan_3g_output_struct nw_scan_3g_output;
+    network_scan_4g_output_struct nw_scan_4g_output;
+} network_scan_234g_union_type;
+
+typedef union
+{
+    network_scan_2g_output_struct nw_scan_2g_output;
+    network_scan_3g_output_struct nw_scan_3g_output;
+    network_scan_4g_output_struct nw_scan_4g_output;
+	network_scan_5g_output_struct nw_scan_5g_output;
+} network_scan_rat_union_type;
+#endif 
+
+typedef struct
+{
+    kal_uint32  cell_id;
+    kal_uint16  lac_or_tac_value;
+    kal_uint8   plmn_id[MAX_PLMN_LEN+1];
+} l4bnw_cell_info_struct;
+
+typedef struct
+{
+    rat_enum current_rat;
+
+    l4bnw_cell_info_struct cs_cell_info;
+    l4bnw_cell_info_struct ps_cell_info;
+    
+    /* C2K cell info */
+    kal_uint16 sid;
+    kal_uint16 nid;
+    kal_uint16 base_id;
+} l4bnw_cs_ps_cell_info_struct;
+
+/* For AT CMD ON/OFF support*/
+typedef struct
+{
+    kal_uint8          cmd[20]; /* This value should be same as ATP_TABLE_DATA_SIZE*/
+}atp_block_at_cmd_table_item;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 trans_id;     // piggy-back
+    kal_uint8 sim_ef_type;  // 0 - Unknown, 1 - OPL, 2 - PNN, 3 - OPL5G
+} l4c_eons_sim_data_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 trans_id;     // piggy-back
+    kal_bool result;        // TRUE for data exit (peer buffer), FALSE for no data exist
+    kal_uint8 sim_ef_type;  // 0 - Unknown, 1 - OPL, 2 - PNN, 3 - OPL5G
+    kal_uint8 num_record;
+    kal_uint8 rec_size;
+} l4c_eons_sim_data_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint32 event_type;
+} l4c_dhl_event_notify_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    rat_enum rat; /*1 - GSM, 2 - UMTS, 4 - LTE*/
+    kal_uint8 signal_type; /* When rat GSM, 0 - RSSI, when rat UMTS, 0 - RSCP, When rat LTE, 0 - RSRP, 1 - RSRP, 2 - RSSNR */
+    kal_uint8 mode; /* 0 - reset all thresholds. 1 - set threshold as provided in parameters below */
+    kal_uint8 num_of_thresholds;
+    kal_int16 threshold[MAX_NUM_OF_SIGNAL_THRESH];
+    kal_uint32 HysterisisMS;
+    kal_uint32 HysterisisDB;
+} l4cps_set_signal_reporting_criteria_req_struct;
+
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_uint8               sig1;
+   kal_uint8               sig2;
+   kal_uint8               ber;
+   kal_int32               rssi_in_qdbm;
+   kal_int32               rscp_in_qdbm;
+   kal_int32               ecn0_in_qdbm;
+   kal_int32               rsrq_in_qdbm;
+   kal_int32               rsrp_in_qdbm;
+   kal_int16               rs_snr_in_qdb;
+   kal_int16               serv_band;
+   rat_enum            	   rat;
+} l4c_public_signal_info_ind_struct;
+
+
+#ifdef __TX_PWR_EXTENSION__
+typedef struct{
+	kal_int8 tx_pwr_value;
+	kal_uint8 band;
+	kal_uint8 phy_idx;
+}l4c_tx_pwr_info_per_antenna;
+#endif
+#endif /* _PS_PUBLIC_STRUCT_H_ */
diff --git a/mcu/interface/protocol/general/ps_public_ups_def.h b/mcu/interface/protocol/general/ps_public_ups_def.h
new file mode 100644
index 0000000..a582645
--- /dev/null
+++ b/mcu/interface/protocol/general/ps_public_ups_def.h
@@ -0,0 +1,81 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *	ps_public_ups_def.h
+ *
+ * Project:
+ * --------
+ *  MAUI
+ *
+ * Description:
+ * ------------
+ *  The public definitions of module UPS.
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef PS_PUBLIC_UPS_DEF_H
+#define PS_PUBLIC_UPS_DEF_H
+
+
+#endif /* PS_PUBLIC_UPS_DEF_H */
diff --git a/mcu/interface/protocol/general/ps_public_ups_enum.h b/mcu/interface/protocol/general/ps_public_ups_enum.h
new file mode 100644
index 0000000..c3d1be2
--- /dev/null
+++ b/mcu/interface/protocol/general/ps_public_ups_enum.h
@@ -0,0 +1,97 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *	ps_public_ups_enum.h
+ *
+ * Project:
+ * --------
+ *  MAUI
+ *
+ * Description:
+ * ------------
+ *  The public enums of module UPS.
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef PS_PUBLIC_UPS_ENUM_H
+#define PS_PUBLIC_UPS_ENUM_H
+
+typedef enum
+{
+   ABM_RNDIS_DEACT_TYPE_DETACH = 0,
+   ABM_RNDIS_DEACT_TYPE_SUSPEND
+} abm_rndis_deact_type_enum;
+
+typedef enum {
+    MBIM_TERMINATE_CLOSE,
+    MBIM_TERMINATE_RESET,
+    MBIM_TERMINATE_PLUGOUT,
+    MBIM_TERMINATE_STOP_LOOPBACK_TEST
+} mbim_terminate_enum;
+
+#endif /* PS_PUBLIC_UPS_ENUM_H */
diff --git a/mcu/interface/protocol/general/ps_public_utility.h b/mcu/interface/protocol/general/ps_public_utility.h
new file mode 100644
index 0000000..01ed322
--- /dev/null
+++ b/mcu/interface/protocol/general/ps_public_utility.h
@@ -0,0 +1,391 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * ps_public_utility.h
+ *
+ * Description:
+ * ------------
+ *   This file is intends for put the header of PS public API
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+*****************************************************************************/
+#ifndef _PS_PUBLIC_UTILITY_H_
+#define _PS_PUBLIC_UTILITY_H_
+
+#include "kal_general_types.h"
+#include "ps_public_struct.h"
+#include "sim_public_enum.h"
+#include "kal_public_defs.h" //MSBB change #include "stack_config.h"
+#include "keypad_sw.h"
+#include "nvram_data_items.h"
+#include "sbp_public_utility.h"
+
+#include "c2k_irat_msg_struct.h"
+#include "l3_inc_enums_public.h"
+
+extern kal_uint8 l4c_cc_ss_string_parsing(kal_uint8 *string_ptr, kal_uint8 length, kal_uint8 sim_interface, kal_bool is_in_call);
+
+extern sim_interface_enum l4c_gemini_get_actual_sim_id(sim_interface_enum simId);
+
+extern sim_interface_enum l4c_gemini_get_switched_sim_id(sim_interface_enum simId);
+
+extern sim_interface_enum l4c_csus_get_actual_sim_slot_id(protocol_id_enum sim_ps_Id);
+
+extern protocol_id_enum l4c_csus_get_switched_sim_ps_id(sim_interface_enum sim_slot_Id);
+
+extern module_type rmmi_get_default_uart_owner(void);
+
+extern void smsal_gsm7_unpack(kal_uint8  *packed_data, kal_uint8  *unpacked_data, kal_uint16 data_len, kal_uint16 offset);
+extern kal_uint16 smsal_msg_len_in_character(kal_uint8 dcs, kal_uint16 len, kal_uint8 last_byte);
+extern kal_bool smsal_is_support_r4_mbdn(void);
+extern void smsal_sdm_set_tp_rd(kal_uint8 *str, kal_uint16 str_len);
+
+#if defined(__IMS_SUPPORT__) || defined(__SMS_IMS_SUPPORT__)
+extern kal_bool sdm_is_sms_tp_rd_set(void);
+#endif
+
+extern kal_uint8 smsal_cmgf_query_with_ps_id(kal_uint8 ps_id);
+extern kal_uint8 smsal_get_mr(kal_uint8 slot);
+extern kal_bool smsal_is_initing_or_sim_refreshing(kal_uint8 slot);
+extern kal_bool smsal_is_csca_set(void);
+
+
+extern kal_bool l4c_kbd_getkeydata(kbd_data *keydata);
+
+//move to ATP extern void rmmi_sleep_mode_callback(void);
+
+extern void l4c_report_voice_codec(kal_uint16 codec);
+
+extern kal_bool tcm_get_ims_flag_by_nsapi(kal_uint8 nsapi, kal_uint8 sim_interface);
+extern kal_bool tcm_get_nw_applied_ims_flag_by_nsapi(kal_uint8 nsapi, kal_uint8 sim_interface);
+extern kal_uint16 tcm_get_ims_flag_to_bitmap(kal_uint8 sim_interface);
+// CSR
+#ifdef __VIDEO_CALL_SUPPORT__
+typedef void (*fp_vt_csr_activate_req)(void);
+typedef void (*fp_vt_csr_deactivate_req)(void);
+
+extern fp_vt_csr_activate_req csr_get_fp_vt_csr_activate_req(void);
+extern fp_vt_csr_deactivate_req csr_get_fp_vt_csr_deactivate_req(void);
+#endif
+
+extern vg_option_enum l4crac_get_vg_option (protocol_id_enum ps_id);
+
+#if defined(__FAST_DORMANCY__) || defined(__NO_PSDATA_SEND_SCRI__)
+/****************************************************************************
+ * Function:    RRC_CPCSupport
+ *
+ * Description: Return TRUE if UE supports CPC.
+ *****************************************************************************/
+extern kal_bool RRC_CPCSupport(void);
+
+#ifdef __FAST_DORMANCY__
+/****************************************************************************
+ * Function:    RRC_NW_R8_FD_Support
+ *
+ * Description: Return TRUE if NW supports T323.
+ *****************************************************************************/
+extern kal_bool RRC_NW_R8_FD_Support();
+#endif /* __FAST_DORMANCY__ */
+#endif /* __FAST_DORMANCY__ || __NO_PSDATA_SEND_SCRI__ */
+
+
+/*****************************************************************************
+* FUNCTION
+*   sbp_query_id()
+*
+* DESCRIPTION
+*   This function is used to query SBP ID received by modem
+*
+* PARAMETERS
+*   [IN]    N/A
+* RETURNS
+*   the unsigned 4-byte value for the SBP ID
+*****************************************************************************/
+extern kal_uint32 sbp_query_id(void);
+
+/*****************************************************************************
+* FUNCTION
+*   l4c_get_iratmode_req()
+*
+* DESCRIPTION
+*   This function is used to get the setting of iratmode
+*
+* PARAMETERS
+*   N/A
+*
+* RETURNS
+*   l4c_irat_type_enum  0: AP based iRAT; 1: modem based iRAT
+*****************************************************************************/
+extern l4c_irat_type_enum l4c_get_iratmode_req(void);
+
+#ifdef __CDMA2000_RAT__
+/*****************************************************************************
+* FUNCTION
+*   errc_cel_com_lte_rat_info_to_as_info()
+*
+* DESCRIPTION
+*   This function is used in IRAT from C2K to LTE (LTE <--RAT_CHANGE_REQ-- C2K) to convert LTE RAT info (from C2K) into EAS RAT info (for EAS)
+*
+* PARAMETERS
+*   a_irat_type        [IN]    IRAT type from C2K to LTE
+*   *a_lte_rat_info    [IN]    LTE RAT info from C2K
+*
+* RETURNS
+*   EAS RAT info pointer, which the data is converted from *a_lte_rat_info
+*****************************************************************************/
+extern void *errc_cel_com_lte_rat_info_to_as_info(irat_type_enum a_irat_type, cas_eas_activate_ecell_req_struct *a_lte_rat_info);
+
+/*****************************************************************************
+* FUNCTION
+*   errc_cel_com_as_info_ptr_to_as_irat_info()
+*
+* DESCRIPTION
+*   This function is used in IRAT from C2K to LTE (LTE --RAT_CHANGE_CNF--> C2K) to convert EAS RAT info (from EAS) into C2K RAT info (for C2K)
+*
+* PARAMETERS
+*   *a_as_info_ptr     [IN]      LTE RAT info from EAS
+*   *c2k_rat_info      [IN/OUT]  LTE RAT info, containing info converted from *a_as_info_ptr, for C2K
+*
+* RETURNS
+*   N/A
+*****************************************************************************/
+extern void errc_cel_com_as_info_ptr_to_c2k_rat_info(void *a_as_info_ptr, cas_eas_activate_ecell_cnf_struct *c2k_rat_info);
+
+/*****************************************************************************
+* FUNCTION
+*   errc_cel_com_as_info_to_c2k_rat_info()
+*
+* DESCRIPTION
+*   This function is used in IRAT from LTE to C2K (LTE --RAT_CHANGE_IND--> C2K) to convert EAS RAT info (from EAS) into C2K RAT info (for C2K)
+*
+* PARAMETERS
+*   *a_as_info_ptr     [IN]      C2K RAT info from EAS
+*   *c2k_rat_info      [IN/OUT]  C2K RAT info, containing info converted from *a_as_info_ptr, for C2K
+*
+* RETURNS
+*   N/A
+*****************************************************************************/
+extern void errc_cel_com_as_info_to_c2k_rat_info(eas_cas_activate_ccell_req_struct *c2k_rat_info, void *a_as_info_ptr);
+
+/*****************************************************************************
+* FUNCTION
+*   errc_cel_com_c2k_rat_info_to_as_info_ptr()
+*
+* DESCRIPTION
+*   This function is used in IRAT from LTE to C2K (LTE <--RAT_CHANGE_RSP-- C2K) to convert C2K RAT info (from C2K) into EAS RAT info (for EAS)
+*
+* PARAMETERS
+*   a_irat_type        [IN]      IRAT type from LTE to C2K
+*   *c2k_rat_info      [IN]      C2K RAT info from C2K
+*
+* RETURNS
+*   C2K RAT info pointer, which the data is converted from *c2k_rat_info
+*****************************************************************************/
+extern void *errc_cel_com_c2k_rat_info_to_as_info_ptr(irat_type_enum a_irat_type, eas_cas_activate_ccell_cnf_struct *c2k_rat_info);
+#endif /* __CDMA2000_RAT__ */
+
+
+extern void l4ctcm_translate_apn_to_spec_format(kal_uint8 *access_name, kal_uint8 *src_apn, kal_uint8 apn_len);
+extern kal_uint8 l4ctcm_translate_apn_to_string_format(kal_uint8 *src_apn, kal_uint8 *dst_apn);
+/*****************************************************************************
+* FUNCTION
+*   l4c_set_dynamic_sbp_id()
+*
+* DESCRIPTION
+*   Change SBP ID dynamically according to the inserted SIM.
+*
+* PARAMETERS
+*   void
+*
+* RETURNS
+*   void
+*****************************************************************************/
+
+extern void l4c_set_dynamic_sbp_id(void);
+
+#if defined (__TC01_NVRAM__) || defined(__TC01__) //MOLY00294741
+/*****************************************************************************
+* FUNCTION
+*   sbp_query_md_feature_custom()
+*
+* DESCRIPTION
+*   This function is used to query modem configuration
+*    for customer's specific Single Binary Platform (SBP) features
+*   MUSE - ALPS0144925
+*
+* PARAMETERS
+*   feature [IN]    modem feature
+*
+* RETURNS
+*   KAL_TRUE    : if this feature is turned on
+*   KAL_FALSE   : if this feature is turned off
+*****************************************************************************/
+extern kal_bool sbp_query_md_feature_custom(sbp_md_feature_custom_enum feature );
+
+/*****************************************************************************
+* FUNCTION
+*   sbp_set_md_feature()
+*
+* DESCRIPTION
+*   This function is used to query modem configuration for customer's features
+*   MUSE - ALPS0144925
+* PARAMETERS
+*   feature         [IN]    modem feature
+*   is_turned_on    [IN]
+*   sbp_feature_ptr [IN/OUT]
+*
+* RETURNS
+*   KAL_TRUE if success; otherwise KAL_FALSE
+*****************************************************************************/
+kal_bool sbp_set_md_feature_custom(sbp_md_feature_custom_enum feature,
+                            kal_bool is_turned_on,
+                            nvram_ef_sbp_modem_config_struct *sbp_custom_ptr);
+#endif /* __TC01__ */
+
+/*****************************************************************************
+* FUNCTION
+*   check_if_icc_is_KOR_KT_OP_card()
+*
+* DESCRIPTION
+*   This function is used to check whether the inserted SIM card is KT Operator or not.
+*
+* PARAMETERS
+*
+* RETURNS
+*   TRUE or FALSE
+*****************************************************************************/
+extern kal_bool check_if_icc_is_KOR_KT_OP_card();
+
+/*****************************************************************************
+* FUNCTION
+*   check_if_icc_is_KOR_SKT_OP_card()
+*
+* DESCRIPTION
+*   This function is used to check whether the inserted SIM card is SKT Operator or not.
+*
+* PARAMETERS
+*
+* RETURNS
+*   TRUE or FALSE
+*****************************************************************************/
+extern kal_bool check_if_icc_is_KOR_SKT_OP_card();
+
+/*****************************************************************************
+* FUNCTION
+*   check_if_icc_is_KOR_KCT_OP_card()
+*
+* DESCRIPTION
+*   This function is used to check whether the inserted SIM card is KCT(SKT MVNO) Operator or not.
+*
+* PARAMETERS
+*
+* RETURNS
+*   TRUE or FALSE
+*****************************************************************************/
+extern kal_bool check_if_icc_is_KOR_KCT_OP_card();
+
+/*****************************************************************************
+* FUNCTION
+*   check_if_icc_is_KOR_LGUPLUS_OP_card()
+*
+* DESCRIPTION
+*   This function is used to check whether the inserted SIM card is LGUPLUS Operator or not.
+*
+* PARAMETERS
+*
+* RETURNS
+*   TRUE or FALSE
+*****************************************************************************/
+extern kal_bool check_if_icc_is_KOR_LGUPLUS_OP_card();
+
+/*****************************************************************************
+* FUNCTION
+*   check_if_icc_is_KOR_OP_card()
+*
+* DESCRIPTION
+*   This function is used to check whether the inserted SIM card is Korea Operator or not.
+*
+* PARAMETERS
+*
+* RETURNS
+*   TRUE or FALSE
+*****************************************************************************/
+extern kal_bool check_if_icc_is_KOR_OP_card();
+
+/*******************************************************************************
+    Function Name:
+        mrs_eas_is_supported_band_public
+
+    Parameters: [in] lte_band:
+
+    Return Value: If input band is LTE / UE supported band
+
+    Description:
+        This function checks if input band is LTE / UE supported band.
+        It is defined in public header file for modules not belong to Modem private group, ex : Middleware LBS
+*******************************************************************************/
+kal_bool mrs_eas_is_supported_band_public(kal_uint16 sim_index, kal_uint16 lte_band); /*form 1 to max_band*/
+
+/*****************************************************************************
+* FUNCTION
+*   nas_get_power_on_prefer_rat()
+*
+* DESCRIPTION
+*   This function will return the power on prefer rat from NWSEL
+*
+* PARAMETERS
+*
+* RETURNS
+*   rat_enum
+*****************************************************************************/
+extern rat_enum nas_get_power_on_prefer_rat(rat_enum rat);
+
+#ifdef __IMS_SUPPORT__
+extern kal_bool imcsms_get_mt_ims_sms_info(sms_concat_struct sms_concat_info,kal_uint32 *seg_bitmask,kal_uint8 ps_id);
+#endif
+extern kal_bool sms_get_mt_sgs_sms_info(sms_concat_struct imcsms_concat_info,kal_uint32 *seg_bitmask,kal_uint8 ps_id);
+
+extern kal_bool smsal_duplicated_sms_detection_by_ps_id(kal_uint8 *new_mt_pdu, kal_uint16 new_mt_pdu_len,kal_uint8 ps_id);
+
+extern kal_bool phb_util_is_usim_csim(kal_uint8 sim_num);
+
+#endif /* _PS_PUBLIC_UTILITY_H_ */
+
diff --git a/mcu/interface/protocol/general/ps_ratdm_struct.h b/mcu/interface/protocol/general/ps_ratdm_struct.h
new file mode 100644
index 0000000..33bbcff
--- /dev/null
+++ b/mcu/interface/protocol/general/ps_ratdm_struct.h
@@ -0,0 +1,204 @@
+/*****************************************************************************
+*  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) 2009
+*
+*  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:
+ * ---------
+ * ps2ratdm_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file describes the common struct between Application and RATDM for PS service
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef _PS_RATDM_STRUCT_H
+#define _PS_RATDM_STRUCT_H
+
+#ifndef __L1_STANDALONE__
+
+#include "kal_general_types.h"
+//#include "uas_data_common.h"
+#include "kal_public_defs.h"
+    
+typedef enum{
+    PS_STATISTICS_RESET_ALL, 			// reset all data (eset context 1, 2, 3¡K tx data amount to zero, eset context 1, 2, 3¡K rx data amount to zero)
+    PS_STATISTICS_RESET_ALL_TX, 		// reset context 1, 2, 3¡K tx data amount to zero
+    PS_STATISTICS_RESET_ALL_RX, 		// reset context 1, 2, 3¡K rx data amount to zero
+    PS_STATISTICS_CHECK_ARRAY_TO_RESET 	//(check detail_reset_command[] array content to determine reset which content)
+}ext_call_history_reset_operation_enum;
+
+typedef enum{
+    RATDM_SHAQ_SOCKET_EMPTY_VALUE = 0xFE,
+    RATDM_SHAQ_SOCKET_INVALID_VALUE = 0xFF
+}ratdm_shaq_socket_value_enum;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+#ifndef __LTE_RAT__
+    kal_uint8 context_id;
+#endif
+    kal_uint8 pool_id;
+
+    /* for RATDM usage */
+    kal_uint8 nsapi;
+    kal_uint16 npdu_num;
+} ps_data_ind_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+#ifndef __LTE_RAT__
+    kal_uint8 context_id;
+#endif
+    kal_uint8 pool_id;
+
+    /* for RATDM usage */
+    kal_uint8 nsapi;
+    kal_uint16 npdu_num;
+} ps_data_req_struct;
+
+typedef struct ratdm_ps_data_ind_struct_tag
+{
+    PEER_BUFF_HDR
+
+    kal_uint8 pool_id;
+#ifndef __LTE_RAT__
+    kal_uint8 context_id;
+#endif
+    kal_uint8 nsapi;    
+    kal_uint16 npdu_num;
+#ifdef __3G_NEW_DATA_PLANE_ARCH__
+    void *gpd_ptr; //umts_dl_gpd *gpd_ptr; need to include "uas_data_common.h"
+    void *last_gpd_ptr; //umts_dl_gpd *last_gpd_ptr; need to include "uas_data_common.h"
+    peer_buff_struct *pTemp;
+#endif    
+}ratdm_ps_data_ind_struct;
+
+#ifdef __3G_NEW_DATA_PLANE_ARCH__
+// for MSC ~ it is necessary to be defined
+typedef ratdm_ps_data_ind_struct peer_buff_ps_dscr_data_struct;
+#endif
+
+#endif // ~ #ifndef __L1_STANDALONE__
+
+#endif 
+
+
+
diff --git a/mcu/interface/protocol/general/psilib_api.h b/mcu/interface/protocol/general/psilib_api.h
new file mode 100644
index 0000000..af2280b
--- /dev/null
+++ b/mcu/interface/protocol/general/psilib_api.h
@@ -0,0 +1,214 @@
+/******************************************************************************
+*  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) 2018
+*
+*  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).
+*
+*******************************************************************************/
+ 
+#ifndef _PSILIB_API_H
+#define _PSILIB_API_H
+ 
+// include dependency headers
+ 
+/********************************************
+ *                  MACROS                  *
+ ********************************************/
+#include "kal_general_types.h" 
+#include "ps_public_enum_public.h" 
+#include "kal_public_defs.h"
+ 
+/********************************************
+ *         TYPE DEFINITIONS & ENUMS         *
+ ********************************************/
+#define PSILIB_NULL_PSI L4_PS_NULL_PSI
+#define PSILIB_INVALID_CID L4_PS_NULL_CID
+#define PSILIB_INVALID_APN_IDX -1
+#define PSILIB_INVALID_APN_NAME "#do_not_care"
+
+typedef enum {
+    PSILIB_PSI_OP_RELEASE,
+    PSILIB_PSI_OP_OCCUPY,
+    PSILIB_PSI_OP_QUERY,
+    PSILIB_PSI_OP_INJECT,
+    PSILIB_PSI_OP_REQUIRE,
+    PSILIB_PSI_OP_UT = 254,
+    PSILIB_PSI_OP_MAX,
+} psilib_op_enum;
+
+/********************************************
+ *                VARIABLES                 *
+ ********************************************/
+ 
+// only extern variables are allowed in header
+ 
+/********************************************
+ *           FUNCTION DECLARATIONS          *
+ ********************************************/
+
+/**
+ * @brief Initialize the PSILIB (to be called by module_init()) 
+ * @param[in] null
+ * @return 
+ *  - KAL_TRUE, always 
+ */
+kal_bool psilib_init(void);
+
+/**
+ * @brief Allocate a psi with the specified apn name, apn_idx and cid
+ * @param[in] apn name (to be associated with psi)
+ * @param[in] apn index(to be associated with psi)
+ * @param[in] cid (to be associated with psi)
+ * @return
+ *  - KAL_TRUE if successful; 
+ *  - KAL_FALSE if failed (ex. all psi are occupied by other cids; the specified cid is used to alloc too many times) 
+ */
+kal_bool psilib_alloc_psi_by_apn_idx_cid(kal_uint8 sim_interface, kal_char *apn_name,
+    kal_int8 apn_idx, kal_uint8 cid);
+
+/**
+ * @brief Module IP occupies a psi with the specified apn name, apn_idx and cid. It usually used by EPSI_REQ of ILM
+ * @param[in] apn name (to be associated with psi)
+ * @param[in] apn index(to be associated with psi)
+ * @param[in] module type(to record occupier of associated psi)
+ * @return
+ *  - KAL_TRUE if successful; 
+ *  - KAL_FALSE if failed (ex. all psi are occupied by other cids; the specified cid is used to alloc too many times) 
+ */
+kal_bool psilib_alloc_psi_by_apn_idx(kal_uint8 sim_interface, kal_char *apn_name,
+        kal_int8 apn_idx, module_type mod_id);
+
+/**
+ * @brief Allocate a psi with the specified cid 
+ * @param[in] cid (to be assoicated with psi) 
+ * @return 
+ *  - KAL_TRUE if successful; 
+ *  - KAL_FALSE if failed (ex. all psi are occupied by other cids; the specified cid is used to alloc too many times) 
+ */
+kal_bool psilib_alloc_psi_by_cid(kal_uint8 sim_interface, kal_uint8 cid);
+
+/**
+ * @brief Allocate a psi with the specified psi, apn name and apn_idx
+ * @param[in] apn name (to be associated with psi)
+ * @param[in] apn index(to be associated with psi)
+ * @param[in] psi (a used/existing psi)
+ * @param[in] module type(to record occupier of associated psi)
+ * @return
+ *  - KAL_TRUE if successful; 
+ *  - KAL_FALSE if failed (ex. all psi are occupied by other cids; the specified cid is used to alloc too many times) 
+ */
+kal_bool psilib_require_psi_by_psi_apn_idx(kal_uint8 sim_interface, kal_char *apn_name,
+    kal_int8 apn_idx, kal_int8 psi, module_type mod_id);
+
+/**
+ * @brief Query the associated psi for the specified cid 
+ * @param[in] cid (to know its associated psi)
+ * @return 
+ *  - [psi_val] if successful; 
+ *  - PSILIB_NULL_PSI if failed (ex. the specified cid does not allocate with any psi) 
+ */
+kal_uint8 psilib_query_psi_by_cid(kal_uint8 sim_interface, kal_uint8 cid);
+
+/**
+ * @brief Query the associated psi for the specified apn name and apn index
+ * @param[in] apn_name (to know its associated psi)
+ * @param[in] apn_idx (to know its associated psi)
+ * @param[in] mod_id (to know its occupied psi)
+ * @return 
+ *  - [psi_val] if successful;
+ *  - PSILIB_NULL_PSI if failed (ex. It did not allocate any psi with specified apn name and apn index)
+ */
+kal_uint8 psilib_query_psi_by_apn_idx(kal_uint8 sim_interface, kal_char *apn_name, kal_int8 apn_idx, module_type mod_id);
+
+/**
+ * @brief De-allocate psi with the specified cid 
+ * @param[in] cid (it would be de-associated with the psi) 
+ * @return 
+ *  - KAL_TRUE if successful; 
+ *  - KAL_FALSE if failed (ex. the specified cid is not associated with psi before calling dealloc) 
+ */
+kal_bool psilib_dealloc_psi_by_cid(kal_uint8 sim_interface, kal_uint8 cid);
+
+/**
+ * @brief Release psi which occupied by someone module
+ * @param[in] psi (to release specified psi)
+ * @param[in] mod_id (the module wants to release psi (Occupier))
+ * @return
+ *  - KAL_TRUE if successful;
+ *  - KAL_FALSE if failed (ex. the specified psi's ref_count is already 0)
+ */
+kal_bool psilib_release_psi_by_psi(kal_uint8 sim_interface, kal_uint8 psi, module_type mod_id);
+
+/**
+ * @brief De-allocate psi with the specified apn name and apn index
+ * @param[in] apn_name (it would de-associated with psi)
+ * @param[in] apn_idx (it would de-associated with psi)
+ * @param[in] mod_id (the module wants to release psi (Occupier))
+ * @return
+ *  - KAL_TRUE if successful;
+ *  - KAL_FALSE if failed (ex. the specified apn name and apn index were not associated with psi before calling dealloc)
+ */
+kal_bool psilib_dealloc_psi_by_apn_idx(kal_uint8 sim_interface, kal_char *apn_name, kal_int8 apn_idx, module_type mod_id);
+
+/**
+ * @brief Update apn and apn index to associated psi with the specified cid
+ * @param[in] cid (to know its associated psi)
+ * @param[in] apn_name (to update apn of associated psi)
+ * @param[in] apn_idx (to update apn_idx of associated psi)
+ * @return
+ *  - KAL_TRUE if successful;
+ *  - KAL_FALSE if failed (ex. can not find psi according to cid)
+ */
+kal_bool psilib_update_apn_idx_by_cid(kal_uint8 sim_interface, kal_uint8 cid, kal_char *apn_name, kal_int8 apn_idx);
+
+/**
+ * @brief Inject PSI value for testing purpose
+ * @param[in] PSI
+ * @return 
+ */
+void psilib_inject_psi(kal_uint8 sim_interface, kal_uint8 psi);
+
+#ifndef __MTK_TARGET__
+/**
+ * @brief Unit test of psilib
+ * @return
+ */
+void psilib_ut_handler(void);
+
+/**
+ * @brief Reset the PSILIB (to be called by module_reset()) 
+ * @param[in] null
+ * @return 
+ *  - KAL_TRUE, always
+ */
+kal_bool psilib_reset(void);
+#endif // #ifndef __MTK_TARGET__ 
+  
+#endif /* _PSILIB_API_H */
diff --git a/mcu/interface/protocol/general/ratdm_shaq_application_api.h b/mcu/interface/protocol/general/ratdm_shaq_application_api.h
new file mode 100644
index 0000000..5be24bc
--- /dev/null
+++ b/mcu/interface/protocol/general/ratdm_shaq_application_api.h
@@ -0,0 +1,177 @@
+/******************************************************************************
+*  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:
+ * --------------------------------------------------------
+ *   ratdm_shaq_application_api.h
+ *
+ * Project:
+ * --------------------------------------------------------
+ *   
+ *
+ * Description:
+ * --------------------------------------------------------
+ *   public R8 SHAQ API for application modules (PPP, UPS, TCPIP...etc)
+ *
+ * Author:
+ * --------------------------------------------------------
+ * -------
+ *
+ * --------------------------------------------------------
+ * $Log$
+ *
+ * 03 30 2017 ravitej.ballakur
+ * [MOLY00238716] [Gen93] 6M RATDM Multiple PS feature sync
+ * M-PS changes for UMOLYA.
+ *
+ * 05 20 2015 head.hsu
+ * [MOLY00089131] [MT6291 Gemini] L+W+W+W code revision check in
+ * 	;RATDM/RABM/PDCP/CSR part check-in
+ * 
+ * 08 22 2012 andrew.wu
+ * [MOLY00002319] [MSBB] Remove Invalid Inter-Category Including.
+ * modem related option move to modem internal
+ *
+ * 06 11 2012 carlson.lin
+ * removed!
+ * <saved by Perforce>
+ *
+ * 01 30 2012 carlson.lin
+ * removed!
+ * <saved by Perforce>
+ *
+ * 01 30 2012 carlson.lin
+ * removed!
+ * <saved by Perforce>
+ *
+ * 01 11 2012 carlson.lin
+ * removed!
+ * <saved by Perforce>
+ *
+ * 09 21 2011 carlson.lin
+ * removed!
+ * <saved by Perforce>
+ *
+ *
+ * 
+ ******************************************************************************/
+
+#ifndef _RATDM_SHAQ_APPLICATION_API_H
+#define _RATDM_SHAQ_APPLICATION_API_H
+
+#include "kal_general_types.h"
+#include "flc2_config.h"
+
+/* fake header for easy conversion */
+typedef struct SHAQ_qElmtHeader
+{
+    PEER_BUFF_HDR
+    struct SHAQ_qElmtHeader *next_shaqElmt;
+} SHAQ_qElmtHeader;
+
+/* Error codes & Return codes */
+typedef enum
+{
+    SHAQ_OK,
+    SHAQ_GENERAL_ABORT,
+    SHAQ_CONVENTIONAL_TRACK,
+    UPLINK_DATA_GOTO_CONVENTIONAL_TRACK = SHAQ_CONVENTIONAL_TRACK,
+    SHAQ_KICK_UL2,
+    SHAQ_NOT_INITIATED,
+    SHAQ_CANNOT_FIND_Q,
+    SHAQ_CANNOT_FIND_NSAPI_FROM_CONTEXT_ID,
+    SHAQ_NSAPI_CHECK_FAIL,
+    SHAQ_EXCEPTION,
+    SHAQ_ABORT,
+    SHAQ_NOT_READY,
+    SHAQ_CANNOT_FIND_CID_FROM_RBID
+} SHAQ_retCode;
+
+typedef enum
+{
+    SHAQ_ENQUEUE_PRIORITY_QUEUE,
+    SHAQ_ENQUEUE_NORMAL_QUEUE,
+    SHAQ_ENQUEUE_DECIDED_BY_SHAQ_API,
+    SHAQ_NUMBER_OF_ENQUEUE_DECISIONS
+} SHAQ_ENQUEUE_WHICH_QUEUE;
+
+#ifndef __RATDM_UL_SHAQ__
+typedef struct ratdm_ps_data_req_struct_tag
+{
+    PEER_BUFF_HDR
+
+    kal_uint8 pool_id;
+    kal_uint8 context_id;
+    kal_uint8 nsapi;    
+    kal_uint16 npdu_num;
+    kal_uint16 ori_free_header_space;
+    struct ratdm_ps_data_req_struct_tag *next;    
+    kal_uint8 padding[12];	// To feet 24 bytes, adding 8bytes header as 32 bytes to fulfill cacheline
+}ratdm_ps_data_req_struct;
+#else // #ifndef __RATDM_UL_SHAQ__
+typedef struct ratdm_ps_data_req_struct_tag
+{
+    //Dont touch this part
+    //M_SHAQ_ELMT_HEADER
+    PEER_BUFF_HDR
+    struct SHAQ_qElmtHeader *next_shaqElmt;   
+    // Hands off please
+
+    kal_uint8 pool_id;
+    kal_uint8 context_id;
+    kal_uint8 nsapi;
+    kal_bool bConfirm;
+
+    kal_uint16 npdu_num;
+    kal_uint16 ori_free_header_space;
+
+    kal_uint8 TxRBId;
+    kal_uint8 ap_enqueue_decision; // SHAQ_ENQUEUE_WHICH_QUEUE enum
+    kal_uint16 bitLength;
+    kal_uint32 MUI;
+    struct ratdm_ps_data_req_struct_tag *next;
+}ratdm_ps_data_req_struct;
+
+#endif // ~ #ifndef __RATDM_UL_SHAQ__
+
+/* MACRO DEFINITION */
+#define SHAQ_psEnqueue(pPeer, pool_id, cid, taskid, sim_interface) SHAQ_psEnqueueWithPriorityInfo((pPeer), (pool_id), (cid), (taskid), SHAQ_ENQUEUE_DECIDED_BY_SHAQ_API, (sim_interface))
+
+/* EXPORT FUNCTIONS */
+extern SHAQ_retCode SHAQ_psEnqueueWithPriorityInfo(ratdm_ps_data_req_struct *pPeer, flc2_pool_id_enum pool_id, kal_uint8 cid, kal_taskid taskid, SHAQ_ENQUEUE_WHICH_QUEUE ap_enqueue_decision, kal_uint8 sim_interface);
+extern kal_uint8 ratdm_autogen_sim_idx();
+
+#endif /* _RATDM_SHAQ_APPLICATION_API_H */
diff --git a/mcu/interface/protocol/general/rmmi_struct.h b/mcu/interface/protocol/general/rmmi_struct.h
new file mode 100644
index 0000000..2c96de1
--- /dev/null
+++ b/mcu/interface/protocol/general/rmmi_struct.h
@@ -0,0 +1,402 @@
+/*****************************************************************************
+*  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).
+*
+*****************************************************************************/
+ /*******************************************************************************
+ *  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) 2001
+ *
+ *******************************************************************************/
+
+ /*******************************************************************************
+ * Filename:
+ * ---------
+ *   rmmi_strcut.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __RMMI_STRUCT_H__
+#define __RMMI_STRUCT_H__
+//#include "kal_non_specific_general_types.h"
+#include "kal_general_types.h"
+//#include "l4c_common_enum.h"
+#include "ps_public_enum.h"
+#include "kal_public_defs.h"
+
+#include "ps_public_struct.h"
+
+#ifndef __MTK_TARGET__
+#include "dcl.h" //for DCL_DEV_T
+#endif
+
+typedef struct{
+	LOCAL_PARA_HDR  
+	kal_uint8 data[256];
+} rmmi_inject_msg_req_struct;
+
+typedef struct{
+	LOCAL_PARA_HDR
+	kal_uint8 data[256];
+} rmmi_inject_msg_cnf_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+} rmmi_atcidt_force_transfer_req_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    kal_uint8 port;   
+    kal_bool is_dt; 
+} rmmi_atcidt_force_transfer_cnf_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    rmmi_sim_uart_setting_enum sim_setting;
+} rmmi_master_sim_change_req_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    kal_bool result;   
+} rmmi_master_sim_change_cnf_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    kal_uint8 ch_num;   
+} rmmi_register_channel_req_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    kal_bool result;
+    kal_uint8 begin_port_id;   
+} rmmi_register_channel_cnf_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    kal_uint8 port_id;
+    kal_uint16 length;   
+} rmmi_exe_at_req_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    kal_bool result;
+    kal_uint8 port_id;
+} rmmi_exe_at_cnf_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    kal_uint8 port_id;
+    kal_uint16 length;   
+} rmmi_response_at_ind_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    kal_uint16 length;   
+} rmmi_urc_at_ind_struct;
+
+typedef struct rmmi_report_mode_struct
+{
+    kal_uint32 einfo;         /* proprietary +ECPI: call progress information */	
+    kal_uint32 ecpi;         /* proprietary +ECPI: call progress information */
+    kal_uint32 eind;         /* proprietary +EIND: general indication */ /* Bit 0(SMS ready), Bit 1(PHB ready), Bit 7(AT ready), others reserved */
+    kal_uint8 ccm;          /* rmmi_report_mode_enum */
+    kal_uint8 acm_warning;  /* rmmi_report_mode_enum */
+    kal_uint8 call_wait;    /* rmmi_report_mode_enum */
+    kal_uint8 cdip;         /* rmmi_report_mode_enum */
+    kal_uint8 clip;         /* rmmi_report_mode_enum */
+    kal_uint8 clir;         /* rmmi_report_mode_enum */
+    kal_uint8 cnap;         /* rmmi_report_mode_enum */
+    kal_uint8 colp;         /* rmmi_report_mode_enum */
+    kal_uint8 ss_mo;        /* rmmi_report_mode_enum */
+    kal_uint8 ss_mt;        /* rmmi_report_mode_enum */
+    kal_uint8 ussd;         /* rmmi_report_mode_enum */
+    kal_uint8 compression;  /* rmmi_report_mode_enum */
+    kal_uint8 ps_reg;       /* rmmi_nw_reg_report_mode_enum */
+    kal_uint8 nr_reg;       /* rmmi_nw_reg_report_mode_enum */
+    kal_uint8 cs_reg;       /* rmmi_nw_reg_report_mode_enum */
+    kal_uint8 timezone;     /* rmmi_time_zone_report_mode_enum */
+    kal_uint8 crc;          /* rmmi_report_mode_enum, for +CRC */
+    kal_uint8 cr;           /* rmmi_report_mode_enum, for +CR */
+    kal_uint8 ecsq;
+    kal_uint8 cen; // +CEN
+    kal_uint8 ecsq_count;
+    kal_uint8 cgerep;
+    kal_uint8 cgerep_bfr;    
+    kal_uint8 cmer_mode;
+    kal_uint8 cmer_keyp;
+    kal_uint8 cmer_ind;
+    kal_uint8 cmer_bfr;
+    kal_uint8 esims;
+    kal_uint8 eusim;
+    kal_uint8 etestsim;
+#if defined(__MOD_TCM__)
+    kal_uint8 psbearer_indicate;  // for +PSBEARER
+#endif
+    kal_uint8 pacsp;
+#ifdef __CSG_SUPPORT__
+    kal_uint8 ecsg;
+#endif
+#ifdef __IMS_SUPPORT__
+    kal_uint8 cireg;
+    kal_uint8 cirep;
+    kal_uint8 cnem;
+#endif
+    kal_uint8 ecell;
+    kal_uint8 armee;
+    kal_uint8 eemcinfo;
+    kal_uint8 essac;
+    kal_uint8 emobd;
+    kal_uint8 cusats;
+    kal_uint8 ecusats;
+
+	kal_uint8 eccause;
+    kal_uint8 ecsra;
+    kal_uint8 evocd;
+    kal_uint8 erlm_mode;
+    kal_uint8 edrb;
+    kal_uint8 ecamp;
+    kal_uint8 eslband;
+    kal_uint8 cscon;
+    kal_uint8 scp_cellinfo;
+    kal_uint8 emodcfg;
+    kal_uint8 elce;
+    kal_uint8 elatency;
+    kal_uint8 ereginfo;    //to enable/disable +EREGINFO URC
+    kal_uint8 eimsps;
+    kal_uint8 eimscons;
+    kal_uint8 ecgreg;
+	kal_uint8 ecereg;
+    kal_uint8 ecmpcid;    //to enable/disable +ECMPCID URC
+	kal_uint8 ecreg;
+    kal_uint8 esimecc;
+    kal_uint8 eltebwinfo;
+    kal_uint8 eacb;
+    kal_uint8 eppi;        //to enable/disable +EPPI URC
+//#ifdef __FAST_ROAMING_SEARCH__
+    kal_uint8 efmcc;
+//#endif
+	kal_uint8 eimsess;    // to enable/disable +EIMSESS URC
+    kal_uint8 ecainfo;    //to enable/disable +ECAINFO URC
+    kal_uint8 eplwth;
+    kal_uint8 ercefc;     // to enable/disable +ERCEFC URC
+    kal_uint8 iccid;      // to enable/disable +ICCID URC
+    kal_uint8 ecbdinfo_mode; // to enable/disable +ECBDINFO
+    kal_uint8 edmfapp;      // to enable/disable +EDMFAPP
+    kal_uint8 eatnusd;    // to enable/disable +EATNUSD URC
+    kal_uint8 edsda;    // to enable/disable +EDSDA URC
+    kal_uint8 eopsu;    // to enable/disable +EOPSU URC
+    kal_uint8 ecampui;    // enable/disable +ECAMPUI URC
+    kal_uint8 epcellinfo;  // to enable/disable +EPCELLINFO URC
+    kal_uint8 egtchs;     /* to enable/disable +EGTCHS URC */
+
+#ifdef 	__EPSFB_SUPPORT__    
+    kal_uint8 cepsfb; // to enable/disable +CEPSFB     
+#endif    
+    kal_uint8 cladn;
+    kal_uint8 erejinfo;     // to enable/disable +EREJINFO URC
+
+#ifdef __SAR_SENSOR_TX_DETECTION_SUPPORT__
+    kal_uint8 etxpwrstus; /* to enable/disable +ETXPWRSTUS URC*/
+#endif
+
+    kal_uint8 euacalv;  // to enable/disable +EUACALV URC
+
+    kal_uint8 enwcfginfo; /* to enable/disable +ENWCFGINFO URC*/
+    kal_uint8 e5guw; /* to enable/disable +E5GUW URC*/
+    kal_uint8 enrcaband; /* to enable/disable +ENRCABAND URC*/
+
+    kal_uint8 epnwcause;
+
+} rmmi_report_mode_struct;
+
+typedef struct rmmi_op01_report_mode_struct
+{
+    kal_uint8 dsci;
+    kal_uint8 rfsw;
+    kal_uint8 cardmode;
+} rmmi_op01_report_mode_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    kal_bool lock; //KAL_TRUE: lock, KAL_FALSE: unlock
+} rmmi_lock_at_cmd_req_struct;
+
+ typedef struct{
+    LOCAL_PARA_HDR
+    kal_bool result; //KAL_TRUE: success, KAL_FALSE: fail
+} rmmi_lock_at_cmd_cnf_struct;
+
+#ifdef __GAS_SUPPORT__
+ /* Message Structure */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 data[1500];  /* data  */
+    kal_uint16 size;                                        /* size of the input data */
+    kal_uint16 buf_size;                                  /* avariable size of the output buffer */
+} gas_data_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 data[1500];  /* data  */
+    kal_uint16 size;                                        /* size of the input data */
+    kal_uint8 data_type;                                /* gati_output_data_type_enum */
+} gas_data_req_struct;
+
+typedef enum
+{
+    GAS_OUTPUT_NORMAL,     /* The type of output data is normal type which might be partially put to the output buffer of the ATCI */
+    GAS_OUTPUT_URC,            /* The type of output data is a URC. Note that this type of data is an integrity type implicitly. */
+} gas_output_data_type_enum;
+#endif /*__GAS_SUPPORT__*/
+
+/* for thermal_protection */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_int16 value;
+    kal_uint8 type;
+} atci_thermal_event_report_ind_struct;
+
+typedef struct
+{
+    l4c_rac_ecc_number_struct ecc_list[MAX_NW_ECC_NUM]; /* ecc number list*/
+    kal_uint8 no_ecc;                                   /* number of ecc number*/
+} rmmi_ecc_number_list_struct;
+
+#ifndef __MTK_TARGET__
+#define MAX_UT_UART_LENGTH 2048
+
+typedef enum
+{
+    ATCI_UT_UART_PORT1 = uart_port1,
+    ATCI_UT_UART_PORT2 = uart_port2,
+    ATCI_UT_UART_PORT_USB = uart_port_usb,
+    ATCI_UT_UART_PORT_USB2 = uart_port_usb2,
+    ATCI_UT_UART_PORT_CCCI = uart_port_at_ccci,
+    ATCI_UT_UART_PORT_GPS = uart_port_gps_ccci,
+#ifdef __HIF_CCISM_SCP_SUPPORT__
+    ATCI_UT_UART_CELLINFO_CCCI = uart_port_cellinfo_ccci,
+#endif
+
+    /* CMUX virtual port for SIM1 */
+    ATCI_UT_UART_VIRTUAL_PORT_START = start_of_virtual_port,
+    ATCI_UT_UART_VIRTUAL_PORT2,
+    ATCI_UT_UART_VIRTUAL_PORT3,
+    ATCI_UT_UART_VIRTUAL_PORT4,
+    ATCI_UT_UART_VIRTUAL_PORT5,
+    ATCI_UT_UART_VIRTUAL_PORT6, //CMUX extention port for TTL
+
+    /* CMUX virtual port for SIM2 */
+    ATCI_UT_UART_VIRTUAL_PORT7,
+    ATCI_UT_UART_VIRTUAL_PORT8,
+    ATCI_UT_UART_VIRTUAL_PORT9,
+    ATCI_UT_UART_VIRTUAL_PORT10,
+    ATCI_UT_UART_VIRTUAL_PORT11,
+    ATCI_UT_UART_VIRTUAL_PORT12,
+
+    /* no list all of CMUX_VP_NUM virtual ports */
+    
+    ATCI_UT_UART_VIRTUAL_PORT_END = end_of_virtual_port,
+} atci_ut_uart_port_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    atci_ut_uart_port_enum port;
+    kal_uint8 string[MAX_UT_UART_LENGTH];
+    kal_uint16 str_len;
+} atci_ut_uart_input_ind_struct; // MSG_ID_ATCI_UT_UART_INPUT_IND
+#endif
+
+typedef enum{
+    RMMI_SCP_CMD_DISABLE = 0,
+    RMMI_SCP_CMD_ENABLE_CHANGE_OF_CELL_ID,      //Phase 1: enable but report only when camping cell id has changed
+    RMMI_SCP_CMD_ENABLE_CHANGE_OF_CELL_RSSI,    //Phase 2: enable but report only when camping cell's RSSI has changed
+    RMMI_SCP_CMD_END
+}rmmi_scp_cmd_enum;
+
+typedef enum{
+    RMMI_SCP_CELLINFO_GSM = 0,
+    RMMI_SCP_CELLINFO_CDMA,
+    RMMI_SCP_CELLINFO_UMTS,
+    RMMI_SCP_CELLINFO_LTE,
+    RMMI_SCP_CELLINFO_TYPE_END
+}rmmi_scp_cellinfo_type_enum;
+
+typedef struct{
+    kal_uint16  mdm_type;
+    kal_uint16  mcc;
+    kal_uint16  mnc;
+    kal_uint16  area; /* lac or tac */
+    kal_uint16  pci;
+    kal_uint16  strength; /* RSSI or RSCP or RSRP */
+    kal_uint32  cell;   /* cid or uc or ci */
+    kal_uint32  isCamping; /* 0: neighbor cell; 1: camping cell */
+}rmmi_scp_cellinfo_struct;
+
+#define SCP_NBR_CELLINFO_MAX  9
+#define SCP_CELLINFO_MAX (SCP_NBR_CELLINFO_MAX+1)
+
+typedef struct{
+    kal_uint32 length;
+    rmmi_scp_cellinfo_struct info[SCP_CELLINFO_MAX];
+}rmmi_scp_cellinfo_data_struct;
+
+
+typedef struct {
+    kal_uint8 date_string[20];
+    kal_uint8 tz[4];
+    kal_uint8 dst;
+} rmmi_nitz_time_struct;  // CCLK
+
+#endif
diff --git a/mcu/interface/protocol/general/sat_def.h b/mcu/interface/protocol/general/sat_def.h
new file mode 100644
index 0000000..322f116
--- /dev/null
+++ b/mcu/interface/protocol/general/sat_def.h
@@ -0,0 +1,81 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *	sat_def.h
+ *
+ * Project:
+ * --------
+ *   MT6208
+ *
+ * Description:
+ * ------------
+ *   This file defines the data structure, enum and constant for SAT.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef SAT_DEF_H
+#define SAT_DEF_H
+
+#include "sim_public_enum.h"
+
+#include "sim_ps_enum.h"
+
+#include "sim_public_api.h"
+
+#include "sim_ps_api.h"
+
+#include "sim_public_struct.h"
+
+#include "sim_ps_struct.h"
+
+#endif
diff --git a/mcu/interface/protocol/general/sim_common_enums.h b/mcu/interface/protocol/general/sim_common_enums.h
new file mode 100644
index 0000000..9c9f676
--- /dev/null
+++ b/mcu/interface/protocol/general/sim_common_enums.h
@@ -0,0 +1,75 @@
+/*****************************************************************************
+*  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).
+*
+*****************************************************************************/
+ /*******************************************************************************
+ *  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) 2001
+ *
+ *******************************************************************************/
+
+ /*******************************************************************************
+ * Filename:
+ * ---------
+ *   sim_common_enums.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Enum and Constant  provided by SIM task 
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *******************************************************************************/
+#ifndef SIM_COMMON_ENUMS_H
+#define SIM_COMMON_ENUMS_H
+
+#include "sim_public_enum.h"
+
+#include "sim_ps_enum.h"
+
+#include "sim_public_api.h"
+
+#include "sim_ps_api.h"
+
+#endif
diff --git a/mcu/interface/protocol/general/sim_ps_api.h b/mcu/interface/protocol/general/sim_ps_api.h
new file mode 100644
index 0000000..085ccda
--- /dev/null
+++ b/mcu/interface/protocol/general/sim_ps_api.h
@@ -0,0 +1,83 @@
+/*****************************************************************************
+*  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).
+*
+*****************************************************************************/
+ /*******************************************************************************
+ *  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) 2001
+ *
+ *******************************************************************************/
+
+ /*******************************************************************************
+ * Filename:
+ * ---------
+ *   sim_ps_api.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   API provided by SIM task and inside-PS task uses only
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *******************************************************************************/
+#ifndef SIM_PS_API_H
+#define SIM_PS_API_H
+
+/************* Phased out *************/
+/**** Merged into sim_public_api.h ****/
+#include "sim_public_api.h"
+
+/*****************************************************************************
+ * FUNCTION
+ *  sim_check_custom_iccid_operator_by_ps_id
+ * DESCRIPTION
+ *   Query SIM tray status.
+ * PARAMETERS
+ *  operator_type    [IN]   
+ *  ps_id            [IN]   Protocol ID
+ * RETURNS
+ *  Boolean
+ *****************************************************************************/
+extern kal_bool sim_check_custom_iccid_operator_by_ps_id(sim_operator_type_enum operator_type, kal_uint8 ps_id);
+#endif
diff --git a/mcu/interface/protocol/general/sim_ps_enum.h b/mcu/interface/protocol/general/sim_ps_enum.h
new file mode 100644
index 0000000..3462fb0
--- /dev/null
+++ b/mcu/interface/protocol/general/sim_ps_enum.h
@@ -0,0 +1,1308 @@
+/*****************************************************************************
+*  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).
+*
+*****************************************************************************/
+ /*******************************************************************************
+ *  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) 2001
+ *
+ *******************************************************************************/
+
+ /*******************************************************************************
+ * Filename:
+ * ---------
+ *   sim_ps_enum.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Enum and Constant  provided by SIM task and inside-PS task uses only
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *******************************************************************************/
+#ifndef SIM_PS_ENUM_H
+#define SIM_PS_ENUM_H
+
+typedef enum
+{
+    SIM_NO_FILE_ID     = 0x0000,
+    MASTER_FILE_ID     = 0x3f00, /* Master File */
+    /* Dedicated File under Master File */
+    DF_GSM_ID          = 0x7f20,
+    DF_TELECOM_ID      = 0x7f10,
+
+    /* Dedicated files under DF_GSM */
+    DF_IRIDIUM_ID      = 0x5f30,
+    DF_GLOBST_ID       = 0x5f31,
+    DF_ICO_ID          = 0x5f32,
+    DF_ACeS_ID         = 0x5f33,
+    DF_EIA_ID          = 0x5f40,
+    DF_CTS_ID          = 0x5f60,
+    DF_SoLSA_ID        = 0x5f70,
+    DF_MExE_ID         = 0x5f3C,
+    /* Dedicated File under DF_TELECOM */
+    DF_GRAPHICS_ID     = 0x5f50,
+    /* Elementary Files under Master File */
+    EF_ICCID_ID        = 0x2fE2,
+    EF_EID_ID          = 0x2f02,
+    EF_ELP_ID          = 0x2f05,
+    EF_LOCK_ID         = 0x2FF0,
+    EF_VER_ID          = 0x2F30,
+    EF_KT_USIM_TYPE_ID = 0x2F33,
+    EF_VZPF            = 0x2FE8,
+    /* Elementary Files under DF_SoLSA */
+    EF_SAI_ID          = 0x4f30,
+    EF_SLL_ID          = 0x4f31,
+    /* Elementary Files under DF_MExE */
+    EF_MExE_ST_ID      = 0x4f40,
+    EF_ORPK_ID         = 0x4f41,
+    EF_ARPK_ID         = 0x4f42,
+    EF_TPRPK_ID        = 0x4f43,
+    /* Elementary Files at DF_GRAPHICS */
+    EF_IMG_ID          = 0x4f20,
+    EF_IMG_1_ID        = 0x4f01,
+    EF_IMG_2_ID        = 0x4f02,
+    EF_IMG_3_ID        = 0x4f03,
+    EF_IMG_4_ID        = 0x4f04,
+    EF_IMG_5_ID        = 0x4f05,
+    EF_IMG_6_ID        = 0x4f06,
+    EF_IMG_7_ID        = 0x4f07,
+    EF_IMG_8_ID        = 0x4f08,
+    EF_IMG_9_ID        = 0x4f09,
+    EF_IMG_A_ID        = 0x4f0a,
+    EF_IMG_B_ID        = 0x4f0b,
+    EF_IMG_C_ID        = 0x4f0c,
+    EF_IMG_D_ID        = 0x4f0d,
+    EF_IMG_E_ID        = 0x4f0e,
+    EF_IMG_F_ID        = 0x4f0f,
+
+    /* Elementary Files under DF_GSM */
+    EF_LP_ID           = 0x6f05,
+    EF_IMSI_ID         = 0x6f07,
+    EF_Kc_ID           = 0x6f20,
+    EF_PLMNsel_ID      = 0x6f30,
+    EF_HPLMN_ID        = 0x6f31,
+    EF_ACMax_ID        = 0x6f37,
+    EF_SST_ID          = 0x6f38,
+    EF_ACM_ID          = 0x6f39,
+    EF_GID1_ID         = 0x6f3E,
+    EF_GID2_ID         = 0x6f3F,
+    EF_SPN_ID          = 0x6f46,
+    EF_PUCT_ID         = 0x6f41,
+    EF_CBMI_ID         = 0x6f45,
+    EF_BCCH_ID         = 0x6f74,
+    EF_ACC_ID          = 0x6f78,
+    EF_FPLMN_ID        = 0x6f7B,
+    EF_LOCI_ID         = 0x6f7E,
+    EF_AD_ID           = 0x6fAD,
+    EF_PHASE_ID        = 0x6fAE,
+    EF_VGCS_ID         = 0x6fB1,
+    EF_VGCSS_ID        = 0x6fB2,
+    EF_VBS_ID          = 0x6fB3,
+    EF_VBSS_ID         = 0x6fB4,
+    EF_eMLPP_ID        = 0x6fB5,
+    EF_AAeM_ID         = 0x6fB6,
+    EF_CBMID_ID        = 0x6f48,
+    EF_ECC_ID          = 0x6fB7,
+    EF_CBMIR_ID        = 0x6f50,
+    EF_DCK_ID          = 0x6f2C,
+    EF_CNL_ID          = 0x6f32,
+    EF_NIA_ID          = 0x6f51,
+    EF_KcGPRS_ID       = 0x6f52,
+    EF_LOCIGPRS_ID     = 0x6f53,
+    EF_SUME_ID         = 0x6f54,
+    EF_PLMNwACT_ID     = 0x6f60,
+    EF_OPLMNwACT_ID    = 0x6f61,
+    EF_HPLMNACT_ID     = 0x6f62,
+    EF_CPBCCH_ID       = 0x6f63,
+    EF_INVSCAN_ID      = 0x6f64,
+    EF_VM_WAIT_ID      = 0x6F11,
+    EF_CPHS_SST_ID     = 0x6F12,
+    EF_CF_FLAG_ID      = 0x6F13,
+    EF_OP_STRING_ID    = 0x6F14,
+    EF_CSP_ID          = 0x6F15,
+    EF_CPHS_INFO_ID    = 0x6F16,
+    EF_MAILBOX_NUM_ID  = 0x6F17,
+    EF_OP_SHORTFORM_ID = 0x6F18,
+    EF_INFO_NUM_ID     = 0x6F19,
+    /* Elementary Files at DF_TELECOM Level */
+    EF_ADN_ID          = 0x6f3A,
+    EF_FDN_ID          = 0x6f3B,
+    EF_SMS_ID          = 0x6f3C,
+    EF_CCP_ID          = 0x6f3D,
+    EF_ECCP_ID         = 0x6f4F,
+    EF_MSISDN_ID       = 0x6f40,
+    EF_SMSP_ID         = 0x6f42,
+    EF_SMSS_ID         = 0x6f43,
+    EF_LND_ID          = 0x6f44,
+    EF_SDN_ID          = 0x6f49,
+    EF_EXT1_ID         = 0x6f4A,
+    EF_EXT2_ID         = 0x6f4B,
+    EF_EXT3_ID         = 0x6f4C,
+    EF_BDN_ID          = 0x6f4D,
+    EF_EXT4_ID         = 0x6f4E,
+    EF_SMSR_ID         = 0x6f47,
+    EF_CMI_ID          = 0x6f58,
+    /* HomeZone Support */
+    DF_VID_ID                = 0x7F43,
+    EF_HZ_ID                  = 0x6F60,
+    EF_HZ_CACHE1_ID   = 0x6F61,
+    EF_HZ_CACHE2_ID   = 0x6F62,
+    EF_HZ_CACHE3_ID   = 0x6F63,
+    EF_HZ_CACHE4_ID   = 0x6F64,
+    /* ENS support mtk01488 */
+    DF_ENS_7F66_ID    = 0x7F66,
+    DF_ENS_5F30_ID        = 0x5F30,
+    EF_ENS_ACTING_HPLMN   = 0x4F34,
+    EF_ENS_TERMINAL_SUPPORT_TABLE = 0x6FD2,
+    EF_PNN_ID               = 0x6FC5,
+    EF_OPL_ID               =  0x6FC6,
+    EF_MBDN_ID              = 0x6FC7,
+    EF_EXT6_ID             = 0x6FC8,
+    EF_MBI_ID               = 0x6FC9,
+    EF_MWIS_ID            = 0x6FCA,
+    EF_CFIS_ID             =  0x6FCB,
+    EF_EXT7_ID             = 0x6FCC,
+    EF_SPDI_ID             = 0x6FCD,
+    EF_MMSN_ID           = 0x6FCE,
+    EF_EXT8_ID            = 0x6FCF,
+    EF_MMSICP_ID        = 0x6FD0,
+    EF_MMSUP_ID         = 0x6FD1,
+    EF_MMSUCP_ID       = 0x6FD2,
+    EF_DIR_ID              =  0x2F00,
+    /* USIM FILES */
+    EF_ARR_ID              = 0x2F06,
+    DF_USIM_ID            = 0x7FFF,
+    EF_U_LI_ID             = 0x6F05,
+    EF_U_IMSI_ID        = 0x6F07,
+    EF_U_KEYS_ID        = 0x6F08,
+    EF_U_KEYSPS_ID    = 0x6F09,
+    EF_U_PLMNWACT_ID    = 0x6F60,
+    EF_U_HPPLMN_ID         = 0x6F31,
+    EF_U_ACMMAX_ID        = 0x6F37,
+    EF_U_UST_ID               = 0x6F38,
+    EF_U_ACM_ID               =0x6F39,
+    EF_U_GID1_ID             = 0x6F3E,
+    EF_U_GID2_ID             = 0x6F3F,
+    EF_U_SPN_ID               = 0x6F46,
+    EF_U_PUCT_ID             = 0x6F41,
+    EF_U_CBMI_ID             = 0x6F45,
+    EF_U_ACC_ID              = 0x6F78,
+    EF_U_FPLMN_ID          = 0x6F7B,
+    EF_U_LOCI_ID             = 0x6F7E,
+    EF_U_AD_ID                = 0x6FAD,
+    EF_U_CBMID_ID          = 0x6F48,
+    EF_U_ECC_ID              = 0x6FB7,
+    EF_U_CBMIR_ID          = 0x6F50,
+    EF_U_PSLOCI_ID         = 0x6F73,
+    EF_U_FDN_ID              = 0x6F3B,
+    EF_U_SMS_ID              = 0x6F3C,
+    EF_U_MSISDN_ID        = 0x6F40,
+    EF_U_SMSP_ID            = 0x6F42,
+    EF_U_SMSS_ID            = 0x6F43,
+    EF_U_SDN_ID              = 0x6F49,
+    EF_U_EXT2_ID            = 0x6F4B,
+    EF_U_EXT3_ID            = 0x6F4C,
+    EF_U_SMSR_ID           = 0x6F47,
+    EF_U_ICI_ID               = 0x6F80,
+    EF_U_OCI_ID              = 0x6F81,
+    EF_U_ICT_ID              = 0x6F82,
+    EF_U_OCT_ID             = 0x6F83,
+    EF_U_EXT5_ID           = 0x6F4E,
+    EF_U_CCP2_ID           = 0x6F4F,
+    EF_U_EMLPP_ID         = 0x6FB5,
+    EF_U_AAEM_ID          = 0x6FB6,
+    EF_U_HIDDENKEY_ID    = 0x6FC3,
+    EF_U_BDN_ID                = 0x6F4D,
+    EF_U_EXT4_ID              = 0x6F55,
+    EF_U_CMI_ID                = 0x6F58,
+    EF_U_EST_ID                = 0x6F56,
+    EF_U_ACL_ID                = 0x6F57,
+    EF_U_DCK_ID                = 0x6F2C,
+    EF_U_CNL_ID                = 0x6F32,
+    EF_U_STARTHFN_ID     = 0x6F5B,
+    EF_U_THRESHOLD_ID   = 0x6F5C,
+    EF_U_OPLMNWACT_ID  = 0x6F61,
+    EF_U_HPLMNWACT_ID  = 0x6F62,
+    EF_U_ARR_ID                = 0x6F06,
+    EF_U_NETPAR_ID         = 0x6FC4,
+    EF_U_PNN_ID                = 0x6FC5,
+    EF_U_OPL_ID                = 0x6FC6,
+    EF_U_MBDN_ID             = 0x6FC7,
+    EF_U_EXT6_ID              = 0x6FC8,
+    EF_U_MBI_ID                =  0x6FC9,
+    EF_U_MWIS_ID              = 0x6FCA,
+    EF_U_CFIS_ID               = 0x6FCB,
+    EF_U_EXT7_ID               = 0x6FCC,
+    EF_U_SPDI_ID               = 0x6FCD,
+    EF_U_MMSN_ID             = 0x6FCE,
+    EF_U_EXT8_ID              = 0x6FCF,
+    EF_U_MMSICP_ID          = 0x6FD0,
+    EF_U_MMSUP_ID           = 0x6FD1,
+    EF_U_MMSUCP_ID          = 0x6FD2,
+    EF_U_NIA_ID                 = 0x6FD3,
+    EF_U_VGCS_ID               = 0x6FB1,
+    EF_U_VGCSS_ID             = 0x6FB2,
+    EF_U_VBS_ID                 = 0x6FB3,
+    EF_U_VBSS_ID               = 0x6FB4,
+    EF_U_VGCSCA_ID           = 0x6FD4,
+    EF_U_VBSCA_ID             = 0x6FD5,
+    EF_U_GBAP_ID               = 0x6FD6,
+    EF_U_MSK_ID                 = 0x6FD7,
+    EF_U_MUK_ID                 = 0x6FD8,
+    EF_U_GBANL_ID             = 0x6FDA,
+    DF_U_SOLSA_ID             = 0x5F70,
+    EF_U_SAI_ID                  = 0x4F30,
+    EF_U_SLL_ID                  = 0x4F31,
+    EF_U_LSAD_ID               = SIM_NO_FILE_ID,
+    DF_U_PHONEBOOK_ID    = 0x5F3A,
+    EF_U_PBR_ID                 = 0x4F30,
+    EF_U_IAP_ID                  = SIM_NO_FILE_ID,
+    EF_U_ADN_ID                 = SIM_NO_FILE_ID,
+    EF_U_EXT1_ID                = SIM_NO_FILE_ID,
+    EF_U_PBC_ID                  = SIM_NO_FILE_ID,
+    EF_U_GRP_ID                 =  SIM_NO_FILE_ID,
+    EF_U_AAS_ID                 = SIM_NO_FILE_ID,
+    EF_U_GAS_ID                 = SIM_NO_FILE_ID,
+    EF_U_ANR_ID                 = SIM_NO_FILE_ID,
+    EF_U_SNE_ID                 = SIM_NO_FILE_ID,
+    EF_U_CCP1_ID                = SIM_NO_FILE_ID,
+    EF_U_UID_ID                   = SIM_NO_FILE_ID,
+    EF_U_PSC_ID                  = 0x4F22,
+    EF_U_CC_ID                    = 0x4F23,
+    EF_U_PUID_ID                = 0x4F24,
+    EF_U_EMAIL_ID              = SIM_NO_FILE_ID,
+    DF_U_GSMACCESS_ID    = 0x5F3B,
+    EF_U_KC_ID                   = 0x4F20,
+    EF_U_KCGPRS_ID           = 0x4F52,
+    EF_U_CPBCCH_ID           = 0x4F63,
+    EF_U_INVSCAN_ID         = 0x4F64,
+    DF_U_MEXE_ID              = 0x5F3C,
+    EF_U_MEXEST_ID          = 0x4F40,
+    EF_U_ORPK_ID              = 0x4F41,
+    EF_U_ARPK_ID              = 0x4F42,
+    EF_U_TPRPK_ID             = 0x4F43,
+    EF_U_TKCDF_ID             = SIM_NO_FILE_ID,
+    DF_U_WLAN_ID              = 0x5F40,
+    EF_U_PSEUDO_ID           = 0x4F41,
+    EF_U_UPLMNWLAN_ID    = 0x4F42,
+    EF_U_OPLMNWLAN_ID    = 0x4F43,
+    EF_U_USSIDL_ID            = 0x4F44,
+    EF_U_OSSIDL_ID            = 0x4F45,
+    EF_U_WRI_ID                 = 0x4F46,
+    DF_G_PHONEBOOK_ID    = 0x5F3A,
+    EF_G_PBR_ID                 = 0x4F30,
+    EF_G_IAP_ID                  = SIM_NO_FILE_ID,
+    EF_G_ADN_ID                 = SIM_NO_FILE_ID,
+    EF_G_EXT1_ID                = SIM_NO_FILE_ID,
+    EF_G_PBC_ID                  = SIM_NO_FILE_ID,
+    EF_G_GRP_ID                 =  SIM_NO_FILE_ID,
+    EF_G_AAS_ID                 = SIM_NO_FILE_ID,
+    EF_G_GAS_ID                 = SIM_NO_FILE_ID,
+    EF_G_ANR_ID                 = SIM_NO_FILE_ID,
+    EF_G_SNE_ID                 = SIM_NO_FILE_ID,
+    EF_G_CCP1_ID                = SIM_NO_FILE_ID,
+    EF_G_UID_ID                   = SIM_NO_FILE_ID,
+    EF_G_PSC_ID                 = 0x4F22,
+    EF_G_CC_ID                   = 0x4F23,
+    EF_G_PUID_ID                = 0x4F24,
+    EF_G_EMAIL_ID              = SIM_NO_FILE_ID,
+    DF_MULTIMEDIA_ID       = 0x5F3B,
+    EF_MML_ID                     = 0x4F47,
+    EF_MMDF_ID                   = 0x4F48,
+    EF_U_EHPLMN_ID               = 0x6FD9,    //__R7_EHPLMN__
+    EF_U_EHPLMNPI_ID                = 0x6FDB,
+    EF_U_LRPLMNSI_ID                = 0x6FDC,
+    /* __U_CSP_SUPPORT__ mtk01612 */
+    EF_U_CSP_ID                 = 0x6F15,    /*[MAUI_02387843] mtk01612: AT&T proprietary EF_CSP 7FFF\6F15*/
+    EF_U_ENS_RAT_ID                 = 0x4F36,   //__ENS_RAT_BALANCING__
+    EF_U_ENS_TERMINAL_SUPPORT_TABLE = 0x6FD2,  /* [MAUI_02908638] mtk01616_110418 support EF_U_TS_table under 7FFF */
+    /* __CSG_SUPPORT__  */
+    DF_U_HNB_ID                    = 0x5F50,
+    EF_U_ACSGL_ID             = 0x4F81,
+    EF_U_CSGT_ID               = 0x4F82,
+    EF_U_HNBN_ID              = 0x4F83,
+    EF_U_EPSLOCI_ID         = 0x6FE3,
+    EF_U_EPSNSC_ID          = 0x6FE4,
+    EF_U_OCSGL_ID             = 0x4F84,
+    /* __ISIM_SUPPORT__ start */
+    EF_PSISMSC_ID           = 0x6FE5,
+    DF_ISIM_ID              = 0x7FFF,
+    EF_I_IST_ID             = 0x6F07,
+    EF_I_IMPI_ID            = 0x6F02,
+    EF_I_DOMAIN_ID          = 0x6F03,
+    EF_I_IMPU_ID            = 0x6F04,
+    EF_I_AD_ID              = 0x6FAD,
+    EF_I_ARR_ID             = 0x6F06,
+    EF_I_PCSCF_ID           = 0x6F09,
+    EF_I_GBAP_ID            = 0x6FD5,
+    EF_I_GBANL_ID           = 0x6FD7,
+    EF_I_NAFKCA_ID          = 0x6FDD,
+    EF_I_UICCIARI_ID        = 0x6FE7,
+    EF_I_SMS_ID             = 0x6F3C,
+    EF_I_SMSS_ID            = 0x6F43,
+    EF_I_SMSR_ID            = 0x6F47,
+    EF_I_SMSP_ID            = 0x6F42,
+    /* __ISIM_SUPPORT__ end */
+
+    /* USIM R10/R11 new file start */
+    EF_U_NAFKCA_ID          = 0x6FDD,
+    EF_U_SPNI_ID            = 0x6FDE,
+    EF_U_PNNI_ID            = 0x6FDF,
+    EF_U_NCPIP_ID           = 0x6FE2,
+    //EF_U_EPSLOCI_ID       = 0x6FE3,  // Already exist
+    //EF_U_EPSNSC_ID        = 0x6FE4,  // Already exist
+    EF_U_UFC_ID             = 0x6FE6,
+    EF_U_UICCIARI_ID        = 0x6FE7,
+    EF_U_NASCONFIG_ID       = 0x6FE8,
+    EF_U_PWS_ID             = 0x6FEC,
+    /* USIM R10/R11 new file end */
+
+    /* WLAN addition start */
+    EF_U_HWSIDL_ID          = 0x4F47,
+    EF_U_WEHPLMNPI_ID       = 0x4F48,
+    EF_U_WHPI_ID            = 0x4F49,
+    EF_U_WLRPLMN_ID         = 0x4F4A,
+    EF_U_HPLMNDAI_ID        = 0x4F4B,
+    /* WLAN addition end */
+
+    /* HNB addition start */
+    EF_U_OCSGT_ID           = 0x4F85,
+    EF_U_OHNBN_ID           = 0x4F86,
+    /* HNB addition end */
+
+    /* USIM R12/R13/R14 new files start */
+    EF_U_FDNURI_ID          = 0x6FED,
+    EF_U_BDNURI_ID          = 0x6FEE,
+    EF_U_SDNURI_ID          = 0x6FEF,
+    EF_U_IWL_ID             = 0x6FF0,
+    EF_U_IPS_ID             = 0x6FF1,
+    EF_U_IPD_ID             = 0x6FF2,
+    EF_U_EPDGID_ID          = 0x6FF3,
+    EF_U_EPDGSELECTION_ID   = 0x6FF4,
+    EF_U_EPDGIDEM_ID        = 0x6FF5,
+    EF_U_EPDGSELECTIONEM_ID = 0x6FF6,
+    EF_U_FROMPREFERRED_ID   = 0x6FF7,
+    EF_U_IMSCONFIGDATA_ID   = 0x6FF8,
+    EF_U_TVCONFIG_ID        = 0x6FFB,
+    EF_U_3GPPPSDATAOFF_ID   = 0x6FF9,
+    EF_U_3GPPPSDATAOFFSERVICELIST_ID = 0x6FFA,
+    /* PHONEBOOK start */
+    EF_U_PURI_ID            = 0x0000,
+    /* PHONEBOOK end */
+    /* ProSe start */
+    DF_U_PROSE_ID           = 0x5F90,
+    EF_U_PROSE_MON_ID       = 0x4F01,
+    EF_U_PROSE_ANN_ID       = 0x4F02,
+    EF_U_PROSEFUNC_ID       = 0x4F03,
+    EF_U_PROSE_RADIO_COM_ID = 0x4F04,
+    EF_U_PROSE_RADIO_MON_ID = 0x4F05,
+    EF_U_PROSE_RADIO_ANN_ID = 0x4F06,
+    EF_U_PROSE_POLICY_ID    = 0x4F07,
+    EF_U_PROSE_PLMN_ID      = 0x4F08,
+    EF_U_PROSE_GC_ID        = 0x4F09,
+    EF_U_PST_ID             = 0x4F10,
+    EF_U_PROSE_UIRC_ID      = 0x4F11,
+    EF_U_PROSE_GM_DISCOVERY_ID  = 0x4F12,
+    EF_U_PROSE_RELAY_ID     = 0x4F13,
+    EF_U_PROSE_RELAY_DISCOVERY_ID   = 0x4F14,
+    /* ProSe end */
+    /* ACDC start */
+    DF_U_ACDC_ID            = 0x5FA0,
+    EF_U_ACDC_LIST_ID       = 0x4F01,
+    EF_U_ACDC_OS_CONFIG_ID  = 0x0000,
+    /* ACDC end */
+    /* USIM R12/R13/R14 new files end */
+    EF_U_OP_STRING_ID       = 0x6F14,
+    EF_U_OP_SHORTFORM_ID    = 0x6F18,
+
+    /* TELECOM R13/R14 new files start */
+    DF_MCPTT_ID             = 0x5F3D,
+    EF_MST_ID               = 0x4F01,
+    EF_MCPTT_CONFIG_ID      = 0x4F02,
+    DF_V2X_ID               = 0x5F3E,
+    EF_VST_ID               = 0x4F01,
+    EF_V2X_CONFIG_ID        = 0x4F02,
+    /* TELECOM R13/R14 new files end */
+
+    /* ISIM R12/R13/R14 new files start */
+    EF_I_FROMPREFERRED_ID   = 0x6FF7,
+    EF_I_IMSCONFIGDATA_ID   = 0x6FF8,
+    /* ISIM R12/R13/R14 new files end */
+
+    /* CDMA2000 file start */
+    DF_MMSS_ID              = 0x5f3c,
+    EF_MLPL_ID              = 0x4f20,
+    EF_MSPL_ID              = 0x4f21,
+    EF_MMSSMODE_ID          = 0x4f22,
+    DF_CSIM_ID              = 0x7FFF,
+    EF_C_COUNT_ID           = 0x6F21,
+    EF_C_IMSI_M_ID          = 0x6F22,
+    EF_C_IMSI_T_ID          = 0x6F23,
+    EF_C_TMSI_ID            = 0x6F24,
+    EF_C_CDMA_HOME_ID       = 0x6F28,
+    EF_C_ACCLOC_ID          = 0x6F2C,
+    EF_C_TERM_ID            = 0x6F2D,
+    EF_C_SSCI_ID            = 0x6F2E,
+    EF_C_PRL_ID             = 0x6F30,
+    EF_C_UIM_ID_ID          = 0x6F31,
+    EF_C_CST_ID             = 0x6F32,
+    EF_C_OTAPASPC_ID        = 0x6F34,
+    EF_C_NAMLOCK_ID         = 0x6F35,
+    EF_C_OTA_ID             = 0x6F36,
+    EF_C_ESN_MEID_ME_ID     = 0x6F38,
+    EF_C_LI_ID              = 0x6F3A,
+    EF_C_FDN_ID             = 0x6F3B,
+    EF_C_SMS_ID             = 0x6F3C,
+    EF_C_SMSP_ID            = 0x6F3D,
+    EF_C_SMSS_ID            = 0x6F3E,
+    EF_C_SPN_ID             = 0x6F41,
+    EF_C_USGIND_ID          = 0x6F42,
+    EF_C_AD_ID              = 0x6F43,
+    EF_C_MDN_ID             = 0x6F44,
+    EF_C_SPCS_ID            = 0x6F46,
+    EF_C_ECC_ID             = 0x6F47,
+    EF_C_ME3GPDOPC_ID       = 0x6F48,
+    EF_C_3GPDOPM_ID         = 0x6F49,
+    EF_C_SIPCAP_ID          = 0x6F4A,
+    EF_C_MIPCAP_ID          = 0x6F4B,
+    EF_C_SIPUPP_ID          = 0x6F4C,
+    EF_C_MIPUPP_ID          = 0x6F4D,
+    EF_C_SIPSP_ID           = 0x6F4E,
+    EF_C_MIPSP_ID           = 0x6F4F,
+    EF_C_SIPPAPSS_ID        = 0x6F50,
+    EF_C_MECRP_ID           = 0x6F55,
+    EF_C_HRPDCAP_ID         = 0x6F56,
+    EF_C_HRPDUPP_ID         = 0x6F57,
+    EF_C_EPRL_ID            = 0x6F5A,
+    EF_C_BCSMScfg_ID        = 0x6F5B,
+    EF_C_BCSMStable_ID      = 0x6F5D,
+    EF_C_BCSMSP_ID          = 0x6F5E,
+    EF_C_GID1_ID            = 0x6F6D,
+    EF_C_GID2_ID            = 0x6F6E,
+    EF_C_SFUIMID_ID         = 0x6F74,
+    EF_C_EST_ID             = 0x6F75,
+    EF_C_EXT2_ID            = 0x6F7A,
+    EF_C_MIPFlags_ID        = 0x6F84,
+    EF_C_3GPDUPPExt_ID      = 0x6F85,
+    EF_C_IPC6CAP_ID         = 0x6F87,
+    EF_C_TCPConfig_ID       = 0x6F88,
+    EF_C_DGC_ID             = 0x6F89,
+    DF_CDMA_ID              = 0x7F25,
+    /* CDMA2000 file end */
+
+    EF_PERSO                = 0x6F02,
+
+    /* RPM */
+    DF_RPM_ARMED_AGENT_ID   = 0x5F40,
+    EF_RPM_VERSION_ID       = 0x4F44,
+
+    /* USIM R15 new files start */
+    EF_U_EARFCNLIST_ID                  = 0x6FFD,
+    /* 5GS files start */
+    DF_U_5GS_ID                         = 0x5FC0,
+    EF_U_5GS3GPPLOCI_ID                 = 0x4F01,
+    EF_U_5GSN3GPPLOCI_ID                = 0x4F02,
+    EF_U_5GS3GPPNSC_ID                  = 0x4F03,
+    EF_U_5GSN3GPPNSC_ID                 = 0x4F04,
+    EF_U_5GAUTHKEYS_ID                  = 0x4F05,
+    EF_U_UAC_AIC_ID                     = 0x4F06,
+    EF_U_SUCI_CALC_INFO_ID              = 0x4F07,
+    EF_U_OPL5G_ID                       = 0x4F08,
+    EF_U_NSI_ID                         = 0x4F09,
+    EF_U_ROUTING_INDICATOR_ID           = 0x4F0A,
+    EF_U_URSP_ID                        = 0x4F0B,
+    /* 5GS files end */
+    /* USIM R15 new files end */
+
+    /* ISIM R14/R15 new files start */
+    EF_I_WEBRTCURI_ID                   = 0x6FFA,
+    EF_I_XCAPCONFIGDATA_ID              = 0x6FFC,
+    EF_I_WLAN_EPS_ROAMING_HANDOVER_ID   = 0x6FFD,
+    /* ISIM R14/R15 new files end */
+
+    EF_NULL                          = 0xFFFF
+}sim_file_id_enum;
+
+typedef enum
+{
+    SIMCALLCONTROL_NOMODIFY,
+    SIMCALLCONTROL_CALLTOSS,
+    SIMCALLCONTROL_CALLTOUSSD,
+    SIMCALLCONTROL_SSTOCALL,
+    SIMCALLCONTROL_SSTOUSSD,
+    SIMCALLCONTROL_USSDTOCALL,
+    SIMCALLCONTROL_USSDTOSS,
+    SIMCALLCONTROL_L4RETRY
+}sim_call_control_type_enum;
+
+typedef enum
+{
+   TYPE_NONE=0,
+   TYPE_ADN=0x2,
+   TYPE_FDN=0x4,
+   TYPE_BDN=0x8,
+   TYPE_ADN_BDN=0x0A,
+   TYPE_FDN_BDN=0x0C
+}sim_dn_enum;
+
+typedef enum
+{
+   SIM_CHV_1=1,
+   SIM_CHV_2=2
+}sim_chv_type_enum;
+
+typedef enum
+{
+   SIM_START_MODE_RESET,
+   SIM_START_MODE_INIT,
+   SIM_START_MODE_PUK1,
+   SIM_START_ADDITIONAL_LOCK
+}sim_start_mode_enum;
+
+typedef enum
+{
+   UICC_ISIM_APP,
+   UICC_USIM_APP,
+   UICC_CSIM_APP,
+   UICC_SIM_APP,
+   UICC_RUIM_APP,
+   UICC_MAX_APP_NUM,
+   UICC_APP_INVALID = 0xFF
+}uicc_app_type_enum;
+
+typedef enum
+{
+   SIM_ELP,
+   SIM_LP,
+   USIM_LI,
+   USIM_PL
+}sim_lp_file_type_enum;
+
+typedef enum
+{
+   SIM_PHASE_0,
+   SIM_PHASE_2=2,
+   SIM_PHASE_3=3
+}sim_phase_enum;
+
+typedef enum
+{
+   SIM_FILE_SIZE,
+   SIM_REC_NUM,
+   SIM_REC_SIZE,
+   SIM_RES_DATA_LEN /*[MAUI_01702417] mtk01612: WinMo_GEMINI : +crsm*/
+}sim_info_type_enum;
+
+/*[MAUI_03058435] mtk01612: move sim_security_operation_enum into other file due to HAL rule*/
+
+typedef enum
+{
+   SAT_MM_NO_SERVICE,
+   SAT_MM_LIMITED_SERVICE,
+   SAT_MM_NORMAL_SERVICE,
+   SAT_MM_SEARCHING
+}sat_mm_status_enum;
+
+typedef enum
+{
+    SIM_FILE_TRANSP = 0x00,
+    SIM_FILE_LINEAR_FIXED= 0x01,
+    SIM_FILE_CYCLIC = 0x03,
+    SIM_FILE_NO_STRUCTURE = 0x07,
+    SIM_FILE_BER_TLV = 0x0f
+} sim_file_structure_enum; //[MAUI_02369100] mtk01612
+
+typedef enum
+{
+   USIM_FILE_SIZE,
+   USIM_REC_NUM,
+   USIM_REC_SIZE
+}usim_info_type_enum;
+
+typedef enum
+{
+   USIM_ACL_SERVICE_NOT_AVAILABLE,
+   USIM_ACL_SERVICE_NOT_ACTIVATED,
+   USIM_ACL_SERVICE_ACTIVATED,
+   USIM_NOT_INITIALIZED
+}usim_acl_type_enum;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+typedef enum
+{
+    SIM_NO_TIMER_STATUS = 0,
+    SIM_TIMER_RUNNING,
+    SIM_TIMER_NOT_RUNNING,
+    SIM_TIMER_STOPPED,
+    SIM_TIMER_TIMED_OUT,
+    SIM_TIMER_SWITCHING,    // For SAT timer during DSS_NO_RESET
+    SIM_TIMER_EXTENDED_RUNNING
+} sim_timer_status_enum;
+
+typedef enum
+{
+    UICC_NOT_INIT,
+    SIM_CARD_INSIDE,
+    UICC_USIM_INSIDE,
+    UICC_ISIM_INSIDE,
+    SIM_RUIM_INSIDE,
+    UICC_CSIM_INSIDE,
+    RUIM_CSIM_INSIDE,
+    RUIM_ONLY_INSIDE,
+    OTHER_UICC_APP_INSIDE
+} uicc_card_type_enum;
+
+typedef enum
+{
+	SIM_CHANNEL_OPEN,
+	SIM_CHANNEL_CLOSE
+} sim_manage_channel_mode_enum;
+
+#ifdef __VSIM__
+typedef enum
+{
+    VSIM_SIM_TYPE,
+	VSIM_USIM_TYPE
+}vsim_card_type_enum;
+#endif
+
+typedef enum
+{
+    /* TS 27.005, +CUSATR/+CUSATW profile_storage */
+    SIM_PROFILE_TE = 0,                 /* TE profile that can be set with +CUSATW */
+    SIM_PROFILE_MT,                     /* MT profile that can be set with +CUSATW */
+    SIM_PROFILE_DEFAULT_MT,             /* MT default profile that reflects the inherent, default supported facilities of the MT */
+    SIM_PROFILE_ACTIVE,                 /* UICC profile that reflects the currently active UICC profile */
+    SIM_PROFILE_UST,                    /* UICC EF_UST. The elementary file that indicates services available in the USIM */
+    SIM_PROFILE_MT_ONLY = 5,            /* List of MT only facilities (facilities that are not allowed to be assigned to the TE) */
+    SIM_PROFILE_CONFLICT = 5,           /* Refers to a conflict between the TE profile and the list of MT only facilities */
+
+    /* Special handling, not defined in TS 27.005 */
+    SIM_PROFILE_TE_MT = 128
+} sim_profile_storage_enum;
+
+/*__SAT__ start*/
+typedef enum
+{
+   CMD_DETAIL_TAG = 1,
+   DEVICE_ID_TAG,
+   RESULT_TAG,
+   DURATION_TAG,
+   ALPHA_ID_TAG,
+   ADDRESS_TAG,
+   CCP_TAG,
+   SUBADDR_TAG,
+   SS_STRING_TAG,
+   USSD_STRING_TAG,
+   SMS_TPDU_TAG,
+   PDP_PDN_PDU_TYPE_TAG = SMS_TPDU_TAG,
+   CB_PAGE_TAG,
+   PDU_ESTABLISH_PARAM_TAG = CB_PAGE_TAG,
+   TEXT_STRING_TAG,
+   TONE_TAG,
+   ITEM_TAG,
+   ITEM_ID_TAG,                 /* 0x10 */
+   RSP_LEN_TAG,
+   FILE_LIST_TAG,
+   LOCI_TAG,
+   IMEI_TAG,
+   HELP_REQ_TAG,
+   NET_MEASURE_RES_TAG,
+   DEFAULT_TEXT_TAG,
+   ITEM_NEXT_ACTION_IND_TAG,
+   EVENT_LIST_TAG,
+   CAUSE_TAG,
+   LOCATION_STATUS_TAG,
+   TID_TAG,
+   BCCH_CHAN_LIST_TAG,
+   DATA_CONNECT_STATUS_TAG = BCCH_CHAN_LIST_TAG,
+   ICON_ID_TAG,
+   ITEM_ICON_ID_LIST_TAG,
+   CARD_READER_STATUS_TAG,      /* 0x20 */
+   CARD_ATR_TAG,
+   C_APDU_TAG,
+   R_APDU_TAG,
+   TIMER_ID_TAG,
+   TIMER_VALUE_TAG,
+   DATE_TIME_ZONE_TAG,
+   CC_REQ_ACTION_TAG,
+   AT_CMD_TAG,
+   AT_RSP_TAG,
+   BC_REPEAT_IND_TAG,
+   DATA_CONNECT_TYPE_TAG = BC_REPEAT_IND_TAG,
+   IMMEDIATE_RSP_TAG,
+   DTMF_STRING_TAG,
+   LANGUAGE_TAG,
+   TA_TAG,
+   XSM_CAUSE_TAG = TA_TAG,
+   AID_TAG,
+   BROWSER_ID_TAG,              /* 0x30 */
+   URL_TAG,
+   IMS_REQUEST_URI_TAG = URL_TAG,
+   BEARER_TAG,
+   PROVISIONING_REF_FILE_TAG,
+   BROWSER_TERMINATION_CAUSE_TAG,
+   BEARER_DESCRIPTION_TAG,
+   CHAN_DATA_TAG,
+   CHAN_DATA_LEN_TAG,
+   CHAN_STATUS_TAG,
+   BUFFER_SIZE_TAG,
+   CARD_READER_ID_TAG,
+   REFRESH_ENFORCEMENT_POLICY_TAG = CARD_READER_ID_TAG,
+   RFU2_TAG,
+   SIM_ME_INTERFACE_LEVEL_TAG,
+   RFU3_TAG,
+   OTHER_ADDR_TAG,
+   ACCESS_TECH_TAG,
+   RFU4_TAG,                    /* 0x40 */
+   RFU5_TAG,
+   NETWORK_ACCESS_NAME_TAG              = 0x47,
+   CDMA_SMS_TPDU_TAG                    = 0x48, /* 3GPP2 SMS TPDU */
+   REMOTE_ENTITY_ADDR_TAG               = 0x49,
+   IWLAN_ID_TAG                         = 0x4a,
+   IWLAN_ACCESS_STATUS_TAG              = 0x4b,
+   TEXT_ATTRIBUTE_TAG                   = 0x50,
+   ITEM_TEXT_ATTRIBUTE_LIST_TAG         = 0x51,
+   PDP_CTX_ACTIVATE_PARAM_TAG           = 0x52, /* PDP Context Activation parameters tag*/
+   CONTACTLESS_FUNCTIONALITY_STATE_TAG  = 0x54,
+   CSG_CELL_SELECT_STATUS_TAG           = 0x55, /* CSG Cell Selection Status */
+   CSG_ID_TAG                           = 0x56, /* CSG ID */
+   HNB_NAME_TAG                         = 0x57, /* HNB Name */
+   IMEISV_TAG                           = 0x62,
+   NETWORK_SEARCH_MODE_TAG              = 0x65, /* mtk02374 20090513 add for nw search mode */
+   FRAME_LAYOUT_TAG                     = 0x66,
+   FRAME_INFORMATION_TAG                = 0x67,
+   FRAME_IDENTIFIER_TAG                 = 0x68, /* PROACTIVE: Frame identifier tag */
+   NMR_QUAL_TAG                         = 0x69, /* UTRAN/E-UTRAN Measurement Qualifier */
+   PLMNwACT_LIST_TAG                    = 0x72,
+   ROUTING_AREA_ID_TAG                  = 0x73,
+   UPDATE_ATTCH_TYPE_TAG                = 0x74,
+   REJECT_CAUSE_TAG                     = 0x75,
+   GEO_LOCATION_PARAM_TAG               = 0x76, /* PROACTIVE: Geographical Location Parameters */
+   IARI_TAG                             = 0x76, /* ENVELOPE: IARI */
+   GAD_SHAPES_TAG                       = 0x77, /* PROACTIVE: GAD_SHAPES */
+   IMPU_LIST_TAG                        = 0x77, /* ENVELOPE: IMPU List */
+   NMEA_SENTENCE_TAG                    = 0x78, /* PROACTIVE: NMEA sentence */
+   IMS_STATUS_CODE_TAG                  = 0x78, /* ENVELOPE: IMS Status-Code */
+   PLMN_LIST_TAG                        = 0x79,
+   EUTRAN_NET_MEASURE_RES_TAG           = 0x79,
+   ACTIVATE_DESCRIPTOR_TAG              = 0x7b, /* __SATCL__ */
+   EPS_PDN_CONNECT_PARAM_TAG            = 0x7c, /* EPS PDN Connection Activation Parameters */
+   TRACKING_AREA_ID_TAG                 = 0x7d,
+   CSG_ID_LIST_TAG                      = 0x7e, /* CSG ID List */
+   MEDIA_TYPE_TAG                       = 0x7e,
+
+   PROACTIVE_CMD_TAG                    = 0xD0,
+   SMS_PP_DL_TAG,
+   CB_DL_TAG,
+   MENU_SELECTION_TAG,
+   CALL_CONTROL_TAG,
+   MO_SMS_CONTROL_TAG,
+   EVENT_DL_TAG,
+   TIMER_EXPIR_TAG,
+
+   VZW_MCC_MNC_TAG                      = 0xDF,
+   RFU6_TAG=0xDF
+}sat_tag_enum;
+
+typedef enum
+{
+   SAT_SETUP_CALL=ADDRESS_TAG,
+   SAT_SEND_SS=SS_STRING_TAG,
+   SAT_SEND_USSD=USSD_STRING_TAG
+}sat_call_ctrl_type_enum;
+
+typedef enum
+{
+   SAT_ALLOWED_NO_MODIFICATION=0,
+   SAT_NOT_ALLOWED,
+   SAT_ALLOWED_WITH_MODIFICATION,
+   SAT_SIM_ERROR
+}sat_call_ctrl_by_sim_result_enum;
+
+typedef enum
+{
+    SAT_BIP_NO_SPECIFIC_CAUSE,
+    SAT_BIP_NO_CHANNEL_AVAILABLE,
+    SAT_BIP_CHANNEL_CLOSED,
+    SAT_BIP_CHANNEL_IDENTIFIER_NOT_VALID,
+    SAT_BIP_REQUESTED_BUFFER_SIZE_NOT_AVAILABLE,
+    SAT_BIP_SECURITY_ERROR,
+    SAT_BIP_REQUESTED_TRANSPORT_LEVEL_NOT_AVAILABLE
+}sat_bearer_independent_protocol_additional_info_for_res_enum;
+
+typedef enum
+{
+    SAT_CSD_BEARER = 0x01,
+    SAT_GPRS_BEARER,
+    SAT_SERVER_MODE_BEARER
+}sat_bearer_enum;
+
+typedef enum
+{
+    SAT_UDP_PROTOCOL = 0x01,
+    SAT_TCP_PROTOCOL,
+    SAT_RAW_PROTOCOL
+}sat_protocol_type_enum;
+
+typedef enum
+{
+    SAT_CLOSE_CHANNEL_FINISHED,
+    SAT_SEND_DATA_FINISHED,
+    SAT_SEND_DATA_TERMINATED,
+    SAT_RECEIVE_DATA_FINISHED,
+    SAT_RECEIVE_DATA_TERMINATED,
+    SAT_DISCONNECT_EVENT_DOWNLOAD
+} sat_notify_mmi_enum;
+
+typedef enum
+{
+   SAT_DL_BUSY,
+   SAT_DL_ERROR,
+   SAT_DL_NO_ERROR = 0xFF
+} sat_sms_dl_error_cause_enum;
+
+typedef enum
+{
+   SAT_RR_IDLE,
+   SAT_RR_NOT_IDLE
+}sat_me_status_enum;
+
+typedef enum
+{
+   SAT_NO_CHANNEL=0x00,
+   SAT_CH1=0x21,
+   SAT_CH2=0x22,
+   SAT_CH3=0x23,
+   SAT_CH4=0x24,
+   SAT_CH5=0x25,
+   SAT_CH6=0x26,
+   SAT_CH7=0x27
+}sat_channel_id_enum;
+
+typedef enum
+{
+    RSAT_DISPLAY_TEXT,
+    RSAT_GET_INKEY,
+    RSAT_GET_INPUT,
+    RSAT_MORE_TIME,
+    RSAT_PLAY_TONE,
+    RSAT_POLL_INTERVAL,
+    RSAT_REFRESH_I,          //NAA initialization and FULL file change notification
+    RSAT_REFRESH_II,         //File change notification
+    RSAT_REFRESH_III,        //NAA initialization and file change notification
+    RSAT_REFRESH_IV,         //NAA initialization
+    RSAT_REFRESH_V,          //UICC Reset
+    RSAT_REFRESH_VI,         //NAA Application Reset
+    RSAT_REFRESH_VII,        //NAA Session Reset
+    RSAT_REFRESH_VIII,       //Steering of roaming
+    RSAT_REFRESH_IX,         //Steering of roaming for I-WLAN
+    RSAT_REFRESH_X,          //eUICC Profile State Change
+    RSAT_REFRESH_XI,         //Application Update
+    RSAT_SETUP_MENU,
+    RSAT_SELECT_ITEM,
+    RSAT_SEND_SMS,
+    RSAT_SEND_SS,
+    RSAT_SEND_USSD,
+    RSAT_SETUP_CALL,
+    RSAT_POLLING_OFF,
+    RSAT_LOCAL_INFO_I,       //Location information (MCC,MNC,LAC,cell id,etc)
+    RSAT_LOCAL_INFO_II,      //IMEI
+    RSAT_LOCAL_INFO_III,     //NMR
+    RSAT_LOCAL_INFO_IV,      //Date,time,time zone
+    RSAT_LOCAL_INFO_V,       //Language setting
+    RSAT_LOCAL_INFO_VI,      //Timing advance
+    RSAT_LOCAL_INFO_VII,     //Access technology
+    RSAT_LOCAL_INFO_VIII,    //ESN of terminal
+    RSAT_LOCAL_INFO_IX,      //IMEISV
+    RSAT_LOCAL_INFO_X,       //Search mode
+    RSAT_SETUP_EVENT_LIST,
+    RSAT_TIMER_MANAGEMENT,
+    RSAT_SETUP_IDLE_TEXT,
+    RSAT_RUN_AT_COMMAND,
+    RSAT_SEND_DTMF,
+    RSAT_LANG_NOTIFY,
+    RSAT_LAUNCH_BROWSER,
+    RSAT_OPEN_CHANNEL,
+    RSAT_CLOSE_CHANNEL,
+    RSAT_RECEIVE_DATA,
+    RSAT_SEND_DATA,
+    RSAT_GET_CHANNEL_STATUS,
+    RSAT_ACTIVATE, //__SATCL__
+    RSAT_CONTACTLESS_STATE_CHANGE,
+    RSAT_SIZE
+} rsat_type_enum;
+
+typedef enum
+{
+    SAT_CC_NULL,
+    /* SETUP CALL to others */
+    SAT_MMI_SETUP_CALL_TO_SEND_SS,
+    SAT_MMI_SETUP_CALL_TO_SEND_USSD,
+    SAT_STK_SETUP_CALL_TO_SEND_SS,
+    SAT_STK_SETUP_CALL_TO_SEND_USSD,
+    /* SEND SS to others */
+    SAT_MMI_SEND_SS_TO_SETUP_CALL,
+    SAT_MMI_SEND_SS_TO_SEND_USSD,
+    SAT_STK_SEND_SS_TO_SETUP_CALL,
+    SAT_STK_SEND_SS_TO_SEND_USSD,
+    /* SEND USSD to others */
+    SAT_MMI_SEND_USSD_TO_SETUP_CALL,
+    SAT_MMI_SEND_USSD_TO_SEND_SS,
+    SAT_STK_SEND_USSD_TO_SETUP_CALL,
+    SAT_STK_SEND_USSD_TO_SEND_SS
+} sat_call_ctrl_by_sim_state_enum;
+
+typedef enum
+{
+   SAT_CALL_DISCONNECT,
+   SAT_CALL_CONNECT
+}sat_call_status_enum;
+
+typedef enum
+{
+    SAT_MM_IDLE,
+    SAT_MM_CONNECTED
+}sat_mm_connect_status_enum;
+
+typedef enum
+{
+    SAT_EMM_IDLE,
+	SAT_EMM_CONNECTED
+}sat_emm_connect_status_enum;
+
+typedef enum
+{
+   SAT_PDP_DEACTIVATE,
+   SAT_PDP_ACTIVATE
+}sat_pdp_status_enum;
+
+typedef enum
+{
+    SAT_SMS_ACK_WAIT,
+	SAT_SMS_ACK_RECEIVED
+}sat_sms_pp_ack_status_enum;
+
+typedef enum
+{
+    SAT_FILE_CHANGE_NO_ERROR_CAUSE,
+    SAT_FILE_CHANGE_FILE_READ_FAIL,
+    SAT_FILE_CHANGE_ABORT_BY_NEW_REQUEST,
+    SAT_FILE_CHANGE_ABORT_BY_SIM_SWITCH
+} sat_file_change_error_cause_enum;
+
+typedef enum
+{
+   CMD_UNKNOWN=0x00,
+   CMD_REFRESH=0x01,
+   CMD_MORE_TIME=0x02,
+   CMD_POLL_INTERVAL=0x03,
+   CMD_POLLING_OFF=0x04,
+   CMD_SETUP_EVENT_LIST=0x05,
+   CMD_SETUP_CALL=0x10,
+   CMD_SEND_SS=0x11,
+   CMD_SEND_USSD=0x12,
+   CMD_SEND_SMS=0x13,
+   CMD_DTMF=0x14,
+   CMD_LAUNCH_BROWSER=0x15,
+   CMD_PLAY_TONE=0x20,
+   CMD_DSPL_TXT=0x21,
+   CMD_GET_INKEY=0x22,
+   CMD_GET_INPUT=0x23,
+   CMD_SELECT_ITEM=0x24,
+   CMD_SETUP_MENU=0x25,
+   CMD_PROVIDE_LOCAL_INFO=0x26,
+   CMD_TIMER_MANAGER=0x27,
+   CMD_IDLE_MODEL_TXT=0x28,
+   CMD_PERFORM_CARD_APDU=0x30,
+   CMD_POWER_ON_CARD=0x31,
+   CMD_POWER_OFF_CARD=0x32,
+   CMD_GET_READER_STATUS=0x33,
+   CMD_RUN_AT=0x34,
+   CMD_LANGUAGE_NOTIFY=0x35,
+   CMD_OPEN_CHAN=0x40,
+   CMD_CLOSE_CHAN=0x41,
+   CMD_RECEIVE_DATA=0x42,
+   CMD_SEND_DATA=0x43,
+   CMD_GET_CHAN_STATUS=0x44,
+   CMD_RFU=0x60,
+   CMD_ACTIVATE=0x70,   //__SATCL__
+   CMD_CONTACTLESS_STATE_CHANGED=0x71,
+   CMD_END_PROACTIVE_SESSION=0x81,
+   CMD_DETAIL=0xFF
+}sat_proactive_cmd_enum;
+
+typedef enum
+{
+   RSAT_BY_TE,   /* CMD and TR handled by AP/MMI */
+   RSAT_BY_SIM, /* CMD and TR handled by modem. But some cmd might need TE involve ex: STKCALL,STKSS,.. */
+////   RSAT_BY_L4C,  /* MAUI_02868445 mtk01616_110212: No need to distinguish this type now */
+   RSAT_NULL
+} rsat_config_enum;
+
+typedef enum
+{
+    VSIM_MDVSIM_V1,
+    VSIM_MDVSIM_V2
+} vsim_ver_type_enum;
+
+/*__SAT__ end*/
+
+/* MAUI_03041489 : for moveing sim_profile to custom folder */
+
+#define SIM_MAX_DATA_LEN        256
+#define NUM_OF_BYTE_ECC           3
+#define MAX_DF_HEADER_LEN        22
+#define NUM_GID1                 20
+#define NUM_GID2                 20
+#define NUM_CNL                  240 /* one record 6 byte * 40 records */
+#define LEN_OF_OPNAME            40
+#define LEN_OF_SOPNAME           10
+#ifdef __RILD_SIM_CACHE__
+#define LEN_OF_SPN               25
+#else
+#define LEN_OF_SPN               17
+#endif
+#define MAX_SUPPORT_NETPAR_DATA_SIZE 512
+#define MAX_SUPPORT_CSGL_DATA_SIZE 2048 /* __CSG_SUPPORT__ */
+#define MAX_TERMINAL_PROFILE_LEN 20
+#define USIM_SUPPORT_EST_LEN   2
+#define USIM_MAX_EST_READ_LEN 15
+#define VZPF_LEN                 8
+#define VZPF_LEN_FOR_MFG_INFO  1
+#define MAX_VZPF_FILE_LEN       30
+
+#define usim_file_id_enum sim_file_id_enum
+
+#define NUM_OF_BYTE_LP            2
+#define MAX_LP_NUM                5
+#define SIM_AID_MAX_LEN           16
+/*__SAT__ start*/
+#define MAX_SIM_ADDR_LEN          41
+#define MAX_SIM_SUB_ADDR_BCD_LEN  41
+#define MAX_AT_RESPONESE_LEN            240
+#define MAX_SAT_EUNMR_OBJ_NUM           8
+#define NMR_OBJ_GUARD_PATTERN_LENGTH    4
+
+/* Support Extended Cell ID (to 9) / NR (to 11) */
+#define SAT_MAX_LOC_INFO_LEN (11)
+
+/*__SAT__ end*/
+#define MAX_IMPI_LEN               74 /* IETF RFC 2486: MUST Support NAI length of at least 72 octets */
+
+#define MAX_SIM_EVENT_ARG_LIST_SIZE      12
+
+#define MAX_SIM_MCC_MNC_LEN 3 //digits or hex bytes
+#define MAX_SIM_MSIN_LEN 10   //digits or hex bytes
+#define MAX_SIM_IMSI_LEN 9    //bytes in EF_IMSI
+
+/* the content of EF_EPSLOCI:
+ * Byte 1~12: GUTI
+ * Byte 13~17: Last Visited TAI
+ * Byte 18: EPS Update Status
+ */
+#define LEN_OF_EPSLOCI  18
+
+/* the content of EF_EPSNSC is a TLV structure,
+ * Byte 1: EPS NAS Security Context Tag
+ * Byte 2: Length of following data
+ * Byte 3: KSI Tag
+ * Byte 4: KSI Length
+ * Byte 5: KSI Value
+ * Byte 6: KASME Tag
+ * Byte 7: KASME Length
+ * Byte 8~39: KASME Value
+ * Byte 40: UL NAS Count Tag
+ * Byte 41: UL NAS Count Length
+ * Byte 42~45: UL NAS Count Value
+ * Byte 46: DL NAS Count Tag
+ * Byte 47: DL NAS Count Length
+ * Byte 48~51: DL NAS Count Value
+ * Byte 52: Selected NAS Algorithm Tag
+ * Byte 53: Selected NAS Algorithm Length
+ * Byte 54: Selected NAS Algorithm Value
+ */
+#define LEN_OF_EPSNSC   54
+
+
+#define LEN_OF_5GS3GPPLOCI          20
+#define LEN_OF_5GSN3GPPLOCI         20
+#define LEN_OF_5GS3GPPNSC           57
+#define LEN_OF_UAC_AIC              4
+#define LEN_OF_ROUTING_INDICATOR    2
+#define LEN_OF_5GAUTHKEYS           110
+#define LEN_OF_EF_IMSI MAX_SIM_IMSI_LEN //9 bytes
+
+#define SIM_TAG_EF_OBJECT       (0xEF)
+
+typedef enum
+{
+    SIM_GLOBAL_MODE,
+    SIM_3GPP_ONLY_MODE,
+    SIM_3GPP2_ONLY_MODE,
+    SIM_UNKNOWN_RAT_MODE
+}sim_c_capability_enum;
+
+typedef enum
+{
+    SAT_RULE_GLOBAL,
+    SAT_RULE_STK,
+    SAT_RULE_UTK,
+    SAT_RULE_UNKNOWN
+}sat_cmd_dispatch_rule_enum;
+
+typedef enum
+{
+    SIM_SWITCH_IDLE = 0,
+    SIM_SWITCH_START,
+    SIM_SWITCH_BEFORE_RESET,
+    SIM_SWITCH_REINIT,                  // some sim context needs to be handled w/o sim reset
+    SIM_SWITCH_AFTER_RESET,
+    SIM_SWITCH_CACHE_READ,
+} sim_dss_state_enum;
+
+typedef enum
+{
+    SIM_CT3G_SWITCH_SRC_NONE,
+    SIM_CT3G_SWITCH_SRC_AP,     /* Triggered by AP */
+    SIM_CT3G_SWITCH_SRC_GMSS    /* Triggered by GMSS */
+} sim_ct3g_switch_src_enum;
+
+typedef enum {
+    SIM_CARD_OPERATOR_UNKNOWN,
+    // Add below here
+    SIM_CARD_OPERATOR_CT,
+    SIM_CARD_OPERATOR_CMCC,
+    SIM_CARD_OPERATOR_CU,
+    SIM_CARD_OPERATOR_VZW,
+    SIM_CARD_OPERATOR_SPRINT,
+    SIM_CARD_OPERATOR_DT,
+    // Add above here
+    SIM_CARD_OPERATOR_MAX
+} sim_operator_type_enum;
+
+typedef enum {
+    SIM_CARD_OPERATOR_CHECK_ICCID,
+    SIM_CARD_OPERATOR_CHECK_EHPLMN,
+    SIM_CARD_OPERATOR_CHECK_IMSI,
+    SIM_CARD_OPERATOR_CHECK_MAX
+} sim_operator_check_method_enum;
+
+typedef enum
+{
+    SIM_OP_UNKOWN   = 0,//IMSI unkown
+    SIM_OP01     = 1,//MCCMNC is in CMCC list
+    SIM_OP_OTHERS = 2 //MCCMNC is not in CMCC list
+} sim_op01_enum;
+
+typedef enum
+{
+    SAT_REFRESH_START = 1,
+    SAT_REFRESH_END = 2,
+    SAT_REFRESH_FAIL = 3,
+    SAT_REFRESH_SIM_INIT_COMPLETE = 4
+} sat_refresh_notification_enum;
+
+#if defined(__VSIM__) && defined(__TC01__) && defined(__FEATURE_TC01_SIMOFF_EXTENTION__) && defined(__MDVSIM__)
+#define MAX_LEN_MCCMNC 6
+#define MAX_LEN_IIN 6
+#define MAX_LEN_GID1 16
+#define MAX_LEN_SPN 17
+#define LEN_SIMOFF_PREFIX 11
+#endif/*#if defined(__VSIM__) && defined(__TC01__) && defined(__FEATURE_TC01_SIMOFF_EXTENTION__) && defined(__MDVSIM__)*/
+
+#if defined(__TC10__) || defined(__IPC_ADAPTER__)
+
+typedef enum
+{
+    SAT_REFRESH_APP_INIT_NONE = 0x00,
+
+    SAT_REFRESH_APP_INIT_SIM = 0x01,
+    SAT_REFRESH_APP_INIT_UIM = 0x02,
+    SAT_REFRESH_APP_INIT_ISIM = 0x04,   // Not in-used currently
+
+    SAT_REFRESH_APP_INIT_SIM_UIM = SAT_REFRESH_APP_INIT_SIM | SAT_REFRESH_APP_INIT_UIM,
+} sat_refresh_init_app_enum;
+
+typedef enum
+{
+    SAT_REFRESH_IND_ACTION_INVALID = 0,
+    SAT_REFRESH_VOTING_REQ = 1,
+
+    SAT_REFRESH_IND_ACTION_MAX
+} sat_refresh_indication_enum;
+
+typedef enum
+{
+    SAT_REFRESH_NOT_POSSIBLE = 0,
+    SAT_REFRESH_POSSIBLE = 1,
+
+    SAT_REFRESH_CNF_MAX,
+
+    SAT_REFRESH_CNF_INVALID = 0xFF
+} sat_refresh_confirm_rsp_enum;
+
+#endif /* __TC10__ || __IPC_ADAPTER__ */
+
+#define BERTLV_EF_FIRST_BLOCK_IND 0x80
+#define BERTLV_EF_NEXT_BLOCK_IND 0x00
+#define BERTLV_EF_RETRANS_BLOCK_IND 0x40
+#define BERTLV_EF_BLOCK_OPERATION_IND_MASK 0xC0 //b8 and b7 of APDU P2
+#define URSP_DATA_OBJ_TAG 0x80
+
+typedef enum
+{
+    SET_DATA_SET_COMPLETE_OBJECT,
+    SET_DATA_CREATE_TAG,
+    SET_DATA_DELETE_OBJECT,
+} bertlv_ef_set_data_mode_enum;
+
+#endif
+
diff --git a/mcu/interface/protocol/general/sim_ps_struct.h b/mcu/interface/protocol/general/sim_ps_struct.h
new file mode 100644
index 0000000..09f9708
--- /dev/null
+++ b/mcu/interface/protocol/general/sim_ps_struct.h
@@ -0,0 +1,2579 @@
+/*****************************************************************************
+*  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).
+*
+*****************************************************************************/
+ /*******************************************************************************
+ *  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) 2001
+ *
+ *******************************************************************************/
+
+ /*******************************************************************************
+ * Filename:
+ * ---------
+ *   sim_ps_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Structure provided by SIM task and inside-PS task uses only
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *******************************************************************************/
+#ifndef SIM_PS_STRUCT_H
+#define SIM_PS_STRUCT_H
+
+#include "kal_public_defs.h"
+#include "sim_public_enum.h"
+#include "sim_ps_enum.h"
+#include "ps_public_struct.h"
+#include "ps_public_enum.h"
+#include "sim_ps_struct_public.h"
+#include "l3_inc_enums.h"
+#include "mcd_l3_inc_struct.h"
+
+#include "nvram_data_items.h"
+#include "vsim_nvram_def.h"
+
+/* inside PS */
+typedef struct
+{
+   /* This field gives the actual file id of EF */
+   sim_file_id_enum           file_id;
+
+   /* This field gives the id of the parent of the EF */
+   sim_file_index_enum        parent_file_idx;
+
+   /* This field gives the id of the grandparent of the EF */
+//   sim_file_index_enum        grand_parent_file_idx;
+
+   /* This field is used by USIM select by path function */
+//   kal_uint8                        full_path[6];
+}usim_ef_info_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    sim_start_mode_enum mode;
+    kal_uint8 access_id;
+    kal_uint8 pin1[8];
+} sim_start_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    sim_start_mode_enum mode;
+    uicc_app_type_enum app_type;
+    kal_uint8 access_id;
+    kal_uint8 pin1[8];
+} sim_app_start_req_struct;
+
+typedef struct {
+    kal_uint8 num_lp;
+    sim_lp_file_type_enum lp_file_type;
+    kal_uint8 lp[NUM_OF_BYTE_LP * MAX_LP_NUM];
+} sim_lp_struct;
+
+typedef struct {
+    kal_uint8 num_ecc;
+    sim_ecc_entry_struct ecc_entry[MAX_ECC_NUM_USIM];
+    kal_uint8 ecc_rec_len;
+} sim_ecc_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 result;
+    sim_chv_info_struct chv_info;
+    sim_lp_struct lp[2];
+    sim_ecc_struct ecc;
+    kal_uint8 iccid[10];
+    kal_uint8 access_id;
+    kal_bool is_valid_rat_mode;  //__ENS_RAT_BALANCING__
+    kal_uint8 rat_mode; //RAT mode setting value in EF_RAT
+    kal_bool is_sim_recovery;   // If full recovery is undergoing, notify SMU not to update ICCID in SIM_START_CNF
+    sim_additional_error_cause_enum additional_error_cause;
+} sim_start_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    uicc_app_type_enum app_type;
+    kal_uint16 result;
+    sim_chv_info_struct chv_info;
+    kal_uint8 access_id;
+    kal_uint8 channel_id;
+} sim_app_start_cnf_struct;
+
+typedef uim_sim_error_ind_struct sim_error_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    usim_cache_struct usim_cache[USIM_CACHE_MAX_FILE_NUM];
+} sim_cache_update_ind_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    sim_error_cause_enum cause;
+    uicc_app_type_enum app_type;
+    usim_logic_channel_enum channel;
+} sim_app_error_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool result; /*[MAUI_02450359] mtk01612: use result as is_imsi_valid*/
+    kal_uint8 ef_imsi[9];
+    kal_bool is_valid_gid1;
+    kal_uint8 gid1[NUM_GID1]; /*[MAUI_03097146] mtk01612: use NUM_GID1, NUM_GID2 instead of hard code */
+    kal_bool is_valid_gid2;
+    kal_uint8 gid2[NUM_GID2];
+
+#ifdef __TC01__ /* for +ESIMCEP */
+    kal_uint8 number_of_gid1;
+    kal_uint8 number_of_gid2;
+#endif
+
+/* moved from mmi_ready_ind */
+    kal_uint16 num_plmnsel_data; /* zero means invalid! */
+    kal_uint8 *plmnsel_data;     /* Stored in SMU, and SMU will free it when it's updated */
+    kal_uint16 num_uplmnwact_data; /* zero means invalid! */
+    kal_uint8 *uplmnwact_data;     /* Stored in SMU, and SMU will free it when it's updated */
+    kal_uint16 num_oplmnwact_data; /* zero means invalid! */
+    kal_uint8 *oplmnwact_data;     /* Stored in SMU, and SMU will free it when it's updated */
+    kal_bool is_valid_dck;
+    kal_uint8 dck[16];
+/* [MAUI_02129840] mtk80420: Medium Item 5, Remove the ef_acc, sopname, opname from mmi_security_ind */
+
+/*[[MAUI_02439033]] mtk01612: To sync plmn file handling. Send hplmn to SMU, even if SMU don't need it*/
+    kal_uint16 num_hplmnwact_data;        /* zero means invalid! */
+    kal_uint8 *hplmnwact_data;            /* Stored in SMU, and SMU will free it when it's updated */
+
+    kal_uint16 num_cnl_data;
+    kal_uint8 cnl[NUM_CNL];
+
+    kal_bool is_spn_valid;
+    kal_uint8 spn[LEN_OF_SPN];
+
+    kal_uint16 num_ehplmn_data; /* zero means invalid! */
+    kal_uint8  ehplmn_data[MAX_EHPLMN_EF_LEN];
+} sim_mmi_security_ind_struct;
+
+
+typedef struct {
+   kal_uint8 alpha_id_size;
+   kal_uint8 alpha_id[MAX_SIM_NAME_LEN];
+   kal_uint8 bcd_len;
+   kal_uint8 bcd_digit[41];
+} sim_addr_struct;
+
+typedef struct {
+   kal_uint8 alpha_id_size;
+   kal_uint8 alpha_id[21];
+   kal_uint8 ton_npi;
+   kal_uint8 digit_size;
+   kal_uint8 digit[4];//[41];
+   kal_uint8 index_level;
+   kal_bool network_specific;
+   kal_bool premium_rate;
+} sim_info_num_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 result;
+    sim_dn_enum dn_type;
+    sim_phase_enum phase;
+    kal_bool is_valid_puct;
+    kal_uint8 ef_puct[5];
+    kal_bool is_spn_valid;
+    kal_uint8 spn[LEN_OF_SPN];
+    kal_bool is_opname_valid;
+    kal_uint8 opname[LEN_OF_OPNAME];
+    kal_bool is_sopname_valid;
+    kal_uint8 sopname[10];
+    kal_uint8 no_msisdn;           // MSISDN
+    sim_addr_struct msisdn[2];
+    kal_uint8 no_info_num;         // Information Numbers
+    sim_info_num_struct *info_num; /* Free by SMU */
+    kal_bool is_valid_csp;
+    kal_uint8 csp[22];             // Custom Service Profile
+    /* Acting HPLMN */ /* mtk01488 */
+    kal_bool is_valid_ef_acting_hplmn;
+    kal_uint8 ef_acting_hplmn[3];
+    kal_bool is_usim;
+    kal_bool is_valid_ef_ehplmn;   // 23.122 R7 feature
+    kal_uint8 num_of_ehplmn;
+    kal_uint8 ef_ehplmn[MAX_EHPLMN_EF_LEN];
+    
+    kal_bool is_registration_mode;
+} sim_mmi_ready_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 ef_imsi[9];
+    kal_bool is_valid_ef_kc;
+    kal_uint8 ef_kc[9];
+    kal_uint8 ef_acc[2];
+    kal_bool is_valid_ef_loci;
+    kal_uint8 ef_loci[11];
+    kal_bool is_valid_ef_gkc;
+    kal_uint8 ef_gkc[9];
+    kal_bool is_valid_ef_gloci;
+    kal_uint8 ef_gloci[14];
+    /* Below is adding for 3G */
+    kal_uint8 ef_keys[33];      /* Always valid in USIM */
+    kal_uint8 ef_keysps[33];  /* Always valid in USIM */
+    kal_bool is_usim;
+    kal_bool is_service_27_support;
+    kal_bool is_service_38_support;
+    /* MTC nas configure */
+    kal_uint16 no_nasconfig_data;  /** Zero means invalid. */
+    kal_uint8 *nasconfig_data;  /** Defined in 31.102, ef_nasconfig. MM remember to free this ctrl buffer when finish using */
+    kal_bool is_rmode_changed;
+} sim_mm_ready_ind_struct;
+/* GAS: MOD_SIM -> MOD_RRM */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_valid_ms_op_mode; /* !!!Remove for MONZA!!! */
+    kal_uint8 ms_op_mode; /* !!!Remove for MONZA!!! */
+    kal_uint8 ef_imsi[9];
+    kal_bool is_valid_ef_bcch; /* !!!Remove for MONZA!!! */
+    kal_uint8 ef_bcch[16];  /* ONLY for SIM card */
+    kal_uint8 ef_acc[2];
+    kal_bool is_valid_ef_loci; /* !!!Remove for MONZA!!! */
+    kal_uint8 ef_loci[11];
+    /* Acting HPLMN */ /* mtk01488 */
+    kal_bool is_valid_ef_acting_hplmn;
+    kal_uint8 ef_acting_hplmn[3];
+    /* For MONZA only */
+    kal_bool is_usim;
+    kal_bool is_test_sim;
+    kal_bool is_valid_ef_netpar;   /*mtk01612: [MAUI_02575860]*/
+    kal_uint16 size_ef_netpar; /*mtk01612: [MAUI_02575860]*/
+    kal_uint8 ef_netpar[MAX_SUPPORT_NETPAR_DATA_SIZE];    /*mtk01612: [MAUI_02575860]*/
+} sim_rr_ready_ind_struct;
+
+/** MOD_SIM -> MOD_PAM */
+typedef struct {
+    LOCAL_PARA_HDR
+
+    /** True: SIM is replaced during power-OFF or by Hot-Plug.
+     *  - Note: Hot-Plug MSG sequence: SIM_ERROR_IND(plug-out) -> SIM_ERROR_IND(plug-in) -> SIM_PAM_READY_IND.
+     */
+    kal_bool is_sim_replaced ;
+
+    kal_uint8 ef_acc[2] ;           /** Defined in both 51.011 and 31.102. */
+    /* MTC nas configure */
+    kal_uint16 no_nasconfig_data ;  /** Zero means invalid. */
+    kal_uint8 *nasconfig_data ;     /** Defined in 31.102, ef_nasconfig. PAM remember to free this ctrl buffer when finish using */
+} sim_pam_ready_ind_struct ;
+
+typedef struct {
+    kal_bool is_valid_ef_acsgl;
+    kal_uint8 acsgl_data_rec_num; /* number of valid record in acsgl_data buffer */
+    kal_uint8 ef_acsgl_rec_size;
+    kal_uint8 *acsgl_data; /* Ctrl buffer with size MAX_SUPPORT_CSGL_DATA_SIZE. */
+    kal_bool is_valid_ef_ocsgl;
+    kal_uint8 ocsgl_data_rec_num; /* number of valid record in ocsgl_data buffer */
+    kal_uint8 ef_ocsgl_rec_size;
+    kal_uint8 *ocsgl_data; /* Ctrl buffer with size MAX_SUPPORT_CSGL_DATA_SIZE. */
+} sim_csg_white_list_struct;
+
+/* UAS: MOD_SIM -> MOD_USIME */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool  is_usim;
+    kal_bool is_test_sim;
+    kal_bool is_gsm_access_allowed;
+    kal_uint8 ef_acc[2];
+    kal_uint8 ef_imsi[9];
+    kal_bool is_valid_ef_start_hfn;
+    kal_uint8 ef_start_hfn[6];
+    kal_bool is_valid_ef_threshold;
+    kal_uint8 ef_threshold[3];
+    kal_uint8 ef_loci[11];
+    kal_bool is_valid_ef_psloci; /* If USIM inserted, this is EF-PSLOCI; if SIM inserted, this is EF_LOCIGPRS */
+    kal_uint8 ef_psloci[14]; /* If USIM inserted, this is EF-PSLOCI; if SIM inserted, this is EF_LOCIGPRS */
+    kal_bool is_valid_ef_netpar;   /*mtk01612: [MAUI_02575860]*/
+    kal_uint16 size_ef_netpar;
+    kal_uint8 ef_netpar[MAX_SUPPORT_NETPAR_DATA_SIZE];
+    sim_csg_white_list_struct csg_white_list;
+} usim_urr_ready_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 size_ef_netpar;
+    kal_uint8 ef_netpar[MAX_SUPPORT_NETPAR_DATA_SIZE];
+} usim_update_netpar_req_struct; /*mtk01612: [MAUI_02575860]*/
+
+typedef struct {
+    LOCAL_PARA_HDR
+    sim_cmd_result_enum result;
+    kal_uint16 status_word;
+} usim_update_netpar_cnf_struct; /*mtk01612: [MAUI_02575860]*/
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool    cipher_ind;      // 20050202 Benson add for display cipher indication
+    kal_bool is_uicc_activated;  // VZ_REQ_HVOLTE_41443, indicate the VZW UICC is activated or not
+} sim_mmrr_ready_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 ef_imsi[9];
+    kal_uint8 ef_acc[2];
+    kal_bool is_valid_ef_epsloci;
+    kal_uint8 ef_epsloci[LEN_OF_EPSLOCI];
+    kal_bool is_usim;
+    kal_bool is_gsm_access_allowed;
+    kal_uint8 ef_epsnsc_record_len; //record_len=0 indicating the epsnsc data is invalid
+    kal_uint8 *ef_epsnsc_data;      // Free in EMM
+    sim_csg_white_list_struct csg_white_list;
+    /* MTC nas configure */
+    kal_uint16 no_nasconfig_data;   /** Zero means invalid. */
+    kal_uint8 *nasconfig_data;      /** Defined in 31.102, ef_nasconfig. EMM remember to free this ctrl buffer when finish using */
+    /* operator PLMN */
+    kal_uint16 no_oplmn_data;
+    kal_uint8 *oplmn_data;
+    kal_bool is_rmode_changed;
+}sim_emm_ready_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    /* Common part of GMSS/NWSEL */
+    kal_uint8 ef_imsi[9];
+    kal_bool is_usim;
+
+    /* NWSEL only */
+    kal_bool is_valid_ef_loci;
+    kal_uint8 ef_loci[11];
+    kal_bool is_valid_ef_gloci;
+    kal_uint8 ef_gloci[14];
+    kal_bool is_valid_ef_epsloci;
+    kal_uint8 ef_epsloci[LEN_OF_EPSLOCI];
+    kal_bool is_valid_ef_5gs3gpploci;
+    kal_uint8 ef_5gs3gpploci[LEN_OF_5GS3GPPLOCI];
+    kal_bool is_valid_ef_5gsn3gpploci;
+    kal_uint8 ef_5gsn3gpploci[LEN_OF_5GSN3GPPLOCI];
+    kal_uint8 ef_hplmn_time;
+    /* Forbidden PLMN */
+    kal_bool is_valid_ef_fplmn;
+    kal_uint16 num_of_fplmn;
+    kal_uint8 *ef_fplmn;        /* NWSEL remember to free it after finished using when ef_fplmn it is not NULL */
+    /* PLMN selector*/
+    kal_uint16 no_plmnsel_data;
+    kal_uint8 *plmnsel_data;    /* SMU remember to free it after finished using when plmnsel_data it is not NULL */
+    /* user PLMN */
+    kal_uint16 no_uplmn_data;
+    kal_uint8 *uplmn_data;      /* SMU remember to free it after finished using when uplmn_data it is not NULL */
+    /* operator PLMN */
+    kal_uint16 no_oplmn_data;
+    kal_uint8 *oplmn_data;      /* SMU remember to free it after finished using when oplmn_data it is not NULL */
+    /* HPLMN */
+    kal_uint16 no_hplmn_data;
+    kal_uint8 *hplmn_data;      /* SMU remember to free it after finished using when hplmn_data it is not NULL */
+    /* Acting HPLMN */
+    kal_bool is_valid_ef_acting_hplmn;
+    kal_uint8 ef_acting_hplmn[3];
+    /* Equivalent Home PLMN */
+    kal_bool is_valid_ef_ehplmn;
+    kal_uint8 num_of_ehplmn;
+    kal_uint8 ef_ehplmn[MAX_EHPLMN_EF_LEN];
+    /* EHPLMN Presentation Indication*/
+    kal_bool is_valid_ef_ehplmnpi;
+    kal_uint8 ef_ehplmnpi;
+    /* Last RPLMN Selection Indication*/
+    kal_bool is_valid_ef_lrplmnsi;
+    kal_uint8 ef_lrplmnsi;
+    kal_uint8 mnc_length;
+    kal_bool is_valid_cdma_imsi_m;
+    kal_uint8 cdma_imsi_m[10];
+    /* MTC nas configure */
+    kal_uint16 no_nasconfig_data;   /** Zero means invalid. */
+    kal_uint8 *nasconfig_data;      /** Defined in 31.102, ef_nasconfig. NWSEL remember to free this ctrl buffer when finish using */
+    /* Control plane-based steering of UE in VPLMN */
+    kal_bool is_enabled_ctrl_plane_steering_in_vplmn;
+    /* Other */
+    kal_bool is_rmode_changed;
+    kal_uint8 trans_id;
+
+    /* GMSS only */
+    kal_uint16 no_mlpl_data;
+    kal_uint8 *mlpl_data;          /* GMSS remember to free it after finished using when mlpl_data is not NULL */
+    kal_uint16 no_mspl_data;
+    kal_uint8 *mspl_data;          /* GMSS remember to free it after finished using when mspl_data is not NULL */
+    kal_uint16 no_mmssmode_data;
+    kal_uint8 *mmssmode_data;      /* GMSS remember to free it after finished using when mmssmode_data is not NULL */
+    kal_bool is_dual_mode_sim;
+    kal_bool is_uicc_activated;    /* VZ_REQ_HVOLTE_41443, indicate the VZW UICC is activated or not */
+    // TMO requirement:
+    // If the SA public key is not loaded onto the SIM to perform SUCI calculation then
+    // the device should only be allowed to connect to the LTE/NSA network.
+    // TRUE: 1. SUCI is calculated by UICC
+    //       2. SUCI is calculated by ME, the protect scheme is not NULL SCHEME and there is public key
+    // FALSE: The others
+    kal_bool is_suci_protected;
+}sim_gmss_ready_ind_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 ef_imsi[9];
+    kal_uint8 ef_acc[2];
+    kal_bool is_usim;
+    /* MTC nas configure */
+    kal_uint16 no_nasconfig_data;   /** Zero means invalid. */
+    kal_uint8 *nasconfig_data;      /** Defined in 31.102, ef_nasconfig. VGMM remember to free this ctrl buffer when finish using */
+    kal_bool is_rmode_changed;
+    /* 5G new data */
+    kal_bool is_valid_ef_5gs3gpploci;
+    kal_uint8 ef_5gs3gpploci[LEN_OF_5GS3GPPLOCI];
+    kal_bool is_valid_ef_5gsn3gpploci;
+    kal_uint8 ef_5gsn3gpploci[LEN_OF_5GSN3GPPLOCI];
+    kal_bool is_valid_ef_uac_aic;
+    kal_uint8 ef_uac_aic[LEN_OF_UAC_AIC];
+    kal_bool is_valid_ef_5gauthkeys;
+    kal_uint8 ef_5gauthkeys[LEN_OF_5GAUTHKEYS];
+}sim_vgmm_ready_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8  trans_id;
+    sim_get_identity_type_enum get_id_type;
+    kal_uint16 param;
+    kal_uint16 add_input_len;
+    kal_uint8  add_input[256];
+} sim_get_identity_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    sim_cmd_result_enum result;
+    kal_uint8  trans_id;
+    kal_uint16 rsp_len;
+    kal_uint8  rsp[256];
+} sim_get_identity_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 file_idx;
+    kal_uint16 para;
+    kal_uint16 length;
+    kal_uint8 access_id;
+    kal_uint8 path[6];
+    kal_uint8 src_id;
+    kal_uint8 channel_id;
+    kal_uint8 sfi;
+} sim_read_req_struct, sim_app_read_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 file_idx;
+    kal_uint16 para;
+    kal_uint16 length;
+    kal_uint8 data[258]; // 256 + 2 for driver usage in T=1
+    kal_uint16 result;
+    kal_uint16 status_word;
+    kal_uint8 access_id;
+    kal_uint8 src_id;
+} sim_read_cnf_struct, sim_app_read_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 file_idx;
+    kal_uint16 para;
+    kal_uint16 length;
+    kal_uint8 data[260]; // 255 + 5 for command header space
+    kal_uint8 access_id;
+    kal_uint8 channel_id;
+    kal_uint8 path[6];
+    kal_uint8 src_id;
+    kal_uint8 sfi;
+} sim_write_req_struct, sim_app_write_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 file_idx;
+    kal_uint16 para;
+    kal_uint16 length;
+    kal_uint16 result;
+    kal_uint16 status_word;
+    kal_uint8 access_id;
+    kal_uint8 src_id;
+} sim_write_cnf_struct, sim_app_write_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 file_idx;
+    kal_uint8 data[127];
+    kal_uint8 data_len;
+    kal_uint8 access_id;
+    kal_uint8 path[6];
+} sim_increase_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 file_idx;
+    kal_uint8 data[258]; // 256 +2 for driver usage in T=1
+    kal_uint16 result;
+    kal_uint16 status_word;
+    kal_uint16 length;
+    kal_uint8 access_id;
+} sim_increase_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    sim_security_operation_enum op;
+    sim_chv_type_enum which_chv;
+    kal_uint8 old_value[8];
+    kal_uint8 new_value[8];
+    kal_uint8 access_id;
+    kal_uint8 channel_id;
+} sim_security_req_struct, sim_app_security_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    sim_cmd_result_enum result;
+    kal_uint16 status_word;
+    sim_security_operation_enum op;
+    sim_chv_type_enum which_chv;
+    kal_uint8 access_id;
+    sim_chv_info_struct chv_info;
+    kal_uint8 channel_id;
+} sim_security_cnf_struct, sim_app_security_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    uicc_app_type_enum    app_type;
+    kal_uint8             channel_id;
+    kal_uint8             mcc[4];
+    kal_uint8             mnc[4];
+    kal_uint8 trans_id;     /* Used by DSBP_RECONFIG's users. Use 1~255 in order for each SIM task. */
+#ifdef __SIM_MULTI_PIN__
+    kal_uint8 pin_status_data[SIM_MAX_PIN_DO_SIZE];
+#endif
+} sim_app_ready_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    sim_event_enum event;
+    kal_uint8 argc;
+    kal_uint8 arg_list[MAX_SIM_EVENT_ARG_LIST_SIZE];
+} sim_event_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 access_id;
+    kal_uint8 src_id;
+    kal_uint16 file_idx;
+    kal_uint8 path[6];
+    kal_uint8 info_type;
+    kal_uint8 channel_id;
+    kal_uint16 length; /*[MAUI_01702417] mtk01612: WinMo_GEMINI : +crsm*/
+} sim_file_info_req_struct, sim_app_file_info_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 access_id;
+    kal_uint8 src_id;
+    kal_uint8 file_type;
+    kal_uint16 file_idx;
+    kal_uint8 info_type;
+    kal_uint16 length;
+    kal_uint16 result;
+    kal_uint16 status_word;
+    kal_uint16 file_size;
+    kal_uint8 num_of_rec;
+    kal_uint8 res_data[256];
+    kal_uint8 sfi;
+} sim_file_info_cnf_struct, sim_app_file_info_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 trans_id;    //piggy-back
+    kal_uint16 file_idx;   //refer to sim_file_index_enum
+    kal_uint8 path[6];     //full file path if no file index
+    kal_uint8 channel_id;
+    kal_uint8 sfi;         //short file ID, refer to 3GPP 31.102
+    kal_uint16 tag_length; //1 <= T <= 3
+    kal_uint8 tag[3];
+} sim_bertlv_retrieve_data_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 trans_id;    //piggy-back
+    kal_uint16 result;     //refer to sim_cmd_result_enum
+    kal_uint16 file_idx;   //piggy-back if file_idx is set in request
+    kal_uint16 status_word;
+    kal_uint16 length;     //the length of the data in TLV object, i.e. Tag and Length field are excluded
+} sim_bertlv_retrieve_data_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 trans_id;    //piggy-back
+    kal_uint16 file_idx;   //refer to sim_file_index_enum
+    kal_uint8 path[6];     //full file path if no file index
+    kal_uint8 channel_id;
+    kal_uint8 sfi;
+    kal_uint8 mode;        //set data, create tag, delete object refer to bertlv_ef_set_data_mode_enum
+    kal_uint16 tag_length; //1 <= T <= 3
+    kal_uint8 tag[3];
+    kal_uint16 length;     //length all object data except tag and length field.
+} sim_bertlv_set_data_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 trans_id;  //piggy-back
+    kal_uint16 result;   //refer to sim_cmd_result_enum
+    kal_uint16 file_idx; //piggy-back if file_idx is set in request
+    kal_uint8 mode;      //piggy-back
+    kal_uint16 status_word;
+} sim_bertlv_set_data_cnf_struct;
+
+/******************* MMDC START *******************/
+typedef struct {
+    sim_file_id_enum file_id;
+    kal_uint16 para;
+    kal_uint16 length;
+    kal_uint8 path[6];
+} sim_access_extmd_read_ind_struct;
+
+typedef struct {
+    sim_file_id_enum file_id;
+    kal_uint16 para;
+    kal_uint16 length;
+    kal_uint8 path[6];
+    kal_uint8 data[260];
+} sim_access_extmd_update_ind_struct;
+
+typedef struct {
+    sim_file_id_enum file_id;
+    kal_uint8 path[6];
+} sim_access_extmd_file_info_ind_struct;
+
+typedef struct {
+    kal_uint8 rand[16];
+    kal_bool is_auth_present;
+    kal_uint8 auth[16];
+} sim_access_extmd_auth_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    sim_access_extmd_op_enum op;
+    union
+    {
+        sim_access_extmd_read_ind_struct read_ind;
+        sim_access_extmd_update_ind_struct update_ind;
+        sim_access_extmd_file_info_ind_struct file_info_ind;
+        sim_access_extmd_auth_ind_struct auth_ind;
+    }req_field;
+} sim_access_extmd_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool result;
+    kal_uint16 status_word;
+    kal_uint16 length;
+    kal_uint8 res_data[256];
+} sim_access_extmd_res_struct;
+
+typedef struct {
+    kal_bool insert;
+    sim_error_cause_enum cause;
+}sim_extmd_notify_card_status;
+
+typedef struct {
+    kal_uint8 card_type;
+}sim_extmd_notify_card_type;
+
+typedef struct {
+    sat_refresh_type_enum refresh_type;
+    kal_uint8 num_of_file;
+    kal_uint16 file_list[120];
+    kal_uint8 size_of_plmn;
+    kal_uint8 *plmn_list;
+}sim_extmd_notify_file_change;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    sim_extmd_notify_enum type;
+    union
+    {
+        sim_extmd_notify_card_status card_status;
+        sim_extmd_notify_card_type card_type;
+        sim_extmd_notify_file_change file_change;
+    }notify;
+} sim_extmd_notify_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_bool result;
+} sim_extmd_notify_cnf_struct;
+
+/******************* MMDC END *******************/
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 file_idx;
+    kal_uint8 pattern[16];
+    kal_uint8 length;
+    kal_uint8 mode;
+} sim_seek_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 file_idx;
+    kal_uint8 length;
+    kal_uint16 result;
+    kal_uint8 data[258]; //  256 + 2 for driver usage in T=1
+} sim_seek_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 access_id;
+    sim_dn_enum dn_type;
+    kal_bool switch_on;
+} sim_dial_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 access_id;
+    sim_cmd_result_enum result;
+    sim_dn_enum dn_type;
+    kal_bool switch_on;
+} sim_dial_mode_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 access_id;
+    kal_uint8 channel_id;
+    kal_uint16 length; /*mtk01612: [MAUI_01899190] usim_on_duma*/
+} sim_status_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 access_id;
+    sim_cmd_result_enum result;
+    kal_uint16 status_word;
+    kal_uint8 data[258]; // 256 + 2 for driver usage in T=1
+    kal_uint16 length;
+} sim_status_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 switch_mode;
+} sim_error_test_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 file_idx;
+    kal_uint8 access_id;
+    kal_uint8 state;        /* 1: read after update */
+    kal_uint8 src_id;
+} sim_read_plmn_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 file_idx;
+    kal_uint16 result;
+    kal_uint16 status_word;
+    kal_uint16 file_size;
+    kal_uint8 file[MAX_SUPPORT_PLMN_DATA_SIZE]; /* depends on the maximum supported file size of plmn type files */
+    kal_uint8 access_id;
+    kal_uint8 state;        /* 1: read after update */
+    kal_uint8 src_id;
+} sim_read_plmn_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 file_idx;
+    kal_uint16 file_size;
+    kal_uint8 file[MAX_SUPPORT_PLMN_DATA_SIZE];  /* depends on the maximum supported file size of plmn type files */
+    kal_uint8 access_id;
+    kal_uint8 src_id;
+} sim_write_plmn_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 file_idx;
+    kal_uint16 result;
+    kal_uint16 status_word;
+    kal_uint8 access_id;
+    kal_uint8 src_id;
+} sim_write_plmn_cnf_struct;
+
+
+/* [MAUI_03058282] mtk80420: move sim_authenticate_req/cnf to public struct */
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8    next_type;
+    sim_chv_info_struct    chv_info;
+} sim_l4c_verify_pin_result_ind_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_bool is_sim_inserted;
+} sim_status_update_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 access_id;
+    kal_bool switch_on;
+} sim_acl_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 access_id;
+    sim_cmd_result_enum result;
+    kal_bool switch_on;
+} sim_acl_mode_cnf_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 src_id;
+} l4c_sim_get_gsmcdma_dualsim_info_req_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 src_id;
+   kal_bool is_sim_inserted;
+   kal_bool is_df_gsm_existed;
+   kal_bool is_df_cdma_existed;
+} l4c_sim_get_gsmcdma_dualsim_info_cnf_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 src_id;
+   gsmcdma_dualsim_mode_enum op;
+} l4c_sim_set_gsmcdma_dualsim_mode_req_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 src_id;
+   gsmcdma_dualsim_mode_enum op;
+   gsmcdma_dualsim_result_enum result;
+} l4c_sim_set_gsmcdma_dualsim_mode_cnf_struct;
+
+/* MSG_ID_L4C_SIM_SET_VSIM_MODE_REQ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_bool  switch_on;
+    kal_uint8 profile_id;           /* 0-based index */
+    kal_uint8 app_type;
+} l4c_sim_set_vsim_mode_req_struct;
+
+/* MSG_ID_L4C_SIM_SET_VSIM_MODE_CNF */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    sim_cmd_result_enum result;
+    sim_vsim_fcs_enum cause;        /* failure cause */
+    kal_bool  switch_on;
+    kal_uint8 profile_id;           /* 0-based index */
+    uicc_card_type_enum vsim_type;  /* SIM/USIM */
+} l4c_sim_set_vsim_mode_cnf_struct;
+
+/* MSG_ID_L4C_SIM_GET_VSIM_RSA_PUBKEY_REQ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+} l4c_sim_get_vsim_rsa_pubkey_req_struct;
+
+/* MSG_ID_L4C_SIM_GET_VSIM_RSA_PUBKEY_CNF */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_bool result;
+
+    kal_uint16  pubkey_len;
+    kal_uint8   pubkey[536];        /* MTK format: */
+                                    // pubk[0:7] : "PUBK_HDR" for recognition
+                                    // pubk[8:11] : length of modulus
+                                    // pubk[12:15] : length of public exponent
+                                    // pubk[16:271] : modulus
+                                    // pubk[272:527] : public exponent
+                                    // pubk[528:535] : "PUBK_TAL" for recognition
+
+} l4c_sim_get_vsim_rsa_pubkey_cnf_struct;
+
+/* MSG_ID_L4C_SIM_VSIM_KI_MODE_REQ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_bool enabled;
+
+    kal_uint8 profile_id;
+} l4c_sim_vsim_ki_mode_req_struct;
+
+/* MSG_ID_L4C_SIM_VSIM_KI_MODE_CNF */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_bool result;
+} l4c_sim_vsim_ki_mode_cnf_struct;
+
+
+/* MSG_ID_L4C_SIM_SET_VSIM_KI_REQ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+
+    kal_uint8   profile_id;
+    kal_uint16  key_len;
+    kal_uint8   key[256];
+    kal_bool    encrypted;
+} l4c_sim_set_vsim_ki_req_struct;
+
+/* MSG_ID_L4C_SIM_SET_VSIM_KI_CNF */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_bool result;
+} l4c_sim_set_vsim_ki_cnf_struct;
+
+/* MSG_ID_L4C_SIM_SET_VSIM_FILE_REQ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+
+    kal_uint8   profile_id;
+    kal_uint16  file_id;
+    kal_uint16  meta_len;
+    kal_uint16  data_len;
+    kal_uint8   meta[256];
+    kal_uint8   data[256];
+} l4c_sim_set_vsim_file_req_struct;
+
+/* MSG_ID_L4C_SIM_SET_VSIM_FILE_CNF */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_bool  result;
+    sim_vsim_fcs_enum cause;        /* failure cause */
+
+    kal_uint8   profile_id;
+    kal_uint16  file_id;
+    kal_uint16  meta_len;
+    kal_uint16  data_len;
+} l4c_sim_set_vsim_file_cnf_struct;
+
+/* MSG_ID_L4C_SIM_SET_VSIM_PROFILE_REQ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+
+    kal_uint8           profile_id;
+    uicc_card_type_enum vsim_type;  /* SIM/USIM */
+    kal_uint16          auth_len;
+    kal_uint8           auth[256];
+    kal_uint8           auth_algo_idx;
+} l4c_sim_set_vsim_profile_req_struct;
+
+/* MSG_ID_L4C_SIM_SET_VSIM_PROFILE_CNF */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_bool  result;
+    sim_vsim_fcs_enum cause;        /* failure cause */
+
+} l4c_sim_set_vsim_profile_cnf_struct;
+
+
+/*mtk01612: [MAUI_02014578] wise detect O2 prepay SIM*/
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_bool is_o2_prepaid_sim;
+} sim_o2_prepaid_sim_ind_struct;
+
+#if defined(__VSIM__) && defined(__TC01__) && defined(__FEATURE_TC01_SIMOFF_EXTENTION__) && defined(__MDVSIM__)
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_bool  switch_on;
+    kal_uint8 profile_id;           /* 0-based index */
+    kal_uint8 mode;
+    kal_uint8 len_mccmnc;
+    kal_uint8 mccmnc[MAX_LEN_MCCMNC];
+    kal_uint8 len_iin;
+    kal_uint8 iin[MAX_LEN_IIN];
+    kal_uint8 len_gid1;
+    kal_uint8 gid1[MAX_LEN_GID1];
+    kal_uint8 len_spn;
+    kal_uint8 spn[MAX_LEN_SPN];
+}l4c_sim_set_vsim_update_req_struct;
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    sim_cmd_result_enum result;
+    sim_vsim_fcs_enum cause;        /* failure cause */
+    kal_uint8 profile_id;
+    kal_bool  switch_on;
+    kal_uint8 mode;           /* 0-based index */
+    kal_uint16 file_id;
+    uicc_card_type_enum vsim_type;  /* SIM/USIM */
+} l4c_sim_set_vsim_update_cnf_struct;
+#endif/*#if defined(__VSIM__) && defined(__TC01__) && defined(__FEATURE_TC01_SIMOFF_EXTENTION__) && defined(__MDVSIM__)*/
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+/* MAUI_03082391 */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 channel_id;
+    kal_uint16 req_len;
+#ifndef __SIM_ACCESS_INTEGRATION__
+    kal_uint8 req[APDU_REQ_MAX_LEN];
+#endif
+    kal_uint8  cmd_type;    //0: CGLA, 1: CSIM, 2: ECGLA
+} sim_apdu_access_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint16 result;
+    kal_uint16 rsp_len;
+#ifndef __SIM_ACCESS_INTEGRATION__
+    kal_uint8 rsp[APDU_RSP_MAX_LEN];
+#endif
+    kal_uint8  cmd_type;    //0: CGLA, 1: CSIM, 2: ECGLA
+} sim_apdu_access_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_bool is_last;
+    kal_uint16 status_word;
+    // Move buffer_block[] to peer_buf
+} sim_apdu_res_block_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    sim_manage_channel_mode_enum op;
+    kal_uint8 req_len;
+    kal_uint8 req[SIM_AID_MAX_LEN];
+} sim_manage_channel_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 channel_id;
+    kal_uint16 result;
+    sim_manage_channel_mode_enum op;
+} sim_manage_channel_cnf_struct;
+
+
+/*mtk01612: [MAUI_03020152] sync polling timer*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_sync_timer;
+    kal_uint32 sync_time_period;
+} sim_sync_poll_timer_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool switch_on;
+}sim_recovery_enhancement_switch_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool support_additional_interface;
+    kal_uint8 additional_interface;
+}sim_terminal_capability_setting_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool     is_imsi_valid;     //KAL_TRUE for IMSI read successfully, KAL_FALSE for read IMSI fail
+    kal_uint8    imsi[9];
+    kal_uint8    mnc_length;    // 0 for unkonwn.
+    kal_bool     is_iccid_valid;
+    kal_uint8    iccid[10];
+} sim_read_imsi_iccid_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 option;
+} sim_read_dir_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 option;
+    sim_cmd_result_enum result;
+    kal_uint8 active_app;
+    kal_uint8 aid[SIM_MAX_AID_LEN];
+    kal_uint16 length;    //(record size * record number)
+    kal_uint8 dir_content[1];
+} sim_read_dir_cnf_struct;
+
+/*mtk0188: SATe*/
+//#define MAX_SUPPORT_SATE_CHANNEL  3
+
+/* PH 03042005 Remote SAT */
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 cmd_id;
+    kal_uint16 proactive_cmd_len;
+    kal_uint8 proactive_cmd[260];
+} sat_proactive_cmd_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+#if defined(__TC10__) && defined(__IPC_ADAPTER__)
+    kal_uint8 src_id;
+#endif
+    kal_uint16 cmd_id;
+    kal_uint8 length;
+    kal_uint8 terminal_rsp[261];
+} sat_terminal_rsp_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd;
+} sat_moretime_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd;
+} sat_poll_interval_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 length;
+    kal_uint8 envelope[261];
+    kal_bool is_standard;       /* KAL_FALSE: AT+STKENV, otherwise KAL_TRUE: AT+CUSATE */
+} sat_envelope_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    sim_cmd_result_enum result; /* sim_cmd_result_enum */
+    kal_uint16 length;
+    kal_uint8 envelope_rsp[256];
+    kal_uint16 status_word;
+    kal_bool is_standard;       /* KAL_FALSE: AT+STKENV, otherwise KAL_TRUE: AT+CUSATE */
+} sat_envelope_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd;
+} sat_refresh_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd;
+} sat_polling_off_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd;
+} sat_provide_local_info_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 event_list[5];    // extend for IMS event download
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd;
+} sat_setup_event_list_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd;
+} sat_timer_management_ind_struct;
+
+/* ----End Remote SAT---- */
+
+typedef struct {
+    kal_uint8 qos_length; /* QOS identifer bit*/
+    kal_uint8 unused1; /* Unused Bit*/
+    kal_uint8 delay_class;
+    kal_uint8 reliability_class;
+    kal_uint8 peak_throughput;
+    kal_uint8 unused2; /* Unused Bit*/
+    kal_uint8 precedence_class;
+    kal_uint8 unused3; /* Unused Bit*/
+    kal_uint8 mean_throughput;
+    kal_uint8 traffic_class;
+    kal_uint8 delivery_order;
+    kal_uint8 delivery_of_err_sdu;
+    kal_uint8 max_sdu_size;
+    kal_uint8 max_bitrate_up_lnk;
+    kal_uint8 max_bitrate_down_lnk;
+    kal_uint8 residual_bit_err_rate;
+    kal_uint8 sdu_err_ratio;
+    kal_uint8 transfer_delay;
+    kal_uint8 traffic_hndl_priority;
+    kal_uint8 guarntd_bit_rate_up_lnk;
+    kal_uint8 guarntd_bit_rate_down_lnk;
+} sat_gprs_qos_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+} sat_more_time_res_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 priority;
+    kal_uint8 clear_text_type;
+    kal_uint8 immediate_res;
+    kal_uint8 is_icon_available;
+    sat_icon_struct icon_info;
+
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* PH 03042005 For Remote SAT */
+} sat_dspl_text_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+    kal_uint8 additional_info;
+} sat_dspl_text_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 is_help_info_available;
+    kal_uint8 type_of_input;
+    kal_uint8 is_icon_available;
+    sat_icon_struct icon_info;
+
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* PH 03042005 For Remote SAT */
+} sat_get_inkey_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+    kal_uint8 is_yes_selected;
+} sat_get_inkey_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 is_help_info_available;
+    kal_uint8 type_of_input;
+    kal_uint8 is_input_revealed_to_user;
+    kal_uint8 is_icon_available;
+    sat_icon_struct icon_info;
+    kal_uint8 len_of_min_input;
+    kal_uint8 len_of_max_input;
+
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* PH 03042005 For Remote SAT */
+} sat_get_input_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+} sat_get_input_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 is_help_info_available;
+    kal_uint8 is_softkey_preferred;
+    kal_uint8 is_icon_available;
+    sat_icon_struct icon_info;
+    kal_uint8 num_of_item;
+
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* PH 03042005 For Remote SAT */
+} sat_setup_menu_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+} sat_setup_menu_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 is_help_info_available;
+    kal_uint8 is_softkey_preferred;
+    kal_uint8 type_of_presentation;
+    kal_uint8 is_icon_available;
+    sat_icon_struct icon_info;
+    kal_uint8 is_item_id_available;
+    kal_uint8 item_id;
+    kal_uint8 num_of_item;
+
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* PH 03042005 For Remote SAT */
+} sat_select_item_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+    kal_uint8 item_id;
+} sat_select_item_res_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 tone_id;
+    kal_uint32 duration;
+    kal_uint8 is_icon_available;
+    sat_icon_struct icon_info;
+
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* PH 03042005 For Remote SAT */
+} sat_play_tone_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+} sat_play_tone_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 condition;
+    kal_uint32 duration;
+    kal_uint8 type_of_modification;
+    kal_uint8 is_icon1_available;
+    sat_icon_struct icon_info1;
+    kal_uint8 is_icon2_available;
+    sat_icon_struct icon_info2;
+    kal_uint8 size_of_ccp;
+    kal_uint8 ccp[MAX_SAT_SIZE_OF_CCP];
+    kal_uint8 no_addr;
+    kal_uint8 *addr;
+    kal_uint8 size_of_subaddr;
+    kal_uint8 subaddr[MAX_SIM_ADDR_BCD_LEN];
+    kal_bool contain_ims_uri;
+    kal_uint8 media_type;
+
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* PH 03042005 For Remote SAT */
+} sat_setup_call_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+    kal_uint8 cause;
+} sat_setup_call_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+#if defined(__TC01__)
+    kal_bool is_alpha_id_exist;
+#endif
+    kal_uint8 is_icon_available;
+    sat_icon_struct icon_info;
+    kal_uint8 is_sms_packed_required;
+    kal_uint8 size_of_addr;
+    kal_uint8 addr[MAX_SIM_ADDR_LEN];
+    kal_uint8 no_sms_tpdu;
+    kal_uint8 *sms_tpdu;
+
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* PH 03042005 For Remote SAT */
+} sat_send_sms_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+    kal_uint8 cause;
+} sat_send_sms_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 type_of_modification;
+    kal_uint8 is_icon_available;
+    sat_icon_struct icon_info;
+    kal_uint8 no_ss_string;
+    kal_uint8 *ss_string;
+
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* PH 03042005 For Remote SAT */
+} sat_send_ss_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+    kal_uint8 size_of_additional_info;
+    kal_uint8 additional_info[255];
+} sat_send_ss_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 type_of_modification;
+    kal_uint8 is_icon_available;
+    sat_icon_struct icon_info;
+    kal_uint8 no_ussd_string;
+    kal_uint8 *ussd_string;
+    kal_uint8 dcs_of_ussd_string;
+    kal_uint8 no_alpha_id; /* Length of undecoded alpha id */
+    kal_bool is_alpha_id_present;
+
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* PH 03042005 For Remote SAT */
+} sat_send_ussd_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+    kal_uint8 size_of_additional_info;
+    kal_uint8 additional_info[255];
+} sat_send_ussd_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 type;
+    kal_uint8 size_of_ccp1;
+    kal_uint8 ccp1[MAX_SAT_SIZE_OF_CCP];
+    kal_uint8 size_of_subaddr;
+    kal_uint8 subaddr[MAX_SIM_SUB_ADDR_BCD_LEN];
+    kal_uint8 size_of_ccp2;
+    kal_uint8 ccp2[MAX_SAT_SIZE_OF_CCP];
+    kal_bool is_sat_action;
+    kal_uint8 call_id; // used by IMC
+} sat_call_ctrl_by_sim_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 res;
+    kal_uint8 type;
+    kal_uint8 size_of_ccp1;
+    kal_uint8 ccp1[MAX_SAT_SIZE_OF_CCP];
+    kal_uint8 size_of_subaddr;
+    kal_uint8 subaddr[MAX_SIM_SUB_ADDR_BCD_LEN];
+    kal_uint8 is_bc_repeat_ind_avail;
+    kal_uint8 bc_repeat_ind;
+    kal_uint8 size_of_ccp2;
+    kal_uint8 ccp2[MAX_SAT_SIZE_OF_CCP];
+    kal_uint8 alpha_id_len;
+    kal_bool  is_alpha_id_present;
+    kal_uint8 call_id; //used by IMC
+} sat_call_ctrl_by_sim_cnf_struct;
+
+typedef sat_call_ctrl_by_sim_req_struct sat_ss_ctrl_by_sim_req_struct;
+typedef sat_call_ctrl_by_sim_cnf_struct sat_ss_ctrl_by_sim_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 access_id;
+    kal_uint8 size_of_addr1;
+    kal_uint8 addr1[MAX_SIM_ADDR_LEN];
+    kal_uint8 size_of_addr2;
+    kal_uint8 addr2[MAX_SIM_ADDR_LEN];
+} sat_send_sms_ctrl_by_sim_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 access_id;
+    kal_uint8 res;
+    kal_uint8 size_of_addr1;
+    kal_uint8 addr1[MAX_SIM_ADDR_LEN];
+    kal_uint8 size_of_addr2;
+    kal_uint8 addr2[MAX_SIM_ADDR_LEN];
+} sat_send_sms_ctrl_by_sim_cnf_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 access_id;
+    kal_uint8 size_of_addr;
+    kal_uint8 addr[MAX_SIM_ADDR_LEN];
+} sat_sms_dl_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 access_id;
+    kal_uint8 is_successful;
+    kal_uint16 size_of_sim_ack_data;
+    kal_uint8 sim_ack_data[258];
+    kal_uint8 cause;
+} sat_sms_dl_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 size_of_cb_page_data;
+    kal_uint8 rat;
+    kal_uint8 current_page;
+    kal_uint8 total_page;
+    kal_uint8 cb_page_data[88];
+} sat_cb_dl_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 is_successful;
+    kal_uint8 rat;
+    kal_uint8 current_page;
+    kal_uint8 total_page;
+} sat_cb_dl_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_successful;
+    sat_sms_dl_error_cause_enum cause;
+    kal_uint16 size_of_sim_ack_data;
+    kal_uint8 sim_ack_data[256];
+} sat_general_sms_pp_dl_rsp_struct;
+
+/* MSG_ID_SAT_NAS_SV_SOR_SECURE_PACKET_RSP */
+typedef sat_general_sms_pp_dl_rsp_struct sat_nas_sv_sor_secure_packet_rsp_struct;
+/* MSG_ID_SAT_VGMM_SECURE_PACKET_RSP */
+typedef sat_general_sms_pp_dl_rsp_struct sat_vgmm_secure_packet_rsp_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 item_id;
+    kal_uint8 is_help_info_requested;
+} sat_menu_select_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 is_successful;
+} sat_menu_select_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 sim_slot_id;
+    kal_bool is_full_changed;
+    kal_uint8 refresh_type;     /* Add for SIM REFRESH type */
+    kal_uint8 num_of_file;
+    kal_uint16 file_list[120];  /* [MAUI_01716279] mtk02374 20090706 change to kal_uint16 due to file number is larger than 256*/
+    kal_uint8 size_of_plmn;
+    kal_uint8 *plmn_list;       /*only used when refresh_type is TYPE_STEERING_OF_ROAMING and MOD_NWSEL SHOULD free this created ctrl buffer */
+} sat_file_change_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 sim_slot_id;
+    kal_uint8 is_successful;
+    sat_file_change_error_cause_enum error_cause;
+} sat_file_change_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_imei_sv;
+} sat_imei_info_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 is_imei_valid;
+    kal_uint8 imei[9];
+    kal_bool is_imei_sv;
+} sat_imei_info_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 mm_status;
+    kal_uint8 location_info[SAT_MAX_LOC_INFO_LEN];
+    kal_uint8 rat;  /* rat_enum, in l3_inc_enums_public.h */
+} sat_location_info_ind_struct;
+
+/* MSG_ID_SAT_NW_REJECT_IND from ugRAC and eRAC */
+typedef struct {
+    LOCAL_PARA_HDR
+
+    sat_nw_rej_info_enum info;
+    union
+    {
+        kal_uint8 location_info[5];             /* MCC&MNC(3) + LAC/TAC(2). the location info length field of NW reject event shall be 5 Clause 8.19, TS 31.111 */
+        kal_uint8 route_area_id[6];             /* MCC&MNC(3) + LAC(2) + RAC(1). Clause 8.91, TS 31.111 */
+        kal_uint8 track_area_id[6];             /* MCC&MNC(3) + [EUTRAN]TAC(2) / [NGRAN]TAC(3). Clause 8.99, TS 31.111 */
+    }info_field;
+
+    kal_uint8               rat;
+    sat_nw_rej_type_enum    rej_type;           /* Clause 8.92, TS 31.111 */
+    kal_uint8               rej_cause;          /* Clause 8.93, TS 31.111 */
+    kal_uint8               ext_rej_cause;      /* Clause 8.136, TS 31.111 */
+} sat_nw_reject_ind_struct;
+
+/*
+ *  mtk02374 20090513
+ *  add for provide local info with nw search mode
+ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 nw_search_mode;
+} sat_nw_search_mode_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} sat_time_zone_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 time_zone;
+} sat_time_zone_ind_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+} sat_current_time_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 time_info[6];
+} sat_current_time_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 mmi_info_type;
+    kal_uint8 len_of_address;
+    kal_uint8* address;
+    kal_uint8 alpha_id_len;
+    kal_uint8 alpha_id[MAX_PS_NAME_SIZE];
+} sat_mmi_info_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+} sat_me_status_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 me_status;
+    kal_uint8 timing_advance;
+} sat_me_status_cnf_struct;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef struct {
+    LOCAL_PARA_HDR
+} sat_nmr_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 mm_status;
+    kal_uint8 nmr[16];
+    kal_uint8 size_of_bcch;
+    kal_uint8 bcch[40];
+} sat_nmr_cnf_struct;
+
+/* MSG_ID_SAT_MEME_NMR_REQ / MSG_ID_SAT_EAS_NMR_REQ */
+typedef struct {
+    LOCAL_PARA_HDR
+    sat_nmr_qual_enum nmr_qualifier;                            /* 01~04: 3G NMR, 05~08: 4G NMR. clause 8.73 in TS 31.111. */
+} sat_meme_nmr_req_struct, sat_eas_nmr_req_struct;
+
+/* MSG_ID_SAT_MEME_NMR_CNF / MSG_ID_SAT_EAS_NMR_CNF */
+typedef struct {
+    LOCAL_PARA_HDR
+    sat_nmr_qual_enum nmr_qualifier;                            /* 01~04: 3G NMR, 05~08: 4G NMR. clause 8.73 in TS 31.111. */
+    kal_bool  result;                                           /* False if standby AS receives the NMR_REQ */
+    kal_uint8 nmr_obj_num;                                      /* NMR frequence number */
+    kal_uint8 nmr_length[MAX_SAT_EUNMR_OBJ_NUM];                /* The length in byte of the NMR objects (with Guard Pattern) for nmr_obj_num frequencies */
+                                                                /* The actual length is nmr_length[] - NMR_OBJ_GUARD_PATTERN_LENGTH */
+} sat_meme_nmr_cnf_struct, sat_eas_nmr_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+} sat_language_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 language[2];
+} sat_language_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_status;
+} sat_call_status_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 connection_info;  /* 0- Idle, 1- Connected */
+} sat_eval_connection_info_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 connection_info;  /* 0- Idle, 1- Connected */
+} sat_mm_connection_info_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    sat_pdp_status_enum pdp_status;
+} sat_pdp_status_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 connection_status;  /* 0 - disconnected, 1 - connected */
+    kal_uint8 apn_name[64];
+} sat_apn_connection_status_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 session_status;  /* 0 - dropped, 1 - established */
+} sat_dm_session_status_ind_struct;
+
+
+/* __SATCR__ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 state; /* contactless_functionality state*/
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd;
+} sat_contactless_state_changed_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+} sat_contactless_state_changed_res_struct;
+
+
+/* __SATCL__ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 target; // "target" in activate descriptor
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd;
+} sat_activate_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+} sat_activate_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 is_icon_available;
+    sat_icon_struct icon_info;
+
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* PH 03042005 For Remote SAT */
+} sat_setup_idle_dspl_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+} sat_setup_idle_dspl_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 is_icon_available;
+    sat_icon_struct icon_info;
+    kal_uint8 no_at_command;
+    kal_uint8 *at_command;
+
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* mtk02374 20081224 RSAT Class b */
+} sat_run_at_command_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+    kal_uint8 size_of_at_response;
+    kal_uint8 at_response[MAX_AT_RESPONESE_LEN];    //mtk02514_081216
+} sat_run_at_command_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 is_icon_available;
+    sat_icon_struct icon_info;
+    kal_uint8 no_dtmf;
+    kal_uint8 *dtmf;
+
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* PH 03042005 For Remote SAT */
+} sat_send_dtmf_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+    kal_uint8 additional_info;
+} sat_send_dtmf_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 is_language_specified;
+    kal_uint8 iso639_language[2];
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* PH 03042005 For Remote SAT */
+} sat_lang_notify_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+} sat_lang_notify_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 is_icon_available;
+    sat_icon_struct icon_info;
+    kal_uint8 browser_mode;
+    kal_uint8 browser_identity;
+    kal_uint8 provision_file_id[10];
+
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* mtk01488: 20080930 For Remote SAT */
+} sat_launch_browser_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+    kal_uint8 additional_res;  /* MAUI_02888481 */
+} sat_launch_browser_res_struct;
+
+typedef struct {
+    kal_uint8 addr_length; /* Address Length*/
+    kal_uint8 addr_bcd[MAX_SIM_ADDR_BCD_LEN];
+} sim_addr_bcd_struct;
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 ti;
+    kal_bool is_mt_call;
+} sat_evdl_call_connect_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 ti;
+    kal_bool is_far_end;
+    //kal_bool cause_p;
+    //kal_uint8 cause;
+    kal_uint8 cause_len;
+    kal_uint8 cause[30];
+} sat_evdl_call_disconnect_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 mm_status;
+    kal_uint8 location_info[SAT_MAX_LOC_INFO_LEN];
+} sat_evdl_location_status_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+} sat_evdl_user_activity_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+} sat_evdl_idle_screen_available_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 iso639_language[2];
+} sat_evdl_language_selection_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 card_reader_status;
+} sat_evdl_card_reader_status_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 browser_termination_cause;
+} sat_evdl_browser_termination_req_struct;
+
+/* MSG_ID_SAT_EVDL_IMS_REG_IND */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_successful;
+    kal_uint8 num_of_impu;
+    kal_uint8 status_code_len;
+    kal_uint8 status_code[4];
+} sat_evdl_ims_reg_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 channel_status[2];
+    kal_uint8 channel_data_length;
+} sat_evdl_data_available_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 channel_status[2];
+} sat_evdl_channel_status_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_bool is_icon_available;
+    sat_icon_struct icon_info;
+    kal_uint8 bearer;
+    sat_gprs_bearer_para_struct gprs_bearer;
+    sat_csd_bearer_para_struct csd_bearer;
+    kal_uint16 buffer_size;
+    kal_uint8 size_of_address;
+    kal_uint8 addr[MAX_SIM_ADDR_BCD_LEN];
+    kal_uint8 size_of_subaddr;
+    kal_uint8 subaddr[MAX_SIM_ADDR_BCD_LEN];
+    kal_uint32 duration1;
+    kal_uint32 duration2;
+    kal_uint16 no_username;
+    kal_uint8 username[16];
+    kal_uint8 dcs_of_username;
+    kal_uint16 no_passwd;
+    kal_uint8 passwd[16];
+    kal_uint8 dcs_of_passwd;
+    kal_uint8 protocol_type;  /* '01' UDP '02' TCP */
+    kal_uint16 port_num;
+    kal_int16 no_local_addr;
+    kal_uint8 local_addr[16];
+    kal_int16 no_dest_addr;
+    kal_uint8 dest_addr[16];
+    kal_uint8 dns[4];
+    kal_uint8 apn[50];
+    kal_uint8 apn_length;
+
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* mtk02374 20081224 RSAT Class e */
+} sat_open_channel_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+    kal_uint8 cause;
+    kal_uint8 ch_status[2];
+    kal_uint8 bearer;
+    sat_gprs_bearer_para_struct bearer_para;
+    kal_uint16 buffer_size;
+} sat_open_gprs_channel_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+    kal_uint8 cause;
+    kal_uint8 ch_status[2];
+    kal_uint8 bearer;
+    sat_csd_bearer_para_struct bearer_para;
+    kal_uint16 buffer_size;
+} sat_open_csd_channel_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+    kal_uint8 cause;
+    kal_uint8 ch_status[2];
+    kal_uint8 bearer;
+    kal_uint16 buffer_size;
+} sat_open_server_mode_channel_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 ch_id;  // sat_channel_id_enum
+    kal_bool is_icon_available;
+    sat_icon_struct icon_info;
+
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* mtk02374 20081224 RSAT Class e */
+} sat_close_channel_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+    kal_uint8 cause;
+} sat_close_channel_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 ch_id; //sat_channel_id_enum
+    kal_uint8 ch_type;
+    kal_bool is_icon_available;
+    sat_icon_struct icon_info;
+    kal_uint8 data_size;
+
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* mtk02374 20081224 RSAT Class e */
+} sat_send_data_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 ch_type;
+    kal_uint8 res;
+    kal_uint8 cause;
+    kal_uint8 ch_data_length;
+} sat_send_data_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 ch_id; //sat_channel_id_enum
+    kal_uint8 ch_type;
+    kal_bool is_icon_available;
+    sat_icon_struct icon_info;
+    kal_uint8 ch_data_length;
+
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* mtk02374 20081224 RSAT Class e */
+} sat_recv_data_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 ch_type;
+    kal_uint8 res;
+    kal_uint8 cause;
+    kal_uint8 ch_data_length;
+} sat_recv_data_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 ch_id;    /*mtk02374 20091230 for WISE BIP*/
+
+    kal_uint16 cmd_id;
+    sat_procomm_struct proactive_cmd; /* mtk02374 20081224 RSAT Class e */
+} sat_ch_status_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_detail[5];
+    kal_uint8 res;
+    kal_uint8 cause;
+    kal_uint8 channel_status[2];
+} sat_ch_status_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+} sim_imei_lock_verified_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    cusats_uicc_state_enum uicc_state;
+}sat_uicc_state_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 mode;
+} sat_profile_activate_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_bool result;
+} sat_profile_activate_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    sim_profile_storage_enum st;
+    kal_bool reset;
+} sat_profile_write_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    sim_profile_storage_enum st;
+    kal_bool result;
+} sat_profile_write_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 utk_enabled;
+} sat_utk_enabled_update_req_struct;
+
+/* MSG_ID_SAT_SET_CT_MODE_REQ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 ct_mode;
+} sat_set_ct_mode_req_struct;
+
+#if defined(__TC10__) && defined(__IPC_ADAPTER__)
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8    src_id;
+    kal_uint16   status_word;
+} sat_terminal_rsp_res_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                        is_refresh_possible;
+} sat_refresh_voting_res_struct;
+#endif
+
+#ifdef __TC10__
+typedef struct
+{
+    LOCAL_PARA_HDR
+    sat_refresh_notification_enum   refresh_status;
+    sat_refresh_type_enum           refresh_type;
+    sat_refresh_init_app_enum       init_app_list;
+} sat_refresh_noti_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    sat_refresh_type_enum           refresh_type;
+} sat_refresh_voting_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    sat_call_ctrl_type_noti_enum      old_call_type;
+    sat_call_ctrl_type_noti_enum      call_type;
+    sat_call_ctrl_result_noti_enum    control_result;
+    kal_uint8                         alpha_id_present;
+    kal_uint8                         alpha_id_len;
+    kal_uint8                         alpha_id[64];
+    kal_uint8                         call_id;
+    kal_uint8                         address1_len;
+    kal_uint8                         address1[41];
+    kal_uint8                         address2_len;
+    kal_uint8                         address2[41];
+    kal_uint8                         ss_string_len;
+    kal_uint8                         ss_string[255];
+    kal_uint8                         ussd_string_len;
+    kal_uint8                         ussd_string[183];
+    kal_uint8                         bc_repeat_ind;
+    kal_uint8                         subaddr_len;
+    kal_uint8                         subaddr[41];
+    kal_uint8                         ccp1_len;
+    kal_uint8                         ccp1[15];
+    kal_uint8                         ccp2_len;
+    kal_uint8                         ccp2[15];
+} sat_call_ctrl_result_noti_ind_struct;
+#endif  /* __TC10__ */
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 rat;
+    kal_uint8 plmn_id[3]; /* plmn_id[0]:= (mcc2|mcc1); plmn_id[1]:=(mnc3|mcc3);  plmn_id[2]:=(mnc2|mnc1); */
+} sat_plmn_info_ind_struct;
+
+/* MSG_ID_SAT_RAT_SELECT_IND */
+// Need to be sync-ed with rac_gmss_rat_select_ind_struct
+typedef struct {
+    LOCAL_PARA_HDR
+    gmss_rat_enum gmss_rat;
+    plmn_id_struct loc;         /* Only MCC is valid */
+    gmss_selected_rat_status_enum status;
+    kal_bool is_ehrpd;          /* Indicate if PS type is EHRPD if current RAT is HRPD */
+} sat_rat_select_ind_struct;
+
+/* shall be identical to gmss_nwsel_* */
+typedef struct {
+    LOCAL_PARA_HDR
+    susp_resu_action_enum action;
+    susp_resu_result_enum result;
+    susp_resu_source_enum target;
+} nwsel_sat_susp_resu_update_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    susp_resu_mode_enum  mode;
+    susp_resu_action_enum action;
+    kal_uint8            susp_id;
+    susp_resu_source_enum source;
+} nwsel_sat_susp_resu_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 susp_id;
+    susp_resu_source_enum target;
+} nwsel_sat_suspend_status_ind_struct;
+
+typedef struct
+{
+    kal_bool            vsim_ki_enabled;            /* VSIM ki enable*/
+    kal_uint8           vsim_asym_key_idx;          /* 0-based index, assymetric key index for Ki protection */
+    kal_uint8           sim_auth_algo;              /* 0: COMP128v2v3, 1:XOR, only works when ki_enabled == KAL_FALSE*/
+    kal_uint8           usim_auth_algo;             /* 0: MILENAGE, only works when ki_enabled == KAL_FALSE */
+    uicc_card_type_enum vsim_type;                  /* uicc_card_type_enum, 0: Not init, 1:SIM, 2:USIM for now */
+    kal_uint16          auth_res_len;
+    kal_uint8           auth_res[256];
+    kal_uint16          enc_ki_len;
+    kal_uint8           enc_ki[256];                /* Ki(16Bytes), enc_ki(256Bytes) */
+} vsim_profile_struct;
+
+/* MSG_ID_SIM_SET_REGISTRATION_MODE_REQ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool registration_mode;
+} sim_set_registration_mode_req_struct;
+
+extern const usim_ef_info_struct usim_ef_info[UICC_TOTAL_FILES];
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8    key_pool_size;  //number of generated key (1,2,3...)
+} keygen_sim_ready_ind_struct;
+
+typedef struct
+{
+    kal_uint8    path[6];
+} c2k_file_path_struct;
+
+/* MSG_ID_SAT_MSISDN_INFO_IND */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 msisdn_size;                  /* include TON */
+    kal_uint8 msisdn[MAX_CC_ADDR_BCD_LEN];  /* BCD format(include TON), example 15613331095, msisdn[0]= 0x91, msisdn[1] = 0x51, msisdn[2] = 0x16 ¡K msisdn[6] = 0xf5*/
+} sat_msisdn_info_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_bool is_roaming;
+} sim_roaming_state_ind_struct, gmss_sim_roaming_state_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat_mode;          //AT+ERAT setting
+    rat_enum reported_rat;      //actual rat mode the phone use
+} sat_set_rat_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool result;
+    kal_bool is_dual_mode_sim;
+} sat_set_rat_mode_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_cdma;
+} nas_sv_sim_cs_stk_domain_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cdma_capability;          //AT+ERAT setting
+} sat_l4bsim_set_rat_mode_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 sat_rule;
+} sat_l4bsat_set_sat_rule_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 mcc[4];
+    kal_uint8 mnc[4];
+    kal_bool is_valid_gid1;
+    kal_uint8 gid1[NUM_GID1];
+    kal_bool is_valid_gid2;
+    kal_uint8 gid2[NUM_GID2];
+    kal_bool is_valid_spn;
+    kal_uint8 spn[LEN_OF_SPN];
+    kal_uint8 iccid[21];
+    kal_uint8 trans_id;     /* Used by DSBP_RECONFIG's users. Use 1~255 in order for each SIM task. */
+} sim_l4bsbp_ready_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 mcc[4];
+    kal_uint8 mnc[4];
+} sim_iwlan_ready_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 iccid[10];
+} sim_iccid_ready_ind_struct;
+
+/* <sim_duplex_op>:
+   0: Reset SIM parameters
+   1: Set SIM parameters */
+typedef struct{
+    LOCAL_PARA_HDR
+    duplex_mode_change_action_enum sim_duplex_op;
+}sim_duplex_mode_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8    src_id;
+    //kal_uint8    lock_mode;  // phased out
+    kal_uint8    sim_power_mode;  // 0: plug out  1: plug in
+    kal_bool     sim_handle_plug_in; // 0: don't handle plug in event, 1: handle plug in event
+} sim_op20_ap_simlock_req_struct, sim_ap_simpower_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8    src_id;
+    sim_cmd_result_enum result;
+} sim_ap_simpower_cnf_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    duplex_mode_change_action_enum action;
+} sim_mm_configure_as_for_duplex_mode_change_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    duplex_mode_change_action_enum action;
+} sim_gmss_configure_as_for_duplex_mode_change_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    module_type orig_src_mod_id;
+    sap_type orig_sap_id;
+    msg_type orig_msg_id;
+    local_para_struct *orig_local_para_ptr;
+    void *redirect_info;
+} sim_msg_redirect_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 cmd_len;
+    kal_uint8 proactive_cmd[256];
+} sat_inject_proactive_cmd_ind_struct;
+
+/* This struct is for the object in application ready peer buffer
+   I.   There is no EF object if the SIM module didn't try to access the EF.
+   II.  If SIM module select the EF fail, the is_exist will be FALSE
+   III. If SIM module only select the EF without reading it, the data_len will be 0.
+   IV.  If the EF data in the object, the data_len will NOT be 0.  */
+typedef struct {
+    kal_uint8 tag;
+    kal_uint8 curr_rec_id;             /* The current read record index in data */
+    kal_uint8 total_rec_num;           /* The total record number of EF, transparent EF is 1 */
+    sim_file_index_enum file_idx;
+    kal_bool is_exist;                 /* The EF is exist or not */
+    sim_file_structure_enum file_type;
+    kal_uint16 rec_size;               /* For tranparent EF, the rec_size is the same as file size */
+    kal_uint16 object_len;             /* the toal size of object,
+                                          including of this structure length, data len and padding length */
+    kal_uint16 data_len;               /* The data length was carried in data array */
+    kal_uint8 data[0];
+} sim_app_ready_ef_object_struct;
+#ifndef __SIM_ACCESS_INTEGRATION__
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 channel_id;
+    kal_uint16 req_len;
+    kal_uint8 src_id;
+    /* For error handling, MOD_SIM appends Le to C-APDU, Allocate 1 more byte in peer buffer for it*/
+} sim_extended_apdu_access_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 result;
+    kal_uint16 rsp_len;
+    kal_uint8 src_id;
+} sim_extended_apdu_access_cnf_struct;
+#endif
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 mcc[MAX_SIM_MCC_MNC_LEN+1];
+    kal_uint8 mnc[MAX_SIM_MCC_MNC_LEN+1];
+    kal_uint8 msin[MAX_SIM_MSIN_LEN+1];
+} sim_fake_id_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool           is_dual_mode;
+    uicc_app_type_enum app_type;
+    kal_uint8          mcc[4];        /* ASCII string */
+    kal_uint8          mnc[4];        /* ASCII string */
+    kal_uint8          gid1_length;
+    kal_uint8          gid1[NUM_GID1];      /* raw data from card */
+    kal_uint8          gid2_length;
+    kal_uint8          gid2[NUM_GID2];      /* raw data from card */
+    kal_bool           is_valid_spn;
+    kal_uint8          spn[35];       /* raw data from card, GSM will be 17 bytes and C2K will be 35 bytes */
+    kal_uint8          pnn_fname_length;
+    kal_uint8          pnn_fname[50]; /* raw data from card, the PNN record#1 full name */
+    kal_uint8          imsi[17];      /* ASCII string */
+    kal_uint8          iccid[10];     /* raw data from card */
+} sim_ddm_ready_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool           is_dual_mode;
+    uicc_app_type_enum app_type;
+    kal_uint8          mcc[4];        /* ASCII string */
+    kal_uint8          mnc[4];        /* ASCII string */
+    kal_uint8          gid1_length;
+    kal_uint8          gid1[NUM_GID1];      /* raw data from card */
+    kal_uint8          gid2_length;
+    kal_uint8          gid2[NUM_GID2];      /* raw data from card */
+    kal_bool           is_valid_spn;
+    kal_uint8          spn[35];       /* raw data from card, GSM will be 17 bytes and C2K will be 35 bytes */
+    kal_uint8          pnn_fname_length;
+    kal_uint8          pnn_fname[50]; /* raw data from card, the PNN record#1 full name */
+    kal_uint8          imsi[17];      /* ASCII string */
+    kal_uint8          iccid[10];     /* raw data from card */
+    kal_uint8 no_msisdn;        // MSISDN
+    sim_addr_struct msisdn[2];
+} sim_l5usim_ready_ind_struct;
+
+
+#ifdef __TC01__
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cmd_type;
+    kal_bool result;
+} sat_ebip_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 *buffer;
+    kal_uint8 buffer_len;
+} simdrv_debug_buffer_ind_struct;
+
+#endif
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_ecc_session;
+} l4c_sim_ecc_session_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 ef_imsi[9];
+}sim_vgsm_ready_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 slot_id;
+    kal_uint8 atr[ATR_MAX_LEN];
+    kal_uint8 atr_len;
+    kal_bool is_valid_eid;
+    kal_uint8 eid[LEN_OF_EID];
+    kal_uint8 iccid[10];
+    kal_uint8 plug_state;
+}l4bsim_eslotsinfo_data_ind_struct;
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_nw_message;
+    sat_data_connection_status_enum data_connection_status;
+    sat_data_connection_type_enum data_connection_type;
+    kal_bool xsm_isvalid;
+    kal_uint8 xsm_cause;
+    kal_uint8 ti;
+    sat_pdp_pdn_pdu_type_enum pdp_type;
+} sat_evdl_data_connect_ind_struct;
+
+#endif
+
diff --git a/mcu/interface/protocol/general/sim_public_api.h b/mcu/interface/protocol/general/sim_public_api.h
new file mode 100644
index 0000000..59db428
--- /dev/null
+++ b/mcu/interface/protocol/general/sim_public_api.h
@@ -0,0 +1,586 @@
+/*****************************************************************************
+*  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).
+*
+*****************************************************************************/
+ /*******************************************************************************
+ *  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) 2001
+ *
+ *******************************************************************************/
+
+ /*******************************************************************************
+ * Filename:
+ * ---------
+ *   sim_public_api.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   API provided by SIM task and outside-PS task uses also
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *******************************************************************************/
+ 
+#ifndef SIM_PUBLIC_API_H
+#define SIM_PUBLIC_API_H
+
+#include "kal_general_types.h"
+#include "sim_public_enum.h" 
+#include "sim_ps_enum.h"
+#ifdef __SIM_MULTI_PIN__
+#include "ps_public_struct.h"
+#endif
+
+/*******************************************************************************/
+/* Merge sim_ps_api.h */
+#if defined (__GEMINI__)
+kal_bool is_usim_type(sim_interface_enum ps_id);
+#else 
+kal_bool is_usim_type(void);
+#endif
+kal_bool is_usim_type_by_ps_id(protocol_id_enum ps_id);
+
+kal_uint8 sim_query_mnc_num(sim_interface_enum simInterface); 
+
+#if defined (__GEMINI__)
+usim_acl_type_enum usim_query_acl_type(sim_interface_enum ps_id);
+#else 
+usim_acl_type_enum usim_query_acl_type(void);
+#endif 
+usim_acl_type_enum usim_query_acl_type_by_ps_id(protocol_id_enum ps_id);
+
+uicc_app_type_enum sim_application_id_query(sim_interface_enum simInterface, usim_logic_channel_enum channel);
+
+sim_dn_enum sim_dn_type_query(sim_interface_enum simInterface);
+
+#if defined (__GEMINI__)
+kal_bool is_vsim_on(kal_uint8 simInterface);
+#else 
+kal_bool is_vsim_on(void);
+#endif 
+kal_bool is_vsim_on_by_ps_id(protocol_id_enum ps_id);
+
+kal_uint8 sim_read_vsim_profileid(kal_uint8 simInterface);
+
+kal_uint8 sim_read_vsim_type(kal_uint8 simInterface, kal_uint8 profile_id);
+
+kal_uint8 sim_read_vsim_auth_algo(kal_uint8 simInterface, kal_uint8 profile_id);
+
+void sim_read_vsim_auth_res(kal_uint8 simInterface, kal_uint8 profile_id, kal_uint16 *auth_len, kal_uint8 *auth_res);
+
+vsim_ver_type_enum sim_read_vsim_ver(kal_uint8 simInterface);
+#ifdef __GEMINI__
+kal_uint8 *get_sim_context_g_sat_event_list(kal_uint8 simInterface);
+#else 
+kal_uint8 *get_sim_context_g_sat_event_list(void);
+#endif 
+
+void deactivate_fetch(sim_interface_enum simInterface);
+void activate_fetch(sim_interface_enum simInterface);
+
+extern void sim_get_full_path(sim_file_index_enum file_index, kal_uint8 *full_path);
+/*******************************************************************************/
+
+
+
+kal_bool is_sim1_test_sim(void);
+
+#if defined( __GEMINI__)
+kal_bool is_test_sim(kal_uint8 simInterface);
+#else 
+kal_bool is_test_sim(void);
+#endif 
+kal_bool is_test_sim_by_ps_id(protocol_id_enum ps_id);
+
+
+usim_logic_channel_enum l4c_sim_get_app_channel_id(kal_uint8 simInterface, kal_uint8 applicationid);
+
+#if defined(__ECALL_SUPPORT__) || defined(__NG_ECALL_SUPPORT__)
+sim_ecall_mode_enum sim_ecall_mode_query(sim_interface_enum simInterface);
+kal_bool sim_set_ecall_test_mode(sim_interface_enum simInterface,sim_ecall_mode_enum mode);
+#endif
+#ifdef __NG_ECALL_SUPPORT__
+sim_ecall_mode_enum sim_ecall_mode_ims_query(sim_interface_enum simInterface);
+#endif
+#if defined( __GEMINI__)
+sim_type_query_enum sim_query_type(sim_interface_enum which_sim);
+#else 
+sim_type_query_enum sim_query_type(void);
+#endif 
+sim_type_query_enum sim_query_type_by_ps_id(protocol_id_enum ps_id);
+
+#if defined( __GEMINI__)
+sim_service_state_enum sim_service_table_query(sim_service_enum service_id, kal_uint8 ps_id);
+#else 
+sim_service_state_enum sim_service_table_query(sim_service_enum service_id);
+#endif 
+sim_service_state_enum sim_service_table_query_by_ps_id(sim_service_enum service_id, protocol_id_enum ps_id);
+
+#if defined(__GEMINI__)
+sim_card_status_enum check_sim_card_status(kal_uint8 simInterface);
+#else 
+sim_card_status_enum check_sim_card_status(void);
+#endif 
+
+#if defined(__ICUSB_SUPPORT__) && defined(__MTK_TARGET__)
+extern void sim_icusb_error_ind_call_back(kal_uint32 which_sim);
+#endif
+
+extern kal_bool is_sim_registered(kal_uint8 simInterface);
+
+extern kal_uint8 sim_get_cdma_info(kal_uint8 sim_indx);
+
+extern kal_bool sim_get_3GCT_card_info(kal_uint8 sim_indx);
+
+extern kal_bool is_op20_imei_lock(kal_uint8 sim_indx);
+
+extern kal_uint8 is_isim_exist(kal_uint8 sim_indx);
+
+#ifdef __SAT__
+kal_bool sat_set_profile_download_config(sat_profile_download_enum dl_setting, protocol_id_enum sim_ps_id);
+sat_profile_download_enum sat_get_profile_download_config(protocol_id_enum sim_ps_id);
+
+kal_bool sat_set_profile_activate_config(sat_profile_activate_enum act_setting, protocol_id_enum sim_ps_id);
+
+sat_profile_activate_enum sat_get_profile_activate_config(protocol_id_enum sim_ps_id);
+
+#endif
+
+extern void usim_get_ust(kal_uint8* ust, kal_uint8 *ust_len, kal_uint8 sim_ps_id);
+
+extern kal_uint8 sim_query_L1_SIM_insert_status(void);
+
+extern kal_uint8 get_uicc_type_from_channel_id(kal_uint8 simInterface, kal_uint8 channel_id);
+
+extern void l4c_usim_get_aid_info_by_channel(kal_uint8 simInterface, kal_uint8 applicationid, kal_uint8 *channel_id, kal_uint8* aid, kal_uint8 *aid_len, kal_uint8 *app_label, kal_uint8 *app_label_len);
+
+extern kal_bool usim_is_uicc_app_exist(kal_uint8 sim_indx, kal_uint8 app_id);
+
+/*******************************************************************************/
+
+/* Add new functions */
+
+/* Check whether SIM slot has card, including CT3G, UIM, recovery */
+/* Workaround for CT3G recovery */
+extern kal_bool sim_is_card_in_slot(kal_uint8 sim_ps_id);
+
+/*
+READ BINARY/RECORD from SIM file cache
+Currently only support:
+  Default channel
+  Valid file_idx
+  SFI not used
+*/
+kal_bool sim_read_file_cache(kal_uint8 sim_ps_id,
+                                  sim_file_index_enum file_idx,
+                                  kal_uint32 cmd,   // smu_common_enums.h - (smu_sim_access_cmd_enum) READ_BINARY or READ_RECORD
+                                  kal_uint16 fileid,
+                                  kal_uint8 *pathid,
+                                  kal_uint8 pathid_length,
+                                  kal_uint8 p1,
+                                  kal_uint8 p2,
+                                  kal_uint8 p3,
+                                  kal_uint8 channel_id,
+                                  kal_uint8 sfi,
+                                  kal_uint8 *res_data);
+
+
+/* Pass ICCID stored in SIM context */
+void sim_get_iccid(kal_uint8 sim_ps_id, kal_uint8 *iccid);
+
+/*******************************************************************************/
+
+#if defined (__GEMINI__)
+kal_bool is_apvsim_on(kal_uint8 simInterface);
+#else 
+kal_bool is_apvsim_on(void);
+#endif 
+
+kal_bool sim_is_any_hotswap_poll_timer_start(void);
+
+
+/*****************************************************************************
+ * FUNCTION
+ *  sim_query_atr_info
+ * DESCRIPTION
+ *  To query ATR info
+ * PARAMETERS
+ *  length          [OUT]       ATR length
+ *  atr             [OUT]       ATR value(Hex)
+ *  ps_id           [IN]        which SIM 
+ * RETURNS
+ *  KAL_TRUE        SIM exist
+ *  KAL_FALSE       SIM absent
+ * GLOBALS AFFECTED
+ *  void
+ *****************************************************************************/
+kal_bool sim_query_atr_info(kal_uint8 *length, kal_uint8 *atr, protocol_id_enum ps_id);
+
+/*****************************************************************************
+* FUNCTION
+*  sim_ps_data_off_exempt_query_by_ps_id
+* DESCRIPTION
+*   Check if the service is 3GPP PS Data Off Exempt
+* PARAMETERS
+*  exempt_id    [IN]  service to be queried
+*  this_sim
+* RETURNS
+*  Boolean
+* GLOBALS AFFECTED
+*  None
+*****************************************************************************/
+sim_ps_data_off_exempt_state_enum sim_ps_data_off_exempt_query_by_ps_id(sim_ps_data_off_exempt_enum exempt_id, protocol_id_enum ps_id);
+
+extern kal_bool sim_get_if_immediate_auth_needed(kal_uint8 sim_ps_id);
+extern void sim_set_immediate_auth_flag(kal_uint8 sim_ps_id);
+
+/*****************************************************************************
+* FUNCTION
+*   sim_check_curr_disable_by_ps
+* DESCRIPTION
+*    To query the current ps sim state is disable or enable
+* PARAMETERS
+*  sim_ps_id    [IN]  protocol id
+* RETURNS
+*   Boolean     Disable state
+* GLOBALS AFFECTED
+*  None
+*****************************************************************************/
+extern kal_bool sim_check_curr_disable_by_ps(kal_uint8 sim_ps_id);
+
+/*****************************************************************************
+* FUNCTION
+*   sim_check_curr_disable_card_exist_by_ps
+* DESCRIPTION
+*    To query the current ps sim state is disable or enable
+* PARAMETERS
+*  sim_ps_id    [IN]  protocol id
+* RETURNS
+*   Boolean     Disable state and the card in slot
+*****************************************************************************/
+extern kal_bool sim_check_curr_disable_card_exist_by_ps (kal_uint8 sim_ps_id);
+
+/*****************************************************************************
+* FUNCTION
+*    sim_get_file_idx_from_path
+* DESCRIPTION
+*    To get the sim file index from file path.
+* PARAMETERS
+*    path     [IN] the array carry the file id path
+*    path_len [IN] the valid path length
+*    app_type [IN] the file is belong to which application (ADF)
+* RETURNS
+*    sim file index
+* GLOBALS AFFECTED
+*   None
+*****************************************************************************/
+kal_uint32 sim_get_file_idx_from_path (const kal_uint8 *path, kal_uint16 path_len, uicc_app_type_enum app_type);
+
+/*****************************************************************************
+ * FUNCTION
+ *    sim_get_file_meta_cache_by_ps
+ * DESCRIPTION
+ *    This function is to get the meta info of FCP data in sim context cache
+ * PARAMETERS
+ *    sim_ps_id          [IN]       which PS to be check
+ *    file_idx           [IN]       which file to be check
+ *    file_exist         [OUT]      the file exist or not
+ *    file_type          [OUT]      the file type. TRANSPARENT or RECORD type
+ *    file_size          [OUT]      the file size for TRANSPARNET file/ the record size for RECORD file
+ *    total_rec_num      [OUT]      total number of records.
+ * RETURNS
+ *    Boolean       FALSE means the file to be checked is not in sim context cache.
+ * GLOBALS AFFECTED
+ *  void
+ *****************************************************************************/
+kal_bool sim_get_file_meta_cache_by_ps(kal_uint8 sim_ps_id,
+                                       sim_file_index_enum file_idx,
+                                       kal_bool *file_exist, 
+                                       sim_file_structure_enum *file_type,
+                                       kal_uint16 *file_size,
+                                       kal_uint16 *total_rec_num);
+
+/*****************************************************************************
+ * FUNCTION
+ *    sim_get_cached_file_size_by_ps
+ * DESCRIPTION
+ *    Query SIM cached data profile by file index
+ * PARAMETERS
+ *    sim_ps_id          [IN]       which PS to be check
+ *    file_idx           [IN]       which file to be check
+ *    cached_rec_num     [OUT]      the number of record cached
+ *    cached_rec_size    [OUT]      the cached record size
+ * RETURNS
+ *    KAL_TRUE        The file in cache
+ *    KAL_FALSE       The file not in cache
+ * GLOBALS AFFECTED
+ *  void
+ *****************************************************************************/
+kal_bool sim_get_cached_file_size_by_ps (kal_uint8 sim_ps_id, 
+                                         sim_file_index_enum file_idx, 
+                                         kal_uint8 *cached_rec_num,
+                                         kal_uint16 *cached_rec_size);
+
+/*****************************************************************************
+ * FUNCTION
+ *    sim_get_cached_file_data_by_ps
+ * DESCRIPTION
+ *    Get the SIM cached data by file index
+ * PARAMETERS
+ *    sim_ps_id          [IN]       which PS to be check
+ *    file_idx           [IN]       which file to be check
+ *    cmd                [IN]       read command, READ_RECORD or READ_BINARY 
+ *    rec_id             [IN]       the 1-based record id to be read.
+ *    res_buffer_size    [IN]       the size of the respose buffer, res_data
+ *    res_data           [OUT]      the response buffer
+ * RETURNS
+ *    The length of data in res_data buffer
+ * GLOBALS AFFECTED
+ *  void
+ *****************************************************************************/
+kal_uint16 sim_get_cached_file_data_by_ps (kal_uint8 sim_ps_id,
+                                           sim_file_index_enum file_idx,
+                                           kal_uint8 rec_id,
+                                           kal_uint16 res_buffer_size,
+                                           kal_uint8 *res_data);
+
+/*****************************************************************************
+ * FUNCTION
+ *    sim_query_operator_card
+ * DESCRIPTION
+ *    Query the operator name based on ICCID/EHPLMN/IMSI in SIM context
+ * PARAMETERS
+ *    ps_id              [IN]       which PS to be query
+ * RETURNS
+ *    operator name
+ *****************************************************************************/
+sim_operator_type_enum sim_query_operator_card(protocol_id_enum ps_id);
+
+/*****************************************************************************
+ * FUNCTION
+ *  is_extended_length_fields_support
+ * DESCRIPTION
+ *  This function is to check if card supports extended length fields
+ * PARAMETERS
+ *    ps_id              [IN]       which PS to be query
+ * RETURNS
+ *  KAL_TRUE       extended length fields supported
+ *  KAL_FALSE      extended length fields not supported
+ * GLOBALS AFFECTED
+ *  void
+ *****************************************************************************/
+kal_bool is_extended_length_fields_support(protocol_id_enum ps_id);
+
+#ifdef __FAKEID_SUPPORT__
+/*****************************************************************************
+ * FUNCTION
+ *  sim_is_fake_imsi_by_ps_id
+ * DESCRIPTION
+ *  This function is to check if the current protocol is using fake IMSI
+ *  Caller should use this API after SIM ready
+ * PARAMETERS
+ *  protocol_id_enum ps_id        [?]
+ * RETURNS
+ *  KAL_TRUE       fake IMSI used
+ *  KAL_FALSE      fake IMSI not used
+ * GLOBALS AFFECTED
+ *  void
+ *****************************************************************************/
+extern kal_bool sim_is_fake_imsi_by_ps_id(protocol_id_enum ps_id);
+
+/*****************************************************************************
+ * FUNCTION
+ *  sim_get_fake_imsi
+ * DESCRIPTION
+ *  This function is to get the fake IMSI set by the tester
+ *  Caller should use this API after SIM ready
+ *  Caller should allocate the MAX_SIM_IMSI_LEN memory for imsi_p 
+ * PARAMETERS
+ *  kal_uint8 sim_ps_id        [IN]
+ * RETURNS
+ *  imsi_p       fake IMSI
+ *  mnc_length_p       MNC length of fake IMSI
+ * GLOBALS AFFECTED
+ *  void
+ *****************************************************************************/
+extern void sim_get_fake_imsi(protocol_id_enum sim_ps_id, kal_uint8 *imsi_p, kal_uint8 *mnc_length_p);
+
+#endif
+
+/*****************************************************************************
+ * FUNCTION
+ *  sim_is_euicc
+ * DESCRIPTION
+ *  To check the present card is eUICC.
+ * PARAMETERS
+ *  ps_id           [IN]        Protocol ID
+ * RETURNS
+ *  KAL_TRUE        SIM is eUICC
+ *  KAL_FALSE       SIM is not eUICC
+ * GLOBALS AFFECTED
+ *  void
+ *****************************************************************************/
+kal_bool sim_is_euicc(protocol_id_enum ps_id);
+
+/*****************************************************************************
+ * FUNCTION
+ *  sim_is_empty_euicc
+ * DESCRIPTION
+ *  To check the present card is empty eUICC.
+ * PARAMETERS
+ *  ps_id           [IN]        Protocol ID
+ * RETURNS
+ *  KAL_TRUE        SIM is empty eUICC
+ *  KAL_FALSE       SIM is not empty eUICC
+ * GLOBALS AFFECTED
+ *  void
+ *****************************************************************************/
+kal_bool sim_is_empty_euicc(protocol_id_enum ps_id);
+
+/*****************************************************************************
+ * FUNCTION
+ *  sim_query_eid
+ * DESCRIPTION
+ *  To query EID
+ * PARAMETERS
+ *  eid             [OUT]       EID value(Hex)
+ *  ps_id           [IN]        Protocol ID
+ * RETURNS
+ *  KAL_TRUE        SIM exist and EID retrieved
+ *  KAL_FALSE       SIM absent or EID not retrieved
+ * GLOBALS AFFECTED
+ *  void
+ *****************************************************************************/
+kal_bool sim_query_eid(kal_uint8 *eid, protocol_id_enum ps_id);
+
+#ifdef __SIM_MULTI_PIN__
+/*****************************************************************************
+ * FUNCTION
+ *  sim_get_app_pin_remaining_count_by_ps_id
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ * RETURNS
+ *  KAL_TRUE        
+ *  KAL_FALSE       
+ *****************************************************************************/
+kal_bool sim_get_app_pin_remaining_count_by_ps_id(uicc_app_type_enum app_type, sim_chv_info_struct *chv_info, protocol_id_enum ps_id);
+#endif
+/*****************************************************************************
+* FUNCTION
+*   sim_get_imsi_null_suci_by_ps
+* DESCRIPTION
+*    Get the SUCI with Null Scheme by protocol stack.
+* PARAMETERS
+*   sim_ps_id   [IN] which PS to be check
+*   res_len     [IN/OUT] the size of suci_ptr buffer and the data length in suci_ptr for return
+*   suci_ptr    [OUT]  array buffer to carry response data
+* RETURNS
+*   Result of process the command
+*****************************************************************************/
+kal_bool sim_get_imsi_null_suci_by_ps (kal_uint8 sim_ps_id, kal_uint16 *res_len, kal_uint8 *suci_ptr);
+
+/*****************************************************************************
+* FUNCTION
+*   usim_get_sfi_from_fcp
+* DESCRIPTION
+*    Get the SFI (short file id) from FCP.
+*    Support of SFI for a specific file is indicated if the FCP of the file contains a 
+*    TLV DO with tag '88'. If the length is 0 it indicates that the file does not support 
+*    referencing by SFI. If the TLV DO is not present in the FCP it indicates that the
+*    5 least significant bits of the FID are used as SFI.
+* PARAMETERS
+*    fcp [IN] fcp data to be checked
+*    fcp_len [IN] the length of whole fcp data
+* RETURNS
+*    SFI. 0 means no SFI found
+*****************************************************************************/
+kal_uint8 usim_get_sfi_from_fcp (kal_uint8 *fcp, kal_uint16 fcp_len);
+
+#ifdef __TC10__
+extern void sim_get_last_commnad_APDU(kal_uint8 simInterface, kal_uint8 *command_header_p);
+extern sim_dss_state_enum sim_get_dss_state(protocol_id_enum ps_id);    /*ALPS03779598*/
+/*****************************************************************************
+ * FUNCTION
+ *   sim_check_hplmnwact_3g_only
+ * DESCRIPTION
+ *   To query E-UTRAN bit available from EF_HPLMNwAcT.
+ * PARAMETERS
+ *  ps_id           [IN]        Protocol ID
+ * RETURNS
+ *  KAL_TRUE        VzW 3G USIM not supported condition match, i.e. no E-UTRAN in HPLMNwAcT
+ *****************************************************************************/
+kal_bool sim_check_hplmnwact_3g_only(protocol_id_enum ps_id);
+extern kal_bool sim_query_vzpf(kal_uint8 *vzpf, protocol_id_enum ps_id);
+#endif
+
+extern kal_bool sim_query_gid1(kal_uint8 *gid1, protocol_id_enum ps_id);
+extern kal_bool sim_query_gid2(kal_uint8 *gid2, protocol_id_enum ps_id);
+
+
+extern kal_uint8 sim_query_voltage_info(protocol_id_enum ps_id);
+extern kal_uint8 sim_query_tray_info(protocol_id_enum ps_id);
+
+extern kal_bool sim_check_operator_card(sim_operator_type_enum operator_type, kal_uint8 sim_indx);
+extern kal_bool sim_check_operator_card_by_iccid(sim_operator_type_enum operator_type, kal_uint8 sim_indx);
+extern sim_op01_enum sim_query_op_mode(kal_uint8 ps_id);
+#ifdef __TC10_JPN_FACTORY__
+extern void sim_set_factory_mode(kal_bool is_factory);
+#endif
+#ifdef __SIM_TERMINAL_CAP__
+void sim_get_host_terminal_capabilities_by_ps_id(kal_uint16 tc_data_len, kal_uint8 *tc_data_ptr, protocol_id_enum ps_id);
+#endif
+#ifdef __SIM_PASS_THROUGH__
+/*****************************************************************************
+* FUNCTION
+*   sim_get_esimpower_state_by_ps_id
+* DESCRIPTION
+*   To query the current esimpower state ps sim 
+* PARAMETERS
+*   sim_ps_id    [IN]  protocol id
+* RETURNS
+*   ESIMPOWER state
+*****************************************************************************/
+sim_esimpower_state_enum sim_get_esimpower_state_by_ps_id(protocol_id_enum ps_id);
+#endif
+#endif
diff --git a/mcu/interface/protocol/general/sim_public_enum.h b/mcu/interface/protocol/general/sim_public_enum.h
new file mode 100644
index 0000000..0736f23
--- /dev/null
+++ b/mcu/interface/protocol/general/sim_public_enum.h
@@ -0,0 +1,817 @@
+/*****************************************************************************
+*  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).
+*
+*****************************************************************************/
+ /*******************************************************************************
+ *  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) 2001
+ *
+ *******************************************************************************/
+
+ /*******************************************************************************
+ * Filename:
+ * ---------
+ *   sim_public_enum.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Enum and Constant  provided by SIM task and outside-PS task uses also
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *******************************************************************************/
+#ifndef SIM_PUBLIC_ENUM_H
+#define SIM_PUBLIC_ENUM_H
+
+#include "global_def.h"
+#include "sim_public_enum_public.h"
+#include "sim_exported_enum.h"
+
+/******************* MMDC START *******************/
+typedef enum
+{
+    SIM_ACCESS_EXTERNAL_READ_BINARY,
+    SIM_ACCESS_EXTERNAL_READ_RECORD,
+    SIM_ACCESS_EXTERNAL_UPDATE_BINARY,
+    SIM_ACCESS_EXTERNAL_UPDATE_RECORD,
+    SIM_ACCESS_EXTERNAL_FILE_INFO,
+    SIM_ACCESS_EXTERNAL_AUTHENTICATION
+}sim_access_extmd_op_enum;
+
+typedef enum
+{
+    SIM_NOTIFY_INITIALIZATION,
+    SIM_RESPONSE_ACCESS,
+    SIM_NOTIFY_CARD_STATUS,
+    SIM_NOTIFY_CARD_TYPE,
+    SIM_NOTIFY_FILE_CHANGE
+}sim_extmd_notify_enum;
+
+/******************* MMDC END *******************/
+typedef enum
+{
+   SERVICE_CHV_DISABLE_FUNCTION=1,
+   SERVICE_ADN,
+   SERVICE_FDN,
+   SERVICE_SMS,
+   SERVICE_AOC,
+   SERVICE_CCP,
+   SERVICE_PLMNSEL,
+   SERVICE_RFU1,
+   SERVICE_MSISDN,
+   SERVICE_EXT1,
+   SERVICE_EXT2,
+   SERVICE_SMSP,
+   SERVICE_LND,
+   SERVICE_CBMI,
+   SERVICE_GID1,
+   SERVICE_GID2,
+   SERVICE_SPN,
+   SERVICE_SDN,
+   SERVICE_EXT3,
+   SERVICE_RFU2,
+   SERVICE_VGCS,
+   SERVICE_VBS,
+   SERVICE_EMLPP,
+   SERVICE_AAEM,
+   SERVICE_DATA_DOWNLOAD_SMS_CB,
+   SERVICE_DATA_DOWNLOAD_SMS_PP,
+   SERVICE_MENU_SELECTION,
+   SERVICE_CALL_CONTROL,
+   SERVICE_PROACTIVE_SIM,
+   SERVICE_CBMIR,
+   SERVICE_BDN,
+   SERVICE_EXT4,
+   SERVICE_DCK,
+   SERVICE_CNL,
+   SERVICE_SMSR,
+   SERVICE_NW_IND_ALERT,
+   SERVICE_MO_SMS,
+   SERVICE_GPRS,
+   SERVICE_IMAGE,
+   SERVICE_SOLSA,
+   SERVICE_USSD,
+   SERVICE_RUN_AT_CMD,
+   SERVICE_PLMNWACT,
+   SERVICE_OPLMNWACT,
+   SERVICE_HPLMNWACT,
+   SERVICE_CPBCCH,
+   SERVICE_INVSCAN,
+   SERVICE_ECCP,
+   SERVICE_MEXE,
+   SERVICE_RFU,
+   SERVICE_PLMN_NAME,
+   SERVICE_OPLMN_LIST,
+   SERVICE_MAILBOX_DIAL_NUM,
+   SERVICE_MSG_WAIT_IND,
+   SERVICE_CALL_FWD_IND,
+   SERVICE_SP_DSPL_INFO,
+   SERVICE_MMS,
+   SERVICE_EXT8,
+   SERVICE_MMS_UCP,
+   SERVICE_EMPTY, /* 60 */
+   SERVICE_CSP,
+   SERVICE_SST,
+   SERVICE_MAILBOX_NUM,
+   SERVICE_OPNAME_SHORTFORM,
+   SERVICE_INFO_NUM,
+   SERVICE_END,
+   SERVICE_U_LOCAL_PHB,  // 1
+   SERVICE_U_FDN,
+   SERVICE_U_EXT2,
+   SERVICE_U_SDN,
+   SERVICE_U_EXT3,
+   SERVICE_U_BDN,
+   SERVICE_U_EXT4,
+   SERVICE_U_OCI_OCT,
+   SERVICE_U_ICI_ICT,
+   SERVICE_U_SMS,  // 10
+   SERVICE_U_SMSR,
+   SERVICE_U_SMSP,
+   SERVICE_U_AOC,
+   SERVICE_U_CCP,
+   SERVICE_U_CBMI,
+   SERVICE_U_CBMIR,
+   SERVICE_U_GID1,
+   SERVICE_U_GID2,
+   SERVICE_U_SPN,
+   SERVICE_U_PLMNWACT,  // 20
+   SERVICE_U_MSISDN,
+   SERVICE_U_IMG,
+   SERVICE_U_SOLSA,
+   SERVICE_U_EMLPP,
+   SERVICE_U_AAEM,
+   SERVICE_U_RFU,
+   SERVICE_U_GSM_ACCESS,
+   SERVICE_U_DATA_DOWNLOAD_SMS_PP,
+   SERVICE_U_DATA_DOWNLOAD_SMS_CB,
+   SERVICE_U_CALL_CONTROL,  // 30
+   SERVICE_U_SMS_CONTROL,
+   SERVICE_U_RUN_AT_CMD,
+   SERVICE_U_RFU_1,
+   SERVICE_U_EST,
+   SERVICE_U_ACL,
+   SERVICE_U_DCK,
+   SERVICE_U_CO_NWLIST,
+   SERVICE_U_GSM_SECURITY_CTX,
+   SERVICE_U_CPBCCH,
+   SERVICE_U_INVSCAN,  // 40
+   SERVICE_U_MEXE,
+   SERVICE_U_OPLMNWACT,
+   SERVICE_U_HPLMNWACT,
+   SERVICE_U_EXT5,
+   SERVICE_U_PLMN_NAME,
+   SERVICE_U_OPLMN_LIST,
+   SERVICE_U_MAILBOX_DIAL_NUM,
+   SERVICE_U_MSG_WAIT_IND,
+   SERVICE_U_CALL_FWD_IND,
+   SERVICE_U_RFU_2,  // 50
+   SERVICE_U_SP_DSPL_INFO,
+   SERVICE_U_MMS,
+   SERVICE_U_EXT8,
+   SERVICE_U_GPRS_CALL_CONTROL,
+   SERVICE_U_MMS_UCP,
+   SERVICE_U_NIA,
+   SERVICE_U_VGCS, //__R7_EHPLMN__ start
+   SERVICE_U_VBS,
+   SERVICE_U_PSEUDO, 
+   SERVICE_U_UPLMNWLAN,  // 60
+   SERVICE_U_OPLMNWLAN,
+   SERVICE_U_UWSIDL,
+   SERVICE_U_OWSIDL,
+   SERVICE_U_VGCS_SECURITY,
+   SERVICE_U_VBS_SECURITY,
+   SERVICE_U_WRI,
+   SERVICE_U_MULTIMEDIA_MSG_STORAGE,
+   SERVICE_U_GBA,
+   SERVICE_U_MBMS_SECURITY,
+   SERVICE_U_DATA_DOWNLOAD_USSD,  // 70
+   SERVICE_U_EHPLMN,   //__R7_EHPLMN__ end
+   SERVICE_U_ADDITIONAL_TERMINAL_PROFILE,
+   SERVICE_U_EHPLMNPI,
+   SERVICE_U_LRPLMNSI,
+   SERVICE_U_OMA_BCAST, //R8 __CSG_SUPPORT__ start  
+   SERVICE_U_GBA_LOCAL_KEY,
+   SERVICE_U_TERMINAL_AP,
+   SERVICE_U_SPNI,
+   SERVICE_U_PNNI,
+   SERVICE_U_CPIP,  // 80
+   SERVICE_U_HWSIDL, 
+   SERVICE_U_WEHPLMNPI, 
+   SERVICE_U_WHPI, 
+   SERVICE_U_WLRPLMN, 
+   SERVICE_U_EPS_MM_INFO, 
+   SERVICE_U_ACSGL,    //R8 __CSG_SUPPORT__ end
+   SERVICE_U_CC_EPS_PDN, //Call control on EPS PDN connection by USIM
+   SERVICE_U_HPLMNDA,
+   SERVICE_U_ECALL_DATA, //__ECALL_SUPPORT__
+   SERVICE_U_OCSGL,  // 90
+   SERVICE_U_SM_OVER_IP,
+   SERVICE_U_CSG_DISPLAY, 
+   SERVICE_U_COMM_CTRL_IMS,
+   SERVICE_U_EXT_TERMINAL_APP,
+   SERVICE_U_UICC_ACCESS_IMS,
+   SERVICE_U_NAS_CONFIG,  
+   SERVICE_U_PWS_CONFIG,
+   SERVICE_U_RFU_98,
+   SERVICE_U_URI_SUPPORT_BY_UICC,
+   SERVICE_U_EXT_EARFCN_SUPPORT, // 100
+   SERVICE_U_PROSE,
+   SERVICE_U_USAT_APPLICATION_PAIRING,
+   SERVICE_U_MEDIA_TYPE,
+   SERVICE_U_IMS_CALL_DISCONN_CAUSE,
+   SERVICE_U_URI_MO_SMS_CTRL,
+   SERVICE_U_EPDG_CONF_INFO_SUPPORT,
+   SERVICE_U_EPDG_CONF_INFO_CONF,
+   SERVICE_U_ACDC,
+   SERVICE_U_MCPTT,
+   SERVICE_U_EPDG_CONF_INFO_EMER_SERVICE_SUPPORT, // 110
+   SERVICE_U_EPDG_CONF_INFO_EMER_SERVICE_CONF,
+   SERVICE_U_ECALL_DATA_IMS,
+   SERVICE_U_URI_SMS_PP_DL,
+   SERVICE_U_FROM_PREFERRED,
+   SERVICE_U_IMS_CONF_DATA,
+   SERVICE_U_TV_CONF,
+   SERVICE_U_3GPP_PS_DATA_OFF,
+   SERVICE_U_3GPP_PS_DATA_OFF_SERVICE_LIST,
+   SERVICE_U_V2X,
+   SERVICE_U_XCAP_CONFIG_DATA,  // 120
+   SERVICE_U_EARFCN_LIST_FOR_MTC_NBIOT, // R15
+   SERVICE_U_5GS_MM_INFO,
+   SERVICE_U_5G_SECURITY_PARA,
+   SERVICE_U_SUB_ID_PRIVACY,
+   SERVICE_U_SUCI_CAL_BY_USIM,
+   SERVICE_U_UAC_ACCESS_ID,
+   SERVICE_U_CTRL_PLANE_STEERING_IN_VPLMN,
+   SERVICE_U_CALL_CONTROL_ON_PDU_SESSION,
+   SERVICE_U_5GS_OPL,   // 129
+   SERVICE_U_SUPI_TYPE_NSI, //130 Support for SUPI of type network specific identifier
+   SERVICE_U_PS_DATAOFF_HOME_ROAM_LIST, //131 3GPP PS Data Off separate Home and Roaming lists
+   SERVICE_U_URSP, //132 Support for URSP by USIM
+   SERVICE_U_5G_SEC_EXTENDED, //133 5G Security Parameters extended
+   SERVICE_U_MUD_MID_CONFIG, //134 MuD and MiD configuration data
+   SERVICE_U_END,
+
+   SERVICE_I_PCSCF,                                /* ISIM IST 1st Byte */
+   SERVICE_I_GBA,
+   SERVICE_I_HTTP_DIGEST,
+   SERVICE_I_GBA_LOCAL_KEY_EST,
+   SERVICE_I_PCSCF_DISCOVERY_IMS_LOCAL_BREAK_OUT,
+   SERVICE_I_SMS_STORAGE,
+   SERVICE_I_SMS_REPORT,
+   SERVICE_I_SMS_OVER_IP,
+
+   SERVICE_I_IMS_CC_BY_ISIM,                      /* IST 2nd Byte */
+   SERVICE_I_UICC_ACCESS_IMS,
+   SERVICE_I_URI_SUPPORT,
+   SERVICE_I_MEDIA_TYPE_SUPPORT,
+   SERVICE_I_IMS_CALL_DISCONNECT_CAUSE,
+   SERVICE_I_URI_SMS_CTRL,
+   SERVICE_I_MCPTT,
+   SERVICE_I_URI_SMSPP,
+
+   SERVICE_I_FROM_PREFERRED,                      /* IST 3rd Byte */
+   SERVICE_I_IMS_CONFIG_DATA,
+   SERVICE_I_XCAP_CONFIG_DATA,
+   SERVICE_I_END
+
+}sim_service_enum;
+
+typedef enum
+{
+   SERVICE_NOT_SUPPORT,
+   SERVICE_SUPPORT,
+   SERVICE_ALLOCATE,
+   SERVICE_UNDEFINED
+}sim_service_state_enum;
+
+typedef enum
+{
+   SIM_NOT_READY, /* initial state */
+   SIM_CARD_NOT_INSERTED, /* No SIM found after initialization */
+   NORMAL_SIM_PRESENCE, /* Normal SIM found after initialization */
+   TEST_SIM_PRESENCE, /* Test SIM found after initialization */
+   SIM_ERROR_SIM_PRESENCE  /* mtk80420: SIM hot swap */
+}sim_card_status_enum;
+
+typedef enum
+{
+   TYPE_NAA_INIT_AND_FULL_FILE_CHANGE,
+   TYPE_FILE_CHANGE,
+   TYPE_NAA_INIT_AND_FILE_CHANGE,
+   TYPE_NAA_INIT,
+   TYPE_SIM_RESET,
+   TYPE_NAA_APPLICATION_RESET,
+   TYPE_NAA_SESSION_RESET,
+   TYPE_STEERING_OF_ROAMING,
+   TYPE_STEERING_OF_ROAMING_FOR_IWLAN,
+   TYPE_EUICC_PROFILE_STATE_CHANGE,
+   TYPE_APP_UPDATE,
+   TYPE_NON_SAT_REFRESH = 0xFE, //[MAUI_01321308] mtk01612: for G+C
+   TYPE_REFRESH_INVALID = 0xFF
+}sat_refresh_type_enum;
+
+typedef enum
+{
+    SIM_INFO_ATR,
+    SIM_INFO_CDMA,
+    SIM_INFO_VOLTAGE,
+    SIM_INFO_LAST_APDU,
+    SIM_INFO_MAX
+}sim_query_info_enum;
+
+typedef enum
+{
+   SIM_ECALL_NONE,
+   SIM_ECALL_ONLY,
+   SIM_ECALL_AND_NORMAL,
+   SIM_ECALL_TEST_DISABLE //for ecall test simulation
+}sim_ecall_mode_enum;
+
+typedef enum
+{
+    GSMCDMA_DUALSIM_DISCONNECT,
+    GSMCDMA_DUALSIM_CONNECT
+}gsmcdma_dualsim_mode_enum;
+
+typedef enum
+{
+    DUALSIM_CMD_SUCCESS,
+    DUALSIM_CMD_FAIL_RESET_ABNORMAL,
+    DUALSIM_CMD_FAIL_CHVINFO_ABNORMAL,
+    DUALSIM_CMD_FAIL_DISCONNECT_NOT_ALLOWED,
+    DUALSIM_CMD_FAIL_CONNECT_NOT_ALLOWED,
+    DUAKSIM_CMD_FAIL_UNDEFINED_OPERATION,
+    DUALSIM_CMD_FAIL_PUK_STATE
+}gsmcdma_dualsim_result_enum;
+
+typedef enum
+{
+   VERIFY,
+   DISABLE,
+   ENABLE,
+   CHANGE,
+   UNBLOCK,
+   SUPER_VERIFY, //link_SML
+   RESTORE_LOCK, //link_SML
+}sim_security_operation_enum; /*[MAUI_03058435] mtk01612: move sim_security_operation_enum into this file due to HAL rule*/
+
+typedef enum
+{
+   TYPE_ONLY_DIGIT,         // mtk01488: digit only and sms default alphabet
+   TYPE_SMS_DEFAULT_SET,    // mtk01488: alphabet set and SMS default alphabet
+   TYPE_UCS2,               // mtk01488: alphabet set and UCS2 alphabet
+   TYPE_YES_NO,
+   TYPE_ONLY_DIGIT_UCS2     // mtk01488: digit only and UCS2 alphabet
+}sat_input_type_enum;
+
+typedef enum
+{
+   SAT_CMD_PERFORMED_SUCCESSFULLY = 0,
+   SAT_CMD_PERFORMED_WITH_PARTIAL_COMPREHENSION = 0X01,
+   SAT_CMD_PERFORMED_WITH_MISSING_INFO = 0X02,
+   SAT_REFRESH_PERFORMED_WITH_ADDITIONAL_EF_READ = 0X03,
+   SAT_CMD_PERFORMED_BUT_ICON_COULD_NOT_DSPL = 0X04,
+   SAT_CMD_PERFORMED_BUT_MODIFIED_CC_BY_SIM = 0X05,
+   SAT_CMD_PERFORMED_LIMITED_SERVICE = 0X06,
+   SAT_CMD_PERFORMED_WITH_MODIFIED = 0X07,
+   SAT_REFRESH_PERFORM_BUT_NAA_NOT_ACTIVE = 0X08,
+   SAT_PROACTIVE_CMD_TERMINATED_BY_USER = 0X10,
+   SAT_BACKWARD_MOVE_IN_PROACTIVE_SESSION_BY_USER = 0X11,
+   SAT_NO_RESPONSE_FROM_USER = 0X12,
+   SAT_HELP_INFO_REQUEST_BY_USER = 0X13,
+   SAT_USSD_SS_TRANSACTION_TERMINATION_BY_USER = 0X14,
+   SAT_ME_CURRENTLY_UNABLE_TO_PROCESS_CMD = 0X20,
+   SAT_NET_CURRENTLY_UNABLE_TO_PROCESS_CMD = 0X21,
+   SAT_USER_DID_NOT_ACCEPT_THE_PROACTIVE_CMD = 0X22,
+   SAT_USER_CLEAR_DOWN_CALL_BEFORE_CONNECTION_RELEASE = 0X23,
+   SAT_ACTION_IN_CONTRACTION_WITH_CURRENT_TIMER_STATE = 0X24,
+   SAT_INTERACTION_WITH_CALL_CTRL_BY_SIM_TEMPORARY_ERROR = 0X25,
+   SAT_LAUNCH_BROWER_GENERIC_ERROR_CODE = 0X26,
+   SAT_CMD_BEYOND_ME_CAP = 0X30,
+   SAT_CMD_TYPE_NOT_UNDERSTAND_BY_ME = 0X31,
+   SAT_CMD_DATA_NOT_UNDERSTAND_BY_ME = 0X32,
+   SAT_CMD_NUMBER_NOT_KNOWN_BY_ME = 0X33,
+   SAT_SS_RETURN_ERROR = 0X34,
+   SAT_SMS_RP_ERROR = 0X35,
+   SAT_ERROR_REQUIRED_VALUE_MISSING = 0X36,
+   SAT_USSD_RETURN_ERROR = 0X37,
+   SAT_MULTICARD_CMD_ERROR = 0X38,
+   SAT_INTERACTION_WITH_CALL_CTRL_BY_SIM_PERMANENT_ERROR = 0X39,
+   SAT_BEARER_INDEPENDENT_PROTOCOL_ERROR = 0X3A,
+
+   SAT_INVALID_TR_CAUSE = 0xFF
+}sat_terminal_res_enum;
+
+typedef enum
+{
+   SAT_NO_SPECIFIC_CAUSE,
+   SAT_SCREEN_BUSY,
+   SAT_ME_CURRENTLY_BUSY_ON_CALL,
+   SAT_ME_CURRENTLY_BUSY_ON_SS,
+   SAT_NO_SERVICE,
+   SAT_ACCESS_CTRL_CLASS_BAR,
+   SAT_RR_NOT_BRANTED,
+   SAT_NOT_IN_SPEECH_MODE,
+   SAT_ME_CURRENTLY_BUSY_ON_USSD,
+   SAT_ME_CURRENTLY_BUSY_ON_DTMF
+}sat_additional_info_for_res_enum;
+
+typedef enum
+{
+   SAT_LAUNCH_BROWSER_IF_NOT_ALREADY_LAUNCHED = 0x00,
+   SAT_USE_EXISTING_BROWSER = 0x02,
+   SAT_CLOSE_EXISTING_BROWSER_AND_LAUNCH_NEW = 0x03
+}sat_launch_browser_mode_enum;
+
+typedef enum
+{
+   SAT_LAUNCH_BROWSER_NO_SPECIFIC_CAUSE,
+   SAT_LAUNCH_BROWSER_BEARER_UNAVALIABLE,
+   SAT_LAUNCH_BROWSER_BROWSER_UNAVALIABLE,
+   SAT_LAUNCH_BROWSER_ME_UNABLE_TO_READ_PROVISION_DATA
+}sat_launch_browser_additional_info_for_res_enum;
+
+typedef enum
+{
+   SAT_BROWSER_USER_TERMINATION,
+   SAT_BROWSER_ERROR_TERMINATION
+}sat_browser_termination_mode_enum;
+
+/* proactive SIM command struct */
+typedef enum
+{
+   SETUP_CALL_IF_NO_ANOTHER_CALL,
+   SETUP_CALL_WITH_REDIAL_IF_NO_ANOTHER_CALL,
+   SETUP_CALL_PUT_ANOTHER_HOLD,    
+   SETUP_CALL_WITH_REDIAL_PUT_ANOTHER_HOLD,   
+   SETUP_CALL_DISCON_ANOTHER,    
+   SETUP_CALL_WITH_REDIAL_DISCON_ANOTHER   
+}sat_setup_call_condition_enum;
+
+typedef enum
+{
+   SAT_CALL_MEDIA_VOICE,
+   SAT_CALL_MEDIA_VIDEO
+} sat_call_media_type_enum;
+
+typedef enum
+{
+   SAT_OPERATION_CHANGED_BY_SIM,
+//   SAT_NUM_CHANGED_BY_SIM,
+   SAT_NUM_CHANGED_CALL_TO_CALL,
+   SAT_NUM_CHANGED_CALL_TO_SS,   
+   SAT_NUM_CHANGED_CALL_TO_USSD,   
+   SAT_NUM_CHANGED_SS_TO_CALL,   
+   SAT_NUM_CHANGED_SS_TO_SS,
+   SAT_NUM_CHANGED_SS_TO_USSD,   
+   SAT_NUM_CHANGED_USSD_TO_CALL,   
+   SAT_NUM_CHANGED_USSD_TO_SS,   
+   SAT_NUM_CHANGED_USSD_TO_USSD,   
+   SAT_NUM_CHANGED_SMS,   
+//   SAT_ALPHA_ID_IND,
+   SAT_CALL_NOT_ALLOWED,
+   SAT_SS_NOT_ALLOWED,
+   SAT_USSD_NOT_ALLOWED,
+   SAT_SMS_NOT_ALLOWED,
+   SIM_MEM_PROBLEM,
+   SIM_SECRET_CODE_REJ,
+   SIM_TECH_PROBLEM,
+   SAT_ALLOWED_NO_CHANGE   
+}sat_mmi_info_type_enum;
+
+typedef enum
+{
+   SAT_TONE_DIAL=0x01,
+   SAT_TONE_CALLED_SUBSCRIBER_BUSY=0x02,
+   SAT_TONE_CONGESTION=0x03,
+   SAT_TONE_RADIO_PATH_ACK=0x04,
+   SAT_TONE_RADIO_NO_PATH=0x05,
+   SAT_TONE_ERROR=0x06,
+   SAT_TONE_CALL_WAITING=0x07,
+   SAT_TONE_RING=0x08,
+   SAT_TONE_GENERAL_BEEP=0x10,
+   SAT_TONE_POS_ACK=0x11,
+   SAT_TONE_NEG_ACK=0x12
+}sat_tone_id_enum;
+
+typedef enum
+{
+
+    SIM_RESET_SMART_DETECTION,
+    SIM_RESET_USIM_PREFER,
+    SIM_RESET_SIM_PREFER
+} sim_reset_method_enum;
+
+typedef enum
+{
+    SAT_NW_REJ_LOCATION_INFO,
+    SAT_NW_REJ_ROUTE_AREA_ID,
+    SAT_NW_REJ_TRACK_AREA_ID
+} sat_nw_rej_info_enum;
+
+/* Update/Attach Type, clause 8.92 in TS 31.111 */
+typedef enum
+{
+    SAT_NW_REJ_TYPE_NORMAL_LU,                      /* 0x00: "Normal Location Update" for LOCATION UPDATING REQUEST */
+    SAT_NW_REJ_TYPE_PERIODIC_LU,                    /* 0x01: "Periodic Updating" for LOCATION UPDATING REQUEST */
+    SAT_NW_REJ_TYPE_IMSI_ATTACH,                    /* 0x02: "IMSI Attach" for LOCATION UPDATING REQUEST */
+    SAT_NW_REJ_TYPE_GPRS_ATTACH,                    /* 0x03: "GPRS Attach" for GPRS ATTACH REQUEST */
+    SAT_NW_REJ_TYPE_COMBINED_ATTACH,                /* 0x04: "Combined GPRS/IMSI Attach" for GPRS ATTACH REQUEST */
+
+    SAT_NW_REJ_TYPE_RAU,                            /* 0x05: "RA Updating" for ROUTING AREA UPDATE REQUEST */
+    SAT_NW_REJ_TYPE_COMBINED_RA_LAU,                /* 0x06: "Combined RA/LA Updating" for ROUTING AREA UPDATE REQUEST */
+    SAT_NW_REJ_TYPE_COMBINED_RA_LAU_WITH_IMSI,      /* 0x07: "Combined RA/LA Updating with IMSI Attach" for ROUTING AREA UPDATE REQUEST */
+    SAT_NW_REJ_TYPE_PERIODIC_RAU,                   /* 0x08: "Periodic Updating" for ROUTING AREA UPDATE REQUEST */
+
+    SAT_NW_REJ_TYPE_EPS_ATTACH,                     /* 0x09: "EPS Attach" for EMM ATTACH REQUEST */
+    SAT_NW_REJ_TYPE_COMBINED_EPS_IMSI_ATTACH,       /* 0x0A: "Combined EPS/IMSI Attach" for EMM ATTACH REQUEST */
+    SAT_NW_REJ_TYPE_TAU,                            /* 0x0B: "TA updating" for EMM TRACKING AREA UPDATE REQUEST */
+    SAT_NW_REJ_TYPE_COMBINED_TA_LAU,                /* 0x0C: "Combined TA/LA updating" for EMM TRACKING AREA UPDATE REQUEST */
+    SAT_NW_REJ_TYPE_COMBINED_TA_LAU_WITH_IMSI,      /* 0x0D: "Combined TA/LA updating with IMSI attach" for EMM TRACKING AREA UPDATE REQUEST */
+    SAT_NW_REJ_TYPE_PERIODIC_TAU,                   /* 0x0E: "Periodic updating" for EMM TRACKING AREA UPDATE REQUEST */
+
+    SAT_NW_REJ_TYPE_INIT_REG,                       /* 0x0F: "Initial Registration" for 5GMM REGISTRATION REQUEST */
+    SAT_NW_REJ_TYPE_MOBILITY_REG_UPDATE,            /* 0x10: "Mobility Registration Updating" for 5GMM REGISTRATION REQUEST */
+    SAT_NW_REJ_TYPE_PERIODIC_REG_UPDATE,            /* 0x11: "Periodic Registration Updating" for 5GMM REGISTRATION REQUEST */
+} sat_nw_rej_type_enum;
+
+/* UTRAN/E-UTRAN Measurement Qualifier, clause 8.73 in TS 31.111 */
+typedef enum
+{
+    SAT_NMR_UTRAN_INTRA_FRQ         = 0x01,         /* 0x01: UTRAN Intra-frequency measurements */
+    SAT_NMR_UTRAN_INTER_FRQ         = 0x02,         /* 0x02: UTRAN Inter-frequency measurements */
+    SAT_NMR_UTRAN_INTRAT_GSM        = 0x03,         /* 0x03: UTRAN Inter-RAT (GERAN) measurements */
+    SAT_NMR_UTRAN_INTRAT_EUTRAN     = 0x04,         /* 0x04: UTRAN Intra-RAT (E-UTRAN) measurements */
+    SAT_NMR_EUTRAN_INTRA_FRQ        = 0x05,         /* 0x05: E-UTRAN Intra-frequency measurements */
+    SAT_NMR_EUTRAN_INTER_FRQ        = 0x06,         /* 0x06: E-UTRAN Inter-frequency measurements */
+    SAT_NMR_EUTRAN_INTRAT_GSM       = 0x07,         /* 0x07: E-UTRAN Inter-RAT (GERAN) measurements */
+    SAT_NMR_EUTRAN_INTRAT_UTRAN     = 0x08,         /* 0x08: E-UTRAN Inter-RAT (UTRAN) measurements */
+    SAT_NMR_EUTRAN_INTRAT_NRRAN     = 0x09,         /* 0x09: E-UTRAN Inter-RAT (NRRAN) measurements */
+} sat_nmr_qual_enum;
+
+
+typedef enum
+{
+    SAT_PROFILE_DL_MT_DEFAULT,
+    SAT_PROFILE_DL_MT_TE,
+    SAT_PROFILE_DL_HALT,
+    SAT_PROFILE_DL_DISABLE = 0xFF
+}sat_profile_download_enum;
+
+typedef enum
+{
+    SAT_PROFILE_ACT_QUERY,
+    SAT_PROFILE_ACT_ENABLE_TE_FACILITY,
+    SAT_PROFILE_ACT_MT_DEFAULT,
+    SAT_PROFILE_ACT_MT_TE,
+
+    // Proprietary state to remember the profile download setting
+    SAT_PROFILE_ACT_DL_ME_DEFAULT = 0xD0,
+    SAT_PROFILE_ACT_WAIT_ENABLE_TE,
+    SAT_PROFILE_ACT_HALT,
+    SAT_PROFILE_ACT_DISABLE = 0xFF
+}sat_profile_activate_enum;
+
+typedef enum
+{
+    SAT_NORMAL_SEND,        /* send location info to SIM when field value updated */
+    SAT_FORCE_NOT_SEND,     /* from xMM not to send location info to SIM, RAC should not send to GMSS at all */
+    SAT_FORCE_SEND,         /* from xMM force send location info to SIM */
+} sat_loc_send_type_enum;
+
+typedef enum
+{
+   EXEMPT_USSI,
+   EXEMPT_MMTEL_VOICE,
+   EXEMPT_MMTEL_VIDEO,
+   EXEMPT_XCAP_CONFIG,
+   EXEMPT_SMSOIP,
+   EXEMPT_BIP,
+   EXEMPT_DEVICE_MANAGEMENT_OVER_PS,
+   /* R15 new exempt services */
+   EXEMPT_USSI_ROAMING = 8,
+   EXEMPT_MMTEL_VOICE_ROAMING,
+   EXEMPT_MMTEL_VIDEO_ROAMING,
+   EXEMPT_XCAP_CONFIG_ROAMING,
+   EXEMPT_SMSOIP_ROAMING,
+   EXEMPT_BIP_ROAMING,
+   EXEMPT_DEVICE_MANAGEMENT_OVER_PS_ROAMING,
+   EXEMPT_END
+} sim_ps_data_off_exempt_enum;
+
+typedef enum
+{
+   EXEMPT_NOT_SUPPORT,
+   EXEMPT_SUPPORT,
+   EXEMPT_UNAVAILABLE,
+   EXEMPT_UNDEFINED
+} sim_ps_data_off_exempt_state_enum;
+
+typedef enum
+{
+    SIM_IMMEDIATE_AUTH_AVAILABLE,    /* no authenticate ongoing */
+    SIM_IMMEDIATE_AUTH_SET,          /* authenticate_req is sent from MOD_EVAL through msg_send_to_head() */
+    SIM_IMMEDIATE_AUTH_PROCESSING    /* authenticate is under processing, can not handle another one */
+} sim_auth_flag_state_enum;
+
+#ifdef __TC10__
+typedef enum
+{
+    NO_CALL_CTRL = 0x00,
+    ALLOWED_WITHOUT_MODIFICATION,
+    NOT_ALLOWED,
+    ALLOWED_WITH_MODIFICATION
+}sat_call_ctrl_result_noti_enum;
+
+typedef enum
+{
+    SAT_VOICE_CALL = 0x00,
+    SAT_SMS_MO,
+    SAT_SS,
+    SAT_USSD,
+    SAT_PDP_CONTEXT,
+    SAT_NULL
+}sat_call_ctrl_type_noti_enum;
+#endif
+
+typedef enum
+{
+    GET_SUCI,
+    GET_IDENTITY_INVALID
+} sim_get_identity_type_enum;
+
+typedef enum
+{
+    SIM_IMSI_SUPI     = 0,
+    SIM_NAI_SUPI      = 1,
+    SIM_SUPI_INVALID
+} sim_supi_type_enum;
+
+#ifdef __SIM_PASS_THROUGH__
+typedef enum
+{
+    SIM_POWER_PLUG_OUT  = 0,
+    SIM_POWER_PLUG_IN   = 1,
+    SIM_POWER_PASS_THROUGH = 2,
+    SIM_POWER_DISABLED = 10,
+    SIM_POWER_ENABLED = 11,
+    SIM_POWER_MAX
+} sim_esimpower_state_enum;
+#endif
+#ifdef __SIM_ACCESS_INTEGRATION__
+typedef enum
+{
+    SIM_CMD_CGLA = 0,
+    SIM_CMD_CSIM = 1,
+    SIM_CMD_ECGLA = 2,
+    SIM_CMD_EXCGLA = 3,
+    SIM_CMD_INVALID = 0xFF
+} sim_generic_access_cmd_enum;
+#endif
+
+typedef enum
+{
+    /* type 0 ~ 3 are to disable multiple SIM */
+    SIM_CARD_TYPE_0 = 0,    /* 1st slot enabled, can be regular SIM or removable eSIM, other slots disabled */
+    SIM_CARD_TYPE_1,        /* 2nd slot enabled, disable other slots */
+    SIM_CARD_TYPE_2,        /* 1st slot enabled, valid for removable eSIM, other slots disabled */
+    SIM_CARD_TYPE_3,        /* 1st slot enabled, validfor regular SIM, other slots disabled */
+    /* type 4 ~ 6 are to enable multiple SIM */
+    SIM_CARD_TYPE_4,        /* 1st slot is removable eSIM, enable other slots */
+    SIM_CARD_TYPE_5,        /* 1st slot is regular SIM, enable other slots */
+    SIM_CARD_TYPE_6,        /* 1st slot can be regular SIM or removable eSIM, enable other slots */
+    SIM_CARD_TYPE_15 = 15   /* enable SIM slots as per modem supported configuration, same to type 6 */
+} sim_restrict_card_type_enum;
+
+typedef enum
+{
+    SAT_DATA_CONNECT_STATUS_SUCCESS = 0,
+    SAT_DATA_CONNECT_STATUS_REJECT = 1,
+    SAT_DATA_CONNECT_STATUS_DROPPED_OR_DEACTIVATED = 2,
+    SAT_DATA_CONNECT_STATUS_INVALID = 0xFF
+} sat_data_connection_status_enum;
+
+typedef enum
+{
+    SAT_DATA_CONNECT_TYPE_PDP = 0,
+    SAT_DATA_CONNECT_TYPE_PDN = 1,
+    SAT_DATA_CONNECT_TYPE_PDU = 2,
+    SAT_DATA_CONNECT_TYPE_INVALID = 0xFF
+} sat_data_connection_type_enum;
+
+typedef enum
+{
+    SAT_PDP_PDN_PDU_TYPE_IPV4 = 0,
+    SAT_PDP_PDN_PDU_TYPE_IPV6 = 1,
+    SAT_PDP_PDN_PDU_TYPE_IPV4V6 = 3,
+    SAT_PDP_PDN_TYPE_PPP = 4,
+    SAT_PDU_TYPE_UNSTRUCTURED = 4,
+    SAT_PDP_PDN_TYPE_NON_IP = 5,
+    SAT_PDU_TYPE_ETHERNET = 5,
+    SAT_PDP_PDN_PDU_TYPE_INVALID = 0xFF
+} sat_pdp_pdn_pdu_type_enum;
+
+#define SUCI_SCHEME_NULL  0
+
+/*mtk01612:  [MAUI_02023545] BT_SIM_Profile for MAUI and DUMA*/
+//#define APDU_REQ_MAX_LEN    261 /* 256 bytes for data + 5 bytes header information: CLA,INS,P1,P2,P3 */
+//#define APDU_RSP_MAX_LEN    258 /* 256 bytes for data + 2 bytes status word SW1 and SW2 */
+//#define ATR_MAX_LEN                40
+#define MAX_SAT_SIZE_OF_CCP (15+0) /* for L4A autogen to use macro directly */
+
+#define MAX_SUPPORT_RECORD_SIZE 255 /*at present, each record cannot be greater than 254 or 255 bytes in linear fixed/cyclic file */
+#define MAX_SUPPORT_RECORD_NUM  255 /*at present, no more than 254 or 255 records in linear fixed/cyclic file */
+#define CMD_HEADER_LEN      5 /* CLA,INS,P1,P2,P3 */
+/* MAUI_02953154 */
+
+#define usim_file_index_enum sim_file_index_enum
+
+/* MAUI_03041489 : for moveing sim_profile to custom folder */
+#ifdef __SAT_ADDITIONAL_LOCK__
+#define SAT_ADDITIONAL_TER_PROFILE 9
+#endif
+
+#if defined(__REL7__) || defined(__SATCL__) || defined(__SATCM__) || defined(__SATCR__) || defined(__SATCZ__) || defined(__SATCAA__)
+#define MAX_SIM_PROFILE_LEN      36
+#else
+#define MAX_SIM_PROFILE_LEN      18
+#endif
+
+/*If you changed MAX_SST_LEN value, must patch [MAUI_03169422] to avoid TST exception for mini log feature*/
+#define MAX_SST_LEN              17  //R4 max is 15 + 2 for cphs
+
+#define MAX_ECC_NUM_USIM         16
+
+/*If you changed USIM_SUPPORT_UST_LEN value, must patch [MAUI_03169422] to avoid TST exception for mini log feature*/
+// for R7 __R7_EHPLMN__ extend to 74  
+// for R8 __CSG_SUPPORT__ extend to 86 
+// for __ECALL_SUPPORT__ extend to 89
+// for R14 PS DATA OFF extend to 120
+// for R15 extend to 130
+#define USIM_SUPPORT_UST_LEN   17
+
+#define ISIM_SUPPORT_IST_LEN   4
+
+#define SUPPORT_SIM_TOTAL      (MAX_SIM_NUM)
+
+#define SIM_CACHE_ADM_HEAP_SIZE      10240
+
+#define MAX_LONG_CASE4_RSP_LEN   512
+
+#define SIM_OP_MAX_MCC_MNC_LEN 6
+#define SIM_OP_MAX_ICCID_IIN_LEN 4  /* Maximum Issuer ID number is 7 characters, 2 chars in 1 bytes */
+
+#define SIM_OP_ICCID_TABLE_END  {0xFF, 0xFF, 0xFF, 0xFF}
+#define SIM_OP_EHPLMN_TABLE_END "FFFFFF"
+#define SIM_OP_IMSI_TABLE_END   "FFFFFF"
+
+#define SIM_SUCI_HN_PK_DO_TAG 0xA0
+
+#define STK_SMS_BUFFER_LEN (256 * 2 + 32)
+
+#define LEN_OF_EID      16
+#ifdef __SIM_MULTI_PIN__
+#define SIM_MAX_PIN_DO_SIZE  255
+#endif
+#endif 
diff --git a/mcu/interface/protocol/general/sim_public_struct.h b/mcu/interface/protocol/general/sim_public_struct.h
new file mode 100644
index 0000000..30aa030
--- /dev/null
+++ b/mcu/interface/protocol/general/sim_public_struct.h
@@ -0,0 +1,460 @@
+/*****************************************************************************
+*  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).
+*
+*****************************************************************************/
+ /*******************************************************************************
+ *  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) 2001
+ *
+ *******************************************************************************/
+
+ /*******************************************************************************
+ * Filename:
+ * ---------
+ *   sim_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   SIM related message structure (outside PS)
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *******************************************************************************/
+#ifndef SIM_PUBLIC_STRUCT_H
+#define SIM_PUBLIC_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "sim_public_enum.h"
+#include "ps_public_struct.h"
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8  ef_imsi[9];
+} sim_ready_ind_struct;
+
+/* MAUI_01949579 mtk02374 20090903 for CTA GEMINI new bootup*/
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 src_id;
+} sim_reset_req_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 src_id;
+   kal_bool is_sim_inserted;
+   kal_bool is_sim_exist;  // For C2K fatcory mode detect SIM insert or not
+                           // Because for C2K project, UIM only or CSIM only or 3G CT card is_sim_inserted will be KAL_FALSE
+   kal_bool is_ct3g_sim_inserted;
+} sim_reset_cnf_struct;
+
+/*mtk01612:  [MAUI_02023545] BT_SIM_Profile for MAUI and DUMA*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+} bt_sim_connect_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 result;
+    kal_uint8 current_transport_protocol_type;
+    kal_uint8 supported_transport_protocol_type_capability;
+    kal_uint16 atr_len;
+    kal_uint8 atr[ATR_MAX_LEN];
+    kal_uint8 src_id;    
+} bt_sim_connect_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 transport_protocol_type;
+    kal_uint8 src_id;    
+} bt_sim_reset_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 result;
+    kal_uint8 current_transport_protocol_type;
+    kal_uint16 atr_len;
+    kal_uint8 atr[ATR_MAX_LEN];
+    kal_uint8 src_id;        
+    kal_uint8 supported_transport_protocol_type_capability;
+} bt_sim_reset_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 transport_protocol_type;
+    kal_uint16 apdu_req_len;
+    kal_uint8 apdu_req[APDU_REQ_MAX_LEN];
+    kal_uint8 src_id;    
+} bt_sim_apdu_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 result;
+    kal_uint16 apdu_rsp_len;
+    kal_uint8 apdu_rsp[APDU_RSP_MAX_LEN];
+    kal_uint8 src_id;    
+} bt_sim_apdu_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+} bt_sim_disconnect_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 result;
+    kal_uint8 src_id;
+} bt_sim_disconnect_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+} bt_sim_power_off_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 result;
+    kal_uint8 src_id;    
+} bt_sim_power_off_cnf_struct;
+
+typedef bt_sim_reset_req_struct bt_sim_power_on_req_struct;
+typedef bt_sim_reset_cnf_struct bt_sim_power_on_cnf_struct;
+
+/* MAUI_02953154 */
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_uint16 file_idx;
+   kal_uint16 para; /* Low byte(P1) is record index. High byte(P2) indicate search mode but now it's RFU, only support search forward from index P1 */
+   kal_uint8 access_id;
+   kal_uint8 path[6];   
+   kal_uint8 src_id;
+   kal_uint8 pattern_len; /* pattern data size is MAX_SUPPORT_RECORD_SIZE at most */
+   kal_uint8 data[MAX_SUPPORT_RECORD_SIZE+6];  /* max pattern data size + 6 bytes space for command header */
+   kal_uint8 sfi;
+} sim_search_record_req_struct;
+    
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_uint16 file_idx;   
+   kal_uint16 para;        
+   kal_uint8 access_id;  
+   kal_uint8 src_id;
+   kal_uint16 result; 
+   kal_uint16 status_word;   
+   kal_uint8 record_num;  /* number of pattern matched records. MAX_SUPPORT_RECORD_NUM at most */
+   kal_uint8 record[258]; /* max APDU response data size 256 + 2 bytes preserved for SIM dirver */
+} sim_search_record_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8   rand[16];
+    kal_bool    is_auth_present;
+    kal_uint8   auth[16];
+    kal_uint8   src_id; /*[MAUI_02602650] mtk01612: AT+EAUTH authentication through AT cmd*/
+    kal_uint8   trans_id; /*[ALPS02825711] NAS shall only use the CNF with the same trans_id of REQ.*/
+    uicc_auth_mode_enum mode;
+    kal_uint8   channel_id;
+    kal_uint8   command_len;
+    kal_uint8   command_data[256];
+} sim_authenticate_req_struct, sim_app_authenticate_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    sim_cmd_result_enum result;
+    kal_uint16 status_word;
+    kal_uint8   kc[8];
+    kal_uint8   sres[4];
+    kal_uint8   ck[16];
+    kal_uint8   ik[16];
+    kal_uint8   res[16];
+    kal_uint8   res_len;
+    kal_uint8   auts[16];
+    kal_uint8   auts_len;
+    kal_uint8   auth_res[256]; /*[MAUI_02602650] mtk01612: AT+EAUTH authentication through AT cmd. This should be the same as USIM_MAX_AUTHENTICATE_RSP_LEN */
+    kal_uint16  auth_res_len;  /*[MAUI_02602650] mtk01612: AT+EAUTH authentication through AT cmd.*/
+    kal_uint8   src_id; /*[MAUI_02602650] mtk01612: AT+EAUTH authentication through AT cmd.*/
+    kal_uint8   trans_id; /*[ALPS02825711] NAS shall only use the CNF with the same trans_id of REQ.*/
+} sim_authenticate_cnf_struct, sim_app_authenticate_cnf_struct;
+
+typedef struct{
+    kal_uint8 length;
+    kal_uint8 atr[ATR_MAX_LEN];
+}sim_atr_struct;
+
+typedef struct{
+    kal_bool is_sim_inserted;
+    kal_bool is_df_gsm_existed;
+    kal_bool is_df_cdma_existed;
+    kal_bool is_csim_app_existed;
+    kal_bool is_usim_app_existed;
+    kal_bool is_isim_app_existed;
+    kal_bool try_usim_success;
+    kal_bool try_sim_success;
+    kal_uint8 csim_aid_len;
+    kal_uint8 csim_aid[16];
+    kal_uint8 usim_aid_len;
+    kal_uint8 usim_aid[16];
+    kal_uint8 isim_aid_len;
+    kal_uint8 isim_aid[16];
+}sim_cdma_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    kal_uint16 card_type;
+    usim_logic_channel_enum USIMchan;
+    usim_logic_channel_enum ISIMchan;
+    kal_uint8 atr_length;
+    kal_uint8 atr[ATR_MAX_LEN];
+    kal_uint8 remote_sim_protocol_task;
+    kal_uint8 sim_slot_id;
+    kal_bool is_imsi_valid;
+    kal_uint8 imsi[9];
+    kal_bool sim_start_req;
+    kal_bool is_ad_valid;
+    kal_uint8 ad[4];
+    kal_bool is_iccid_valid;
+    kal_uint8 iccid[10];
+    kal_uint8 iccid_fcp_len;
+    kal_uint8 iccid_fcp[50];
+    kal_bool is_pl_valid;
+    kal_uint8 pl_len;
+    kal_uint8 pl[10];
+    kal_uint8 pl_fcp_len;
+    kal_uint8 pl_fcp[50];
+    kal_uint8 dir_record_size; // size of 1 record
+    kal_uint8 dir_record_num;
+    kal_uint8 dir_content[255];
+    sim_chv_info_struct chv_info;
+    kal_uint8 imsi_m_fcp_len;
+    kal_uint8 imsi_m_fcp[50];
+    // Is there valid PIN DO in the application USIM?
+    kal_bool is_usim_valid_pin_do;
+    // To info the task UIM if  the STARTUP_READ_FINISH_IND and APP INIT have to be sent in the task UIM or not
+    // KAL_TRUE: UIM DOESN'T NEED to send STARTUP_READ_FINISH_IND
+    // KAL_FALE: Default value. the task UIM keep the original logic
+    kal_bool is_start_finish_ind_noneeded;
+}sim_status_ind_struct;
+
+/* <modem_status>: 
+   0: only MD1 active 
+   1: MD1's RF is closed, but MD1's SIM task is still working only for MD3 SIM remote access and MD3 active 
+   2: both MD1 and MD3 active, but there is at least USIM application existed on the MD1's card 
+   <remote_sim_protocol_task>: 
+   0: MD3 access local card 
+   1: MD3 access MD1's SIM task1 
+   2: MD3 access MD1's SIM task2 */
+typedef struct{
+    LOCAL_PARA_HDR
+    kal_uint8 modem_status;
+    kal_uint8 remote_sim_protocol_task;
+}sim_mdstatus_update_req_struct;
+
+typedef union {
+    sim_atr_struct atr;
+    sim_cdma_struct cdma;
+	kal_uint8 sim_reset_volt; /* 1 = 5V, 2 = 3V. 3 = 1.8V */
+    kal_uint8 command_header[CMD_HEADER_LEN]; /* 5 bytes header information: CLA,INS,P1,P2,P3 */
+} sim_query_info_field;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    sim_query_info_enum info_id;
+} sim_query_info_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    sim_cmd_result_enum result;
+    sim_query_info_enum info_id;
+    sim_query_info_field info_data;
+} sim_query_info_cnf_struct;
+
+/* Skyroam Start */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_bool  is_apvsim_on;
+    kal_bool  is_apvsim_ready;
+} sim_set_apvsim_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    sim_cmd_result_enum result;
+} sim_set_apvsim_mode_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 atr_status;
+    kal_uint32 atr_length;
+    kal_uint8 atr[ATR_MAX_LEN];
+} sim_rsa_atr_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    sim_cmd_result_enum result;
+} sim_rsa_atr_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+} sim_rsa_reset_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint32 apdu_len;
+    kal_uint8 apdu[APDU_REQ_MAX_LEN];
+} sim_rsa_apdu_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    //kal_uint8 apdu_status;
+    kal_uint32 rsp_len;
+    kal_uint8 rsp[APDU_RSP_MAX_LEN];
+} sim_rsa_apdu_rsp_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id; 
+    sim_cmd_result_enum result;
+} sim_rsa_apdu_rsp_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+} sim_rsa_hot_plug_out_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    sim_cmd_result_enum result;
+} sim_rsa_hot_plug_out_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+} sim_rsa_hot_plug_in_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    sim_cmd_result_enum result;
+} sim_rsa_hot_plug_in_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 mode;
+} sim_rsa_power_down_ind_struct;
+/* Skyroam End */
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 config_bin_name[30];
+} sim_ut_set_config_bin_req_struct;
+
+typedef struct
+{
+    kal_bool repeat_mode;
+    kal_uint16 prefix_len;
+    kal_uint8 c_apdu_prefix[256];
+    kal_bool is_sw0000;
+} sim_ut_monitor_apdu_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 num_prefix;
+    sim_ut_monitor_apdu_struct monitor_capdu[5];
+} sim_ut_config_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 which_prefix;
+    kal_uint16 apdu_len;
+    kal_uint8 apdu[APDU_REQ_MAX_LEN];
+} sim_ut_capdu_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 rsp_len;
+    kal_uint8 rsp[256];
+    kal_uint16 status_word;
+} sim_ut_rapdu_rsp_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint16	src_id;		/* source module to send this request */
+	kal_uint8	mode;		/* 0 - query, 1 - set */
+	kal_uint8 	control;	/* 0 - disable multiple SIM, 1 - enable multiple SIM */
+	sim_restrict_card_type_enum card_type;
+} sim_restrict_card_type_req_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint16	src_id;		/* same to the value in request message */
+	kal_uint8	mode;		/* 0 - query, 1 - set */
+	kal_uint8 	control;	/* 0 - disable multiple SIM, 1 - enable multiple SIM */
+	sim_restrict_card_type_enum card_type;
+	kal_bool	result;
+} sim_restrict_card_type_cnf_struct;
+
+#endif
+
diff --git a/mcu/interface/protocol/general/sm2l4c_struct.h b/mcu/interface/protocol/general/sm2l4c_struct.h
new file mode 100644
index 0000000..ee21292
--- /dev/null
+++ b/mcu/interface/protocol/general/sm2l4c_struct.h
@@ -0,0 +1,110 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * SM2L4C_STRUCT.H
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file describes the common struct of SM and L4C.
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * 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 _SM2L4C_STRUCT_H
+#define _SM2L4C_STRUCT_H
+
+#include "kal_general_types.h"
+#include "irat_common_struct.h"
+#include "kal_public_defs.h"
+
+#endif // ~ _SM2L4C_STRUCT_H
+
+
diff --git a/mcu/interface/protocol/general/sml_public_def.h b/mcu/interface/protocol/general/sml_public_def.h
new file mode 100644
index 0000000..6119acd
--- /dev/null
+++ b/mcu/interface/protocol/general/sml_public_def.h
@@ -0,0 +1,623 @@
+/*****************************************************************************
+*  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).
+*
+*****************************************************************************/
+ /*******************************************************************************
+ *  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) 2001
+ *
+ *******************************************************************************/
+
+ /*******************************************************************************
+ * Filename:
+ * ---------
+ *   sml_public_def.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Enum and Constant provided by SIM-ME Lock
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *******************************************************************************/
+#ifndef SML_PUBLIC_DEF_H
+#define SML_PUBLIC_DEF_H
+
+#include "kal_public_defs.h"
+#include "sml_nvram_ver.h"
+
+/*--- SML related Macro Defined ---*/
+
+/* for MS_SECURITY */
+#define NVRAM_EDITOR_NUM_OF_BYTE_KEY     8
+#define NVRAM_EDITOR_NUM_OF_BYTE_NP      3
+#define NVRAM_EDITOR_NUM_OF_BYTE_NSP     5
+#define NVRAM_EDITOR_NUM_NSP             3
+#define NVRAM_EDITOR_NUM_GID            20
+#define NVRAM_EDITOR_NUM_OF_BYTE_IMSI    9
+#define NVRAM_EDITOR_NUM_PIN1            8
+#define NVRAM_EDITOR_NUM_OF_BYTE_ICCID  10
+#define NVRAM_SECRET_KEY_SIZE            8
+#define NVRAM_CUSTOM_KEY_SEED_SIZE      32
+
+/*
+ * the basic unit of categories
+ */
+#define SML_SIZE_OF_CAT_N      3 /* MCC/MNC */
+#define SML_SIZE_OF_CAT_NS     4 /* MCC/MNC + HLR */
+#define SML_SIZE_OF_CAT_SP     4 /* MCC/MNC + GID1 */
+#define SML_SIZE_OF_CAT_C      5 /* MCC/MNC + GID1 + GID2 */
+#define SML_SIZE_OF_CAT_SIM    8 /* IMSI */
+/* Define the maximum suppot categories */
+#define SML_MAX_SUPPORT_CAT_N       10
+#define SML_MAX_SUPPORT_CAT_NS       2
+#define SML_MAX_SUPPORT_CAT_SP       2
+#define SML_MAX_SUPPORT_CAT_C        2
+#define SML_MAX_SUPPORT_CAT_SIM      2
+/* Define the total size of each category */
+#define SML_CFG_CAT_N_SIZE          (SML_MAX_SUPPORT_CAT_N * SML_SIZE_OF_CAT_N)
+#define SML_CFG_CAT_NS_SIZE         (SML_MAX_SUPPORT_CAT_NS * SML_SIZE_OF_CAT_NS)
+#define SML_CFG_CAT_SP_SIZE         (SML_MAX_SUPPORT_CAT_SP * SML_SIZE_OF_CAT_SP)
+#define SML_CFG_CAT_C_SIZE          (SML_MAX_SUPPORT_CAT_C * SML_SIZE_OF_CAT_C)
+#define SML_CFG_CAT_SIM_SIZE        (SML_MAX_SUPPORT_CAT_SIM * SML_SIZE_OF_CAT_SIM)
+/* Define the support category size */
+#define SML_SUPPORT_CAT_SIZE    7 /* SML_CAT_SIZE in sml_cat_enum */
+
+#define NVRAM_SML_S_MAX_SUPPORT_SALT_LEN       32
+#define NVRAM_SML_S_MAX_SUPPORT_INTER_CNT_LEN   4
+#define NVRAM_SML_S_MAX_SUPPORT_HCK_LEN        64
+
+#define SML_GBLOB_IMEI_SIZE             15
+#define SML_GBLOB_TOTAL_IMEI_SIZE       SML_GBLOB_IMEI_SIZE * 4 //Support Max 4 SIM
+#define SML_GBLOB_SUB_RULE_SIZE          2
+#define SML_GBLOB_TLV_DATA_SIZE        256
+#define SML_GBLOB_SIZE_OF_MRC            4
+#define SML_GBLOB_SIZE_OF_DEV_INTCNT     4
+#define SML_GBLOB_SIZE_OF_DEV_SALT      32
+#define SML_GBLOB_SIZE_OF_DEV_HCK       64
+#define SML_GBLOB_SIZE_OF_SIGNATURE    256
+#define SML_GBLOB_SIZE_OF_PACKAGE_KEY 1024
+
+/* RJIL Subsidy Lock BLOB */
+#define SML_SL_BLOB_IMEI_SIZE                   15
+#define SML_SL_BLOB_TIME_STAMP_SIZE             8
+#define SML_SL_BLOB_LENGTH_SIZE                 2
+#define SML_SL_BLOB_CONFIG_SUPPORT_CAT_SIZE     3
+#define SML_SL_BLOB_ITERATION_COUNT_SIZE        4
+#define SML_SL_BLOB_SALT_SIZE                   16
+#define SML_SL_BLOB_HCK_SIZE                    32
+#define SML_SL_BLOB_SIZE_OF_SIGNATURE           256
+#define SML_SL_PUBLIC_KEY_MOD_SIZE              256
+#define SML_SL_PUBLIC_KEY_EXP_SIZE              3
+
+/* Invalid SML context obj length */
+#define SML_SL_INVALID_CONTEXT_OBJ_LENGTH       0xFFFF
+#define SML_SL_NVRAM_ACCESS_ID_NONE             0
+#define SML_SL_NVRAM_ACCESS_ID_UPDATE_SLB       0xFA
+#define SML_SL_NVRAM_ACCESS_ID_UPDATE_LOCK_OP   0xFB
+#define SML_SL_MAX_SUPPORT_KEY_LEN              16
+
+/*
+ * the basic unit of categories
+ */
+#define SML_SL_BLOB_SIZE_OF_CAT_N      6 /* MCC/MNC */
+#define SML_SL_BLOB_SIZE_OF_CAT_NS     8 /* MCC/MNC + HLR */
+#define SML_SL_BLOB_SIZE_OF_CAT_SP     7 /* MCC/MNC + GID1 */
+
+/* Define the maximum suppot categories */
+#define SML_SL_BLOB_MAX_SUPPORT_CAT_N      30
+#define SML_SL_BLOB_MAX_SUPPORT_CAT_NS     10
+#define SML_SL_BLOB_MAX_SUPPORT_CAT_SP     10
+
+/* Define the total size of each category */
+#define SML_SL_BLOB_CAT_N_SIZE          (SML_SL_BLOB_MAX_SUPPORT_CAT_N * SML_SL_BLOB_SIZE_OF_CAT_N)
+#define SML_SL_BLOB_CAT_NS_SIZE         (SML_SL_BLOB_MAX_SUPPORT_CAT_NS * SML_SL_BLOB_SIZE_OF_CAT_NS)
+#define SML_SL_BLOB_CAT_SP_SIZE         (SML_SL_BLOB_MAX_SUPPORT_CAT_SP * SML_SL_BLOB_SIZE_OF_CAT_SP)
+
+#define SML_SL_MAX_BLOB_SIZE             NVRAM_EF_SUBSIDY_LOCK_SIZE
+
+#define DSML_MAX_BL_LEN                  128 /* should larger then max category data */
+
+/*
+ * Key management behavior
+ *
+ * the maximum control key length in bcd, i.e., double in digits
+ * this value shall not be smaller than MAX_SIM_PASSWD_LEN-1, which is the maximum length of PIN
+ */
+#ifdef __EXTEND_SML_KEY_LEN__
+#define SML_MAX_SUPPORT_KEY_LEN     16
+#else
+#define SML_MAX_SUPPORT_KEY_LEN     8 /* in byte */
+#endif
+
+#define CAT_KEY_MAX_SUPPORT_LEN NVRAM_SML_S_MAX_SUPPORT_HCK_LEN
+
+/* NVRAM_SML_MAX_SUPPORT_KEY_LEN is the largest value of SML_MAX_SUPPORT_KEY_LEN 
+   used by NVRAM LID NVRAM_EF_SML_LID to prevent from NVRAM content size change
+   when __EXTEND_SML_KEY_LEN__ is switched.
+   Pleaes remember to align this value to the maximal SML_MAX_SUPPORT_KEY_LEN
+ */
+#define NVRAM_SML_MAX_SUPPORT_KEY_LEN   16
+
+/*
+ * Linked Category Support
+ */
+#define SML_SIZE_OF_LINK_NS_SP          5  /* MCC/MNC + HLR+ GID1 */
+#define SML_SIZE_OF_LINK_SIM_C          10 /* IMSI + GID1 + GID2 */
+/* Define the maximum support num of categories */
+#define SML_MAX_SUPPORT_LINK_NS_SP      2
+#define SML_MAX_SUPPORT_LINK_SIM_C      2
+/* define the total size of link category */
+#define SML_CFG_CAT_NS_SP_SIZE          (SML_SIZE_OF_LINK_NS_SP * SML_MAX_SUPPORT_LINK_NS_SP)
+#define SML_CFG_CAT_SIM_C_SIZE          (SML_SIZE_OF_LINK_SIM_C * SML_MAX_SUPPORT_LINK_SIM_C)
+
+/*
+ * Range Support
+ */
+#define SML_CAT_NS_RANGE_SIZE           2   /* ex: 00FF 0~255 for HLR */
+
+/*
+ * Automatically Lock
+ */
+#define SML_AUTOLOCK_NUM_N_CATEGORY     SML_MAX_SUPPORT_CAT_N
+#define SML_AUTOLOCK_NUM_NS_CATEGORY    SML_MAX_SUPPORT_CAT_NS
+#define SML_AUTOLOCK_NUM_SP_CATEGORY    SML_MAX_SUPPORT_CAT_SP
+#define SML_AUTOLOCK_NUM_C_CATEGORY     SML_MAX_SUPPORT_CAT_C
+#define SML_AUTOLOCK_NUM_SIM_CATEGORY   SML_MAX_SUPPORT_CAT_SIM
+
+/*
+ * Maximum Retry Count
+ */
+#define SML_MAX_RETRY_COUNT             5
+#define SML_RETRY_TIMEOUT               3 /* in sec */
+#define SML_RETRY_COUNT_N_CAT           SML_MAX_RETRY_COUNT
+#define SML_RETRY_COUNT_NS_CAT          SML_MAX_RETRY_COUNT
+#define SML_RETRY_COUNT_SP_CAT          SML_MAX_RETRY_COUNT
+#define SML_RETRY_COUNT_C_CAT           SML_MAX_RETRY_COUNT
+#define SML_RETRY_COUNT_SIM_CAT         SML_MAX_RETRY_COUNT
+
+// Penalty timer timeout
+#define SML_PENALTY_TIMER_TIMEOUT       60 /* Define in Seconds. Set default 60 */
+
+// Penalty timer bitmask
+#define SML_ENABLE_PENALTY_TIMER_BIMASK 	0x10
+
+#if !defined(L1_SIM) || defined(__UE_SIMULATOR__) || defined(__DUMMY_L1_ON_TARGET_4G5G__)
+#include "cust_chl_interface.h"
+
+#define SML_TMO_MAX_SHARED_KEY_LENGTH       MAX_CUST_CHL_SYM_KEY_LEN
+#define SML_TMO_MAX_ENCRYPTED_KEY_LENGTH    MAX_CUST_CHL_ASYM_KEY_LEN
+#define SML_ATT_MAX_SHARED_KEY_LENGTH       MAX_CUST_CHL_SYM_KEY_LEN
+#define SML_ATT_MAX_ENCRYPTED_KEY_LENGTH    MAX_CUST_CHL_ASYM_KEY_LEN
+
+#endif /* L1_SIM */
+
+/* The following size are referend from TMO SIM lock blob format */
+#define SML_TMO_SIZE_OF_API_VERSION         4
+#define SML_TMO_SIZE_OF_VERSION             4
+#define SML_TMO_SIZE_OF_LENGTH              2
+#define SML_TMO_SIZE_OF_MCC_MNC             4
+#define SML_TMO_SIZE_OF_GID                 2
+#define SML_TMO_SIZE_OF_MCC_MNC_GID         6
+#define SML_TMO_SIZE_OF_RESERVED            2
+#define SML_TMO_SIZE_OF_START_TIME          8
+#define SML_TMO_SIZE_OF_END_TIME            4
+#define SML_TMO_SIZE_OF_VERIFICATION_CODE   256
+
+#define SML_TMO_SIZE_OF_MAC                 32
+#define SML_TMO_SIZE_OF_SIGNATURE           256
+
+#define SML_TMO_MAX_SLB_SIZE                NVRAM_EF_SIM_LOCK_SIZE
+
+/* TMO SIM lock blob format 1.5 */
+#define SML_TMO_MAX_PLMN_NUMBER             10
+#define SML_TMO_MAX_GID_NUMBER              10
+#define SML_TMO_SIZE_OF_NUM_PLMN            2
+#define SML_TMO_SIZE_OF_PLMN_LIST           SML_TMO_SIZE_OF_MCC_MNC * SML_TMO_MAX_PLMN_NUMBER
+#define SML_TMO_SIZE_OF_NUM_GID             2
+#define SML_TMO_SIZE_OF_GID_LIST            SML_TMO_SIZE_OF_GID * SML_TMO_MAX_GID_NUMBER
+#define SML_TMO_SIZE_OF_IMEI                16
+#define SML_TMO_SIZE_OF_UNLOCK_TIME         4
+
+/* Invalid SML context obj length */
+#define SML_TMO_INVALID_CONTEXT_OBJ_LENGTH                0xFFFF
+#define SML_TMO_NVRAM_ACCESS_ID_UPDATE_VERIFICATION_CODE  0xFD
+#define SML_TMO_NVRAM_ACCESS_ID_UPDATE_SLB                0xFC
+#define SML_TMO_NVRAM_ACCESS_ID_RESET_SLB                 0xFB
+#define SML_TMO_NVRAM_ACCESS_ID_UNLOCK_EXPIRE             0xFA
+#define SML_TMO_TIMEOUT_PERIODIC_CHECK                    (KAL_TICKS_1_SEC*10)//(12*60*KAL_TICKS_1_MIN)     /* 12 hours */
+#define SML_RSU_TIMER_INDEX_PERIODIC_CHECK                0x01
+
+/* the SML flags */
+#define SML_FLAG_CAT_N             0x01
+#define SML_FLAG_CAT_NS            0x02
+#define SML_FLAG_CAT_SP            0x04
+#define SML_FLAG_CAT_C             0x08
+#define SML_FLAG_CAT_SIM           0x10
+
+typedef struct {
+    kal_uint8 change_flag;
+    kal_uint8 num;                      /* num of valid sets */
+} sml_sl_blob_meta_struct;
+
+typedef struct {
+    kal_uint8 iteration_count[SML_SL_BLOB_ITERATION_COUNT_SIZE];    /* 4 */
+    kal_uint8 salt[SML_SL_BLOB_SALT_SIZE];                          /* 16 */
+    kal_uint8 hck[SML_SL_BLOB_HCK_SIZE];                            /* 32 */
+} sml_sl_blob_key_struct;
+
+/* The following size are referend from ATT SIM lock blob format */
+#define SML_ATT_SIZE_OF_API_VERSION         4
+#define SML_ATT_SIZE_OF_VERSION             4
+#define SML_ATT_SIZE_OF_LENGTH              2
+#define SML_ATT_SIZE_OF_MCC_MNC             4
+#define SML_ATT_SIZE_OF_GID                 2
+#define SML_ATT_SIZE_OF_MCC_MNC_GID         6
+#define SML_ATT_SIZE_OF_RESERVED            2
+#define SML_ATT_SIZE_OF_START_TIME          8
+#define SML_ATT_SIZE_OF_END_TIME            4
+#define SML_ATT_SIZE_OF_VERIFICATION_CODE   256
+#define SML_ATT_SIZE_OF_MAC                 32
+#define SML_ATT_SIZE_OF_SIGNATURE           256
+#define SML_ATT_MAX_SLB_SIZE                NVRAM_EF_L4_ATT_SIM_LOCK_SIZE
+
+/* ATT SIM lock blob format 1.5 */
+#define SML_ATT_MAX_PLMN_NUMBER             10
+#define SML_ATT_MAX_GID_NUMBER              10
+#define SML_ATT_SIZE_OF_NUM_PLMN            2
+#define SML_ATT_SIZE_OF_PLMN_LIST           SML_ATT_SIZE_OF_MCC_MNC * SML_ATT_MAX_PLMN_NUMBER
+#define SML_ATT_SIZE_OF_NUM_GID             2
+#define SML_ATT_SIZE_OF_GID_LIST            SML_ATT_SIZE_OF_GID * SML_ATT_MAX_GID_NUMBER
+#define SML_ATT_SIZE_OF_IMEI                16
+#define SML_ATT_SIZE_OF_UNLOCK_TIME         4
+
+/* Invalid SML context obj length */
+#define SML_ATT_INVALID_CONTEXT_OBJ_LENGTH                0xFFFF
+#define SML_ATT_NVRAM_ACCESS_ID_UPDATE_VERIFICATION_CODE  0xED
+#define SML_ATT_NVRAM_ACCESS_ID_UPDATE_SLB                0xEC
+#define SML_ATT_NVRAM_ACCESS_ID_RESET_SLB                 0xEB
+#define SML_ATT_NVRAM_ACCESS_ID_UNLOCK_EXPIRE             0xEA
+#define SML_ATT_TIMEOUT_PERIODIC_CHECK                    (KAL_TICKS_1_SEC*10)//(12*60*KAL_TICKS_1_MIN)     /* 12 hours */
+
+typedef struct {
+    kal_uint8   version[SML_ATT_SIZE_OF_VERSION];                       /* 4 */
+    kal_uint8   protection_scheme;                                      /* 1 */
+    kal_uint8   state;                                                  /* 1 */
+    kal_uint8   length[SML_ATT_SIZE_OF_LENGTH];                         /* 2 */
+    kal_uint8   num_of_plmn[SML_ATT_SIZE_OF_NUM_PLMN];                  /* 2 */
+    kal_uint8   plmn_list[SML_ATT_SIZE_OF_PLMN_LIST];                   /* N = 4 x plmn count */
+    kal_uint8   num_of_gid[SML_ATT_SIZE_OF_NUM_GID];                    /* 2 */
+    kal_uint8   gid_list[SML_ATT_SIZE_OF_GID_LIST];                     /* M = 2 x gid count */
+    kal_uint8   reserved[SML_ATT_SIZE_OF_RESERVED];                     /* 2 */
+    kal_uint8   start_time[SML_ATT_SIZE_OF_START_TIME];                 /* 8 */
+    kal_uint8   end_time[SML_ATT_SIZE_OF_END_TIME];                     /* 4 */
+    kal_uint8   imei[SML_ATT_SIZE_OF_IMEI];                             /* 16 */
+    kal_uint8   verification_code[SML_ATT_SIZE_OF_VERIFICATION_CODE];   /* 256 */
+    kal_uint8   unlock_time[SML_ATT_SIZE_OF_UNLOCK_TIME];               /* 4 */
+} sml_att_context_struct;                                               /* 42 + N + M + 256 + 4*/
+typedef sml_att_context_struct nvram_sml_att_context_struct;
+
+typedef struct {
+    kal_uint8   major_version;
+    kal_uint8   minor_version;
+    kal_uint8   protection_algorithm;
+    kal_uint8   lock_operation;
+    kal_uint8   imei[SML_SL_BLOB_IMEI_SIZE];                                /* 15 */
+    kal_uint8   time_stamp[SML_SL_BLOB_TIME_STAMP_SIZE];                    /* 8 */
+    kal_uint8   length[SML_SL_BLOB_LENGTH_SIZE];                            /* 2 */
+    sml_sl_blob_meta_struct    cat[SML_SL_BLOB_CONFIG_SUPPORT_CAT_SIZE];    /* (3 * 2) */
+    sml_sl_blob_key_struct  key[SML_SL_BLOB_CONFIG_SUPPORT_CAT_SIZE];       /* (3 * 52) */
+    kal_uint8   code_cat_n[SML_SL_BLOB_CAT_N_SIZE];                         /* (30 * 6) */
+    kal_uint8   code_cat_ns[SML_SL_BLOB_CAT_NS_SIZE];                       /* (10 * 8) */
+    kal_uint8   code_cat_sp[SML_SL_BLOB_CAT_SP_SIZE];                       /* (10 * 7) */
+    kal_uint8   signature[SML_SL_BLOB_SIZE_OF_SIGNATURE];                   /* 256 */
+} sml_sl_blob_context_struct;
+typedef sml_sl_blob_context_struct nvram_sml_sl_blob_context_struct;
+
+typedef struct {
+    kal_uint8   public_key_mod[SML_SL_PUBLIC_KEY_MOD_SIZE];         /* 256 */
+    kal_uint8   public_key_exp[SML_SL_PUBLIC_KEY_EXP_SIZE];         /* 3 */
+} sml_sl_odm_data_struct;
+typedef sml_sl_odm_data_struct nvram_sml_sl_odm_data_struct;
+
+typedef enum
+{
+    SML_INPUT_FORMAT_CATKEY_UNKNOWN,
+    SML_INPUT_FORMAT_CATKEY_BCD,
+    SML_INPUT_FORMAT_CATKEY_ASCII,
+} sml_input_format_of_catkey_for_algo_enum;
+
+
+typedef struct {
+    kal_uint8    max_retry_count[SML_SUPPORT_CAT_SIZE];
+} sml_max_retry_count_struct;
+typedef sml_max_retry_count_struct nvram_sml_max_retry_count_struct;
+
+typedef struct {
+    kal_uint8   major_version;
+    kal_uint8   minor_version;
+    kal_uint8   device_lock_state;
+    kal_uint8   imei[SML_GBLOB_TOTAL_IMEI_SIZE];                     /*  15 * 4 */
+    kal_uint8   sml_lock_type;
+    kal_uint8   sml_lock_sub_type[SML_GBLOB_SUB_RULE_SIZE];
+#if GBLOB_LID_VER >= 3
+    kal_uint8   cust_code;      /* sml_lock_cust_code_enum */
+    kal_uint8   cust_rule;      /* sml_lock_cust_rule_enum */
+#endif
+    kal_uint8   tlv_data[SML_GBLOB_TLV_DATA_SIZE];                   /* 256 */
+    kal_uint8   dev_protection_algo;
+    kal_uint8   dev_max_retry_cnt[SML_GBLOB_SIZE_OF_MRC];            /*   4 */
+    kal_uint8   dev_remain_retry_cnt[SML_GBLOB_SIZE_OF_MRC];         /*   4 */
+    kal_uint8   device_interation_cnt[SML_GBLOB_SIZE_OF_DEV_INTCNT]; /*   4 */
+    kal_uint8   device_salt[SML_GBLOB_SIZE_OF_DEV_SALT];             /*  32 */
+    kal_uint8   device_hck[SML_GBLOB_SIZE_OF_DEV_HCK];               /*  64 */
+    kal_uint8   sig_protection_algo;
+    kal_uint8   signature[SML_GBLOB_SIZE_OF_SIGNATURE];              /* 256 */
+} sml_gblob_s_context_struct;
+typedef sml_gblob_s_context_struct nvram_sml_gblob_s_context_struct;
+
+typedef struct {
+    kal_uint8   key[SML_GBLOB_SIZE_OF_PACKAGE_KEY];                 /* 1024 */
+} sml_gblob_key_s_context_struct;
+typedef sml_gblob_key_s_context_struct nvram_sml_gblob_key_s_context_struct;
+
+/* For converting R1 SML structure to R2 */
+typedef struct {
+    kal_uint8 state;                    /* sml_state_enum */
+    kal_uint8 retry_count;              /* SML_RETRY_COUNT_X_CAT */
+    kal_uint8 autolock_count;           /* SML_AUTOLOCK_NUM_X_CAT */
+    kal_uint8 num;                      /* num of valid sets */
+} sml_category_meta_r1_struct;
+
+typedef struct {
+    kal_uint8 state;    /* Default Value or NULL */
+    kal_uint8 key[8]; //actual data length is SML_MAX_SUPPORT_KEY_LEN
+} sml_control_key_r1_struct;
+
+typedef struct {
+    kal_uint32  magic_head;                                 /* 4 */
+    sml_category_meta_r1_struct cat[SML_SUPPORT_CAT_SIZE];  /* (4 * 7) */
+    sml_control_key_r1_struct   key[SML_SUPPORT_CAT_SIZE];  /* (9 * 7) */
+    kal_uint8   code_cat_n[SML_CFG_CAT_N_SIZE];             /* (30 * 3)*/
+    kal_uint8   code_cat_ns[SML_CFG_CAT_NS_SIZE];           /* (30 * 4)*/
+    kal_uint8   code_cat_sp[SML_CFG_CAT_SP_SIZE];           /* (30 * 4)*/
+    kal_uint8   code_cat_c[SML_CFG_CAT_C_SIZE];             /* (30 * 5)*/
+    kal_uint8   code_cat_sim[SML_CFG_CAT_SIM_SIZE];         /* (30 * 8)*/
+    kal_uint8   code_cat_ns_sp[SML_CFG_CAT_NS_SP_SIZE];     /* (5 * 10)*/
+    kal_uint8   code_cat_sim_c[SML_CFG_CAT_SIM_C_SIZE];     /* (10 * 10)*/
+    kal_uint8   range_cat_ns[SML_CAT_NS_RANGE_SIZE];        /* 2 */
+    kal_uint32 magic_tail;                                  /* 4 */
+} sml_r1_context_struct;                                       /* 971 */
+
+typedef struct {
+    kal_uint8   version[SML_TMO_SIZE_OF_VERSION];                       /* 4 */
+    kal_uint8   protection_scheme;                                      /* 1 */
+    kal_uint8   state;                                                  /* 1 */
+    kal_uint8   length[SML_TMO_SIZE_OF_LENGTH];                         /* 2 */
+    kal_uint8   num_of_plmn[SML_TMO_SIZE_OF_NUM_PLMN];                  /* 2 */
+    kal_uint8   plmn_list[SML_TMO_SIZE_OF_PLMN_LIST];                   /* N = 4 x plmn count */
+    kal_uint8   num_of_gid[SML_TMO_SIZE_OF_NUM_GID];                    /* 2 */
+    kal_uint8   gid_list[SML_TMO_SIZE_OF_GID_LIST];                     /* M = 2 x gid count */
+    kal_uint8   reserved[SML_TMO_SIZE_OF_RESERVED];                     /* 2 */
+    kal_uint8   start_time[SML_TMO_SIZE_OF_START_TIME];                 /* 8 */
+    kal_uint8   end_time[SML_TMO_SIZE_OF_END_TIME];                     /* 4 */
+    kal_uint8   imei[SML_TMO_SIZE_OF_IMEI];                             /* 16 */
+    kal_uint8   verification_code[SML_TMO_SIZE_OF_VERIFICATION_CODE];   /* 256 */
+    kal_uint8   unlock_time[SML_TMO_SIZE_OF_UNLOCK_TIME];               /* 4 */
+} sml_tmo_context_struct;                                               /* 42 + N + M + 256 + 4*/
+typedef sml_tmo_context_struct nvram_sml_tmo_context_struct;
+
+#if defined(NVRAM_AUTO_GEN)
+extern const nvram_sml_tmo_context_struct NVRAM_EF_SML_TMO_DEFAULT;
+extern const nvram_sml_att_context_struct NVRAM_EF_L4_SML_ATT_DEFAULT;
+#endif
+
+
+typedef struct {
+    kal_uint32 nonce_length;
+    kal_uint8 nonce[256];
+} sml_uulk_nonce_struct;
+typedef sml_uulk_nonce_struct nvram_ef_sml_nonce_struct;
+
+typedef struct {
+    kal_uint8 unlock_code;
+} sml_uulk_unlock_code_struct;
+typedef sml_uulk_unlock_code_struct nvram_ef_sml_unlock_code_struct;
+
+typedef struct {
+    kal_uint32 signature_length;
+    kal_uint8 signature[256];
+} sml_uulk_signature_struct;
+typedef sml_uulk_signature_struct nvram_ef_sml_signature_struct;
+
+
+/* The maximum size of Response Message according VZW RSU SPEC is
+   major version        :1 byte
+   minor version        :1 byte
+   protection alg       :1 byte
+   network lock op      :1 byte
+   imei                 :15 bytes
+   timestamp            :8 bytes
+   length               :2 bytes (size of following fields, including Signature)
+   category lock data   :? bytes
+   signature            :256 bytes
+
+   possible maximum length is (1+1+1+1+15+8+2+65535)
+*/
+#define MAX_VZW_RSU_RSP_SIZE 1024
+
+typedef enum {
+    SML_VZW_RSU_UNLOCK_TIMER_SUCCESS    = 0,
+    SML_VZW_RSU_UNLOCK_TIMER_FAIL       = 1,
+    SML_VZW_RSU_UNLOCK_TIMER_EXPIRED    = 3, //defined by VZW RSU SPEC
+} sml_vzw_rsu_unlock_timer_resp_enum;
+
+typedef enum {
+    SML_ES_ID_VZW_RSU,
+    SML_ES_ID_TMO_PERIODIC_CHECK, //shall be equal to SML_TMO_TIMER_INDEX_PERIODIC_CHECK
+	SML_ES_ID_PENALTY_TIMER,
+    SML_ES_ID_MAX_NUM   
+} sml_es_id_enum;
+
+typedef enum {
+    SMU_VZW_RSU_STOP_DELAY_TIMER,
+    SMU_VZW_RSU_START_DELAY_TIMER   
+} smu_vzw_rsu_delay_timer_op_enum;
+
+typedef enum {
+    SML_VZW_DISALLOW_TEMP_UNLOCK_CAUSE_NONE,
+    SML_VZW_DISALLOW_TEMP_UNLOCK_HAS_EXPIRED,
+    SML_VZW_DISALLOW_TEMP_UNLOCK_HAS_STARTED,
+} sml_vzw_rsu_disallow_temp_unlock_cause_enum;
+
+
+#ifdef __CARRIER_RESTRICTION__
+
+/* Carrier Restriction */
+/* Basic unit of categories */
+#define SMU_CARRIER_MATCH_SIZE_OF_CAT_N              3  /* MCC/MNC */
+#define SMU_CARRIER_MATCH_SIZE_OF_CAT_SPN            23 /* MCC/MNC + SPN(20) */
+#define SMU_CARRIER_MATCH_SIZE_OF_CAT_IMSI_PREFIX    4  /* MCC/MNC + HLR */
+#define SMU_CARRIER_MATCH_SIZE_OF_CAT_GID1           4  /* MCC/MNC + GID1 */
+#define SMU_CARRIER_MATCH_SIZE_OF_CAT_GID2           4  /* MCC/MNC + GID2 */
+
+/* Define the maximum supported categories */
+#define SMU_CARRIER_MATCH_MAX_SUPPORT_CAT_N            5
+#define SMU_CARRIER_MATCH_MAX_SUPPORT_CAT_SPN          5
+#define SMU_CARRIER_MATCH_MAX_SUPPORT_CAT_IMSI_PREFIX  5
+#define SMU_CARRIER_MATCH_MAX_SUPPORT_CAT_GID1         5
+#define SMU_CARRIER_MATCH_MAX_SUPPORT_CAT_GID2         5
+
+/* Define the total size of each category */
+#define SMU_CARRIER_MATCH_CFG_CAT_N_SIZE            (SMU_CARRIER_MATCH_MAX_SUPPORT_CAT_N * SMU_CARRIER_MATCH_SIZE_OF_CAT_N)
+#define SMU_CARRIER_MATCH_CFG_CAT_SPN_SIZE          (SMU_CARRIER_MATCH_MAX_SUPPORT_CAT_SPN * SMU_CARRIER_MATCH_SIZE_OF_CAT_SPN)
+#define SMU_CARRIER_MATCH_CFG_CAT_IMSI_PREFIX_SIZE  (SMU_CARRIER_MATCH_MAX_SUPPORT_CAT_IMSI_PREFIX * SMU_CARRIER_MATCH_SIZE_OF_CAT_IMSI_PREFIX)
+#define SMU_CARRIER_MATCH_CFG_CAT_GID1_SIZE         (SMU_CARRIER_MATCH_MAX_SUPPORT_CAT_GID1 * SMU_CARRIER_MATCH_SIZE_OF_CAT_GID1)
+#define SMU_CARRIER_MATCH_CFG_CAT_GID2_SIZE         (SMU_CARRIER_MATCH_MAX_SUPPORT_CAT_GID2 * SMU_CARRIER_MATCH_SIZE_OF_CAT_GID2)
+
+/* Define the support category size */
+#define SMU_CARRIER_MATCH_SUPPORT_CAT_SIZE          5 /* SMU_CARRIER_MATCH_CAT_SIZE in sml_carrier_match_cat_enum */
+
+typedef enum {
+    SMU_CARRIER_MATCH_CAT_N,
+    SMU_CARRIER_MATCH_CAT_SPN,
+    SMU_CARRIER_MATCH_CAT_IMSI_PREFIX,
+    SMU_CARRIER_MATCH_CAT_GID1,
+    SMU_CARRIER_MATCH_CAT_GID2,
+    SMU_CARRIER_MATCH_CAT_SIZE
+} smu_carrier_match_cat_enum;
+
+/* General lock structure */
+typedef struct {
+    kal_uint8 num;                      /* num of valid sets */
+} smu_carrier_match_category_meta_struct;
+
+/* General control key structure */
+typedef struct {
+    kal_uint8 state;
+    kal_uint8 algo;
+    kal_uint32 max_retry_count;
+    kal_uint32 retry_count;
+    kal_uint8 salt[NVRAM_SML_S_MAX_SUPPORT_SALT_LEN];
+    kal_uint8 iter_cnt[NVRAM_SML_S_MAX_SUPPORT_INTER_CNT_LEN];
+    kal_uint8 key[NVRAM_SML_S_MAX_SUPPORT_HCK_LEN];
+} smu_carrier_match_control_key_struct;
+
+typedef enum {
+    SMU_CARRIER_RESTRICTION_ENABLED,
+    SMU_CARRIER_RESTRICTION_DISABLED
+} smu_carrier_restriction_state_enum;
+
+typedef enum {
+    SMU_CARRIER_RESTRICTION_MULTI_SIM_POLICY_NONE,
+    SMU_CARRIER_RESTRICTION_ONE_VALID_SIM_MUST_BE_PRESENT
+} smu_carrier_restriction_multi_sim_policy_enum;
+
+typedef struct {
+    smu_carrier_match_category_meta_struct    cat[SMU_CARRIER_MATCH_SUPPORT_CAT_SIZE];  /* (5 * 1) */
+    kal_uint8   code_cat_n[SMU_CARRIER_MATCH_CFG_CAT_N_SIZE];             /* (5 * 3) */
+    kal_uint8   code_cat_spn[SMU_CARRIER_MATCH_CFG_CAT_SPN_SIZE];         /* (5 * 23)*/
+    kal_uint8   code_cat_imsi_prefix[SMU_CARRIER_MATCH_CFG_CAT_IMSI_PREFIX_SIZE];       /* (5 * 4)*/
+    kal_uint8   code_cat_gid1[SMU_CARRIER_MATCH_CFG_CAT_GID1_SIZE];       /* (5 * 4)*/
+    kal_uint8   code_cat_gid2[SMU_CARRIER_MATCH_CFG_CAT_GID2_SIZE];       /* (5 * 4)*/
+}smu_carrier_restriction_list_struct;
+
+typedef struct {
+    kal_uint32                                magic_head;
+    smu_carrier_match_control_key_struct      key;
+    smu_carrier_restriction_list_struct       black_list;
+    smu_carrier_restriction_list_struct       white_list;
+    kal_uint8                                 allow_all;
+    smu_carrier_restriction_state_enum        carrier_rest_state;
+    kal_uint8                                 allowed_carriers_prioritized;
+    kal_uint8                                 multi_sim_policy;
+    kal_uint32                                magic_tail;
+} smu_carrier_match_context_struct;
+typedef smu_carrier_match_context_struct nvram_smu_carrier_match_context_struct;
+
+typedef enum
+{
+   CRRST_INPUT_FORMAT_CATKEY_UNKNOWN,
+   CRRST_INPUT_FORMAT_CATKEY_BCD,
+   CRRST_INPUT_FORMAT_CATKEY_ASCII,
+} crrst_input_format_of_catkey_for_algo_enum;
+
+/* carrier restriction: magic numbers of file header and tail */
+#define SML_CARRIER_RESTRICTION_MAGIC_HEAD_VALUE   (sizeof(smu_carrier_match_context_struct))
+#define SML_CARRIER_RESTRICTION_MAGIC_TAIL_VALUE   0x26598088
+
+#endif /* __CARRIER_RESTRICTION__ */
+
+#ifdef __MBIM_MS_NETWORK_BLACKLIST__
+#define MAX_NW_BLACK_LIST  50
+
+#define SML_MS_SIM_BLACK_LIST_SIZE (MAX_NW_BLACK_LIST*3)
+
+typedef struct {
+    kal_uint8 num_of_black_list;
+    kal_uint8 black_list[SML_MS_SIM_BLACK_LIST_SIZE];
+}smu_ms_sim_black_list_context_struct;
+typedef smu_ms_sim_black_list_context_struct nvram_smu_ms_sim_black_list_context_struct;
+#endif
+#endif /* SML_PUBLIC_DEF_H */
diff --git a/mcu/interface/protocol/general/smsal2soc_struct.h b/mcu/interface/protocol/general/smsal2soc_struct.h
new file mode 100644
index 0000000..b64400b
--- /dev/null
+++ b/mcu/interface/protocol/general/smsal2soc_struct.h
@@ -0,0 +1,143 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * SMSAL2SOC_STRUCT.H
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file describes the common struct of SMSAL and SOC.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _SMSAL2SOC_STRUCT_H
+#define _SMSAL2SOC_STRUCT_H
+
+#include "mnsms_struct.h"
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+typedef struct
+{
+   LOCAL_PARA_HDR  
+
+   sms_addr_struct sc_addr; /* service centre address*/
+   sms_addr_struct oa_addr; /* original address*/
+   
+   kal_uint16 dest_port; 
+   kal_uint16 src_port;
+   kal_uint8  dcs;
+
+   /* for single sms, seg/total_seg=1 */
+   kal_uint8  seg;
+   kal_uint16 concat_ref;
+   kal_uint8  total_seg;
+
+} smsal_soc_data_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR  
+   
+   kal_int32  port; 
+   kal_uint16 mod_id;
+   kal_bool   is_reg;
+   kal_uint8  access_id;
+
+} smsal_soc_reg_port_req_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR  
+   
+   kal_bool   result;
+   kal_bool is_reg;
+   kal_uint16 cause;
+   kal_uint8  access_id;
+
+} smsal_soc_reg_port_cnf_struct;
+
+#endif /* _SMSAL2SOC_STRUCT_H */
+
+
diff --git a/mcu/interface/protocol/general/smsal_peer_struct.h b/mcu/interface/protocol/general/smsal_peer_struct.h
new file mode 100644
index 0000000..3bb640a
--- /dev/null
+++ b/mcu/interface/protocol/general/smsal_peer_struct.h
@@ -0,0 +1,267 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * smsal_peer_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is for packing and unpacking of SMS-TL peer message.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * 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.
+*
+********************************************************************************/
+
+/*******************************************************************************
+*  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) 2002
+*
+*******************************************************************************
+ *  FILENAME : smsal_peer_struct.h
+ *  SYNOPSIS : Functions for encoding/decoding.
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef _SMSAL_PEER_STRUCT_H
+#define _SMSAL_PEER_STRUCT_H
+
+#include "kal_general_types.h"
+
+typedef struct {
+    kal_uint8 fill_bits2; /* always set to zero*/
+    kal_uint8 udh_p; /* indicates the presence of
+                                             user data header*/
+    kal_uint8 fill_bits1; /* always set to zero*/
+    kal_uint8 msg_type; /* deliver report type*/
+    kal_uint8 fail_cause;
+    kal_uint8 params_p; /* depicts presence of
+                                               optional parameters*/
+    kal_uint8 pid; /* to be bit-wise encoded*/
+    kal_uint8 dcs; /* to be bit-wise encoded*/
+    kal_uint8 user_data_len;
+    kal_uint8 no_user_data;
+    kal_uint8 user_data_size;
+    kal_uint8 *user_data; /* can include user data header*/
+} smsal_deliver_report_nack_peer_struct;
+
+typedef struct {
+    kal_uint8 fill_bits2; /* always set to zero*/
+    kal_uint8 udh_p; /* indicates the presence of
+                                             user data header*/
+    kal_uint8 fill_bits1; /* always set to zero*/
+    kal_uint8 msg_type; /* deliver report type*/
+    kal_uint8 params_p; /* depicts presence of
+                                               optional parameters*/
+    kal_uint8 pid; /* to be bit-wise encoded*/
+    kal_uint8 dcs; /* to be bit-wise encoded*/
+    kal_uint8 user_data_len;
+    kal_uint8 no_user_data;
+    kal_uint8 user_data_size;
+    kal_uint8 *user_data; /* can include user data header*/
+} smsal_deliver_report_ack_peer_struct;
+
+typedef struct {
+    kal_uint8 reply_flag; /* whether reply is sought*/
+    kal_uint8 udh_p; /* indicates presence of
+                                             user data header*/
+    kal_uint8 status_rep_flag; /* whether status reports
+                                             are sought*/
+    kal_uint8 vp_flag; /* indicates presence of
+                                             validity period*/
+    kal_uint8 rej_dup_flag;
+    kal_uint8 msg_type; /* sms submit*/
+    kal_uint8 msg_ref; /* to be read from SIM*/
+    kal_uint8 no_dest_addr;
+    kal_uint8 dest_addr_size;
+    kal_uint8 *dest_addr; /* assumed to be
+                                                         byte-packed*/
+    kal_uint8 pid; /* to be bit-wise encoded*/
+    kal_uint8 dcs; /* to be bit-wise encoded*/
+    kal_uint8 no_validity_period;
+    kal_uint8 validity_period_size;
+    kal_uint8 *validity_period; /* to be
+                                                       bit/byte-wise 
+                                                       encoded, cannot 
+                                                       be even represnted 
+                                                       using CHOICE*/
+    kal_uint8 user_data_len;
+    kal_uint8 no_user_data;
+    kal_uint8 user_data_size;
+    kal_uint8 *user_data; /* can have user data header also*/
+} smsal_submit_peer_struct;
+
+typedef struct {
+    kal_uint8 reply_flag; /* whether reply is sought*/
+    kal_uint8 udh_p; /* indicates presence of
+                                             user data header*/
+    kal_uint8 status_rep_flag; /* whether status reports
+                                               are sought*/
+    kal_uint8 fill_bits; /* to be ignored*/
+    kal_uint8 mms; /* more message to send*/
+    kal_uint8 msg_type; /* sms deliver*/
+    kal_uint8 no_orig_addr;
+    kal_uint8 orig_addr_size;
+    kal_uint8 *orig_addr; /* assumed to be
+                                                         byte-packed*/
+    kal_uint8 pid; /* to be bit-wise decoded*/
+    kal_uint8 dcs; /* to be bit-wise decoded*/
+    kal_uint8 scts[7];
+    kal_uint8 user_data_len;
+    kal_uint8 no_user_data;
+    kal_uint8 user_data_size;
+    kal_uint8 *user_data; /* can have user data header also*/
+} smsal_deliver_peer_struct;
+
+typedef struct {
+    kal_uint8 fill_bits2; /* to be ignored*/
+    kal_uint8 udh_p; /* indicates presence of
+                                             user data header*/
+    kal_uint8 fill_bits1; /* to be ignored*/
+    kal_uint8 msg_type; /* sms submit report*/
+    kal_uint8 fail_cause;
+    kal_uint8 params_p; /* depicts presence of
+                                               optional params*/
+    kal_uint8 scts[7];
+    kal_uint8 pid; /* to be bit-wise decoded*/
+    kal_uint8 dcs; /* to be bit-wise decoded*/
+    kal_uint8 user_data_len;
+    kal_uint8 no_user_data;
+    kal_uint8 user_data_size;
+    kal_uint8 *user_data; /* can have user data header also*/
+} smsal_submit_report_nack_peer_struct;
+
+typedef struct {
+    kal_uint8 fill_bits2; /* to be ignored*/
+    kal_uint8 udh_p; /* indicates presence of
+                                             user data header*/
+    kal_uint8 fill_bits1; /* to be ignored*/
+    kal_uint8 msg_type; /* sms submit report*/
+    kal_uint8 params_p; /* depicts presence of
+                                               optional parameters*/
+    kal_uint8 scts[7];
+    kal_uint8 pid; /* to be bit-wise decoded*/
+    kal_uint8 dcs; /* to be bit-wise decoded*/
+    kal_uint8 user_data_len;
+    kal_uint8 no_user_data;
+    kal_uint8 user_data_size;
+    kal_uint8 *user_data; /* can have user data header also*/
+} smsal_submit_report_ack_peer_struct;
+
+typedef struct {
+    kal_uint8 fill_bits1; /* to be ignored*/
+    kal_uint8 udh_p; /* indicates presence of
+                                              user data header*/
+    kal_uint8 status_rep_type; /* sms command or sms
+                                              submit*/
+    kal_uint8 fill_bits2; /* to be ignored*/
+    kal_uint8 mms;
+    kal_uint8 msg_type; /* sms status report*/
+    kal_uint8 msg_ref;
+    kal_uint8 no_rcpnt_addr;
+    kal_uint8 rcpnt_addr_size;
+    kal_uint8 *rcpnt_addr;
+    kal_uint8 scts[7];
+    kal_uint8 dis_time[7];
+    kal_uint8 status; /* actual status of submit*/
+    kal_uint8 params_p; /* depicts presence of
+                                                optional parameters*/
+    kal_uint8 pid; /* to be bit-wise decoded*/
+    kal_uint8 dcs; /* to be bit-wise decoded*/
+    kal_uint8 user_data_len;
+    kal_uint8 no_user_data;
+    kal_uint8 user_data_size;
+    kal_uint8 *user_data; /* can have user data header also*/
+} smsal_status_report_peer_struct;
+
+typedef struct {
+    kal_uint8 fill_bits1; /* to be ignored*/
+    kal_uint8 udh_p; /* indicates presence of user data header*/
+    kal_uint8 status_rep_req;
+    kal_uint8 fill_bits3; /* to be ignored*/
+    kal_uint8 msg_type; /* sms command*/
+    kal_uint8 msg_ref; /* TP-MR*/
+    kal_uint8 pid; /* TP-PID*/
+    kal_uint8 cmd_type; /* TP-CT*/
+    kal_uint8 msg_num; /* TP-MN*/
+    kal_uint8 no_dest_addr;
+    kal_uint8 dest_addr_size;
+    kal_uint8 *dest_addr; /* TP-DA*/
+    kal_uint8 cmd_data_len; /* TP-CDL*/
+    kal_uint8 no_cmd_data;
+    kal_uint8 cmd_data_size;
+    kal_uint8 *cmd_data; /* TP-CD*/
+} smsal_command_peer_struct;
+#endif 
+
+
diff --git a/mcu/interface/protocol/general/smslib.h b/mcu/interface/protocol/general/smslib.h
new file mode 100644
index 0000000..d53ec0a
--- /dev/null
+++ b/mcu/interface/protocol/general/smslib.h
@@ -0,0 +1,95 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * smslib.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file contains all the necessary xxxx.h
+ *
+ * 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!
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef _SMSLIB_H
+#define _SMSLIB_H
+
+#include "smslib_enum.h"
+#include "smslib_def.h"
+#include "smslib_decode.h"
+#include "smslib_encode.h"
+#include "smslib_others.h"
+
+extern smslib_status_enum smslib_decode_pdu(kal_uint8 *, kal_uint8, smslib_general_struct *);
+extern smslib_status_enum smslib_get_msg_content(kal_uint8, smslib_general_struct *, l4_addr_bcd_struct *);
+extern smslib_status_enum smslib_dealloc_sms_struct(smslib_general_struct *ptr_g);
+
+#endif
diff --git a/mcu/interface/protocol/general/smslib_def.h b/mcu/interface/protocol/general/smslib_def.h
new file mode 100644
index 0000000..56d5ddc
--- /dev/null
+++ b/mcu/interface/protocol/general/smslib_def.h
@@ -0,0 +1,540 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * smslib_def.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file contains definition
+ *
+ * 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!
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef _SMSLIB_DEF_H
+#define _SMSLIB_DEF_H
+
+#if defined(__SMS_STORAGE_BY_MMI__)
+
+
+#include "smslib_enum.h"
+#include "kal_general_types.h"
+#include "ps_public_struct.h"
+
+#define SMSLIB_MTI_BITS                 (0x03)
+#define SMSLIB_MAX_CC_ADDR_LEN          (41)    // = MAX_CC_ADDR_LEN
+#define SMSLIB_ADDR_LEN                 (11)
+#define SMSLIB_ONE_MSG_OCTET            (140)
+#define SMSLIB_ONE_REPORT_MSG_OCTET     (143)
+#define SMSLIB_MAX_MSG_LEN              (160)
+#define SMSLIB_MAX_REPORT_MSG_LEN       (163)
+#define SMSLIB_INVALID_PORT_NUM         (-1)
+#define SMSLIB_TP_ADDR2_L4_ADDR_LEN(x)  (((x+1)/2)+1)
+#define SMSLIB_CUSTOM_WILD_CHAR '?'
+
+/*------------------------------
+ * Length of SIM EF
+ *------------------------------*/
+#define SMSLIB_SMS_STATUS_LEN     (2)   /* length of a EFsmss */
+#define SMSLIB_SMS_LEN            (176) /* length of a SIM EFsms record */
+#define SMSLIB_SMS_ME_LEN         (184) /* length of a ME EFsms record +7 byte SCT +1 pad */
+#define SMSLIB_SMSP_LEN           (28)  /* length of a EFsmsp record */
+#ifdef __CPHS__
+#define SMSLIB_MWF_LEN            (1)
+#endif
+#define SMSLIB_EXT_LEN            (13)  /* length of a SIM EFext1/6 record */
+#define SMSLIB_MAILBOX_NUM_LEN    (14)
+
+#ifdef __REL6__
+    #ifdef __SMS_R6_ENHANCED_VOICE_MAIL__
+#define SMSLIB_MAX_MW_SOURCE      (4)
+    #else
+#define SMSLIB_MAX_MW_SOURCE      (3)
+    #endif
+#else
+#define SMSLIB_MAX_MW_SOURCE      (3)
+#endif
+
+/*--------------------------------------------
+ * Length of SMS peer message header (part)
+ *--------------------------------------------*/
+/* fo(1), pid(1), dcs(1), scts(7), udl(1), oa_len(1), oa_type(1) */
+#define SMSLIB_PART_OF_DELIVER_HEADER_LEN     (13)
+
+/* fo(1), mr(1), pid(1), dcs(1), udl(1), da_len(1), da_type(1) */
+#define SMSLIB_PART_OF_SUBMIT_HEADER_LEN      (7)
+
+/* fo(1), mr(1), ra_len(1), ra_type(1), scts(7), dt(7) */
+#define SMSLIB_PART_OF_REPORT_HEADER_LEN      (19)  //ToCheck
+
+
+/*------------------------------------
+ * Information Element Identifier
+ *------------------------------------*/
+#define SMSLIB_CONC8_MSG_IEI         (0x00)
+#define SMSLIB_CONC16_MSG_IEI        (0x08)
+#define SMSLIB_SPECIAL_MSG_IND_IEI   (0x01)
+#define SMSLIB_ENHANCED_VM_INFO_IEI  (0x23)
+
+
+#if defined (__CPHS__) /* NEW */
+/*-------------------------------------
+ * For CPHS Voice Mail Indication
+ *-------------------------------------*/
+#define SMSLIB_CPHS_VM_ADDR_TYPE  (0xd0)
+#define SMSLIB_CPHS_VM_SET_BITS   (0x01)
+#define SMSLIB_CPHS_VM_IND_BITS   (0x0e)
+#define SMSLIB_CPHS_VM_LINE_BITS  (0x80)
+#endif
+
+/* SIM SMSP */
+#define SMSLIB_SMSP_DA_BITS    (0xfe)
+#define SMSLIB_SMSP_SCA_BITS   (0xfd)
+#define SMSLIB_SMSP_PID_BITS   (0xfb)
+#define SMSLIB_SMSP_DCS_BITS   (0xf7)
+#define SMSLIB_SMSP_VP_BITS    (0xef)
+
+/* EMS */
+#define SMSLIB_EMS_TEXT_FORMAT_IEI   (0x0a)   /* Text Formating */
+#define SMSLIB_EMS_PREDEF_SND_IEI    (0x0b)   /* Predefined Sound */
+#define SMSLIB_EMS_USER_DEF_SND_IEI  (0x0c)   /* User Defined Sound */
+#define SMSLIB_EMS_PREDEF_ANM_IEI    (0x0d)   /* Predefined Animation */
+#define SMSLIB_EMS_LARGE_ANM_IEI     (0x0e)   /* Large Animation */
+#define SMSLIB_EMS_SMALL_ANM_IEI     (0x0f)   /* Small Animation */
+#define SMSLIB_EMS_LARGE_PIC_IEI     (0x10)   /* Large Picture */
+#define SMSLIB_EMS_SMALL_PIC_IEI     (0x11)   /* Small Picture */
+#define SMSLIB_EMS_VAR_PIC_IEI       (0x12)   /* Variable Picture */
+
+/* MISC */
+#define SMSLIB_APP_PORT8_IEI         (0x04)   /* application port - 8 bit */
+#define SMSLIB_APP_PORT16_IEI        (0x05)   /* application port - 16 bit */
+#define SMSLIB_NL_SINGLE_IEI         (0x24)   /* National Language single shift */
+#define SMSLIB_NL_LOCKING_IEI        (0x25)   /* National Language looking shift */
+
+
+/*------------------------------
+ * Status byte in SMS
+ * RFU shall be set to zero !!
+ * 12/27/2002 Kevin
+ *------------------------------*/
+#define SMSLIB_UNUSED_MSG              (0x00)
+
+/* MT: Receive from network */
+#define SMSLIB_UNREAD_MSG              (0x03)
+#define SMSLIB_READ_MSG                (0x01)
+
+/* MO: Sent to network */
+#define SMSLIB_UNSENT_MSG              (0x07)
+#define SMSLIB_SENT_NO_SRR             (0x05)
+#define SMSLIB_SENT_SRR_NOT_RECV       (0x0d)
+#define SMSLIB_SENT_SRR_RECV_NOT_STO   (0x15)
+#define SMSLIB_SENT_SRR_RECV_STO       (0x1d)
+
+#define SMSLIB_DRAFT_MSG               (0x27)
+
+#ifdef __SMS_MSP_UP_TO_4__
+#define SMSLIB_MAX_MSP_NUM     4  //(max support msp)
+#ifdef __REL6__
+#define SMSLIB_MAX_MBDN_NUM    10 // 20 is too much, reduce to 10
+#else
+#define SMSLIB_MAX_MBDN_NUM    10 // 16 is too much, reduce to 10
+#endif
+#else //__SMS_MSP_UP_TO_4__
+#define SMSLIB_MAX_MSP_NUM     2 //(max support msp)
+#ifdef __REL6__
+#define SMSLIB_MAX_MBDN_NUM    10 //(5 * SMSAL_MAX_MSP_NUM, max support mbdn)
+#else
+#define SMSLIB_MAX_MBDN_NUM    8 //(4 * SMSAL_MAX_MSP_NUM, max support mbdn)
+#endif
+#endif //__SMS_MSP_UP_TO_4__
+
+
+typedef struct
+{
+    kal_uint8   reply_flag;             /* whether reply is sought*/
+    kal_uint8   udh_p;                  /* indicates presence of
+                                           user data header*/
+    kal_uint8   status_rep_flag;        /* whether status reports
+                                           are sought*/
+    kal_uint8   fill_bits;              /* to be ignored*/
+    kal_uint8   mms;                    /* more message to send*/
+    kal_uint8   msg_type;               /* sms deliver*/
+    kal_uint8   no_orig_addr;
+    kal_uint8   orig_addr_size;         /* the max size of *orig_addr in octet*/
+    kal_uint8   *orig_addr;             /* assumed to be
+                                           byte-packed*/
+    kal_uint8   pid;                    /* to be bit-wise decoded*/
+    kal_uint8   dcs;                    /* to be bit-wise decoded*/
+    kal_uint8   scts[7];
+    kal_uint8   user_data_len;
+    kal_uint8   no_user_data;           /* 7-bit to octet */
+    kal_uint8   user_data_size;         /* the max size of *user_data in octet*/
+    kal_uint8   *user_data;             /* can have user data header also*/
+} smslib_deliver_peer_struct;
+
+typedef struct
+{
+    kal_uint8   reply_flag;             /* whether reply is sought*/
+    kal_uint8   udh_p;                  /* indicates presence of
+                                           user data header*/
+    kal_uint8   status_rep_flag;        /* whether status reports
+                                           are sought*/
+    kal_uint8   vp_flag;                /* indicates presence of
+                                           validity period*/
+    kal_uint8   rej_dup_flag;
+    kal_uint8   msg_type;               /* sms submit*/
+    kal_uint8   msg_ref;                /* to be read from SIM*/
+    kal_uint8   no_dest_addr;
+    kal_uint8   dest_addr_size;         /* the max size of *dest_addr in octet*/
+    kal_uint8   *dest_addr;             /* assumed to be
+                                           byte-packed*/
+    kal_uint8   pid;                    /* to be bit-wise encoded*/
+    kal_uint8   dcs;                    /* to be bit-wise encoded*/
+    kal_uint8   no_validity_period;
+    kal_uint8   validity_period_size;
+    kal_uint8   *validity_period;       /* to be
+                                           bit/byte-wise
+                                           encoded, cannot
+                                           be even represnted
+                                           using CHOICE*/
+    kal_uint8   user_data_len;
+    kal_uint8   no_user_data;           /* 7-bit to octet */
+    kal_uint8   user_data_size;         /* the max size of *user_data in octet*/
+    kal_uint8   *user_data;             /* can have user data header also*/
+} smslib_submit_peer_struct;
+
+typedef struct
+{
+    kal_uint8   fill_bits1;             /* to be ignored*/
+    kal_uint8   udh_p;                  /* indicates presence of
+                                           user data header*/
+    kal_uint8   status_rep_type;        /* sms command or sms
+                                           submit*/
+    kal_uint8   fill_bits2;             /* to be ignored*/
+    kal_uint8   mms;
+    kal_uint8   msg_type;               /* sms status report*/
+    kal_uint8   msg_ref;
+    kal_uint8   no_rcpnt_addr;
+    kal_uint8   rcpnt_addr_size;        /* the max size of *rcpnt_addr in octet*/
+    kal_uint8   *rcpnt_addr;
+    kal_uint8   scts[7];
+    kal_uint8   dis_time[7];
+    kal_uint8   status;                 /* actual status of submit*/
+    kal_uint8   params_p;               /* depicts presence of
+                                           optional parameters*/
+    kal_uint8   pid;                    /* to be bit-wise decoded*/
+    kal_uint8   dcs;                    /* to be bit-wise decoded*/
+    kal_uint8   user_data_len;
+    kal_uint8   no_user_data;           /* 7-bit to octet */
+    kal_uint8   user_data_size;         /* the max size of *user_data in octet*/
+    kal_uint8   *user_data;             /* can have user data header also*/
+} smslib_status_report_peer_struct;
+
+typedef struct 
+{
+    kal_uint8 addr_length;
+    kal_uint8 addr_bcd[11];
+} smslib_addr_struct;   //TP Addr Type
+
+/* defined in l4c_aux_struct.h
+              mcd_l4_common.h
+
+typedef struct
+{
+    kal_uint8 addr_length;
+    kal_uint8 addr_bcd[41];
+} l4_addr_bcd_struct;   //RP Addr Type
+
+typedef struct
+{
+    kal_uint8 type;
+    kal_uint8 length;
+    kal_uint8 number[SMSLIB_MAX_CC_ADDR_LEN];
+} l4c_number_struct;    //MMI Addr Type
+
+typedef struct
+{
+	kal_uint8 name_length;
+	kal_uint8 name_dcs;
+	kal_uint8 name[32];
+} l4_name_struct;
+
+typedef struct
+{
+    kal_uint8 length;
+    kal_uint8 charset;
+    kal_uint8 *data;
+} istring_type; */
+
+typedef struct
+{
+    kal_uint8 waiting_num[SMSLIB_NUM_OF_MSG_WAITING_TYPE];
+} smslib_mwis_struct; // = smsal_mwis_struct (!!!important!!!)
+
+#ifdef __REL6__
+#ifdef __SMS_R6_ENHANCED_VOICE_MAIL__
+// Enhanced Voice Mail Information
+typedef struct
+{
+    kal_uint16  id;
+
+    kal_uint8   msg_len_insec;
+    kal_uint8   msg_retention_day;  // max 31
+
+    kal_uint8   priority;
+
+    kal_uint8   msg_ext_flg;
+
+    l4_addr_bcd_struct   calling_line_addr;
+
+    kal_uint8   msg_ext_len;
+    kal_uint8   *msg_ext_data;
+}smslib_evmi_msg_struct; // = smsal_evmi_msg_struct (!!!important!!!)
+
+// Enhanced Voice Mail Information
+// l4csmsal_enhanced_voice_mail_ind_struct should be the same as smsal_evmi_struct
+typedef struct
+{
+    kal_uint8   evm_pdu_type;
+    kal_uint8   multi_sub_profile;
+    kal_uint8   is_store;
+    kal_uint8   vm_almost_full;
+    kal_uint8   vm_full;
+    kal_uint8   vm_status_ext_flg;
+
+    l4_addr_bcd_struct   vm_access_addr;
+    kal_uint8   number_of_vm_unread;  // should be stored in (U)SIM
+    kal_uint8   number_of_vm_notify;  // max 15
+    kal_uint8   number_of_vm_delete;  // max 31
+
+    kal_uint8   l4_status;        // 0:init, 1: sent to MMI, 2:free
+
+    kal_uint8   vm_status_ext_len;
+    kal_uint8   *vm_status_ext_data;
+
+    smslib_evmi_msg_struct *vm_msg[32];
+
+}smslib_evmi_struct;  // = smsal_evmi_struct (!!!important!!!)
+#endif
+#endif
+
+typedef struct
+{
+    kal_uint8         type_of_info;
+    kal_bool          need_store;
+    kal_bool          is_msg_wait;
+    kal_bool          is_show_num[SMSLIB_NUM_OF_MSG_WAITING_TYPE];
+    kal_bool          is_clear[SMSLIB_NUM_OF_MSG_WAITING_TYPE];
+    kal_bool          ind_flag[SMSLIB_NUM_OF_MSG_WAITING_TYPE];
+    smslib_mwis_struct mwis;
+    kal_uint8         msp;
+    kal_uint8         line_no;
+
+#ifdef __REL6__    
+#ifdef __SMS_R6_ENHANCED_VOICE_MAIL__
+    smslib_evmi_struct evmi;  // should free this after processing
+#endif
+#endif
+} smslib_msg_waiting_struct; // = smsal_msg_waiting_struct (!!!important!!!)
+
+typedef struct
+{
+    kal_int32 dest_port; /* -1: invalid port */
+    kal_int32 src_port;
+} smslib_port_struct; // = smsal_port_struct
+
+typedef struct
+{
+    kal_uint16 ref;      /* concat. message reference*/
+    kal_uint8 total_seg; /* total segments*/
+    kal_uint8 seg;       /* indicate which segment*/
+} smslib_concat_struct; // = smsal_concat_struct (!!!important!!!)
+
+typedef struct
+{
+    union
+    {
+        smslib_deliver_peer_struct        deliver_tpdu;
+        smslib_submit_peer_struct         submit_tpdu;
+        smslib_status_report_peer_struct  report_tpdu;
+    } data;
+
+    smslib_mti_enum             mti;
+
+    //
+    kal_uint8                   fo;     /* first octet */
+    kal_uint8                   offset; /* offset to message content */
+                                        /* init address of User Data Header */
+    kal_uint8                   msg_len;/* length of user data */
+                                        /* User Data Header + User Data */
+    kal_uint8                   udhl;   /* for calculating offset to unpack */
+                                        /* udhl + udh */
+
+    smslib_concat_struct        concat_info;
+
+    /* for decoding DCS */
+    smslib_msg_class_enum       msg_class;
+    smslib_alphabet_enum        alphabet_type;
+    kal_bool                    is_compress;
+
+
+    smslib_msg_waiting_struct   msg_wait;
+
+    /* User Data Header */
+    smslib_port_struct          port;
+
+} smslib_tpdu_decode_struct;
+
+typedef struct
+{
+    smslib_sim_status_enum      status;
+    l4_addr_bcd_struct          sca;
+    smslib_tpdu_decode_struct   tpdu;
+    kal_uint8                   pdu_len;   /* length of PDU */
+    kal_uint8                   tpdu_len;  /* length of TPDU */
+    l4c_number_struct           forMMI_SCAAddr;
+    l4c_number_struct           forMMI_TPAddr;
+    kal_uint16                  forMMI_UserData_length;  /*unit: octet*/
+    kal_uint8                   forMMI_UserData[170];
+} smslib_general_struct;
+
+typedef struct
+{
+    /* alpha id size of EFmailbox_numr */
+    kal_uint8           alpha_size;             //Input value for decode & encode
+    
+    l4_name_struct      name;
+    l4c_number_struct   addr;
+    kal_uint8           capability_id;
+    kal_uint8           extension_id;
+}smslib_ef_mailbox_num_struct;
+
+typedef struct
+{
+    kal_uint8           mbi_id[SMSLIB_NUM_OF_MSG_WAITING_TYPE];
+}smslib_ef_mbi_struct; 
+
+typedef struct
+{
+    kal_uint8           waiting_num[SMSLIB_NUM_OF_MSG_WAITING_TYPE];
+} smslib_ef_mwis_struct;
+
+typedef struct
+{
+    smslib_mwis_struct  cphs_mwis[SMSLIB_MAX_LINES]; 
+}smslib_ef_vm_struct;
+
+typedef struct
+{
+    /* maximum number of supported, SMS parameter profiles in SIM */
+    //kal_uint8	        max_profile_num;        //Input value for decode
+
+    /* size of alpha-identifier in EFsmsp */
+    kal_uint8           alpha_size;             //Input value for decode
+                                                //Input value for encode
+    /* store alpha-identifier */
+    l4_name_struct      profile_name;           //Input&Output value for decode
+                                                //Input&Output value for encode
+    /* Parameter Indicator */
+    kal_uint8	        para_ind;               //Output value for decode
+                                                //Input value for encode
+    /*	Validity period */
+    kal_uint8	        vp;                     //Output value for decode
+                                                //Input value for encode
+    /*	Protocol identifier */
+    kal_uint8	        pid;                    //Output value for decode
+                                                //Input value for encode
+    /*	Data coding scheme */
+    kal_uint8	        dcs;                    //Output value for decode
+                                                //Input value for encode
+    /* Service Centre Address */
+    l4c_number_struct   sca;                    //Output value for decode
+                                                //Input value for encode
+    /* Destination Address */
+    l4c_number_struct   da;                     //Output value for decode
+                                                //Input value for encode
+}smslib_ef_smsp_struct;
+
+#endif // __SMS_STORAGE_BY_MMI__
+
+#endif
diff --git a/mcu/interface/protocol/general/smslib_enum.h b/mcu/interface/protocol/general/smslib_enum.h
new file mode 100644
index 0000000..0172c53
--- /dev/null
+++ b/mcu/interface/protocol/general/smslib_enum.h
@@ -0,0 +1,339 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * smslib_enum.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file contains enum
+ *
+ * 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!
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef _SMSLIB_ENUM_H
+#define _SMSLIB_ENUM_H
+
+#if defined(__SMS_STORAGE_BY_MMI__)
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef enum
+{
+    SMSLIB_MTI_DELIVER          = 0x00,
+    SMSLIB_MTI_DELIVER_REPORT   = 0x00,
+    SMSLIB_MTI_SUBMIT           = 0x01,
+    SMSLIB_MTI_SUBMIT_REPORT    = 0x01,
+    SMSLIB_MTI_STATUS_REPORT    = 0x02,
+    SMSLIB_MTI_COMMAND          = 0x02,
+
+    SMSLIB_MTI_UNSPECIFIED      = 0x03   /* MMI shall handle this case,
+                                        * eg, displaying "does not support",
+                                        * or "cannot display", etc */
+} smslib_mti_enum;
+
+typedef enum
+{
+    SMSLIB_CLASS0 = 0,
+    SMSLIB_CLASS1,
+    SMSLIB_CLASS2,
+    SMSLIB_CLASS3,
+    SMSLIB_CLASS_UNSPECIFIED,
+
+    SMSLIB_MW_DISCARD, /* follows are for SMSLIB internal use */
+    SMSLIB_MW_STORE,
+    SMSLIB_RCM,
+    SMSLIB_NUM_OF_NMI_MSG_ENUM
+} smslib_msg_class_enum;
+
+typedef enum
+{
+    /* follows intended for AT commands and MMI */
+    SMSLIB_REC_UNREAD = 0,         /* received unread */
+    SMSLIB_REC_READ,               /* received read */
+    SMSLIB_STO_UNSENT,             /* stored unsent */
+    SMSLIB_STO_SENT,               /* stored sent */
+
+    SMSLIB_ALL,                    /* all (only applicable to +CMGL command)
+                                  * not for MMI
+                                  */
+
+    /* follows intended for MMI only */
+    SMSLIB_INBOX_PARTIAL,          /* parts of inbox messages */
+    SMSLIB_OUTBOX_PARTIAL,         /* parts of outbox messages */
+    SMSLIB_STO_DRAFT,              /* stored draft */
+    SMSLIB_INVALID_STATUS
+} smslib_sim_status_enum;
+
+typedef enum
+{
+    SMSLIB_STATUS_OK = 0x00,
+    SMSLIB_STATUS_NULL_POINTER,          /* application pass a NULL pointer */
+    SMSLIB_STATUS_NO_MEMORY,             /* library run out of memory */
+    SMSLIB_STATUS_ALREADY_INITIALIZED,   /* library already be initialized */
+    SMSLIB_STATUS_NOT_INITIALIZED,       /* library is not be initialized */
+    SMSLIB_STATUS_INVALID_PARAMETER,
+    SMSLIB_STATUS_INVALID_MTI,
+    SMSLIB_STATUS_UNSPECIFIED_ERROR,
+    SMSLIB_STATUS_INPUT_SPDU_LENGTH_ERROR,
+    SMSLIB_STATUS_INPUT_PDU_LENGTH_ERROR,
+    SMSLIB_STATUS_INPUT_TPDU_LENGTH_ERROR,
+    SMSLIB_STATUS_ADDR_LENGTH_ERROR,
+    SMSLIB_STATUS_USER_DATA_LENGTH_ERROR,
+    SMSLIB_STATUS_INPUT_LENGTH_ERROR,
+    SMSLIB_STATUS_LENGTH_ERROR,
+    SMSLIB_STATUS_END
+} smslib_status_enum;
+
+typedef enum
+{
+    SMSLIB_GSM7_BIT = 0,
+    SMSLIB_EIGHT_BIT,
+    SMSLIB_UCS2,
+    SMSLIB_ALPHABET_UNSPECIFIED
+
+} smslib_alphabet_enum;
+
+typedef enum
+{
+    SMSLIB_MW_VM = 0,
+    SMSLIB_MW_FAX,
+    SMSLIB_MW_EMAIL,
+    SMSLIB_MW_OTHER,
+#ifdef __REL6__
+    SMSLIB_MW_VIDEO_MSG,       
+#endif
+    SMSLIB_NUM_OF_MSG_WAITING_TYPE
+} smslib_msg_waiting_type_enum;
+
+typedef enum
+{
+    SMSLIB_MSG_WAIT_CPHS     = 0x01,
+    SMSLIB_MSG_WAIT_DCS      = 0x02,
+    SMSLIB_MSG_WAIT_UDH      = 0x04,
+    SMSLIB_MSG_WAIT_UDH_EVM  = 0x08
+} smslib_type_of_msg_waiting_enum;
+
+typedef enum
+{
+    SMSLIB_VPF_NOT_PRESENT    = 0x00,
+    SMSLIB_VPF_ENHANCED       = 0x01,
+    SMSLIB_VPF_RELATIVE       = 0x02,
+    SMSLIB_VPF_ABSOLUTE       = 0x03
+
+} smslib_vp_format_enum;
+
+typedef enum
+{
+    SMSLIB_DEFAULT_DCS        = 0x00,  /* GSM 7-bit */
+    SMSLIB_8BIT_DCS           = 0x04,  /* 8-bit */
+    SMSLIB_UCS2_DCS           = 0x08,  /* UCS2 */
+    SMSLIB_RESERVED_DCS       = 0x0c,  /* reserved alphabet,
+                                        currently, MMI shall display "not support alphabet"
+                                        or "cannot display" when receive dcs indicated this value */
+    SMSLIB_EXT_DCS            = 0x10  /* Special dcs for non-standard character,
+                                       used by MMI and EMS */
+} smslib_dcs_enum;
+
+typedef enum
+{
+   /* Mailbox */
+   SMSLIB_LINE_1 = 0,
+   SMSLIB_LINE_2 = 1,
+   SMSLIB_MAX_LINES = 2,          
+
+   /* SMS profile parameter */
+   SMSLIB_PROFILE_1 = 0,
+   SMSLIB_PROFILE_2 = 1,
+   SMSLIB_PROFILE_3 = 2,
+   SMSLIB_PROFILE_4 = 3, /* SMSAL_MAX_PROFILE_NUM (4) */
+   SMSLIB_PROFILE_NONE = 0xff /* invalid profile ID */
+} smslib_dest_no_enum;
+
+typedef enum
+{
+   SMSLIB_DEFAULT_PID = 0x00,   /* Text SMS */
+   SMSLIB_TELEX_PID   = 0x21,   /* Telex */
+   SMSLIB_G3_FAX_PID  = 0x22,   /* Group 3 telefax */
+   SMSLIB_G4_FAX_PID  = 0x23,   /* Group 4 telefax */
+   SMSLIB_VOICE_PID   = 0x24,   /* Voice Telephone */
+   SMSLIB_ERMES_PID   = 0x25,   /* ERMES (European Radio Messaging System) */
+   SMSLIB_PAGING_PID  = 0x26,   /* National Paging system */
+   SMSLIB_X400_PID    = 0x31,   /* Any public X.400-based message system */
+   SMSLIB_EMAIL_PID   = 0x32    /* E-mail SMS */
+} smslib_pid_enum;
+
+#endif // __SMS_STORAGE_BY_MMI__
+
+#endif
diff --git a/mcu/interface/protocol/general/smu_common_enums.h b/mcu/interface/protocol/general/smu_common_enums.h
new file mode 100644
index 0000000..a96d31f
--- /dev/null
+++ b/mcu/interface/protocol/general/smu_common_enums.h
@@ -0,0 +1,579 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *	sim_trc.h
+ *
+ * Project:
+ * --------
+ *   MT6208
+ *
+ * Description:
+ * ------------
+ *   This file is trace map definition.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+/*Kinki*/
+#ifndef _SIM_COMMON_ENUMS_H
+
+#define _SIM_COMMON_ENUMS_H
+#include "sim_common_enums.h"
+//#include "custom_mmi_default_value.h"
+//#include "common_nvram_editor_data_item.h"
+#include "nvram_editor_data_item.h"
+#include "l4_nvram_def.h"
+#include "l4_nvram_editor.h"
+//#include "kal_non_specific_general_types.h"
+//#include "ps2sim_struct.h"
+#include "kal_general_types.h"
+#include "ps_public_struct.h" 
+#include "ps_public_enum.h"
+#endif /* _SIM_COMMON_ENUMS_H */
+
+
+#ifndef _SMU_COMMON_ENUMS_H
+#define _SMU_COMMON_ENUMS_H
+
+#include "custom_nvram_sec.h"
+
+#define NUM_OF_BYTE_LP     2
+#define MAX_LP_NUM         5 
+#define NUM_OF_BYTE_ECC    3
+#define MAX_ECC_NUM        5
+#define NUM_OF_BYTE_NP     NVRAM_EDITOR_NUM_OF_BYTE_NP
+#define NUM_NP             NVRAM_EDITOR_NUM_NP
+#define NUM_OF_BYTE_NSP    NVRAM_EDITOR_NUM_OF_BYTE_NSP
+#define NUM_NSP            NVRAM_EDITOR_NUM_NSP
+#define NUM_OF_BYTE_KEY    NVRAM_EDITOR_NUM_OF_BYTE_KEY
+//#define NUM_GID            NVRAM_EDITOR_NUM_GID
+#define NUM_OF_BYTE_IMSI   NVRAM_EDITOR_NUM_OF_BYTE_IMSI
+#define NUM_OF_BYTE_PLMN   3
+#define NUM_OF_PUCT_DIGIT 18
+#define NUM_OF_BYTE_ICCID	NVRAM_EDITOR_NUM_OF_BYTE_ICCID
+
+#ifdef __SMS_DEPERSONALIZATION__
+#define LEN_OF_BYTE_SMS_DEPER 88 //Kinki: [MAUI_01255000]
+#endif
+
+// UICC unlock
+#define SML_ENC_NONCE_LEN 256+1  // 256 byte + 1 byte('/0')
+#define SML_MAX_RAW_NONCE_LEN 256
+#define SML_RAND_STRING_LEN 80
+#define SML_RAW_NONCE_LEN SML_RAND_STRING_LEN+15  // IMEI: 15 digit, MEID : 14 digit + 'Z'
+
+/* msg ID */
+
+typedef enum
+{
+   SMU_PHONELOCK_REQUIRED,
+   SMU_CHV1_NOT_REQUIRED,
+   SMU_CHV1_REQUIRED,
+   SMU_UBCHV1_REQUIRED,
+   SMU_SIM_BLOCKED,
+   SMU_SMT_TP_HALT,
+}smu_chv1_phonelock_status_enum;
+
+typedef enum
+{
+   SMU_CHV1,
+   SMU_CHV2
+}smu_chv_type_enum;
+
+typedef enum
+{
+   CHV_RETRY_ALLOW,
+   CHV_VERIFIED,
+   CHV_DISABLED,
+   CHV_BLOCKED,
+   CHV_DEAD,
+   CHV_INVALID_TYPE,
+   CHV_NOTINITED
+}smu_chv_status_enum;
+
+
+typedef enum
+{
+   SEARCH_RECORD=162,
+   READ_BINARY=176,
+   READ_RECORD=178,
+   GET_RESPONSE=192,
+   UPDATE_BINARY=214,
+   UPDATE_RECORD=220,
+   STATUS_CMD=242
+}smu_sim_access_cmd_enum;
+
+
+typedef enum
+{
+   SMU_UPDATE_ACMMAX,
+   SMU_UPDATE_ACM,
+   SMU_UPDATE_PUCT,
+   SMU_SWITCH_BDN
+}smu_access_item_enum;
+
+typedef enum
+{
+   SMU_ACCESS_NOT_ALLOW,
+   SMU_VERIFY_CHV1,
+   SMU_VERIFY_CHV2
+}smu_access_condition_enum;
+
+typedef enum
+{
+   ID_READY,
+   ID_SIM_PIN1,
+   ID_SIM_PUK1,
+   ID_PH_SIM_PIN,
+   ID_PH_FSIM_PIN,
+   ID_PH_FSIM_PUK,
+   ID_SIM_PIN2,
+   ID_SIM_PUK2,
+   ID_PH_NET_PIN,
+   ID_PH_NET_PUK,
+   ID_PH_NETSUB_PIN,
+   ID_PH_NETSUB_PUK,
+   ID_PH_SP_PIN,
+   ID_PH_SP_PUK,
+   ID_PH_CORP_PIN,
+   ID_PH_CORP_PUK,
+   ID_PH_LINK_NS_SP_PIN,
+   ID_PH_LINK_NS_SP_PUK,
+   ID_PH_LINK_SIM_C_PIN,
+   ID_PH_LINK_SIM_C_PUK,
+   ID_PHONELOCK,
+   ID_SIM_BLOCKED,
+   ID_SIM_BUSY,   /* This add for WM CPIN? with SML check */
+   ID_SIM_PIN_DEFER,
+   ID_CARD_REBOOT,
+   ID_CARD_RESTRICTED,
+   ID_EMPTY_EUICC,
+   ID_UNKNOWN //link_SML
+}smu_pending_password_id_enum;
+
+typedef enum
+{
+   SMU_WRITE_PUCT_RMI,
+   SMU_WRITE_PUCT_LMI,   
+   SMU_SIM_ACCESS_CMD,
+   SMU_WRITE_PLMN_SEL_ADD_RMI,
+   SMU_WRITE_PLMN_SEL_REMOVE_RMI,
+   SMU_WRITE_PLMN_SEL_REPLACE_RMI,
+   SMU_WRITE_PLMN_SEL_ADD_LMI,
+   SMU_WRITE_PLMN_SEL_REMOVE_LMI,
+   SMU_WRITE_PLMN_SEL_REPLACE_LMI,         
+   SMU_READ_PUCT_RMI,
+   SMU_READ_PLMN_SEL_RMI,
+   SMU_READ_PUCT_LMI,
+   SMU_READ_PLMN_SEL_LMI,
+   SMU_READ_CSP_RMI,
+   SMU_READ_CSP_LMI,
+   SMU_READ_CHANGED_PLMNSEL,
+   SMU_READ_CHANGED_PUCT,
+   SMU_WRITE_DCK
+}smu_write_access_id_enum;
+
+typedef enum {
+    SMU_CI_DISABLE,
+    SMU_CI_ENABLE,
+    SMU_CI_NONE
+} smu_cipher_ind_enum;
+
+/*Kinki : revised ECC*/
+typedef enum
+{
+   SMU_SIM_UNKNOWN,    //default value
+   SMU_SIM_NOT_INSERTED,         
+   SMU_SIM_INSERTED
+}smu_sim_inserted_enum;
+
+#ifdef __SMS_DEPERSONALIZATION__ //Kinki: [MAUI_01255000]
+
+typedef enum
+{
+   SMU_SML_LENGTH_TOO_SHORT,
+   RFU
+}smu_sms_depersonalization_enum;
+
+#endif
+
+typedef struct {
+    kal_uint8 mcc2;
+    kal_uint8 mcc1;
+    kal_uint8 mnc3;
+    kal_uint8 mcc3;
+    kal_uint8 mnc2;
+    kal_uint8 mnc1;
+    kal_uint8 access_tech[2];
+} smu_plmn_id_struct;
+
+typedef enum
+{
+   SML_LOCK_RULE_NONE                                 = 0,
+   SML_LOCK_RULE_SIM1_SLOT_LOCKED_ONLY                = 1,
+   SML_LOCK_RULE_SIM2_SLOT_LOCKED_ONLY                = 2,
+   SML_LOCK_RULE_ALL_SIM_SLOT_LOCKED                  = 3,
+   SML_LOCK_RULE_LINK_LOCK_BY_SIM1_SLOT               = 4,
+   SML_LOCK_RULE_LINK_LOCK_BY_SIM2_SLOT               = 5,
+   SML_LOCK_RULE_LINK_LOCK_BY_ALL_SIM_SLOT            = 6,
+   SML_LOCK_RULE_LINK_LOCK_RJIO_LOCK                  = 7,    // Lock on protocol 1
+   SML_LOCK_RULE_LINK_LOCK_BY_ALL_SIM_SLOT_REVERSE    = 8,
+   SML_LOCK_RULE_LINK_LOCK_BY_ALL_SIM_SLOT_SRVLCK     = 9,
+   SML_LOCK_RULE_VZW_NETWORK_LOCK                     = 10,
+   SML_LOCK_RULE_LOCK_BY_OP129                        = 11,   // KDDI RSU
+   SML_LOCK_RULE_TMO_NETWORK_LOCK                     = 12,
+   SML_LOCK_RULE_ATT_NETWORK_LOCK                     = 13,
+   SML_LOCK_RULE_SPR_NETWORK_LOCK                     = 14,
+
+   SML_LOCK_RULE_MAX,
+   SML_LOCK_RULE_LEGACY_MODE                          = 255,
+   SML_LOCK_RULE_UNKNOWN                              = 256,
+} sml_lock_rule_enum;
+
+typedef enum
+{
+   SML_LOCK_SUB_RULE_SLOT_COMMON_RULE,
+   SML_LOCK_SUB_RULE_SLOT_INDEPENDENT_RULE,
+   SML_LOCK_SUB_RULE_LS_FULL_SERVICE,
+   SML_LOCK_SUB_RULE_LS_CS_ONLY_SERVICE,
+   SML_LOCK_SUB_RULE_LS_VOICE_ONLY_SERVICE,
+   SML_LOCK_SUB_RULE_UNKNOWN
+} sml_lock_sub_rule_enum;
+
+typedef enum
+{
+   SML_LOCK_SPR_SUB_RULE_DEFAULT,
+   SML_LOCK_SPR_SUB_RULE_BMVNO
+} sml_lock_spr_sub_rule_enum;
+
+typedef enum
+{
+   SML_LOCK_TMO_SUB_RULE_MOVIAL,
+   SML_LOCK_TMO_SUB_RULE_TRUSTONIC
+} sml_lock_tmo_sub_rule_enum;
+
+#ifdef __CUST_SML_RULE__
+
+typedef enum
+{
+   SML_LOCK_CUST_CODE_NONE = 0,
+
+   SML_LOCK_CUST_CODE_CUST_X,
+   SML_LOCK_CUST_CODE_SIZE
+} sml_lock_cust_code_enum;
+
+typedef enum
+{
+   /* SML_LOCK_CUST_CODE_CUST_X */
+   SML_LOCK_CUST_RULE_CUST_X_RULE_XXX = 0,
+   SML_LOCK_CUST_RULE_CUST_X_RULE_SIZE,
+
+   SML_LOCK_CUST_RULE_NONE = 0xFF
+} sml_lock_cust_rule_enum;
+
+/* Order and Existence should be aligned with sml_lock_cust_code_enum */
+#define SML_GBLOB_MAX_CUST_RULE_LIST_END    0
+#define SML_GBLOB_MAX_CUST_RULE_LIST  {                                             \
+    0,                                          /* SML_LOCK_CUST_CODE_NONE */       \
+                                                                                    \
+    SML_LOCK_CUST_RULE_CUST_X_RULE_SIZE,        /* SML_LOCK_CUST_CODE_CUST_X */     \
+    SML_GBLOB_MAX_CUST_RULE_LIST_END                                                \
+  }
+
+extern const kal_uint8 sml_gblob_max_cust_rule[SML_LOCK_CUST_CODE_SIZE + 1];
+
+#endif  /* __CUST_SML_RULE__ */
+
+typedef enum
+{
+   SML_RULE_UNKNOWN,
+   SML_RULE_FULL_SERVICE,
+   SML_RULE_CS_ONLY_SERVICE,
+   SML_RULE_PS_ONLY_SERVICE,
+   SML_RULE_ECC_ONLY_SERVICE,
+   SML_RULE_NO_SERVICE,
+   SML_RULE_VOICE_ONLY_SERVICE, // Modem still have full service, AP will block data service (except VoLTE call)
+} sml_lock_rule_policy_enum;
+
+typedef enum
+{
+   SML_STATUS_SIM_UNKNOWN,
+   SML_STATUS_SIM_VALID,
+   SML_STATUS_SIM_INVALID,
+   SML_STATUS_SIM_ABSENT
+} sml_state_is_valid_sim_enum;
+
+typedef enum
+{
+   LINK_SML_BUSY_SIM,
+   LINK_SML_VALID_SIM,
+   LINK_SML_INVALID_SIM,
+   LINK_SML_INVALID_TO_VALID_SIM,
+   LINK_SML_VALID_TO_INVLAID_SIM,
+   LINK_SML_UNKNOWN_SIM
+} link_sml_valid_sim_enum;
+
+
+typedef enum
+{
+   LINK_SML_IN_SERVICE,
+   LINK_SML_NO_SERVICE,
+   LINK_SML_UNKNOWN_SERVICE
+} link_sml_srv_state_enum;
+
+typedef enum
+{
+   LINK_SML_CHECK_ALL_SIM_LOCKED,
+   LINK_SML_CHECK_WAITING,
+   LINK_SML_CHECK_VALID_SIM_EXIST,
+   LINK_SML_CHECK_NO_VALID_SIM_EXIST,
+   LINK_SML_CHECK_UNKNOWN
+} link_sml_check_enum;
+
+typedef enum 
+{
+    DSML_SIMLOCK_ENCRYPTED_DATA_RECEIVED_SUCCESS =  0, 
+    DSML_SIMLOCK_ENCRYPTED_DATA_RECEIVED_ERROR   =  1,
+    DSML_SIMLOCK_ENCRYPTED_DATA_DELETED_SUCCESS  =  2,
+    DSML_SIMLOCK_ENCRYPTED_DATA_DELETED_ERROR    =  3,
+    DSML_SIMLOCK_ENCRYPTED_DATA_READ_SUCCESS     =  4,
+    DSML_SIMLOCK_ENCRYPTED_DATA_READ_ERROR       =  5,
+    DSML_SIMLOCK_INVALID_IMEI                    =  6,
+    DSML_SIMLOCK_CONFIGURE_SUCCESS               =  7,
+    DSML_SIMLOCK_DUPLICATE_SETTING_ERROR         =  8,
+    DSML_SIMLOCK_MAX_RETRIES_REACHED             =  9,
+    DSML_SIMLOCK_INVALID_LOCK_DATA               = 10,
+    DSML_SIMLOCK_PARAMETER_UNSUPPORTED           = 11,
+    DSML_SIMLOCK_CK_ERROR                        = 12,
+    DSML_SIMLOCK_MEMORY_ERROR                    = 13,
+    DSML_SIMLOCK_SIGN_ERROR                      = 14,
+    DSML_SIMLOCK_DECRYPT_ERROR                   = 15,
+    DSML_SIMLOCK_UNKNOWN_ERROR                   = 16,
+} dsml_result_enum;
+
+typedef enum 
+{
+    DSML_OP_ADD_LOCK_WITHOUT_CK             =  0, 
+    DSML_OP_UNLOCK_WITHOUT_CK               =  1,
+    DSML_OP_PERMANENTLY_UNLOCK_WITHOUT_CK   =  2,
+    DSML_OP_ADD_LOCK                        =  3,
+    DSML_OP_UNLOCK_WITH_CK                  =  4,
+    DSML_OP_REPLACED_CARD                   =  5,
+    DSML_OP_UPDATE_SIMLOCK                  =  6,
+    DSML_OP_UNKNOWN                         =  7,
+} dsml_op_enum;
+
+typedef struct
+{
+    kal_uint8 cat_type;
+    kal_uint8 autolock;
+    kal_uint8 blacklist_op;
+    kal_uint8 blacklist_len;
+    kal_uint8 blacklist[DSML_MAX_BL_LEN];
+} dsml_category_data_struct;
+
+typedef struct
+{
+    dsml_op_enum              operation;
+    kal_uint8                 slot;
+    kal_uint8                 imei[15];
+    kal_uint8                 slot_policy;
+    kal_uint8                 sub_policy[2]; //sub_policy[0] : 1st byte, sub_policy[1] : 2nd byte
+    kal_uint8                 ck_length;
+    kal_uint8                 ck[32];
+    kal_uint8                 hck_length;
+    kal_uint8                 hck[64];
+    kal_uint8                 salt_length;
+    kal_uint8                 salt[32];
+    kal_uint8                 iteration[4];
+    kal_uint32                max_retry_cnt;
+    kal_uint8                 num_of_cat;
+    dsml_category_data_struct cat_data[7];
+} dsml_simlock_data_struct;
+
+/* UICC Unlock Validation Mode */
+typedef enum
+{
+   SMU_UULK_VALID_CHECK_AND_UPDATE,
+   SMU_UULK_VALID_CHECK_ONLY,
+   SMU_UULK_VALID_UNKNOWN
+} smu_uulk_valid_mode_enum;
+
+typedef enum
+{
+   SMU_TRC_SIM_STATUS_ENUM,
+   SMU_TRC_PENDING_PASSWD_ENUM,
+   SMU_TRC_ENUM_UNKNOWN
+} smu_trc_enum_type_enum;
+
+
+typedef enum{
+    SML_OP129_NULL,
+    SML_OP129_LOCK,
+    SML_OP129_UNLOCK,
+    SML_OP129_NO_CHECK,
+}smu_op129_lock_enum;
+
+extern kal_bool l4csmu_read_plmn_sel(sim_file_index_enum file_idx, kal_uint8 start_index, kal_uint16 * num, smu_plmn_id_struct * plmn_ptr);
+//extern smu_chv_status_enum l4csmu_get_chv_status(smu_chv_type_enum type);
+extern kal_bool l4csmu_get_puct_value(kal_uint8 *currency,kal_uint8 *ppu);
+
+//SMU only
+/*Kinki remove(useless function)*/
+//extern void l4csmu_get_preferred_language(kal_uint8 *num,sim_lp_file_type_enum *file_type, kal_uint8 *lp_data);
+//extern void l4csmu_get_ecc(kal_uint8 *num_ecc, sim_ecc_entry_struct *ecc_entry);
+//extern void l4csmu_get_ecc(kal_uint8 *num, kal_uint8 *ecc_data);
+extern void l4csmu_get_imsi(kal_uint8 *imsi_data);
+extern void l4csmu_get_imsi_by_idx(kal_uint8 *imsi_data, kal_uint8 simInterface);
+
+//SMU only
+/*Kinki remove(useless function)*/
+//extern smu_access_condition_enum l4csmu_get_sim_access_info(smu_access_item_enum access_item);
+extern smu_pending_password_id_enum l4csmu_get_pending_password_id(void);
+//link_SML
+extern smu_pending_password_id_enum l4csmu_get_pending_password_id_ext(sim_interface_enum sim_id);
+extern smu_pending_password_id_enum l4csmu_app_get_pending_password_id(kal_uint8);
+extern kal_bool l4csmu_get_pending_lock(smu_pending_password_id_enum password, smu_security_type_enum *type);
+extern void l4csmu_get_chv_status_ext(sim_chv_status_struct *chv_status,sim_interface_enum sim_id);
+extern kal_bool l4csmu_is_normal_registration_allowed(sim_interface_enum ps_id);
+
+
+/*Kinki remove(useless function)*/	
+//extern kal_uint16 l4csmu_test_preferred_plmn (void); //Benson 20040407 modified for mtk00714's request 
+extern sim_dn_enum l4csmu_get_dial_mode(void);
+extern sim_dn_enum l4csmu_get_dial_mode_by_ps_id(protocol_id_enum ps_id);
+//Kinki remove for MAUI_00632199
+#if 0
+#ifdef __GEMINI__
+/* under construction !*/
+#else
+/* under construction !*/
+#endif
+#endif
+
+extern kal_bool check_is_usim(void);
+
+#if defined(__GEMINI__)
+extern smu_sim_inserted_enum is_sim_inserted(kal_uint8 simInterface);
+#else
+extern smu_sim_inserted_enum is_sim_inserted(void);
+#endif
+
+extern kal_bool smu_update_is_simcard_replaced(kal_uint8 *iccid, kal_uint8 simInterface);
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern smu_sim_status_enum smu_update_is_sim_replaced(kal_uint8 *imsi, kal_uint8 simInterface);
+#ifdef __cplusplus
+}
+#endif
+
+extern smu_cipher_ind_enum l4csmu_get_cipher_ind_status(void);
+
+extern kal_bool l4csmu_sat_ready_req(kal_bool trigger_by_user);
+
+extern kal_bool l4csmu_plmn_read_of_File_index(sim_file_index_enum file_idx, kal_uint8 simInterface, kal_uint16 * fileSize, kal_uint8 * file_data);
+
+#ifdef __TRACFONE_SML__
+extern kal_bool is_any_sml_locked(kal_uint8 simInterface);
+#endif
+extern kal_bool smu_is_lte_only_customization_supported();
+
+#define SML_MCC_LEN 3
+#define SML_MCC_MNC_LEN 6
+extern kal_uint8 sml_sprint_mcc_mnc_list[][SML_MCC_MNC_LEN+1];
+extern kal_uint8 sml_us_mcc_list[][SML_MCC_LEN+1];
+extern kal_uint8 sml_bmvno_mcc_mnc_list[][SML_MCC_MNC_LEN+1];
+extern kal_uint8 sml_uicc_lock_get_list_num(kal_uint8 lock_code, kal_uint8 ps_id);
+extern kal_bool sml_is_bmvno_plmn_gid(kal_uint8* mccmnc, kal_uint8 is_valid_gid1, kal_uint8* gid1);
+extern kal_bool custom_sml_is_uicc_unlock_enabled(void);
+extern kal_bool sml_uicc_lock_checking(kal_uint8 code, kal_uint8* imsi);
+extern kal_uint8 l4csmu_get_unlock_code();
+extern void l4csmu_gen_nonce(kal_uint8* device_id, kal_uint32 device_id_len, kal_uint8* nonce, kal_uint32* nonce_len);
+extern kal_bool l4csmu_validate_signature(smu_uulk_valid_mode_enum mode, kal_uint8 unlock_code, kal_uint8* signature, kal_uint32 signature_len);
+
+extern void sml_lock_rule_and_status_update_ind(kal_uint8 simInterface);
+extern sml_lock_rule_policy_enum sml_query_legal_service(kal_uint8 simInterface);
+extern void sml_update_legal_service(sml_lock_rule_policy_enum new_policy,
+                                     sml_state_is_valid_sim_enum is_sim_valid,
+                                     kal_uint8 simInterface);
+extern sml_lock_rule_enum sml_query_sml_lock_rule();
+#ifdef __CUST_SML_RULE__
+extern kal_uint8 sml_query_sml_cust_code(void);
+extern kal_uint8 sml_query_sml_cust_rule(void);
+#endif
+extern kal_uint16 sml_query_sml_lock_sub_rule();
+extern sml_lock_sub_rule_enum sml_query_slot_lock_context_rule();
+extern sml_lock_sub_rule_enum sml_query_linksml_invalid_sim_rule();
+extern kal_bool sml_is_gblob_enabled(void);
+extern kal_bool sml_is_linksml_enabled(void);
+extern kal_bool sml_is_internal_gblob_lock_rule(sml_lock_rule_enum lock_rule);
+extern void sml_force_unlock_gblob_dev_lock();
+
+extern kal_bool l4csmu_sl_get_dual_sim_lock_control_slot1_only_feature_supported(void);
+extern kal_bool smu_is_sml_in_sl_locked(void);
+
+extern void sml_upgrade_service_req(void);
+extern void sml_update_service_state(link_sml_srv_state_enum state, kal_uint8 simInterface);
+extern dsml_result_enum dynamic_simmelock_hdlr(dsml_simlock_data_struct* simlock_data);
+extern kal_uint8 l4csmu_get_sml_cat_algo_type_with_source(sml_cat_enum cat, kal_uint8 source);
+extern kal_uint8 l4csmu_get_sml_cat_algo_type(sml_cat_enum cat);
+extern sml_state_is_valid_sim_enum sml_query_sml_sim_state(kal_uint8 simInterface);
+extern kal_bool sml_check_ctrlslot_if_all_cat_unlock_state(kal_uint8 sml_lock_rule);
+
+extern kal_bool smu_check_is_iccid_valid(kal_uint8 ps_id);
+
+extern kal_bool sml_vzw_rsu_is_need_relock(kal_uint8 ps_id);
+
+extern void l4csmu_get_nonce_sign_status_req(kal_uint8* nonce_status, kal_uint8* sign_status);
+#endif  
+
diff --git a/mcu/interface/protocol/general/tcm_api.h b/mcu/interface/protocol/general/tcm_api.h
new file mode 100644
index 0000000..f0c0e2d
--- /dev/null
+++ b/mcu/interface/protocol/general/tcm_api.h
@@ -0,0 +1,306 @@
+/*****************************************************************************
+*  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).
+*
+*****************************************************************************/
+
+#ifndef _TCM_API_H
+#define _TCM_API_H
+
+//------------------------------ suggest Add ------------------------------
+//#include "kal_non_specific_general_types.h"
+#include "kal_general_types.h"
+#include "mcd_l3_inc_gprs_struct.h"
+
+/* Poying: Moved from tcm_qos_api.h */
+typedef enum
+{
+    TCM_REQ_QOS = 0,
+    TCM_MIN_QOS,
+    TCM_NEG_QOS
+} tcm_qos_type_enum;
+
+typedef enum {
+    TCM_R6_QOS = 0,
+    TCM_R8_QOS = 1,
+    TCM_R11_QOS = 2
+} tcm_qos_mode_enum;
+
+typedef enum {
+    TCM_CID_TYPE_UNKNOWN, 
+    TCM_CID_TYPE_PRIMARY,
+    TCM_CID_TYPE_SECONDARY,
+} tcm_cid_type_enum; 
+
+/* Check tcm_qos_api.c for implementations. */
+void tcm_qos_R99_to_R98( qos_struct *s, tcm_qos_type_enum qos_type );
+
+/* Check l4c2tcm_func.c for implementations. */
+kal_bool l4ctcm_decode_sdu_size(kal_uint16 val, kal_uint16 *size_ptr);
+
+#ifdef __REL6__
+kal_bool l4ctcm_encode_bit_rate(kal_uint32 rate, kal_uint32 *p_val);
+kal_bool l4ctcm_decode_bit_rate(kal_uint32 val, kal_uint32 *p_rate);
+#else // #ifdef __REL6__
+kal_bool l4ctcm_encode_bit_rate(kal_uint16 rate, kal_uint16 *p_val);
+kal_bool l4ctcm_decode_bit_rate(kal_uint16 val, kal_uint16 *p_rate);
+#endif // ~ #ifdef __REL6__
+
+kal_bool l4ctcm_decode_apn_ambr_bit_rate(kal_uint8 val, kal_uint8 val_ext, kal_uint8 val_ext2, kal_uint32 *p_rate);
+kal_bool l4ctcm_decode_transfer_delay(kal_uint16 val, kal_uint16 *p_delay);
+
+/* Check tcm_api.c for implementations. */
+kal_bool tcm_pdp_decode_qos_transfer_delay(kal_uint16 val, kal_uint16 *p_delay);
+kal_bool tcm_pdp_decode_qos_bit_rate(kal_uint16 val, kal_uint32 *p_rate);
+kal_bool tcm_is_qci_non_gbr(kal_uint8 qci);
+
+kal_uint8 tcm_get_cid_by_ebi(kal_uint8 sim_interface, kal_uint8 ebi);                   /* called by tftlib */
+kal_uint8 tcm_get_ebi_by_cid(kal_uint8 sim_interface, kal_uint8 cid);                   /* called by tftlib */
+kal_uint8 tcm_get_primary_cid_by_cid(kal_uint8 sim_interface, kal_uint8 cid);           /* called by tftlib */
+tcm_cid_type_enum tcm_get_cid_type_by_cid(kal_uint8 sim_interface, kal_uint8 cid);      /* called by tftlib */
+kal_bool tcm_is_cid_not_inactive(kal_uint8 sim_interface, kal_uint8 cid);               /* called by tftlib */
+kal_uint8 tcm_get_cid_by_psi(kal_uint8 sim_interface, kal_uint8 psi);
+
+/* 
+ * Data account
+ */
+typedef struct
+{
+    // must align with qos_struct
+    // Please see 3GPP TS24.008 Table 10.5.156 Quality of service information element for detail explaination
+
+    kal_uint8 qos_length;   /* QOS identifer bit, this value must be 16, or the GPRS bearer will not accept */
+    kal_uint8 unused1;      /* Unused Bit */
+    
+    kal_uint8 delay_class;
+    /* 
+      * Delay Class 
+      * 001 Delay Class 1 
+      * 010 Delay Class 2
+      * 011 Delay Class 3
+      * 100 Delay Class 4 (best effort)
+      * ...
+      */
+    
+    kal_uint8 reliability_class;
+    /* 
+      * Reliability Class 
+      * 001 Interpreted as 010
+      * 010 UnACK GTP, ACK LLC, ACK RLC, Protected Data
+      * 011 UnACK GTP, UnACK LLC, ACK RLC, Protected Data
+      * 100 UnACK GTP, UnACK LLC, UnACK RLC, Prottected Data
+      * 101 UnACK GTP, UnACK LLC, UnACK RLC, Unprotected Data
+      * ...
+      */
+    
+    kal_uint8 peak_throughput;
+    /* 
+      * Peak Throughput
+      * 0001 Up to 1000 octet/s
+      * 0010 Up to 2000 octet/s
+      * 0011 Up to 4000 octet/s
+      * 0100 Up to 8000 octet/s
+      * 0101 Up to 16000 octet/s
+      * 0110 Up to 32000 octet/s
+      * 0111 Up to 64000 octet/s
+      * 1000 Up to 128000 octet/s
+      * 1001 Up to 256000 octet/s
+      * ...
+      */
+    
+    kal_uint8 unused2;      /* Unused Bit */
+    
+    kal_uint8 precedence_class;
+    /* 
+      * Precedence Class
+      * 001 High Priority
+      * 010 Normal Priority
+      * 011 Low Priority
+      * ...
+      */
+    
+    kal_uint8 unused3;      /* Unused Bit */
+    
+    kal_uint8 mean_throughput;
+    /* 
+      * Mean Throughput
+      * 00001 Up to 100 octet/h
+      * 00010 Up to 200 octet/h
+      * 00011 Up to 500 octet/h
+      * ...
+      */
+    
+    kal_uint8 traffic_class;
+    /* 
+      * Traffic Class
+      * 001 Conversational class
+      * 010 Streaming class
+      * 011 Interactive class
+      * 100 Background class
+      * ...
+      */
+    
+    kal_uint8 delivery_order;
+    /* 
+      * Delivery Order
+      * 01 With delivery order (yes)
+      * 10 Without delivery order (no)
+      * ...
+      */
+    
+    kal_uint8 delivery_of_err_sdu;
+    /* 
+      * Delivery of erroneous SDUs
+      * 001 No detect (-)
+      * 010 Erroneous SDUs are delivered (yes)
+      * 011 Erroneous SDUs are not delivered (no)
+      * ...
+      */
+    
+    kal_uint8 max_sdu_size;
+    /* 
+      * Maximum SDU Size
+      * ...
+      * 10010111 1502 octets
+      * 10011000 1510 octets
+      * 10011001 1520 octets
+      * ...
+      */
+
+    kal_uint8 max_bitrate_up_lnk; // see 24.008 Table 10.5.156
+    
+    kal_uint8 max_bitrate_down_lnk; // see 24.008 Table 10.5.156
+    
+    kal_uint8 residual_bit_err_rate;
+    /* 
+      * Residual Bit Error Rate
+      * 0001 5*10^-2
+      * 0010 1*10^-2
+      * 0011 5*10^-3
+      * 0100 4*10^-3      
+      * 0101 1*10^-3      
+      * 0110 1*10^-4      
+      * ...
+      */
+    
+    kal_uint8 sdu_err_ratio;
+    /* 
+      * SDU Error Ratio
+      * 0001 1*10^-2
+      * 0010 7*10^-3
+      * 0011 1*10^-3
+      * 0100 1*10^-4     
+      * 0101 1*10^-5      
+      * 0110 1*10^-6      
+      * ...
+      */
+    
+    kal_uint8 transfer_delay; // see 24.008 Table 10.5.156
+    
+    kal_uint8 traffic_hndl_priority;
+    /* 
+      * Traffic Handling Priority
+      * 01 Priority level 1
+      * 10 Priority level 2
+      * 11 Priority level 3
+      * ...
+      */
+    
+    kal_uint8 guarntd_bit_rate_up_lnk; // see 24.008 Table 10.5.156
+    
+    kal_uint8 guarntd_bit_rate_down_lnk; // see 24.008 Table 10.5.156
+    
+    kal_uint8 unused4; /* Unused Bit */
+    
+    kal_uint8 signalling_indication;
+    /* 
+      * Signaling Indication
+      * 0 Not optimised for signalling traffic
+      * 1 Optimised for signalling traffic
+      * ...
+      */
+    
+    kal_uint8 source_statistics_descriptor;
+    /* 
+      * Source Statistics Descriptor
+      * 0000 Unknown
+      * 0001 Speech
+      * ...
+      */
+    
+    kal_uint8 ext_max_bitrate_down_lnk; // see 24.008 Table 10.5.156
+    
+    kal_uint8 ext_guarntd_bit_rate_down_lnk; // see 24.008 Table 10.5.156
+    
+    kal_uint8 ext_max_bitrate_up_lnk; // see 24.008 Table 10.5.156
+    
+    kal_uint8 ext_guarntd_bit_rate_up_lnk; // see 24.008 Table 10.5.156
+
+    kal_uint8 ext2_max_bitrate_down_lnk; // see 24.008 Table 10.5.156
+    
+    kal_uint8 ext2_guarntd_bit_rate_down_lnk; // see 24.008 Table 10.5.156
+    
+    kal_uint8 ext2_max_bitrate_up_lnk; // see 24.008 Table 10.5.156
+    
+    kal_uint8 ext2_guarntd_bit_rate_up_lnk; // see 24.008 Table 10.5.156    
+} nvram_editor_qos_struct;
+
+//mtk04121
+typedef struct {
+    kal_uint8 qci;
+    kal_uint8 unused1;
+    kal_uint8 unused2;
+    kal_uint8 unused3;
+    kal_uint8 max_bitrate_up_lnk; // see 24.008 Table 10.5.156
+    kal_uint8 max_bitrate_down_lnk; // see 24.008 Table 10.5.156
+    kal_uint8 guarntd_bit_rate_up_lnk; // see 24.008 Table 10.5.156
+    kal_uint8 guarntd_bit_rate_down_lnk; // see 24.008 Table 10.5.156
+    kal_uint8 ext_max_bitrate_up_lnk; // see 24.008 Table 10.5.156
+    kal_uint8 ext_max_bitrate_down_lnk; // see 24.008 Table 10.5.156
+    kal_uint8 ext_guarntd_bit_rate_up_lnk; // see 24.008 Table 10.5.156
+    kal_uint8 ext_guarntd_bit_rate_down_lnk; // see 24.008 Table 10.5.156
+    kal_uint8 ext2_max_bitrate_up_lnk;
+    kal_uint8 ext2_max_bitrate_down_lnk;
+    kal_uint8 ext2_guarntd_bit_rate_up_lnk;
+    kal_uint8 ext2_guarntd_bit_rate_down_lnk;
+} nvram_editor_eps_qos_struct;
+
+
+/* Poying: MSBB (MAUI_03028371). */
+typedef struct
+{
+    nvram_editor_qos_struct req_qos;
+    nvram_editor_qos_struct min_qos;
+} tcm_ps_qos_profile_struct;
+
+
+#endif // ~ #ifndef _TCM_API_H
diff --git a/mcu/interface/protocol/general/tft_pf_enum.h b/mcu/interface/protocol/general/tft_pf_enum.h
new file mode 100644
index 0000000..de2d5d0
--- /dev/null
+++ b/mcu/interface/protocol/general/tft_pf_enum.h
@@ -0,0 +1,2194 @@
+/*****************************************************************************
+*  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) 2012
+*
+*  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:
+ * ---------
+ *   tft_pf_enum.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * -------
+ *   
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 09 25 2019 tc.chang
+ * [MOLY00442498] [Gen97][PERF] Assert removal
+ *
+ * 06 03 2019 tc.chang
+ * [MOLY00407691] [Gen97] Update debug trace.
+ *
+ * 10 01 2013 moja.hsu
+ * [MOLY00039686] [MT6290E1][Ericsson][Pre-IOT][MM] TC 7.2.3.4.30 Assert at tft_pf#719
+ * drop corrupted fragment v6 packet.
+ *
+ ****************************************************************************/
+/*
+ * =====================================================================================
+ *
+ *       Filename:  tft_pf_enum.h
+ *
+ *    Description:  TFT_PF (TFT Packet filter)
+ *                  ENUM values for trace.
+ *
+ *        Created: 2012/3/19 �W�� 11:20:22
+ *
+ *        Author:  mtk01641 (moja)
+ * =====================================================================================
+ */
+#ifndef  TFT_PF_ENUM_INC
+#define  TFT_PF_ENUM_INC
+
+#include "tftlib_common_enum.h"
+
+typedef enum
+{
+    TFT_ERROR_OK,
+    TFT_ERROR_EPSB_IS_ACTV,
+    TFT_ERROR_EPSB_IS_NOT_ACTV,
+    TFT_ERROR_NO_PKT_FILTER_RESOURCE,
+    TFT_ERROR_NOT_FOUND_PKT_FILTER,
+    TFT_ERROR_WRONG_ARGUMENT,
+}tft_pf_error_code_e;
+
+typedef enum
+{
+    TFTPF_EPSB_FLAG_NONE  =   0,
+    /* The EPSB is active? */
+    TFTPF_EPSB_FLAG_ACTV =   0x1,
+    /*
+     * Is the EPSB is in IP FRAGMENT state.
+     * EPSB will keep in this state until it get the last fragment.
+     */
+    TFTPF_EPSB_FLAG_IPV4_FRAG = 0x2,
+    TFTPF_EPSB_FLAG_IPV6_FRAG = 0x4,
+
+    TFTPF_EPSB_FLAG_ACTV_IPV4_FRAG           = TFTPF_EPSB_FLAG_ACTV      | TFTPF_EPSB_FLAG_IPV4_FRAG,
+    TFTPF_EPSB_FLAG_ACTV_IPV6_FRAG           = TFTPF_EPSB_FLAG_ACTV      | TFTPF_EPSB_FLAG_IPV6_FRAG,
+    TFTPF_EPSB_FLAG_IPV4_FRAG_IPV6_FRAG      = TFTPF_EPSB_FLAG_IPV4_FRAG | TFTPF_EPSB_FLAG_IPV6_FRAG,
+    TFTPF_EPSB_FLAG_ACTV_IPV4_FRAG_IPV6_FRAG = TFTPF_EPSB_FLAG_ACTV      | TFTPF_EPSB_FLAG_IPV4_FRAG  | TFTPF_EPSB_FLAG_IPV6_FRAG,
+}tft_pf_epsb_flag_e;
+
+typedef enum
+{
+    TFTPF_COR_NO_FIRST_FRAGMENT_V6,
+    TFTPF_COR_NO_LAST_FRAGMENT_V6,
+}tft_pf_corrupted_e;
+
+typedef enum
+{
+    bmp_none        = 0,
+    bmp_v4Addr      = BMP_V4_ADDR,
+    bmp_v6Addr      = BMP_V6_ADDR,
+    bmp_protocol    = BMP_PROTOCOL,
+    bmp_lPortS      = BMP_LOCAL_PORT_SINGLE,
+    bmp_lPortR      = BMP_LOCAL_PORT_RANGE,
+    bmp_rPortS      = BMP_REMOTE_PORT_SINGLE,
+    bmp_rPortR      = BMP_REMOTE_PORT_RANGE,
+    bmp_spi         = BMP_SPI,
+    bmp_tos         = BMP_TOS,
+    bmp_flowLabel   = BMP_FLOW_LABEL,
+    bmp_matchAll    = BMP_MATCH_ALL,
+    bmp_emptyTCPAck = BMP_EMPTY_TCP_ACK,
+    bmp_frag        = BMP_IP_FRAGMENT,
+    bmp_corrupt     = BMP_CORRUPTED,
+    bmp_v4Addr_protocol = bmp_v4Addr | bmp_protocol,
+    bmp_v4Addr_lPortS = bmp_v4Addr | bmp_lPortS,
+    bmp_v4Addr_lPortR = bmp_v4Addr | bmp_lPortR,
+    bmp_v4Addr_rPortS = bmp_v4Addr | bmp_rPortS,
+    bmp_v4Addr_rPortR = bmp_v4Addr | bmp_rPortR,
+    bmp_v4Addr_spi = bmp_v4Addr | bmp_spi,
+    bmp_v4Addr_tos = bmp_v4Addr | bmp_tos,
+    bmp_v4Addr_emptyTCPAck = bmp_v4Addr | bmp_emptyTCPAck,
+    bmp_v4Addr_frag = bmp_v4Addr | bmp_frag,
+    bmp_v6Addr_protocol = bmp_v6Addr | bmp_protocol,
+    bmp_v6Addr_lPortS = bmp_v6Addr | bmp_lPortS,
+    bmp_v6Addr_lPortR = bmp_v6Addr | bmp_lPortR,
+    bmp_v6Addr_rPortS = bmp_v6Addr | bmp_rPortS,
+    bmp_v6Addr_rPortR = bmp_v6Addr | bmp_rPortR,
+    bmp_v6Addr_spi = bmp_v6Addr | bmp_spi,
+    bmp_v6Addr_tos = bmp_v6Addr | bmp_tos,
+    bmp_v6Addr_flowLabel = bmp_v6Addr | bmp_flowLabel,
+    bmp_v6Addr_emptyTCPAck = bmp_v6Addr | bmp_emptyTCPAck,
+    bmp_v6Addr_frag = bmp_v6Addr | bmp_frag,
+    bmp_protocol_lPortS = bmp_protocol | bmp_lPortS,
+    bmp_protocol_lPortR = bmp_protocol | bmp_lPortR,
+    bmp_protocol_rPortS = bmp_protocol | bmp_rPortS,
+    bmp_protocol_rPortR = bmp_protocol | bmp_rPortR,
+    bmp_protocol_spi = bmp_protocol | bmp_spi,
+    bmp_protocol_tos = bmp_protocol | bmp_tos,
+    bmp_protocol_flowLabel = bmp_protocol | bmp_flowLabel,
+    bmp_protocol_emptyTCPAck = bmp_protocol | bmp_emptyTCPAck,
+    bmp_protocol_frag = bmp_protocol | bmp_frag,
+    bmp_lPortS_lPortR = bmp_lPortS | bmp_lPortR,
+    bmp_lPortS_rPortS = bmp_lPortS | bmp_rPortS,
+    bmp_lPortS_rPortR = bmp_lPortS | bmp_rPortR,
+    bmp_lPortS_spi = bmp_lPortS | bmp_spi,
+    bmp_lPortS_tos = bmp_lPortS | bmp_tos,
+    bmp_lPortS_flowLabel = bmp_lPortS | bmp_flowLabel,
+    bmp_lPortS_emptyTCPAck = bmp_lPortS | bmp_emptyTCPAck,
+    bmp_lPortS_frag = bmp_lPortS | bmp_frag,
+    bmp_lPortR_rPortS = bmp_lPortR | bmp_rPortS,
+    bmp_lPortR_rPortR = bmp_lPortR | bmp_rPortR,
+    bmp_lPortR_spi = bmp_lPortR | bmp_spi,
+    bmp_lPortR_tos = bmp_lPortR | bmp_tos,
+    bmp_lPortR_flowLabel = bmp_lPortR | bmp_flowLabel,
+    bmp_lPortR_emptyTCPAck = bmp_lPortR | bmp_emptyTCPAck,
+    bmp_lPortR_frag = bmp_lPortR | bmp_frag,
+    bmp_rPortS_rPortR = bmp_rPortS | bmp_rPortR,
+    bmp_rPortS_spi = bmp_rPortS | bmp_spi,
+    bmp_rPortS_tos = bmp_rPortS | bmp_tos,
+    bmp_rPortS_flowLabel = bmp_rPortS | bmp_flowLabel,
+    bmp_rPortS_emptyTCPAck = bmp_rPortS | bmp_emptyTCPAck,
+    bmp_rPortS_frag = bmp_rPortS | bmp_frag,
+    bmp_rPortR_spi = bmp_rPortR | bmp_spi,
+    bmp_rPortR_tos = bmp_rPortR | bmp_tos,
+    bmp_rPortR_flowLabel = bmp_rPortR | bmp_flowLabel,
+    bmp_rPortR_emptyTCPAck = bmp_rPortR | bmp_emptyTCPAck,
+    bmp_rPortR_frag = bmp_rPortR | bmp_frag,
+    bmp_spi_tos = bmp_spi | bmp_tos,
+    bmp_spi_flowLabel = bmp_spi | bmp_flowLabel,
+    bmp_spi_emptyTCPAck = bmp_spi | bmp_emptyTCPAck,
+    bmp_spi_frag = bmp_spi | bmp_frag,
+    bmp_tos_flowLabel = bmp_tos | bmp_flowLabel,
+    bmp_tos_emptyTCPAck = bmp_tos | bmp_emptyTCPAck,
+    bmp_tos_frag = bmp_tos | bmp_frag,
+    bmp_flowLabel_emptyTCPAck = bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_flowLabel_frag = bmp_flowLabel | bmp_frag,
+    bmp_v4Addr_protocol_lPortS = bmp_v4Addr | bmp_protocol | bmp_lPortS,
+    bmp_v4Addr_protocol_lPortR = bmp_v4Addr | bmp_protocol | bmp_lPortR,
+    bmp_v4Addr_protocol_rPortS = bmp_v4Addr | bmp_protocol | bmp_rPortS,
+    bmp_v4Addr_protocol_rPortR = bmp_v4Addr | bmp_protocol | bmp_rPortR,
+    bmp_v4Addr_protocol_spi = bmp_v4Addr | bmp_protocol | bmp_spi,
+    bmp_v4Addr_protocol_tos = bmp_v4Addr | bmp_protocol | bmp_tos,
+    bmp_v4Addr_protocol_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_frag = bmp_v4Addr | bmp_protocol | bmp_frag,
+    bmp_v4Addr_lPortS_lPortR = bmp_v4Addr | bmp_lPortS | bmp_lPortR,
+    bmp_v4Addr_lPortS_rPortS = bmp_v4Addr | bmp_lPortS | bmp_rPortS,
+    bmp_v4Addr_lPortS_rPortR = bmp_v4Addr | bmp_lPortS | bmp_rPortR,
+    bmp_v4Addr_lPortS_spi = bmp_v4Addr | bmp_lPortS | bmp_spi,
+    bmp_v4Addr_lPortS_tos = bmp_v4Addr | bmp_lPortS | bmp_tos,
+    bmp_v4Addr_lPortS_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_frag = bmp_v4Addr | bmp_lPortS | bmp_frag,
+    bmp_v4Addr_lPortR_rPortS = bmp_v4Addr | bmp_lPortR | bmp_rPortS,
+    bmp_v4Addr_lPortR_rPortR = bmp_v4Addr | bmp_lPortR | bmp_rPortR,
+    bmp_v4Addr_lPortR_spi = bmp_v4Addr | bmp_lPortR | bmp_spi,
+    bmp_v4Addr_lPortR_tos = bmp_v4Addr | bmp_lPortR | bmp_tos,
+    bmp_v4Addr_lPortR_emptyTCPAck = bmp_v4Addr | bmp_lPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortR_frag = bmp_v4Addr | bmp_lPortR | bmp_frag,
+    bmp_v4Addr_rPortS_rPortR = bmp_v4Addr | bmp_rPortS | bmp_rPortR,
+    bmp_v4Addr_rPortS_spi = bmp_v4Addr | bmp_rPortS | bmp_spi,
+    bmp_v4Addr_rPortS_tos = bmp_v4Addr | bmp_rPortS | bmp_tos,
+    bmp_v4Addr_rPortS_emptyTCPAck = bmp_v4Addr | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_v4Addr_rPortS_frag = bmp_v4Addr | bmp_rPortS | bmp_frag,
+    bmp_v4Addr_rPortR_spi = bmp_v4Addr | bmp_rPortR | bmp_spi,
+    bmp_v4Addr_rPortR_tos = bmp_v4Addr | bmp_rPortR | bmp_tos,
+    bmp_v4Addr_rPortR_emptyTCPAck = bmp_v4Addr | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_rPortR_frag = bmp_v4Addr | bmp_rPortR | bmp_frag,
+    bmp_v4Addr_spi_tos = bmp_v4Addr | bmp_spi | bmp_tos,
+    bmp_v4Addr_spi_emptyTCPAck = bmp_v4Addr | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_spi_frag = bmp_v4Addr | bmp_spi | bmp_frag,
+    bmp_v4Addr_tos_emptyTCPAck = bmp_v4Addr | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_tos_frag = bmp_v4Addr | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS = bmp_v6Addr | bmp_protocol | bmp_lPortS,
+    bmp_v6Addr_protocol_lPortR = bmp_v6Addr | bmp_protocol | bmp_lPortR,
+    bmp_v6Addr_protocol_rPortS = bmp_v6Addr | bmp_protocol | bmp_rPortS,
+    bmp_v6Addr_protocol_rPortR = bmp_v6Addr | bmp_protocol | bmp_rPortR,
+    bmp_v6Addr_protocol_spi = bmp_v6Addr | bmp_protocol | bmp_spi,
+    bmp_v6Addr_protocol_tos = bmp_v6Addr | bmp_protocol | bmp_tos,
+    bmp_v6Addr_protocol_flowLabel = bmp_v6Addr | bmp_protocol | bmp_flowLabel,
+    bmp_v6Addr_protocol_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_frag = bmp_v6Addr | bmp_protocol | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR = bmp_v6Addr | bmp_lPortS | bmp_lPortR,
+    bmp_v6Addr_lPortS_rPortS = bmp_v6Addr | bmp_lPortS | bmp_rPortS,
+    bmp_v6Addr_lPortS_rPortR = bmp_v6Addr | bmp_lPortS | bmp_rPortR,
+    bmp_v6Addr_lPortS_spi = bmp_v6Addr | bmp_lPortS | bmp_spi,
+    bmp_v6Addr_lPortS_tos = bmp_v6Addr | bmp_lPortS | bmp_tos,
+    bmp_v6Addr_lPortS_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_flowLabel,
+    bmp_v6Addr_lPortS_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_frag = bmp_v6Addr | bmp_lPortS | bmp_frag,
+    bmp_v6Addr_lPortR_rPortS = bmp_v6Addr | bmp_lPortR | bmp_rPortS,
+    bmp_v6Addr_lPortR_rPortR = bmp_v6Addr | bmp_lPortR | bmp_rPortR,
+    bmp_v6Addr_lPortR_spi = bmp_v6Addr | bmp_lPortR | bmp_spi,
+    bmp_v6Addr_lPortR_tos = bmp_v6Addr | bmp_lPortR | bmp_tos,
+    bmp_v6Addr_lPortR_flowLabel = bmp_v6Addr | bmp_lPortR | bmp_flowLabel,
+    bmp_v6Addr_lPortR_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_frag = bmp_v6Addr | bmp_lPortR | bmp_frag,
+    bmp_v6Addr_rPortS_rPortR = bmp_v6Addr | bmp_rPortS | bmp_rPortR,
+    bmp_v6Addr_rPortS_spi = bmp_v6Addr | bmp_rPortS | bmp_spi,
+    bmp_v6Addr_rPortS_tos = bmp_v6Addr | bmp_rPortS | bmp_tos,
+    bmp_v6Addr_rPortS_flowLabel = bmp_v6Addr | bmp_rPortS | bmp_flowLabel,
+    bmp_v6Addr_rPortS_emptyTCPAck = bmp_v6Addr | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortS_frag = bmp_v6Addr | bmp_rPortS | bmp_frag,
+    bmp_v6Addr_rPortR_spi = bmp_v6Addr | bmp_rPortR | bmp_spi,
+    bmp_v6Addr_rPortR_tos = bmp_v6Addr | bmp_rPortR | bmp_tos,
+    bmp_v6Addr_rPortR_flowLabel = bmp_v6Addr | bmp_rPortR | bmp_flowLabel,
+    bmp_v6Addr_rPortR_emptyTCPAck = bmp_v6Addr | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortR_frag = bmp_v6Addr | bmp_rPortR | bmp_frag,
+    bmp_v6Addr_spi_tos = bmp_v6Addr | bmp_spi | bmp_tos,
+    bmp_v6Addr_spi_flowLabel = bmp_v6Addr | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_spi_emptyTCPAck = bmp_v6Addr | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_spi_frag = bmp_v6Addr | bmp_spi | bmp_frag,
+    bmp_v6Addr_tos_flowLabel = bmp_v6Addr | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_tos_emptyTCPAck = bmp_v6Addr | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_tos_frag = bmp_v6Addr | bmp_tos | bmp_frag,
+    bmp_v6Addr_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_flowLabel_frag = bmp_v6Addr | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_lPortR = bmp_protocol | bmp_lPortS | bmp_lPortR,
+    bmp_protocol_lPortS_rPortS = bmp_protocol | bmp_lPortS | bmp_rPortS,
+    bmp_protocol_lPortS_rPortR = bmp_protocol | bmp_lPortS | bmp_rPortR,
+    bmp_protocol_lPortS_spi = bmp_protocol | bmp_lPortS | bmp_spi,
+    bmp_protocol_lPortS_tos = bmp_protocol | bmp_lPortS | bmp_tos,
+    bmp_protocol_lPortS_flowLabel = bmp_protocol | bmp_lPortS | bmp_flowLabel,
+    bmp_protocol_lPortS_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_frag = bmp_protocol | bmp_lPortS | bmp_frag,
+    bmp_protocol_lPortR_rPortS = bmp_protocol | bmp_lPortR | bmp_rPortS,
+    bmp_protocol_lPortR_rPortR = bmp_protocol | bmp_lPortR | bmp_rPortR,
+    bmp_protocol_lPortR_spi = bmp_protocol | bmp_lPortR | bmp_spi,
+    bmp_protocol_lPortR_tos = bmp_protocol | bmp_lPortR | bmp_tos,
+    bmp_protocol_lPortR_flowLabel = bmp_protocol | bmp_lPortR | bmp_flowLabel,
+    bmp_protocol_lPortR_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_frag = bmp_protocol | bmp_lPortR | bmp_frag,
+    bmp_protocol_rPortS_rPortR = bmp_protocol | bmp_rPortS | bmp_rPortR,
+    bmp_protocol_rPortS_spi = bmp_protocol | bmp_rPortS | bmp_spi,
+    bmp_protocol_rPortS_tos = bmp_protocol | bmp_rPortS | bmp_tos,
+    bmp_protocol_rPortS_flowLabel = bmp_protocol | bmp_rPortS | bmp_flowLabel,
+    bmp_protocol_rPortS_emptyTCPAck = bmp_protocol | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_protocol_rPortS_frag = bmp_protocol | bmp_rPortS | bmp_frag,
+    bmp_protocol_rPortR_spi = bmp_protocol | bmp_rPortR | bmp_spi,
+    bmp_protocol_rPortR_tos = bmp_protocol | bmp_rPortR | bmp_tos,
+    bmp_protocol_rPortR_flowLabel = bmp_protocol | bmp_rPortR | bmp_flowLabel,
+    bmp_protocol_rPortR_emptyTCPAck = bmp_protocol | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_protocol_rPortR_frag = bmp_protocol | bmp_rPortR | bmp_frag,
+    bmp_protocol_spi_tos = bmp_protocol | bmp_spi | bmp_tos,
+    bmp_protocol_spi_flowLabel = bmp_protocol | bmp_spi | bmp_flowLabel,
+    bmp_protocol_spi_emptyTCPAck = bmp_protocol | bmp_spi | bmp_emptyTCPAck,
+    bmp_protocol_spi_frag = bmp_protocol | bmp_spi | bmp_frag,
+    bmp_protocol_tos_flowLabel = bmp_protocol | bmp_tos | bmp_flowLabel,
+    bmp_protocol_tos_emptyTCPAck = bmp_protocol | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_tos_frag = bmp_protocol | bmp_tos | bmp_frag,
+    bmp_protocol_flowLabel_emptyTCPAck = bmp_protocol | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_flowLabel_frag = bmp_protocol | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_lPortR_rPortS = bmp_lPortS | bmp_lPortR | bmp_rPortS,
+    bmp_lPortS_lPortR_rPortR = bmp_lPortS | bmp_lPortR | bmp_rPortR,
+    bmp_lPortS_lPortR_spi = bmp_lPortS | bmp_lPortR | bmp_spi,
+    bmp_lPortS_lPortR_tos = bmp_lPortS | bmp_lPortR | bmp_tos,
+    bmp_lPortS_lPortR_flowLabel = bmp_lPortS | bmp_lPortR | bmp_flowLabel,
+    bmp_lPortS_lPortR_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_frag = bmp_lPortS | bmp_lPortR | bmp_frag,
+    bmp_lPortS_rPortS_rPortR = bmp_lPortS | bmp_rPortS | bmp_rPortR,
+    bmp_lPortS_rPortS_spi = bmp_lPortS | bmp_rPortS | bmp_spi,
+    bmp_lPortS_rPortS_tos = bmp_lPortS | bmp_rPortS | bmp_tos,
+    bmp_lPortS_rPortS_flowLabel = bmp_lPortS | bmp_rPortS | bmp_flowLabel,
+    bmp_lPortS_rPortS_emptyTCPAck = bmp_lPortS | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_lPortS_rPortS_frag = bmp_lPortS | bmp_rPortS | bmp_frag,
+    bmp_lPortS_rPortR_spi = bmp_lPortS | bmp_rPortR | bmp_spi,
+    bmp_lPortS_rPortR_tos = bmp_lPortS | bmp_rPortR | bmp_tos,
+    bmp_lPortS_rPortR_flowLabel = bmp_lPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_lPortS_rPortR_emptyTCPAck = bmp_lPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_lPortS_rPortR_frag = bmp_lPortS | bmp_rPortR | bmp_frag,
+    bmp_lPortS_spi_tos = bmp_lPortS | bmp_spi | bmp_tos,
+    bmp_lPortS_spi_flowLabel = bmp_lPortS | bmp_spi | bmp_flowLabel,
+    bmp_lPortS_spi_emptyTCPAck = bmp_lPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_lPortS_spi_frag = bmp_lPortS | bmp_spi | bmp_frag,
+    bmp_lPortS_tos_flowLabel = bmp_lPortS | bmp_tos | bmp_flowLabel,
+    bmp_lPortS_tos_emptyTCPAck = bmp_lPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortS_tos_frag = bmp_lPortS | bmp_tos | bmp_frag,
+    bmp_lPortS_flowLabel_emptyTCPAck = bmp_lPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_flowLabel_frag = bmp_lPortS | bmp_flowLabel | bmp_frag,
+    bmp_lPortR_rPortS_rPortR = bmp_lPortR | bmp_rPortS | bmp_rPortR,
+    bmp_lPortR_rPortS_spi = bmp_lPortR | bmp_rPortS | bmp_spi,
+    bmp_lPortR_rPortS_tos = bmp_lPortR | bmp_rPortS | bmp_tos,
+    bmp_lPortR_rPortS_flowLabel = bmp_lPortR | bmp_rPortS | bmp_flowLabel,
+    bmp_lPortR_rPortS_emptyTCPAck = bmp_lPortR | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_lPortR_rPortS_frag = bmp_lPortR | bmp_rPortS | bmp_frag,
+    bmp_lPortR_rPortR_spi = bmp_lPortR | bmp_rPortR | bmp_spi,
+    bmp_lPortR_rPortR_tos = bmp_lPortR | bmp_rPortR | bmp_tos,
+    bmp_lPortR_rPortR_flowLabel = bmp_lPortR | bmp_rPortR | bmp_flowLabel,
+    bmp_lPortR_rPortR_emptyTCPAck = bmp_lPortR | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_lPortR_rPortR_frag = bmp_lPortR | bmp_rPortR | bmp_frag,
+    bmp_lPortR_spi_tos = bmp_lPortR | bmp_spi | bmp_tos,
+    bmp_lPortR_spi_flowLabel = bmp_lPortR | bmp_spi | bmp_flowLabel,
+    bmp_lPortR_spi_emptyTCPAck = bmp_lPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_lPortR_spi_frag = bmp_lPortR | bmp_spi | bmp_frag,
+    bmp_lPortR_tos_flowLabel = bmp_lPortR | bmp_tos | bmp_flowLabel,
+    bmp_lPortR_tos_emptyTCPAck = bmp_lPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortR_tos_frag = bmp_lPortR | bmp_tos | bmp_frag,
+    bmp_lPortR_flowLabel_emptyTCPAck = bmp_lPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortR_flowLabel_frag = bmp_lPortR | bmp_flowLabel | bmp_frag,
+    bmp_rPortS_rPortR_spi = bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_rPortS_rPortR_tos = bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_rPortS_rPortR_flowLabel = bmp_rPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_rPortS_rPortR_emptyTCPAck = bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_rPortS_rPortR_frag = bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_rPortS_spi_tos = bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_rPortS_spi_flowLabel = bmp_rPortS | bmp_spi | bmp_flowLabel,
+    bmp_rPortS_spi_emptyTCPAck = bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_rPortS_spi_frag = bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_rPortS_tos_flowLabel = bmp_rPortS | bmp_tos | bmp_flowLabel,
+    bmp_rPortS_tos_emptyTCPAck = bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_rPortS_tos_frag = bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_rPortS_flowLabel_emptyTCPAck = bmp_rPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_rPortS_flowLabel_frag = bmp_rPortS | bmp_flowLabel | bmp_frag,
+    bmp_rPortR_spi_tos = bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_rPortR_spi_flowLabel = bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_rPortR_spi_emptyTCPAck = bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_rPortR_spi_frag = bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_rPortR_tos_flowLabel = bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_rPortR_tos_emptyTCPAck = bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_rPortR_tos_frag = bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_rPortR_flowLabel_emptyTCPAck = bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_rPortR_flowLabel_frag = bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_spi_tos_flowLabel = bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_spi_tos_emptyTCPAck = bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_spi_tos_frag = bmp_spi | bmp_tos | bmp_frag,
+    bmp_spi_flowLabel_emptyTCPAck = bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_spi_flowLabel_frag = bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_tos_flowLabel_emptyTCPAck = bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_tos_flowLabel_frag = bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_lPortR = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR,
+    bmp_v4Addr_protocol_lPortS_rPortS = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS,
+    bmp_v4Addr_protocol_lPortS_rPortR = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortR,
+    bmp_v4Addr_protocol_lPortS_spi = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_spi,
+    bmp_v4Addr_protocol_lPortS_tos = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_tos,
+    bmp_v4Addr_protocol_lPortS_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_frag,
+    bmp_v4Addr_protocol_lPortR_rPortS = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS,
+    bmp_v4Addr_protocol_lPortR_rPortR = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortR,
+    bmp_v4Addr_protocol_lPortR_spi = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_spi,
+    bmp_v4Addr_protocol_lPortR_tos = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_tos,
+    bmp_v4Addr_protocol_lPortR_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortR_frag = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_frag,
+    bmp_v4Addr_protocol_rPortS_rPortR = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_rPortR,
+    bmp_v4Addr_protocol_rPortS_spi = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_spi,
+    bmp_v4Addr_protocol_rPortS_tos = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_tos,
+    bmp_v4Addr_protocol_rPortS_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_rPortS_frag = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_frag,
+    bmp_v4Addr_protocol_rPortR_spi = bmp_v4Addr | bmp_protocol | bmp_rPortR | bmp_spi,
+    bmp_v4Addr_protocol_rPortR_tos = bmp_v4Addr | bmp_protocol | bmp_rPortR | bmp_tos,
+    bmp_v4Addr_protocol_rPortR_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_rPortR_frag = bmp_v4Addr | bmp_protocol | bmp_rPortR | bmp_frag,
+    bmp_v4Addr_protocol_spi_tos = bmp_v4Addr | bmp_protocol | bmp_spi | bmp_tos,
+    bmp_v4Addr_protocol_spi_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_spi_frag = bmp_v4Addr | bmp_protocol | bmp_spi | bmp_frag,
+    bmp_v4Addr_protocol_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_tos_frag = bmp_v4Addr | bmp_protocol | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortS_lPortR_rPortS = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS,
+    bmp_v4Addr_lPortS_lPortR_rPortR = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR,
+    bmp_v4Addr_lPortS_lPortR_spi = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_spi,
+    bmp_v4Addr_lPortS_lPortR_tos = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_tos,
+    bmp_v4Addr_lPortS_lPortR_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_lPortR_frag = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_frag,
+    bmp_v4Addr_lPortS_rPortS_rPortR = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR,
+    bmp_v4Addr_lPortS_rPortS_spi = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_spi,
+    bmp_v4Addr_lPortS_rPortS_tos = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_tos,
+    bmp_v4Addr_lPortS_rPortS_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_rPortS_frag = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_frag,
+    bmp_v4Addr_lPortS_rPortR_spi = bmp_v4Addr | bmp_lPortS | bmp_rPortR | bmp_spi,
+    bmp_v4Addr_lPortS_rPortR_tos = bmp_v4Addr | bmp_lPortS | bmp_rPortR | bmp_tos,
+    bmp_v4Addr_lPortS_rPortR_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_rPortR_frag = bmp_v4Addr | bmp_lPortS | bmp_rPortR | bmp_frag,
+    bmp_v4Addr_lPortS_spi_tos = bmp_v4Addr | bmp_lPortS | bmp_spi | bmp_tos,
+    bmp_v4Addr_lPortS_spi_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_spi_frag = bmp_v4Addr | bmp_lPortS | bmp_spi | bmp_frag,
+    bmp_v4Addr_lPortS_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_tos_frag = bmp_v4Addr | bmp_lPortS | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortR_rPortS_rPortR = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR,
+    bmp_v4Addr_lPortR_rPortS_spi = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_spi,
+    bmp_v4Addr_lPortR_rPortS_tos = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_tos,
+    bmp_v4Addr_lPortR_rPortS_emptyTCPAck = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortR_rPortS_frag = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_frag,
+    bmp_v4Addr_lPortR_rPortR_spi = bmp_v4Addr | bmp_lPortR | bmp_rPortR | bmp_spi,
+    bmp_v4Addr_lPortR_rPortR_tos = bmp_v4Addr | bmp_lPortR | bmp_rPortR | bmp_tos,
+    bmp_v4Addr_lPortR_rPortR_emptyTCPAck = bmp_v4Addr | bmp_lPortR | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortR_rPortR_frag = bmp_v4Addr | bmp_lPortR | bmp_rPortR | bmp_frag,
+    bmp_v4Addr_lPortR_spi_tos = bmp_v4Addr | bmp_lPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_lPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_lPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortR_spi_frag = bmp_v4Addr | bmp_lPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_lPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortR_tos_frag = bmp_v4Addr | bmp_lPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_rPortS_rPortR_spi = bmp_v4Addr | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_v4Addr_rPortS_rPortR_tos = bmp_v4Addr | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_v4Addr_rPortS_rPortR_emptyTCPAck = bmp_v4Addr | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_rPortS_rPortR_frag = bmp_v4Addr | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_v4Addr_rPortS_spi_tos = bmp_v4Addr | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_v4Addr_rPortS_spi_emptyTCPAck = bmp_v4Addr | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_rPortS_spi_frag = bmp_v4Addr | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_v4Addr_rPortS_tos_emptyTCPAck = bmp_v4Addr | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_rPortS_tos_frag = bmp_v4Addr | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_v4Addr_rPortR_spi_tos = bmp_v4Addr | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_rPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_rPortR_spi_frag = bmp_v4Addr | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_rPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_rPortR_tos_frag = bmp_v4Addr | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_spi_tos_frag = bmp_v4Addr | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR,
+    bmp_v6Addr_protocol_lPortS_rPortS = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS,
+    bmp_v6Addr_protocol_lPortS_rPortR = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR,
+    bmp_v6Addr_protocol_lPortS_spi = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_spi,
+    bmp_v6Addr_protocol_lPortS_tos = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_tos,
+    bmp_v6Addr_protocol_lPortS_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortS = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS,
+    bmp_v6Addr_protocol_lPortR_rPortR = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR,
+    bmp_v6Addr_protocol_lPortR_spi = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_spi,
+    bmp_v6Addr_protocol_lPortR_tos = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_tos,
+    bmp_v6Addr_protocol_lPortR_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortR_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_frag,
+    bmp_v6Addr_protocol_rPortS_rPortR = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR,
+    bmp_v6Addr_protocol_rPortS_spi = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_spi,
+    bmp_v6Addr_protocol_rPortS_tos = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_tos,
+    bmp_v6Addr_protocol_rPortS_flowLabel = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_flowLabel,
+    bmp_v6Addr_protocol_rPortS_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortS_frag = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_frag,
+    bmp_v6Addr_protocol_rPortR_spi = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_spi,
+    bmp_v6Addr_protocol_rPortR_tos = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_tos,
+    bmp_v6Addr_protocol_rPortR_flowLabel = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_flowLabel,
+    bmp_v6Addr_protocol_rPortR_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortR_frag = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_frag,
+    bmp_v6Addr_protocol_spi_tos = bmp_v6Addr | bmp_protocol | bmp_spi | bmp_tos,
+    bmp_v6Addr_protocol_spi_flowLabel = bmp_v6Addr | bmp_protocol | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_protocol_spi_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_spi_frag = bmp_v6Addr | bmp_protocol | bmp_spi | bmp_frag,
+    bmp_v6Addr_protocol_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_tos_frag = bmp_v6Addr | bmp_protocol | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortS = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS,
+    bmp_v6Addr_lPortS_lPortR_rPortR = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR,
+    bmp_v6Addr_lPortS_lPortR_spi = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_spi,
+    bmp_v6Addr_lPortS_lPortR_tos = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_tos,
+    bmp_v6Addr_lPortS_lPortR_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_flowLabel,
+    bmp_v6Addr_lPortS_lPortR_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_frag,
+    bmp_v6Addr_lPortS_rPortS_rPortR = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR,
+    bmp_v6Addr_lPortS_rPortS_spi = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_spi,
+    bmp_v6Addr_lPortS_rPortS_tos = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_tos,
+    bmp_v6Addr_lPortS_rPortS_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_flowLabel,
+    bmp_v6Addr_lPortS_rPortS_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortS_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_frag,
+    bmp_v6Addr_lPortS_rPortR_spi = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_spi,
+    bmp_v6Addr_lPortS_rPortR_tos = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_tos,
+    bmp_v6Addr_lPortS_rPortR_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_v6Addr_lPortS_rPortR_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortR_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_frag,
+    bmp_v6Addr_lPortS_spi_tos = bmp_v6Addr | bmp_lPortS | bmp_spi | bmp_tos,
+    bmp_v6Addr_lPortS_spi_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_lPortS_spi_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_spi_frag = bmp_v6Addr | bmp_lPortS | bmp_spi | bmp_frag,
+    bmp_v6Addr_lPortS_tos_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortS_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_tos_frag = bmp_v6Addr | bmp_lPortS | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortS_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortR_rPortS_rPortR = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR,
+    bmp_v6Addr_lPortR_rPortS_spi = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_spi,
+    bmp_v6Addr_lPortR_rPortS_tos = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_tos,
+    bmp_v6Addr_lPortR_rPortS_flowLabel = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_flowLabel,
+    bmp_v6Addr_lPortR_rPortS_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortS_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_frag,
+    bmp_v6Addr_lPortR_rPortR_spi = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_spi,
+    bmp_v6Addr_lPortR_rPortR_tos = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_tos,
+    bmp_v6Addr_lPortR_rPortR_flowLabel = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_flowLabel,
+    bmp_v6Addr_lPortR_rPortR_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortR_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_frag,
+    bmp_v6Addr_lPortR_spi_tos = bmp_v6Addr | bmp_lPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_lPortR_spi_flowLabel = bmp_v6Addr | bmp_lPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_lPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_spi_frag = bmp_v6Addr | bmp_lPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_lPortR_tos_flowLabel = bmp_v6Addr | bmp_lPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_tos_frag = bmp_v6Addr | bmp_lPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_flowLabel_frag = bmp_v6Addr | bmp_lPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_rPortS_rPortR_spi = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_v6Addr_rPortS_rPortR_tos = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_v6Addr_rPortS_rPortR_flowLabel = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_v6Addr_rPortS_rPortR_emptyTCPAck = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortS_rPortR_frag = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_v6Addr_rPortS_spi_tos = bmp_v6Addr | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_v6Addr_rPortS_spi_flowLabel = bmp_v6Addr | bmp_rPortS | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_rPortS_spi_emptyTCPAck = bmp_v6Addr | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortS_spi_frag = bmp_v6Addr | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_v6Addr_rPortS_tos_flowLabel = bmp_v6Addr | bmp_rPortS | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_rPortS_tos_emptyTCPAck = bmp_v6Addr | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortS_tos_frag = bmp_v6Addr | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_v6Addr_rPortS_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_rPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortS_flowLabel_frag = bmp_v6Addr | bmp_rPortS | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_rPortR_spi_tos = bmp_v6Addr | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_rPortR_spi_flowLabel = bmp_v6Addr | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_rPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortR_spi_frag = bmp_v6Addr | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_rPortR_tos_flowLabel = bmp_v6Addr | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_rPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortR_tos_frag = bmp_v6Addr | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_rPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortR_flowLabel_frag = bmp_v6Addr | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_spi_tos_flowLabel = bmp_v6Addr | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_spi_tos_frag = bmp_v6Addr | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_spi_flowLabel_frag = bmp_v6Addr | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_tos_flowLabel_frag = bmp_v6Addr | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortS = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS,
+    bmp_protocol_lPortS_lPortR_rPortR = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR,
+    bmp_protocol_lPortS_lPortR_spi = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi,
+    bmp_protocol_lPortS_lPortR_tos = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_tos,
+    bmp_protocol_lPortS_lPortR_flowLabel = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_flowLabel,
+    bmp_protocol_lPortS_lPortR_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_frag,
+    bmp_protocol_lPortS_rPortS_rPortR = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR,
+    bmp_protocol_lPortS_rPortS_spi = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi,
+    bmp_protocol_lPortS_rPortS_tos = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_tos,
+    bmp_protocol_lPortS_rPortS_flowLabel = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_flowLabel,
+    bmp_protocol_lPortS_rPortS_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortS_frag = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_frag,
+    bmp_protocol_lPortS_rPortR_spi = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi,
+    bmp_protocol_lPortS_rPortR_tos = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_tos,
+    bmp_protocol_lPortS_rPortR_flowLabel = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_protocol_lPortS_rPortR_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortR_frag = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_frag,
+    bmp_protocol_lPortS_spi_tos = bmp_protocol | bmp_lPortS | bmp_spi | bmp_tos,
+    bmp_protocol_lPortS_spi_flowLabel = bmp_protocol | bmp_lPortS | bmp_spi | bmp_flowLabel,
+    bmp_protocol_lPortS_spi_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_spi_frag = bmp_protocol | bmp_lPortS | bmp_spi | bmp_frag,
+    bmp_protocol_lPortS_tos_flowLabel = bmp_protocol | bmp_lPortS | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortS_tos_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_tos_frag = bmp_protocol | bmp_lPortS | bmp_tos | bmp_frag,
+    bmp_protocol_lPortS_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortR_rPortS_rPortR = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR,
+    bmp_protocol_lPortR_rPortS_spi = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi,
+    bmp_protocol_lPortR_rPortS_tos = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_tos,
+    bmp_protocol_lPortR_rPortS_flowLabel = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_flowLabel,
+    bmp_protocol_lPortR_rPortS_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortS_frag = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_frag,
+    bmp_protocol_lPortR_rPortR_spi = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi,
+    bmp_protocol_lPortR_rPortR_tos = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_tos,
+    bmp_protocol_lPortR_rPortR_flowLabel = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_flowLabel,
+    bmp_protocol_lPortR_rPortR_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortR_frag = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_frag,
+    bmp_protocol_lPortR_spi_tos = bmp_protocol | bmp_lPortR | bmp_spi | bmp_tos,
+    bmp_protocol_lPortR_spi_flowLabel = bmp_protocol | bmp_lPortR | bmp_spi | bmp_flowLabel,
+    bmp_protocol_lPortR_spi_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_spi_frag = bmp_protocol | bmp_lPortR | bmp_spi | bmp_frag,
+    bmp_protocol_lPortR_tos_flowLabel = bmp_protocol | bmp_lPortR | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortR_tos_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_tos_frag = bmp_protocol | bmp_lPortR | bmp_tos | bmp_frag,
+    bmp_protocol_lPortR_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_flowLabel_frag = bmp_protocol | bmp_lPortR | bmp_flowLabel | bmp_frag,
+    bmp_protocol_rPortS_rPortR_spi = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_protocol_rPortS_rPortR_tos = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_protocol_rPortS_rPortR_flowLabel = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_protocol_rPortS_rPortR_emptyTCPAck = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_protocol_rPortS_rPortR_frag = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_protocol_rPortS_spi_tos = bmp_protocol | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_protocol_rPortS_spi_flowLabel = bmp_protocol | bmp_rPortS | bmp_spi | bmp_flowLabel,
+    bmp_protocol_rPortS_spi_emptyTCPAck = bmp_protocol | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_protocol_rPortS_spi_frag = bmp_protocol | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_protocol_rPortS_tos_flowLabel = bmp_protocol | bmp_rPortS | bmp_tos | bmp_flowLabel,
+    bmp_protocol_rPortS_tos_emptyTCPAck = bmp_protocol | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_rPortS_tos_frag = bmp_protocol | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_protocol_rPortS_flowLabel_emptyTCPAck = bmp_protocol | bmp_rPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_rPortS_flowLabel_frag = bmp_protocol | bmp_rPortS | bmp_flowLabel | bmp_frag,
+    bmp_protocol_rPortR_spi_tos = bmp_protocol | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_protocol_rPortR_spi_flowLabel = bmp_protocol | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_protocol_rPortR_spi_emptyTCPAck = bmp_protocol | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_protocol_rPortR_spi_frag = bmp_protocol | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_protocol_rPortR_tos_flowLabel = bmp_protocol | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_protocol_rPortR_tos_emptyTCPAck = bmp_protocol | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_rPortR_tos_frag = bmp_protocol | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_protocol_rPortR_flowLabel_emptyTCPAck = bmp_protocol | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_rPortR_flowLabel_frag = bmp_protocol | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_protocol_spi_tos_flowLabel = bmp_protocol | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_protocol_spi_tos_emptyTCPAck = bmp_protocol | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_spi_tos_frag = bmp_protocol | bmp_spi | bmp_tos | bmp_frag,
+    bmp_protocol_spi_flowLabel_emptyTCPAck = bmp_protocol | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_spi_flowLabel_frag = bmp_protocol | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_protocol_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_tos_flowLabel_frag = bmp_protocol | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_lPortR_rPortS_rPortR = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR,
+    bmp_lPortS_lPortR_rPortS_spi = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi,
+    bmp_lPortS_lPortR_rPortS_tos = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos,
+    bmp_lPortS_lPortR_rPortS_flowLabel = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_flowLabel,
+    bmp_lPortS_lPortR_rPortS_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortS_frag = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_frag,
+    bmp_lPortS_lPortR_rPortR_spi = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi,
+    bmp_lPortS_lPortR_rPortR_tos = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos,
+    bmp_lPortS_lPortR_rPortR_flowLabel = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_flowLabel,
+    bmp_lPortS_lPortR_rPortR_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortR_frag = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_frag,
+    bmp_lPortS_lPortR_spi_tos = bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos,
+    bmp_lPortS_lPortR_spi_flowLabel = bmp_lPortS | bmp_lPortR | bmp_spi | bmp_flowLabel,
+    bmp_lPortS_lPortR_spi_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_spi_frag = bmp_lPortS | bmp_lPortR | bmp_spi | bmp_frag,
+    bmp_lPortS_lPortR_tos_flowLabel = bmp_lPortS | bmp_lPortR | bmp_tos | bmp_flowLabel,
+    bmp_lPortS_lPortR_tos_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_tos_frag = bmp_lPortS | bmp_lPortR | bmp_tos | bmp_frag,
+    bmp_lPortS_lPortR_flowLabel_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_flowLabel_frag = bmp_lPortS | bmp_lPortR | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_rPortS_rPortR_spi = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_lPortS_rPortS_rPortR_tos = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_lPortS_rPortS_rPortR_flowLabel = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_lPortS_rPortS_rPortR_emptyTCPAck = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_lPortS_rPortS_rPortR_frag = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_lPortS_rPortS_spi_tos = bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_lPortS_rPortS_spi_flowLabel = bmp_lPortS | bmp_rPortS | bmp_spi | bmp_flowLabel,
+    bmp_lPortS_rPortS_spi_emptyTCPAck = bmp_lPortS | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_lPortS_rPortS_spi_frag = bmp_lPortS | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_lPortS_rPortS_tos_flowLabel = bmp_lPortS | bmp_rPortS | bmp_tos | bmp_flowLabel,
+    bmp_lPortS_rPortS_tos_emptyTCPAck = bmp_lPortS | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortS_rPortS_tos_frag = bmp_lPortS | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_lPortS_rPortS_flowLabel_emptyTCPAck = bmp_lPortS | bmp_rPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_rPortS_flowLabel_frag = bmp_lPortS | bmp_rPortS | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_rPortR_spi_tos = bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_lPortS_rPortR_spi_flowLabel = bmp_lPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_lPortS_rPortR_spi_emptyTCPAck = bmp_lPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_lPortS_rPortR_spi_frag = bmp_lPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_lPortS_rPortR_tos_flowLabel = bmp_lPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_lPortS_rPortR_tos_emptyTCPAck = bmp_lPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortS_rPortR_tos_frag = bmp_lPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_lPortS_rPortR_flowLabel_emptyTCPAck = bmp_lPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_rPortR_flowLabel_frag = bmp_lPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_spi_tos_flowLabel = bmp_lPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_lPortS_spi_tos_emptyTCPAck = bmp_lPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortS_spi_tos_frag = bmp_lPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_lPortS_spi_flowLabel_emptyTCPAck = bmp_lPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_spi_flowLabel_frag = bmp_lPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_tos_flowLabel_emptyTCPAck = bmp_lPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_tos_flowLabel_frag = bmp_lPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortR_rPortS_rPortR_spi = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_lPortR_rPortS_rPortR_tos = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_lPortR_rPortS_rPortR_flowLabel = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_lPortR_rPortS_rPortR_emptyTCPAck = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_lPortR_rPortS_rPortR_frag = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_lPortR_rPortS_spi_tos = bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_lPortR_rPortS_spi_flowLabel = bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel,
+    bmp_lPortR_rPortS_spi_emptyTCPAck = bmp_lPortR | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_lPortR_rPortS_spi_frag = bmp_lPortR | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_lPortR_rPortS_tos_flowLabel = bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel,
+    bmp_lPortR_rPortS_tos_emptyTCPAck = bmp_lPortR | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortR_rPortS_tos_frag = bmp_lPortR | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_lPortR_rPortS_flowLabel_emptyTCPAck = bmp_lPortR | bmp_rPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortR_rPortS_flowLabel_frag = bmp_lPortR | bmp_rPortS | bmp_flowLabel | bmp_frag,
+    bmp_lPortR_rPortR_spi_tos = bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_lPortR_rPortR_spi_flowLabel = bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_lPortR_rPortR_spi_emptyTCPAck = bmp_lPortR | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_lPortR_rPortR_spi_frag = bmp_lPortR | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_lPortR_rPortR_tos_flowLabel = bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_lPortR_rPortR_tos_emptyTCPAck = bmp_lPortR | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortR_rPortR_tos_frag = bmp_lPortR | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_lPortR_rPortR_flowLabel_emptyTCPAck = bmp_lPortR | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortR_rPortR_flowLabel_frag = bmp_lPortR | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_lPortR_spi_tos_flowLabel = bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_lPortR_spi_tos_emptyTCPAck = bmp_lPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortR_spi_tos_frag = bmp_lPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_lPortR_spi_flowLabel_emptyTCPAck = bmp_lPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortR_spi_flowLabel_frag = bmp_lPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_lPortR_tos_flowLabel_emptyTCPAck = bmp_lPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortR_tos_flowLabel_frag = bmp_lPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_rPortS_rPortR_spi_tos = bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_rPortS_rPortR_spi_flowLabel = bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_rPortS_rPortR_spi_emptyTCPAck = bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_rPortS_rPortR_spi_frag = bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_rPortS_rPortR_tos_flowLabel = bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_rPortS_rPortR_tos_emptyTCPAck = bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_rPortS_rPortR_tos_frag = bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_rPortS_rPortR_flowLabel_emptyTCPAck = bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_rPortS_rPortR_flowLabel_frag = bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_rPortS_spi_tos_flowLabel = bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_rPortS_spi_tos_emptyTCPAck = bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_rPortS_spi_tos_frag = bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_rPortS_spi_flowLabel_emptyTCPAck = bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_rPortS_spi_flowLabel_frag = bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_rPortS_tos_flowLabel_emptyTCPAck = bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_rPortS_tos_flowLabel_frag = bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_rPortR_spi_tos_flowLabel = bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_rPortR_spi_tos_emptyTCPAck = bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_rPortR_spi_tos_frag = bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_rPortR_spi_flowLabel_emptyTCPAck = bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_rPortR_spi_flowLabel_frag = bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_rPortR_tos_flowLabel_emptyTCPAck = bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_rPortR_tos_flowLabel_frag = bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_spi_tos_flowLabel_emptyTCPAck = bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_spi_tos_flowLabel_frag = bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortR = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR,
+    bmp_v4Addr_protocol_lPortS_lPortR_spi = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi,
+    bmp_v4Addr_protocol_lPortS_lPortR_tos = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_tos,
+    bmp_v4Addr_protocol_lPortS_lPortR_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_lPortR_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_rPortS_rPortR = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR,
+    bmp_v4Addr_protocol_lPortS_rPortS_spi = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi,
+    bmp_v4Addr_protocol_lPortS_rPortS_tos = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_tos,
+    bmp_v4Addr_protocol_lPortS_rPortS_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_rPortS_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_rPortR_spi = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi,
+    bmp_v4Addr_protocol_lPortS_rPortR_tos = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_tos,
+    bmp_v4Addr_protocol_lPortS_rPortR_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_rPortR_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_spi_tos = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_spi | bmp_tos,
+    bmp_v4Addr_protocol_lPortS_spi_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_spi_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_spi | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_lPortR_rPortS_rPortR = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR,
+    bmp_v4Addr_protocol_lPortR_rPortS_spi = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi,
+    bmp_v4Addr_protocol_lPortR_rPortS_tos = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_tos,
+    bmp_v4Addr_protocol_lPortR_rPortS_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortR_rPortS_frag = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_frag,
+    bmp_v4Addr_protocol_lPortR_rPortR_spi = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi,
+    bmp_v4Addr_protocol_lPortR_rPortR_tos = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_tos,
+    bmp_v4Addr_protocol_lPortR_rPortR_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortR_rPortR_frag = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_frag,
+    bmp_v4Addr_protocol_lPortR_spi_tos = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_protocol_lPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortR_spi_frag = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_protocol_lPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortR_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_rPortS_rPortR_spi = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_v4Addr_protocol_rPortS_rPortR_tos = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_v4Addr_protocol_rPortS_rPortR_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_rPortS_rPortR_frag = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_v4Addr_protocol_rPortS_spi_tos = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_v4Addr_protocol_rPortS_spi_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_rPortS_spi_frag = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_v4Addr_protocol_rPortS_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_rPortS_tos_frag = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_rPortR_spi_tos = bmp_v4Addr | bmp_protocol | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_protocol_rPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_rPortR_spi_frag = bmp_v4Addr | bmp_protocol | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_protocol_rPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_rPortR_tos_frag = bmp_v4Addr | bmp_protocol | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_spi_tos_frag = bmp_v4Addr | bmp_protocol | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortS_lPortR_rPortS_rPortR = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR,
+    bmp_v4Addr_lPortS_lPortR_rPortS_spi = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi,
+    bmp_v4Addr_lPortS_lPortR_rPortS_tos = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos,
+    bmp_v4Addr_lPortS_lPortR_rPortS_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_lPortR_rPortS_frag = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_frag,
+    bmp_v4Addr_lPortS_lPortR_rPortR_spi = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi,
+    bmp_v4Addr_lPortS_lPortR_rPortR_tos = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos,
+    bmp_v4Addr_lPortS_lPortR_rPortR_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_lPortR_rPortR_frag = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_frag,
+    bmp_v4Addr_lPortS_lPortR_spi_tos = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_lPortS_lPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_lPortR_spi_frag = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_lPortS_lPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_lPortR_tos_frag = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortS_rPortS_rPortR_spi = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_v4Addr_lPortS_rPortS_rPortR_tos = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_v4Addr_lPortS_rPortS_rPortR_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_rPortS_rPortR_frag = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_v4Addr_lPortS_rPortS_spi_tos = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_v4Addr_lPortS_rPortS_spi_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_rPortS_spi_frag = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_v4Addr_lPortS_rPortS_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_rPortS_tos_frag = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortS_rPortR_spi_tos = bmp_v4Addr | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_lPortS_rPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_rPortR_spi_frag = bmp_v4Addr | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_lPortS_rPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_rPortR_tos_frag = bmp_v4Addr | bmp_lPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortS_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_spi_tos_frag = bmp_v4Addr | bmp_lPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortR_rPortS_rPortR_spi = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_v4Addr_lPortR_rPortS_rPortR_tos = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_v4Addr_lPortR_rPortS_rPortR_emptyTCPAck = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortR_rPortS_rPortR_frag = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_v4Addr_lPortR_rPortS_spi_tos = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_v4Addr_lPortR_rPortS_spi_emptyTCPAck = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortR_rPortS_spi_frag = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_v4Addr_lPortR_rPortS_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortR_rPortS_tos_frag = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortR_rPortR_spi_tos = bmp_v4Addr | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_lPortR_rPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortR_rPortR_spi_frag = bmp_v4Addr | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_lPortR_rPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortR_rPortR_tos_frag = bmp_v4Addr | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortR_spi_tos_frag = bmp_v4Addr | bmp_lPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_rPortS_rPortR_spi_tos = bmp_v4Addr | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_rPortS_rPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_rPortS_rPortR_spi_frag = bmp_v4Addr | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_rPortS_rPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_rPortS_rPortR_tos_frag = bmp_v4Addr | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_rPortS_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_rPortS_spi_tos_frag = bmp_v4Addr | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_rPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_rPortR_spi_tos_frag = bmp_v4Addr | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR,
+    bmp_v6Addr_protocol_lPortS_lPortR_spi = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi,
+    bmp_v6Addr_protocol_lPortS_lPortR_tos = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_tos,
+    bmp_v6Addr_protocol_lPortS_lPortR_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_lPortR_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR,
+    bmp_v6Addr_protocol_lPortS_rPortS_spi = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi,
+    bmp_v6Addr_protocol_lPortS_rPortS_tos = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_tos,
+    bmp_v6Addr_protocol_lPortS_rPortS_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_rPortS_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortS_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortR_spi = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi,
+    bmp_v6Addr_protocol_lPortS_rPortR_tos = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_tos,
+    bmp_v6Addr_protocol_lPortS_rPortR_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_rPortR_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortR_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_spi_tos = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_spi | bmp_tos,
+    bmp_v6Addr_protocol_lPortS_spi_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_spi_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_spi_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_spi | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR,
+    bmp_v6Addr_protocol_lPortR_rPortS_spi = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi,
+    bmp_v6Addr_protocol_lPortR_rPortS_tos = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_tos,
+    bmp_v6Addr_protocol_lPortR_rPortS_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortR_rPortS_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortS_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortR_spi = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi,
+    bmp_v6Addr_protocol_lPortR_rPortR_tos = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_tos,
+    bmp_v6Addr_protocol_lPortR_rPortR_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortR_rPortR_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortR_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_spi_tos = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_protocol_lPortR_spi_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_spi_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_rPortS_rPortR_spi = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_v6Addr_protocol_rPortS_rPortR_tos = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_v6Addr_protocol_rPortS_rPortR_flowLabel = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_v6Addr_protocol_rPortS_rPortR_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortS_rPortR_frag = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_v6Addr_protocol_rPortS_spi_tos = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_v6Addr_protocol_rPortS_spi_flowLabel = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_protocol_rPortS_spi_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortS_spi_frag = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_v6Addr_protocol_rPortS_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_rPortS_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortS_tos_frag = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_rPortS_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortS_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_rPortR_spi_tos = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_protocol_rPortR_spi_flowLabel = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_protocol_rPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortR_spi_frag = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_protocol_rPortR_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_rPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortR_tos_frag = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_rPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortR_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_spi_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_spi_tos_frag = bmp_v6Addr | bmp_protocol | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_spi_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR,
+    bmp_v6Addr_lPortS_lPortR_rPortS_spi = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi,
+    bmp_v6Addr_lPortS_lPortR_rPortS_tos = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos,
+    bmp_v6Addr_lPortS_lPortR_rPortS_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_flowLabel,
+    bmp_v6Addr_lPortS_lPortR_rPortS_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortS_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortR_spi = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi,
+    bmp_v6Addr_lPortS_lPortR_rPortR_tos = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos,
+    bmp_v6Addr_lPortS_lPortR_rPortR_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_flowLabel,
+    bmp_v6Addr_lPortS_lPortR_rPortR_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortR_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_spi_tos = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_lPortS_lPortR_spi_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_lPortS_lPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_spi_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_tos_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortS_lPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_tos_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_rPortS_rPortR_spi = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_v6Addr_lPortS_rPortS_rPortR_tos = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_v6Addr_lPortS_rPortS_rPortR_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_v6Addr_lPortS_rPortS_rPortR_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortS_rPortR_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_v6Addr_lPortS_rPortS_spi_tos = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_v6Addr_lPortS_rPortS_spi_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_lPortS_rPortS_spi_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortS_spi_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_v6Addr_lPortS_rPortS_tos_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortS_rPortS_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortS_tos_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortS_rPortS_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortS_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_rPortR_spi_tos = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_lPortS_rPortR_spi_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_lPortS_rPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortR_spi_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_lPortS_rPortR_tos_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortS_rPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortR_tos_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortS_rPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortR_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_spi_tos_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortS_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_spi_tos_frag = bmp_v6Addr | bmp_lPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortS_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_spi_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortR_rPortS_rPortR_spi = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_v6Addr_lPortR_rPortS_rPortR_tos = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_v6Addr_lPortR_rPortS_rPortR_flowLabel = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_v6Addr_lPortR_rPortS_rPortR_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortS_rPortR_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_v6Addr_lPortR_rPortS_spi_tos = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_v6Addr_lPortR_rPortS_spi_flowLabel = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_lPortR_rPortS_spi_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortS_spi_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_v6Addr_lPortR_rPortS_tos_flowLabel = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortR_rPortS_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortS_tos_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortR_rPortS_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortS_flowLabel_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortR_rPortR_spi_tos = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_lPortR_rPortR_spi_flowLabel = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_lPortR_rPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortR_spi_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_lPortR_rPortR_tos_flowLabel = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortR_rPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortR_tos_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortR_rPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortR_flowLabel_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_spi_tos_frag = bmp_v6Addr | bmp_lPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_lPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_rPortS_rPortR_spi_tos = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_rPortS_rPortR_spi_flowLabel = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_rPortS_rPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortS_rPortR_spi_frag = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_rPortS_rPortR_tos_flowLabel = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_rPortS_rPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortS_rPortR_tos_frag = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_rPortS_rPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortS_rPortR_flowLabel_frag = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_rPortS_spi_tos_flowLabel = bmp_v6Addr | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_rPortS_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortS_spi_tos_frag = bmp_v6Addr | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_rPortS_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortS_spi_flowLabel_frag = bmp_v6Addr | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_rPortS_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortS_tos_flowLabel_frag = bmp_v6Addr | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_rPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_rPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortR_spi_tos_frag = bmp_v6Addr | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_rPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_rPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR,
+    bmp_protocol_lPortS_lPortR_rPortS_spi = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi,
+    bmp_protocol_lPortS_lPortR_rPortS_tos = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos,
+    bmp_protocol_lPortS_lPortR_rPortS_flowLabel = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_flowLabel,
+    bmp_protocol_lPortS_lPortR_rPortS_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortS_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortR_spi = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi,
+    bmp_protocol_lPortS_lPortR_rPortR_tos = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos,
+    bmp_protocol_lPortS_lPortR_rPortR_flowLabel = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_flowLabel,
+    bmp_protocol_lPortS_lPortR_rPortR_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortR_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_frag,
+    bmp_protocol_lPortS_lPortR_spi_tos = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos,
+    bmp_protocol_lPortS_lPortR_spi_flowLabel = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_flowLabel,
+    bmp_protocol_lPortS_lPortR_spi_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_spi_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_frag,
+    bmp_protocol_lPortS_lPortR_tos_flowLabel = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortS_lPortR_tos_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_tos_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_tos | bmp_frag,
+    bmp_protocol_lPortS_lPortR_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_rPortS_rPortR_spi = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_protocol_lPortS_rPortS_rPortR_tos = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_protocol_lPortS_rPortS_rPortR_flowLabel = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_protocol_lPortS_rPortS_rPortR_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortS_rPortR_frag = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_protocol_lPortS_rPortS_spi_tos = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_protocol_lPortS_rPortS_spi_flowLabel = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_flowLabel,
+    bmp_protocol_lPortS_rPortS_spi_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortS_spi_frag = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_protocol_lPortS_rPortS_tos_flowLabel = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortS_rPortS_tos_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortS_tos_frag = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_protocol_lPortS_rPortS_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortS_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_rPortR_spi_tos = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_protocol_lPortS_rPortR_spi_flowLabel = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_protocol_lPortS_rPortR_spi_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortR_spi_frag = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_protocol_lPortS_rPortR_tos_flowLabel = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortS_rPortR_tos_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortR_tos_frag = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_protocol_lPortS_rPortR_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortR_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_spi_tos_flowLabel = bmp_protocol | bmp_lPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortS_spi_tos_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_spi_tos_frag = bmp_protocol | bmp_lPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_protocol_lPortS_spi_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_spi_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_tos_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortR_rPortS_rPortR_spi = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_protocol_lPortR_rPortS_rPortR_tos = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_protocol_lPortR_rPortS_rPortR_flowLabel = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_protocol_lPortR_rPortS_rPortR_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortS_rPortR_frag = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_protocol_lPortR_rPortS_spi_tos = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_protocol_lPortR_rPortS_spi_flowLabel = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel,
+    bmp_protocol_lPortR_rPortS_spi_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortS_spi_frag = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_protocol_lPortR_rPortS_tos_flowLabel = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortR_rPortS_tos_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortS_tos_frag = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_protocol_lPortR_rPortS_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortS_flowLabel_frag = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortR_rPortR_spi_tos = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_protocol_lPortR_rPortR_spi_flowLabel = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_protocol_lPortR_rPortR_spi_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortR_spi_frag = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_protocol_lPortR_rPortR_tos_flowLabel = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortR_rPortR_tos_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortR_tos_frag = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_protocol_lPortR_rPortR_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortR_flowLabel_frag = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortR_spi_tos_flowLabel = bmp_protocol | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortR_spi_tos_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_spi_tos_frag = bmp_protocol | bmp_lPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_protocol_lPortR_spi_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_spi_flowLabel_frag = bmp_protocol | bmp_lPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortR_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_tos_flowLabel_frag = bmp_protocol | bmp_lPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_rPortS_rPortR_spi_tos = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_protocol_rPortS_rPortR_spi_flowLabel = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_protocol_rPortS_rPortR_spi_emptyTCPAck = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_protocol_rPortS_rPortR_spi_frag = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_protocol_rPortS_rPortR_tos_flowLabel = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_protocol_rPortS_rPortR_tos_emptyTCPAck = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_rPortS_rPortR_tos_frag = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_protocol_rPortS_rPortR_flowLabel_emptyTCPAck = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_rPortS_rPortR_flowLabel_frag = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_protocol_rPortS_spi_tos_flowLabel = bmp_protocol | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_protocol_rPortS_spi_tos_emptyTCPAck = bmp_protocol | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_rPortS_spi_tos_frag = bmp_protocol | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_protocol_rPortS_spi_flowLabel_emptyTCPAck = bmp_protocol | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_rPortS_spi_flowLabel_frag = bmp_protocol | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_protocol_rPortS_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_rPortS_tos_flowLabel_frag = bmp_protocol | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_rPortR_spi_tos_flowLabel = bmp_protocol | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_protocol_rPortR_spi_tos_emptyTCPAck = bmp_protocol | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_rPortR_spi_tos_frag = bmp_protocol | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_protocol_rPortR_spi_flowLabel_emptyTCPAck = bmp_protocol | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_rPortR_spi_flowLabel_frag = bmp_protocol | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_protocol_rPortR_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_rPortR_tos_flowLabel_frag = bmp_protocol | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_spi_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_spi_tos_flowLabel_frag = bmp_protocol | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_lPortR_rPortS_rPortR_spi = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_lPortS_lPortR_rPortS_rPortR_tos = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_lPortS_lPortR_rPortS_rPortR_flowLabel = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_lPortS_lPortR_rPortS_rPortR_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortS_rPortR_frag = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_lPortS_lPortR_rPortS_spi_tos = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_lPortS_lPortR_rPortS_spi_flowLabel = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel,
+    bmp_lPortS_lPortR_rPortS_spi_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortS_spi_frag = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_lPortS_lPortR_rPortS_tos_flowLabel = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel,
+    bmp_lPortS_lPortR_rPortS_tos_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortS_tos_frag = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_lPortS_lPortR_rPortS_flowLabel_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortS_flowLabel_frag = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_lPortR_rPortR_spi_tos = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_lPortS_lPortR_rPortR_spi_flowLabel = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_lPortS_lPortR_rPortR_spi_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortR_spi_frag = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_lPortS_lPortR_rPortR_tos_flowLabel = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_lPortS_lPortR_rPortR_tos_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortR_tos_frag = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_lPortS_lPortR_rPortR_flowLabel_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortR_flowLabel_frag = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_lPortR_spi_tos_flowLabel = bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_lPortS_lPortR_spi_tos_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_spi_tos_frag = bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_lPortS_lPortR_spi_flowLabel_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_spi_flowLabel_frag = bmp_lPortS | bmp_lPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_lPortR_tos_flowLabel_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_tos_flowLabel_frag = bmp_lPortS | bmp_lPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_rPortS_rPortR_spi_tos = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_lPortS_rPortS_rPortR_spi_flowLabel = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_lPortS_rPortS_rPortR_spi_emptyTCPAck = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_lPortS_rPortS_rPortR_spi_frag = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_lPortS_rPortS_rPortR_tos_flowLabel = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_lPortS_rPortS_rPortR_tos_emptyTCPAck = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortS_rPortS_rPortR_tos_frag = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_lPortS_rPortS_rPortR_flowLabel_emptyTCPAck = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_rPortS_rPortR_flowLabel_frag = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_rPortS_spi_tos_flowLabel = bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_lPortS_rPortS_spi_tos_emptyTCPAck = bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortS_rPortS_spi_tos_frag = bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_lPortS_rPortS_spi_flowLabel_emptyTCPAck = bmp_lPortS | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_rPortS_spi_flowLabel_frag = bmp_lPortS | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_rPortS_tos_flowLabel_emptyTCPAck = bmp_lPortS | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_rPortS_tos_flowLabel_frag = bmp_lPortS | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_rPortR_spi_tos_flowLabel = bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_lPortS_rPortR_spi_tos_emptyTCPAck = bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortS_rPortR_spi_tos_frag = bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_lPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_lPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_rPortR_spi_flowLabel_frag = bmp_lPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_lPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_rPortR_tos_flowLabel_frag = bmp_lPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_spi_tos_flowLabel_emptyTCPAck = bmp_lPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_spi_tos_flowLabel_frag = bmp_lPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortR_rPortS_rPortR_spi_tos = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_lPortR_rPortS_rPortR_spi_flowLabel = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_lPortR_rPortS_rPortR_spi_emptyTCPAck = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_lPortR_rPortS_rPortR_spi_frag = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_lPortR_rPortS_rPortR_tos_flowLabel = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_lPortR_rPortS_rPortR_tos_emptyTCPAck = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortR_rPortS_rPortR_tos_frag = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_lPortR_rPortS_rPortR_flowLabel_emptyTCPAck = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortR_rPortS_rPortR_flowLabel_frag = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_lPortR_rPortS_spi_tos_flowLabel = bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_lPortR_rPortS_spi_tos_emptyTCPAck = bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortR_rPortS_spi_tos_frag = bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_lPortR_rPortS_spi_flowLabel_emptyTCPAck = bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortR_rPortS_spi_flowLabel_frag = bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_lPortR_rPortS_tos_flowLabel_emptyTCPAck = bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortR_rPortS_tos_flowLabel_frag = bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortR_rPortR_spi_tos_flowLabel = bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_lPortR_rPortR_spi_tos_emptyTCPAck = bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortR_rPortR_spi_tos_frag = bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_lPortR_rPortR_spi_flowLabel_emptyTCPAck = bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortR_rPortR_spi_flowLabel_frag = bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_lPortR_rPortR_tos_flowLabel_emptyTCPAck = bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortR_rPortR_tos_flowLabel_frag = bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortR_spi_tos_flowLabel_emptyTCPAck = bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortR_spi_tos_flowLabel_frag = bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_rPortS_rPortR_spi_tos_flowLabel = bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_rPortS_rPortR_spi_tos_frag = bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_rPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_rPortS_rPortR_spi_flowLabel_frag = bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_rPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_rPortS_rPortR_tos_flowLabel_frag = bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_rPortS_spi_tos_flowLabel_emptyTCPAck = bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_rPortS_spi_tos_flowLabel_frag = bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_rPortR_spi_tos_flowLabel_frag = bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_rPortR = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_spi = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_tos = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortR_spi = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortR_tos = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortR_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortR_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_lPortR_spi_tos = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_protocol_lPortS_lPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_lPortR_spi_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_lPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_lPortR_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_rPortS_rPortR_spi = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_v4Addr_protocol_lPortS_rPortS_rPortR_tos = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_v4Addr_protocol_lPortS_rPortS_rPortR_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_rPortS_rPortR_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_rPortS_spi_tos = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_v4Addr_protocol_lPortS_rPortS_spi_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_rPortS_spi_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_rPortS_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_rPortS_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_rPortR_spi_tos = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_protocol_lPortS_rPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_rPortR_spi_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_rPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_rPortR_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_spi_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_lPortR_rPortS_rPortR_spi = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_v4Addr_protocol_lPortR_rPortS_rPortR_tos = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_v4Addr_protocol_lPortR_rPortS_rPortR_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortR_rPortS_rPortR_frag = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_v4Addr_protocol_lPortR_rPortS_spi_tos = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_v4Addr_protocol_lPortR_rPortS_spi_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortR_rPortS_spi_frag = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_v4Addr_protocol_lPortR_rPortS_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortR_rPortS_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_lPortR_rPortR_spi_tos = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_protocol_lPortR_rPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortR_rPortR_spi_frag = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_protocol_lPortR_rPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortR_rPortR_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_lPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortR_spi_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_rPortS_rPortR_spi_tos = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_protocol_rPortS_rPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_rPortS_rPortR_spi_frag = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_protocol_rPortS_rPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_rPortS_rPortR_tos_frag = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_rPortS_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_rPortS_spi_tos_frag = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_rPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_rPortR_spi_tos_frag = bmp_v4Addr | bmp_protocol | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortS_lPortR_rPortS_rPortR_spi = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_v4Addr_lPortS_lPortR_rPortS_rPortR_tos = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_v4Addr_lPortS_lPortR_rPortS_rPortR_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_lPortR_rPortS_rPortR_frag = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_v4Addr_lPortS_lPortR_rPortS_spi_tos = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_v4Addr_lPortS_lPortR_rPortS_spi_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_lPortR_rPortS_spi_frag = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_v4Addr_lPortS_lPortR_rPortS_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_lPortR_rPortS_tos_frag = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortS_lPortR_rPortR_spi_tos = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_lPortS_lPortR_rPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_lPortR_rPortR_spi_frag = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_lPortS_lPortR_rPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_lPortR_rPortR_tos_frag = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortS_lPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_lPortR_spi_tos_frag = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortS_rPortS_rPortR_spi_tos = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_lPortS_rPortS_rPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_rPortS_rPortR_spi_frag = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_lPortS_rPortS_rPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_rPortS_rPortR_tos_frag = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortS_rPortS_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_rPortS_spi_tos_frag = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortS_rPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_rPortR_spi_tos_frag = bmp_v4Addr | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortR_rPortS_rPortR_spi_tos = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_lPortR_rPortS_rPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortR_rPortS_rPortR_spi_frag = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_lPortR_rPortS_rPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortR_rPortS_rPortR_tos_frag = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortR_rPortS_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortR_rPortS_spi_tos_frag = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortR_rPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortR_rPortR_spi_tos_frag = bmp_v4Addr | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_rPortS_rPortR_spi_tos_frag = bmp_v4Addr | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_spi = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_tos = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_spi = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_tos = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_spi_tos = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_protocol_lPortS_lPortR_spi_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_lPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_spi_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_lPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_spi = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_tos = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortS_spi_tos = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_v6Addr_protocol_lPortS_rPortS_spi_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_rPortS_spi_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortS_spi_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortS_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_rPortS_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortS_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortS_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortS_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortR_spi_tos = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_protocol_lPortS_rPortR_spi_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_rPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortR_spi_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortR_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_rPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortR_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortR_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_spi_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_spi_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_spi_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_spi = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_tos = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortS_spi_tos = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_v6Addr_protocol_lPortR_rPortS_spi_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortR_rPortS_spi_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortS_spi_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortS_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortR_rPortS_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortS_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortS_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortS_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortR_spi_tos = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_protocol_lPortR_rPortR_spi_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortR_rPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortR_spi_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortR_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortR_rPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortR_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortR_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_spi_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_rPortS_rPortR_spi_tos = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_protocol_rPortS_rPortR_spi_flowLabel = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_protocol_rPortS_rPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortS_rPortR_spi_frag = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_protocol_rPortS_rPortR_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_rPortS_rPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortS_rPortR_tos_frag = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_rPortS_rPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortS_rPortR_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_rPortS_spi_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_rPortS_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortS_spi_tos_frag = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_rPortS_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortS_spi_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_rPortS_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortS_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_rPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_rPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortR_spi_tos_frag = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_rPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_rPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_spi = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_tos = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortS_spi_tos = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_v6Addr_lPortS_lPortR_rPortS_spi_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_lPortS_lPortR_rPortS_spi_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortS_spi_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortS_tos_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortS_lPortR_rPortS_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortS_tos_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortS_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortS_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortR_spi_tos = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_lPortS_lPortR_rPortR_spi_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_lPortS_lPortR_rPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortR_spi_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortR_tos_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortS_lPortR_rPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortR_tos_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortR_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortS_lPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_spi_tos_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_rPortS_rPortR_spi_tos = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_lPortS_rPortS_rPortR_spi_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_lPortS_rPortS_rPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortS_rPortR_spi_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_lPortS_rPortS_rPortR_tos_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortS_rPortS_rPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortS_rPortR_tos_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortS_rPortS_rPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortS_rPortR_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_rPortS_spi_tos_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortS_rPortS_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortS_spi_tos_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortS_rPortS_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortS_spi_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_rPortS_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortS_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_rPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortS_rPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortR_spi_tos_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortR_rPortS_rPortR_spi_tos = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_lPortR_rPortS_rPortR_spi_flowLabel = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_lPortR_rPortS_rPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortS_rPortR_spi_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_lPortR_rPortS_rPortR_tos_flowLabel = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortR_rPortS_rPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortS_rPortR_tos_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortR_rPortS_rPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortS_rPortR_flowLabel_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortR_rPortS_spi_tos_flowLabel = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortR_rPortS_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortS_spi_tos_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortR_rPortS_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortS_spi_flowLabel_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortR_rPortS_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortS_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortR_rPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortR_rPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortR_spi_tos_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortR_rPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortR_rPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_rPortS_rPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortS_rPortR_spi_tos_frag = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_rPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortS_rPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_rPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortS_rPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_rPortS_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortS_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_spi = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_tos = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_flowLabel = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortS_spi_tos = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_protocol_lPortS_lPortR_rPortS_spi_flowLabel = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel,
+    bmp_protocol_lPortS_lPortR_rPortS_spi_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortS_spi_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortS_tos_flowLabel = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortS_lPortR_rPortS_tos_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortS_tos_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortS_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortS_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortR_spi_tos = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_protocol_lPortS_lPortR_rPortR_spi_flowLabel = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_protocol_lPortS_lPortR_rPortR_spi_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortR_spi_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortR_tos_flowLabel = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortS_lPortR_rPortR_tos_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortR_tos_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortR_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortR_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_lPortR_spi_tos_flowLabel = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortS_lPortR_spi_tos_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_spi_tos_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_protocol_lPortS_lPortR_spi_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_spi_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_lPortR_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_tos_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_rPortS_rPortR_spi_tos = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_protocol_lPortS_rPortS_rPortR_spi_flowLabel = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_protocol_lPortS_rPortS_rPortR_spi_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortS_rPortR_spi_frag = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_protocol_lPortS_rPortS_rPortR_tos_flowLabel = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortS_rPortS_rPortR_tos_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortS_rPortR_tos_frag = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_protocol_lPortS_rPortS_rPortR_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortS_rPortR_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_rPortS_spi_tos_flowLabel = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortS_rPortS_spi_tos_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortS_spi_tos_frag = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_protocol_lPortS_rPortS_spi_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortS_spi_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_rPortS_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortS_tos_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_rPortR_spi_tos_flowLabel = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortS_rPortR_spi_tos_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortR_spi_tos_frag = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_protocol_lPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortR_spi_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortR_tos_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_spi_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_spi_tos_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortR_rPortS_rPortR_spi_tos = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_protocol_lPortR_rPortS_rPortR_spi_flowLabel = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_protocol_lPortR_rPortS_rPortR_spi_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortS_rPortR_spi_frag = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_protocol_lPortR_rPortS_rPortR_tos_flowLabel = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortR_rPortS_rPortR_tos_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortS_rPortR_tos_frag = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_protocol_lPortR_rPortS_rPortR_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortS_rPortR_flowLabel_frag = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortR_rPortS_spi_tos_flowLabel = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortR_rPortS_spi_tos_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortS_spi_tos_frag = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_protocol_lPortR_rPortS_spi_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortS_spi_flowLabel_frag = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortR_rPortS_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortS_tos_flowLabel_frag = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortR_rPortR_spi_tos_flowLabel = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortR_rPortR_spi_tos_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortR_spi_tos_frag = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_protocol_lPortR_rPortR_spi_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortR_spi_flowLabel_frag = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortR_rPortR_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortR_tos_flowLabel_frag = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortR_spi_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_spi_tos_flowLabel_frag = bmp_protocol | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_rPortS_rPortR_spi_tos_flowLabel = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_protocol_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_rPortS_rPortR_spi_tos_frag = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_protocol_rPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_rPortS_rPortR_spi_flowLabel_frag = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_protocol_rPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_rPortS_rPortR_tos_flowLabel_frag = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_rPortS_spi_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_rPortS_spi_tos_flowLabel_frag = bmp_protocol | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_rPortR_spi_tos_flowLabel_frag = bmp_protocol | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_lPortR_rPortS_rPortR_spi_tos = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_lPortS_lPortR_rPortS_rPortR_spi_flowLabel = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_lPortS_lPortR_rPortS_rPortR_spi_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortS_rPortR_spi_frag = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_lPortS_lPortR_rPortS_rPortR_tos_flowLabel = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_lPortS_lPortR_rPortS_rPortR_tos_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortS_rPortR_tos_frag = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_lPortS_lPortR_rPortS_rPortR_flowLabel_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortS_rPortR_flowLabel_frag = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_lPortR_rPortS_spi_tos_flowLabel = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_lPortS_lPortR_rPortS_spi_tos_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortS_spi_tos_frag = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_lPortS_lPortR_rPortS_spi_flowLabel_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortS_spi_flowLabel_frag = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_lPortR_rPortS_tos_flowLabel_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortS_tos_flowLabel_frag = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_lPortR_rPortR_spi_tos_flowLabel = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_lPortS_lPortR_rPortR_spi_tos_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortR_spi_tos_frag = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_lPortS_lPortR_rPortR_spi_flowLabel_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortR_spi_flowLabel_frag = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_lPortR_rPortR_tos_flowLabel_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortR_tos_flowLabel_frag = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_lPortR_spi_tos_flowLabel_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_spi_tos_flowLabel_frag = bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_rPortS_rPortR_spi_tos_flowLabel = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_lPortS_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortS_rPortS_rPortR_spi_tos_frag = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_lPortS_rPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_rPortS_rPortR_spi_flowLabel_frag = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_rPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_rPortS_rPortR_tos_flowLabel_frag = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_rPortS_spi_tos_flowLabel_emptyTCPAck = bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_rPortS_spi_tos_flowLabel_frag = bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_rPortR_spi_tos_flowLabel_frag = bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortR_rPortS_rPortR_spi_tos_flowLabel = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_lPortR_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortR_rPortS_rPortR_spi_tos_frag = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_lPortR_rPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortR_rPortS_rPortR_spi_flowLabel_frag = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_lPortR_rPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortR_rPortS_rPortR_tos_flowLabel_frag = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortR_rPortS_spi_tos_flowLabel_emptyTCPAck = bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortR_rPortS_spi_tos_flowLabel_frag = bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortR_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortR_rPortR_spi_tos_flowLabel_frag = bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_rPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_rPortS_rPortR_spi_tos_flowLabel_frag = bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_rPortR_spi = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_rPortR_tos = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_rPortR_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_rPortR_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_spi_tos = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_spi_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_spi_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortR_spi_tos = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortR_spi_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortR_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_lPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_lPortR_spi_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_rPortS_rPortR_spi_tos = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_protocol_lPortS_rPortS_rPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_rPortS_rPortR_spi_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_rPortS_rPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_rPortS_rPortR_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_rPortS_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_rPortS_spi_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_rPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_rPortR_spi_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_lPortR_rPortS_rPortR_spi_tos = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_protocol_lPortR_rPortS_rPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortR_rPortS_rPortR_spi_frag = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_protocol_lPortR_rPortS_rPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortR_rPortS_rPortR_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_lPortR_rPortS_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortR_rPortS_spi_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_lPortR_rPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortR_rPortR_spi_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_rPortS_rPortR_spi_tos_frag = bmp_v4Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortS_lPortR_rPortS_rPortR_spi_tos = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_lPortS_lPortR_rPortS_rPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_lPortR_rPortS_rPortR_spi_frag = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_lPortS_lPortR_rPortS_rPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_lPortR_rPortS_rPortR_tos_frag = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortS_lPortR_rPortS_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_lPortR_rPortS_spi_tos_frag = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortS_lPortR_rPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_lPortR_rPortR_spi_tos_frag = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortS_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_rPortS_rPortR_spi_tos_frag = bmp_v4Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortR_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortR_rPortS_rPortR_spi_tos_frag = bmp_v4Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_spi = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_tos = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_spi_tos = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_spi_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_spi_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_spi_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_spi_tos = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_spi_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_spi_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_lPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_spi_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_spi_tos = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_spi_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_spi_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortS_spi_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_rPortS_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortS_spi_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortS_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortS_spi_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortS_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortS_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_rPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortR_spi_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_spi_tos = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_spi_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_spi_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortS_spi_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortR_rPortS_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortS_spi_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortS_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortS_spi_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortS_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortS_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortR_rPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortR_spi_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_rPortS_rPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortS_rPortR_spi_tos_frag = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_rPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortS_rPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_rPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortS_rPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_rPortS_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortS_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_spi_tos = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_spi_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_spi_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_tos_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_tos_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortS_spi_tos_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortS_lPortR_rPortS_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortS_spi_tos_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortS_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortS_spi_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortS_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortS_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortS_lPortR_rPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortR_spi_tos_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_rPortS_rPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortS_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortS_rPortR_spi_tos_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortS_rPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortS_rPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_rPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortS_rPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_rPortS_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortS_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortR_rPortS_rPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortR_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortS_rPortR_spi_tos_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortR_rPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortS_rPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortR_rPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortS_rPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortR_rPortS_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortS_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortR_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_rPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_rPortS_rPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_spi_tos = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_spi_flowLabel = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_spi_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_spi_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_tos_flowLabel = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_tos_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_tos_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortS_spi_tos_flowLabel = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortS_lPortR_rPortS_spi_tos_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortS_spi_tos_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortS_spi_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortS_spi_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortS_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortS_tos_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortR_spi_tos_flowLabel = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortS_lPortR_rPortR_spi_tos_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortR_spi_tos_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortR_spi_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortR_spi_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortR_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortR_tos_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_lPortR_spi_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_spi_tos_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_rPortS_rPortR_spi_tos_flowLabel = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortS_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortS_rPortR_spi_tos_frag = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_protocol_lPortS_rPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortS_rPortR_spi_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_rPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortS_rPortR_tos_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_rPortS_spi_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortS_spi_tos_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortR_spi_tos_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortR_rPortS_rPortR_spi_tos_flowLabel = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortR_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortS_rPortR_spi_tos_frag = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_protocol_lPortR_rPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortS_rPortR_spi_flowLabel_frag = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortR_rPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortS_rPortR_tos_flowLabel_frag = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortR_rPortS_spi_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortS_spi_tos_flowLabel_frag = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortR_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortR_spi_tos_flowLabel_frag = bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_rPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_rPortS_rPortR_spi_tos_flowLabel_frag = bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_lPortR_rPortS_rPortR_spi_tos_flowLabel = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_lPortS_lPortR_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortS_rPortR_spi_tos_frag = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_lPortS_lPortR_rPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortS_rPortR_spi_flowLabel_frag = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_lPortR_rPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortS_rPortR_tos_flowLabel_frag = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_lPortR_rPortS_spi_tos_flowLabel_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortS_spi_tos_flowLabel_frag = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_lPortR_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortR_spi_tos_flowLabel_frag = bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_rPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_rPortS_rPortR_spi_tos_flowLabel_frag = bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortR_rPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortR_rPortS_rPortR_spi_tos_flowLabel_frag = bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_rPortR_spi_tos = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_rPortR_spi_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_rPortR_spi_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_rPortR_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_rPortR_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_spi_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortR_spi_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_rPortS_rPortR_spi_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_protocol_lPortR_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortR_rPortS_rPortR_spi_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v4Addr_lPortS_lPortR_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_lPortS_lPortR_rPortS_rPortR_spi_tos_frag = bmp_v4Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_spi_tos = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_spi_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_spi_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_spi_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_spi_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_spi_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_spi_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_spi_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_spi_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortS_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortS_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_spi_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortS_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortS_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_rPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_rPortS_rPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_spi_tos_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortS_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortS_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_rPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_rPortS_rPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortR_rPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortR_rPortS_rPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_spi_tos_flowLabel = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_spi_tos_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_spi_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_tos_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortS_spi_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortS_spi_tos_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortR_spi_tos_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_rPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_rPortS_rPortR_spi_tos_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortR_rPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortR_rPortS_rPortR_spi_tos_flowLabel_frag = bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_lPortS_lPortR_rPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_lPortS_lPortR_rPortS_rPortR_spi_tos_flowLabel_frag = bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v4Addr_protocol_lPortS_lPortR_rPortS_rPortR_spi_tos_frag = bmp_v4Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_spi_tos_flowLabel = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_spi_tos_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_spi_tos_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_spi_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_spi_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_rPortS_rPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortR_rPortS_rPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_lPortS_lPortR_rPortS_rPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_protocol_lPortS_lPortR_rPortS_rPortR_spi_tos_flowLabel_frag = bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_spi_tos_flowLabel_emptyTCPAck = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_emptyTCPAck,
+    bmp_v6Addr_protocol_lPortS_lPortR_rPortS_rPortR_spi_tos_flowLabel_frag = bmp_v6Addr | bmp_protocol | bmp_lPortS | bmp_lPortR | bmp_rPortS | bmp_rPortR | bmp_spi | bmp_tos | bmp_flowLabel | bmp_frag,
+
+}tft_pf_bmp_e;
+
+/* 
+ * From
+ * http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml
+ * For trace display
+ */
+typedef enum {
+    PROTOCOL_HOPOPT        = 0,
+    PROTOCOL_ICMP          = 1,
+    PROTOCOL_IGMP          = 2,
+    PROTOCOL_GGP           = 3,
+    PROTOCOL_IPv4          = 4,
+    PROTOCOL_ST            = 5,
+    PROTOCOL_TCP           = 6,
+    PROTOCOL_CBT           = 7,
+    PROTOCOL_EGP           = 8,
+    PROTOCOL_IGP           = 9,
+    PROTOCOL_BBNRCCMON     = 10,
+    PROTOCOL_NVPII         = 11,
+    PROTOCOL_PUP           = 12,
+    PROTOCOL_ARGUS         = 13,
+    PROTOCOL_EMCON         = 14,
+    PROTOCOL_XNET          = 15,
+    PROTOCOL_CHAOS         = 16,
+    PROTOCOL_UDP           = 17,
+    PROTOCOL_MUX           = 18,
+    PROTOCOL_DCNMEAS       = 19,
+    PROTOCOL_HMP           = 20,
+    PROTOCOL_PRM           = 21,
+    PROTOCOL_XNSIDP        = 22,
+    PROTOCOL_TRUNK1        = 23,
+    PROTOCOL_TRUNK2        = 24,
+    PROTOCOL_LEAF1         = 25,
+    PROTOCOL_LEAF2         = 26,
+    PROTOCOL_RDP           = 27,
+    PROTOCOL_IRTP          = 28,
+    PROTOCOL_ISOTP4        = 29,
+    PROTOCOL_NETBLT        = 30,
+    PROTOCOL_MFENSP        = 31,
+    PROTOCOL_MERITINP      = 32,
+    PROTOCOL_DCCP          = 33,
+    PROTOCOL_3PC           = 34,
+    PROTOCOL_IDPR          = 35,
+    PROTOCOL_XTP           = 36,
+    PROTOCOL_DDP           = 37,
+    PROTOCOL_IDPRCMTP      = 38,
+    PROTOCOL_TPPLUSPLUS    = 39,
+    PROTOCOL_IL            = 40,
+    PROTOCOL_IPv6          = 41,
+    PROTOCOL_SDRP          = 42,
+    PROTOCOL_IPv6Route     = 43,
+    PROTOCOL_IPv6Frag      = 44,
+    PROTOCOL_IDRP          = 45,
+    PROTOCOL_RSVP          = 46,
+    PROTOCOL_GRE           = 47,
+    PROTOCOL_DSR           = 48,
+    PROTOCOL_BNA           = 49,
+    PROTOCOL_ESP           = 50,
+    PROTOCOL_AH            = 51,
+    PROTOCOL_INLSP         = 52,
+    PROTOCOL_SWIPE         = 53,
+    PROTOCOL_NARP          = 54,
+    PROTOCOL_MOBILE        = 55,
+    PROTOCOL_TLSP          = 56,
+    PROTOCOL_SKIP          = 57,
+    PROTOCOL_IPv6ICMP      = 58,
+    PROTOCOL_IPv6NoNxt     = 59,
+    PROTOCOL_IPv6DestOpts  = 60,
+    PROTOCOL_CFTP          = 62,
+    PROTOCOL_SATEXPAK      = 64,
+    PROTOCOL_KRYPTOLAN     = 65,
+    PROTOCOL_RVD           = 66,
+    PROTOCOL_IPPC          = 67,
+    PROTOCOL_SATMON        = 69,
+    PROTOCOL_VISA          = 70,
+    PROTOCOL_IPCV          = 71,
+    PROTOCOL_CPNX          = 72,
+    PROTOCOL_CPHB          = 73,
+    PROTOCOL_WSN           = 74,
+    PROTOCOL_PVP           = 75,
+    PROTOCOL_BRSATMON      = 76,
+    PROTOCOL_SUNND         = 77,
+    PROTOCOL_WBMON         = 78,
+    PROTOCOL_WBEXPAK       = 79,
+    PROTOCOL_ISOIP         = 80,
+    PROTOCOL_VMTP          = 81,
+    PROTOCOL_SECUREVMTP    = 82,
+    PROTOCOL_VINES         = 83,
+    PROTOCOL_TTP           = 84,
+    PROTOCOL_IPTM          = 84,
+    PROTOCOL_NSFNETIGP     = 85,
+    PROTOCOL_DGP           = 86,
+    PROTOCOL_TCF           = 87,
+    PROTOCOL_EIGRP         = 88,
+    PROTOCOL_OSPFIGP       = 89,
+    PROTOCOL_SpriteRPC     = 90,
+    PROTOCOL_LARP          = 91,
+    PROTOCOL_MTP           = 92,
+    PROTOCOL_AX            = 93,
+    PROTOCOL_IPIP          = 94,
+    PROTOCOL_MICP          = 95,
+    PROTOCOL_SCCSP         = 96,
+    PROTOCOL_ETHERIP       = 97,
+    PROTOCOL_ENCAP         = 98,
+    PROTOCOL_GMTP          = 100,
+    PROTOCOL_IFMP          = 101,
+    PROTOCOL_PNNI          = 102,
+    PROTOCOL_PIM           = 103,
+    PROTOCOL_ARIS          = 104,
+    PROTOCOL_SCPS          = 105,
+    PROTOCOL_QNX           = 106,
+    PROTOCOL_A             = 107,
+    PROTOCOL_IPComp        = 108,
+    PROTOCOL_SNP           = 109,
+    PROTOCOL_CompaqPeer    = 110,
+    PROTOCOL_IPXinIP       = 111,
+    PROTOCOL_VRRP          = 112,
+    PROTOCOL_PGM           = 113,
+    PROTOCOL_L2TP          = 115,
+    PROTOCOL_DDX           = 116,
+    PROTOCOL_IATP          = 117,
+    PROTOCOL_STP           = 118,
+    PROTOCOL_SRP           = 119,
+    PROTOCOL_UTI           = 120,
+    PROTOCOL_SMP           = 121,
+    PROTOCOL_SM            = 122,
+    PROTOCOL_PTP           = 123,
+    PROTOCOL_ISIS          = 124,
+    PROTOCOL_FIRE          = 125,
+    PROTOCOL_CRTP          = 126,
+    PROTOCOL_CRUDP         = 127,
+    PROTOCOL_SSCOPMCE      = 128,
+    PROTOCOL_IPLT          = 129,
+    PROTOCOL_SPS           = 130,
+    PROTOCOL_PIPE          = 131,
+    PROTOCOL_SCTP          = 132,
+    PROTOCOL_FC            = 133,
+    PROTOCOL_RSVPE2EIGNORE = 134,
+    PROTOCOL_Mobility      = 135,
+    PROTOCOL_UDPLite       = 136,
+    PROTOCOL_MPLSinIP      = 137,
+    PROTOCOL_manet         = 138,
+    PROTOCOL_HIP           = 139,
+    PROTOCOL_Shim6         = 140,
+    PROTOCOL_WESP          = 141,
+    PROTOCOL_ROHC          = 142,
+}tft_pf_protocol_e;
+#endif   /* ----- #ifndef TFT_PF_ENUM_INC  ----- */
+
diff --git a/mcu/interface/protocol/general/uas_eas_inter_core_enum.h b/mcu/interface/protocol/general/uas_eas_inter_core_enum.h
new file mode 100644
index 0000000..458f249
--- /dev/null
+++ b/mcu/interface/protocol/general/uas_eas_inter_core_enum.h
@@ -0,0 +1,63 @@
+/*****************************************************************************
+*  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) 2014
+*
+*  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:
+ * ---------
+ *   uas_eas_inter_core_enum.h
+ *
+ * Project:
+ * --------
+ *   UMOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ *
+ *
+ * ----------------------------------------------------------------------------
+ * $Log:$
+ *
+ *
+ ******************************************************************************/
+
+#ifndef __UAS_EAS_INTER_CORE_ENUM_H__
+#define __UAS_EAS_INTER_CORE_ENUM_H__
+
+
+#endif /* __UAS_EAS_INTER_CORE_ENUM_H__ */
diff --git a/mcu/interface/protocol/general/uas_eas_inter_core_struct.h b/mcu/interface/protocol/general/uas_eas_inter_core_struct.h
new file mode 100644
index 0000000..2f0d3f5
--- /dev/null
+++ b/mcu/interface/protocol/general/uas_eas_inter_core_struct.h
@@ -0,0 +1,132 @@
+/*****************************************************************************
+*  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) 2014
+*
+*  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:
+ * ---------
+ *   uas_eas_inter_core_struct.h
+ *
+ * Project:
+ * --------
+ *   UMOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ *
+ *
+ * ----------------------------------------------------------------------------
+ * $Log:$
+ *
+ * 03 21 2017 jui-chih.chin
+ * [MOLY00236733] [MT6293][ERRC][MOB] Standby RSRQOnAllSymbols measurement from UAS
+ * 	
+ * 	Interface part
+ *
+ * 12 19 2014 birui.li
+ * [MOLY00087677] [U3G][TDD][UAS RRCE] modifications for U3G
+ * merge from peng-an CBr.
+ *
+ * 12 16 2014 dongqing.qi
+ * [MOLY00087344] [UMOLY][TDD][UAS]sync U-Bin CBr to UMOLY TRUNCK
+ * 	.low power(lmeme IRAT interfacel 2)
+ *
+ * 12 16 2014 claud.li
+ * [MOLY00087795] [MEME] universal bin check in
+ * [Universal bin][FDD][MEME/EAS/GAS] interface
+ *
+ *
+ ******************************************************************************/
+
+#ifndef __UAS_EAS_INTER_CORE_STRUCT_H__
+#define __UAS_EAS_INTER_CORE_STRUCT_H__
+
+#include "as_inter_core_enum.h"
+#include "as_inter_core_struct.h"
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+  kal_uint8 tid;
+  kal_uint8 freq_num;
+  eas_meas_freq_rslt_struct freq[MAX_MEAS_IRAT_FREQ];
+  kal_bool rsrq_meas_on_all_symbols;
+} uas_eas_lte_measurement_ind_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+  kal_uint8 freq_num;
+  eas_hps_qualify_struct freq[MAX_MEAS_IRAT_FREQ];
+  /* This flag is used to indicate whether measurement period should be reset
+   * immediately. (TRUE:  meas is performed in the first DRX. 
+   *               FALSE: meas is performed in the first T-meas occasion)  
+   * In current design, the following rules should be followed.
+   * (1)If freq_num != 0, this flag will be set as FALSE only if tmeasure measurement 
+   *                      is triggered when priority measurement is on-going (i.e., at 
+   *                      least one of LTE cells hits priority reselection criteria for 
+   *                      priority based measurement reselection). If any improvement is 
+   *                      needed, the usage limitation for this flag should be confirmed 
+   *                      with EL1's colleague.
+   * (2) If freq_num == 0, this flag will alwyas be set as FALSE;
+   */
+  kal_bool is_meas_period_reset;
+} uas_eas_lte_hps_qualify_cell_ind_struct;
+
+
+typedef struct {
+  LOCAL_PARA_HDR
+  kal_uint8 list_ref;
+  ir_umts_measured_result ir_umts_meas_info;
+  kal_bool isLongPeriod;
+#ifdef UNIT_TEST
+  kal_uint32 meas_ind_ms_diff;
+#endif /* UNIT_TEST */
+}eas_fdd_uas_ucell_meas_ind_struct;
+
+typedef struct {
+  LOCAL_PARA_HDR
+  kal_uint8 list_ref;
+  ts_ir_umts_meas_info ir_umts_meas_info;
+  kal_bool isLongPeriod;
+#ifdef UNIT_TEST
+  kal_uint32 meas_ind_ms_diff;
+#endif /* UNIT_TEST */
+}eas_tdd_uas_ucell_meas_ind_struct;
+
+#endif /* __UAS_EAS_INTER_CORE_STRUCT_H__ */
diff --git a/mcu/interface/protocol/general/uas_gas_inter_core_enum.h b/mcu/interface/protocol/general/uas_gas_inter_core_enum.h
new file mode 100644
index 0000000..738ddf8
--- /dev/null
+++ b/mcu/interface/protocol/general/uas_gas_inter_core_enum.h
@@ -0,0 +1,77 @@
+/*****************************************************************************
+*  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) 2014
+*
+*  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:
+ * ---------
+ *   uas_gas_inter_core_enum.h
+ *
+ * Project:
+ * --------
+ *   UMOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * 
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __UAS_GAS_INTER_CORE_ENUM_H__
+#define __UAS_GAS_INTER_CORE_ENUM_H__
+
+typedef enum {
+    IR_URRC_INVALID = 0,
+    IR_URRC_IDLE    = 1,
+    IR_URRC_PCH,
+    IR_URRC_FACH,
+    IR_URRC_DCH
+}te_ir_urrc_state;
+
+#endif /* __UAS_GAS_INTER_CORE_ENUM_H__ */
diff --git a/mcu/interface/protocol/general/uas_gas_inter_core_struct.h b/mcu/interface/protocol/general/uas_gas_inter_core_struct.h
new file mode 100644
index 0000000..0d76591
--- /dev/null
+++ b/mcu/interface/protocol/general/uas_gas_inter_core_struct.h
@@ -0,0 +1,112 @@
+/*****************************************************************************
+*  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) 2014
+*
+*  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:
+ * ---------
+ *   uas_gas_inter_core_struct.h
+ *
+ * Project:
+ * --------
+ *   UMOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * 
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __UAS_GAS_INTER_CORE_STRUCT_H__
+#define __UAS_GAS_INTER_CORE_STRUCT_H__
+
+#include "as_inter_core_struct.h"
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_uint8 list_ref;
+   ts_ir_gsm_cell_rssi_info gsm_cell_rssi_info;
+   kal_bool is_long_period;
+}uas_gas_gcell_meas_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   ts_ir_gsm_cell_bsic_info gsm_cell_bsic_info;
+}uas_gas_gcell_bsic_ind_struct;
+
+typedef struct {
+  LOCAL_PARA_HDR
+  kal_uint8 list_ref;
+  ir_umts_measured_result ir_umts_meas_info;
+#if defined(__LTE_RAT__) || defined(__23G_PRI_RESEL_SUPPORT__)
+  kal_bool isLongPeriod;
+#endif /* defined(__LTE_RAT__) || defined(__23G_PRI_RESEL_SUPPORT__) */
+#ifdef UNIT_TEST
+kal_uint32 meas_ind_ms_diff;
+#endif /* UNIT_TEST */
+}fdd_gas_uas_ucell_meas_ind_struct;
+
+typedef struct {
+  LOCAL_PARA_HDR
+  kal_uint8 list_ref;
+  ts_ir_umts_meas_info ir_umts_meas_info;
+#if defined(__LTE_RAT__) || defined(__23G_PRI_RESEL_SUPPORT__)
+  kal_bool isLongPeriod;
+#endif /* defined(__LTE_RAT__) || defined(__23G_PRI_RESEL_SUPPORT__) */
+#ifdef UNIT_TEST
+kal_uint32 ucell_meas_ind_ms_diff;
+#endif /* UNIT_TEST */
+}tdd_gas_uas_ucell_meas_ind_struct;
+#endif /* __UAS_GAS_INTER_CORE_STRUCT_H__ */
diff --git a/mcu/interface/protocol/general/ue_testmode_struct.h b/mcu/interface/protocol/general/ue_testmode_struct.h
new file mode 100644
index 0000000..6f96a31
--- /dev/null
+++ b/mcu/interface/protocol/general/ue_testmode_struct.h
@@ -0,0 +1,95 @@
+/*****************************************************************************
+*  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) 2012
+*
+*  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:
+ * ---------
+ *   ue_testmode_struct.h
+ *
+ * Project:
+ * --------
+ *   UMOLYA
+ *
+ * Description:
+ * ------------
+ *  For common strucures used by data plane test mode configurations and test 
+ *  loop operations.
+ *
+ * Author:
+ * -------
+ * -------
+ *   
+ *  @date   2016/7/6 08:54:24 PM
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 08 21 2018 tc.chang
+ * [MOLY00347143] [Gen97] ENPDCP-RATDM interface update.
+ *
+ *
+ ****************************************************************************/
+
+#ifndef  UE_TESTMODE_STRUCT_H
+#define  UE_TESTMODE_STRUCT_H
+
+#include "kal_public_api.h"
+
+#define MAX_NUM_MODE_A_LB_RB    8
+
+typedef enum {
+   TESTLOOP_CMD_MODE_A_DEACTIVATE, // open test loop for mode A
+   TESTLOOP_CMD_MODE_A_ACTIVATE,    // close test loop for mode A
+   TESTLOOP_CMD_MODE_B_DEACTIVATE, // open test loop for mode B
+   TESTLOOP_CMD_MODE_B_ACTIVATE    // close test loop for mode B
+} testloop_cmd_enum;
+
+typedef struct {
+    kal_uint8    rb_idx; // i.e., flow_id
+    kal_uint8    scaling; // needs scaling or not
+    kal_uint16   size; // in bytes
+} testloop_rb_cfg_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR // IPCORE, UPCM, RATDM, EPDCP and ENPDCP share this message structure
+
+    testloop_cmd_enum       cmd;
+    kal_uint32              rb_num; // number of RBs configured for Mode A
+    testloop_rb_cfg_struct  rb_cfg[MAX_NUM_MODE_A_LB_RB]; // for Test Loop Mode A
+    kal_uint8               delay_time; // for Test Loop Mode B; in seconds
+} testloop_cfg_struct;
+
+#endif /* #ifndef  UE_TESTMODE_STRUCT_H */
+
diff --git a/mcu/interface/protocol/general/upcm_enum.h b/mcu/interface/protocol/general/upcm_enum.h
new file mode 100644
index 0000000..3bd2540
--- /dev/null
+++ b/mcu/interface/protocol/general/upcm_enum.h
@@ -0,0 +1,287 @@
+/*****************************************************************************
+*  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) 2012
+*
+*  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:
+ * ---------
+ *   upcm_enum.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 03 10 2020 tc.chang
+ * [MOLY00503980] [J7A][CN]?¸m???±µ¥¢?.
+ *
+ * 12 05 2019 tc.chang
+ * [MOLY00463764] Correct timer unit and pdn sim id in rqos set timer.
+ *
+ * 12 05 2019 tc.chang
+ * [MOLY00463783] [MT6885][Petrus][MP1][IODT][CTC][FT][SA][5G FT][China][Shenzhen][Huawei][Operator FT]IMS call fail @SA network.
+ *
+ * 09 24 2019 amit.singh
+ * [MOLY00442150] [DISPATCHER] EPDG related bearer and PDN ID range definition
+ * 	
+ * 	Epdg relatd enum declaration.
+ *
+ * 07 04 2019 tc.chang
+ * [MOLY00418272] [Gen97] Sync Gen95 UMOLYE patch.
+ *
+ * 02 15 2019 tc.chang
+ * [MOLY00373282] [ENPDCP] MCPS enhancement and SA phone call volunteer patch.
+ *
+ * 10 09 2018 tc.chang
+ * [MOLY00356444] [VMOLY] Bug fix and add UT cases.
+ *
+ * 10 08 2018 tc.chang
+ * [MOLY00356444] [VMOLY] Bug fix and add UT cases.
+ *
+ * 09 18 2018 tc.chang
+ * [MOLY00345990] [VMOLY] Code sync.
+ *
+ * 09 14 2018 tc.chang
+ * [MOLY00345990] [VMOLY] Code sync
+ * Rollback first. Fix build error locally
+ *
+ * 03 23 2017 chin-wei.hsu
+ * [MOLY00237294] [MT6293][UPCM] Forced SW path
+ * [trunk] Forced SW path for EBI/PDN.
+ *
+ * 12 28 2016 cammie.yang
+ * [MOLY00221324] [6293][EL2][UPCM] C2K feature integrations
+ * [TRUNK][UPCM] modifications for C2K feature integrations
+ *
+ * 12 27 2016 cammie.yang
+ * [MOLY00221324] [6293][EL2][UPCM] C2K feature integrations
+ * [UMOLYA][UPCM] Interface change for C2K integration
+ *
+ * 09 26 2016 cammie.yang
+ * [MOLY00195563] [6293][EL2][UPCM][RATDM][EPDCP] Initial feature integrations
+ * [TRUNK] UPCM/RATDM/EPDCP feature integrations from PS.DEV
+ *
+ * 07 17 2013 moja.hsu
+ * [MOLY00030111] Add UPCM Tx/Rx statistics query API
+ * .
+ *
+ ****************************************************************************/
+/*
+ * =====================================================================================
+ *
+ *       Filename:  upcm_enum.h
+ *
+ *    Description:  UPCM (User plane connection manager exported header file)
+ *                  ENUM values for trace.
+ *
+ *        Created: 2012/3/19 �W�� 11:20:22
+ *
+ *        Author:  mtk01641 (moja)
+ * =====================================================================================
+ */
+#ifndef  UPCM_ENUM_INC
+#define  UPCM_ENUM_INC
+
+#include "ps_public_enum_public.h"
+
+/* PDN ID
+ * Invalid:  0
+ * Reserved: 1 ~ 3
+ * MBMS:     4
+ * LTE:      5 ~ 15
+ * C2K:     16 ~ 23
+ * 5G:      24 ~ 38 (maps to PDN session ID 1 ~ 15)
+ * EPDG:    39 ~ 53 (maps to PDN session for bearer ID 1 ~ 15)
+ */
+#define MAX_234G_EPSB_NUM   24 // FOR C2K
+#define QFI_NUM_PER_PSI     64
+#define MIN_5G_BEARER_ID    MAX_234G_EPSB_NUM
+#define MIN_5G_PDN_ID       MAX_234G_EPSB_NUM
+#define NUM_5G_PDU_SESSION  15
+#define MAX_5G_PDN_ID       (MIN_5G_PDN_ID + NUM_5G_PDU_SESSION - 1)
+#define MIN_PDN_ID          (L4_PS_MIN_EBI)
+
+//for EPDG
+#define MIN_EPDG_BEARER_ID 1
+#define MAX_EPDG_BEARER_ID 15
+#define MIN_EPDG_PDN_ID	   39
+#define MAX_EPDG_PDN_ID    53
+#define MAX_EPDG_CID       200
+
+
+#ifdef __FIVEG_NAS__
+#define MAX_EPSB_NUM        984
+#define MAX_PDN_ID          MAX_5G_PDN_ID
+#else
+#define MAX_EPSB_NUM        MAX_234G_EPSB_NUM
+#define MAX_PDN_ID          (MAX_EPSB_NUM - 1)
+#endif
+
+/*
+ * LTE:      5 ~ 15 maps to SIT index 0 ~ 10
+ * C2K:     16 ~ 23 maps to SIT index 0 ~ 7
+ */
+#define MAX_234G_SIT_NUM    11
+
+#define UPCM_FIVEG_PDN_ID_TO_PSI(_id)  \
+    (((_id) >= MIN_5G_PDN_ID && (_id) <= MAX_5G_PDN_ID) ? ((_id) - MIN_5G_PDN_ID + 1) : (0))
+	
+#define UPCM_FIVEG_PSI_TO_PDN_ID(_id)   ((_id) + MIN_5G_PDN_ID - 1)
+
+// Gen97
+#define UPCM_PDN_SIM_ID(_pdn, _sim)     ((((_sim) & 0x3) << 6) | ((_pdn) & 0x3F))
+
+typedef enum
+{
+    IP_TYPE_MISC,
+    IP_TYPE_V4,
+    IP_TYPE_V6,
+}ip_type_e;
+
+/*
+ * bit 0:Indicate if test mode is activate.
+ * bit 1:Indicate if test loop is closed.
+ * bit 2: BUFFER_IP_PDU
+ * bit 3: Drop UL/DL SDUs
+ */
+typedef enum
+{
+    TEST_FLAG_MODE      = 0x01,
+    TEST_FLAG_LOOP_A    = 0x02,
+    TEST_FLAG_LOOP_B    = 0x04,
+    TEST_FLAG_BUFFER    = 0x08,
+    TEST_FLAG_DROP      = 0x10,
+}upcm_test_flag_e;
+
+typedef enum
+{
+    TEST_RESULT_OK             = 0,
+    TEST_RESULT_NG             = 1,
+    TEST_RESULT_WAIT_OPEN_LOOP = 2,
+}upcm_test_result_e;
+
+/*
+ * Used for trace
+ */
+typedef enum
+{ // TODO: update for new flags
+    UPCM_NORMAL = 0,
+    UPCM_TEST   = TEST_FLAG_MODE,
+    UPCM_LOOP   = TEST_FLAG_LOOP_B,
+    UPCM_BUF    = TEST_FLAG_BUFFER,
+    UPCM_DROP   = TEST_FLAG_DROP,
+    UPCM_TEST_LOOP          = UPCM_TEST | UPCM_LOOP,
+    UPCM_TEST_BUF           = UPCM_TEST | UPCM_BUF,
+    UPCM_TEST_DROP          = UPCM_TEST | UPCM_DROP,
+    UPCM_LOOP_BUF           = UPCM_LOOP | UPCM_BUF,
+    UPCM_LOOP_DROP          = UPCM_LOOP | UPCM_DROP,
+    UPCM_BUF_DROP           = UPCM_BUF  | UPCM_DROP,
+    UPCM_TEST_LOOP_BUF      = UPCM_TEST | UPCM_LOOP  | UPCM_BUF,
+    UPCM_TEST_LOOP_DROP     = UPCM_TEST | UPCM_LOOP  | UPCM_DROP,
+    UPCM_TEST_BUF_DROP      = UPCM_TEST | UPCM_BUF   | UPCM_DROP,
+    UPCM_LOOP_BUF_DROP      = UPCM_LOOP | UPCM_BUF   | UPCM_DROP,
+    UPCM_TEST_LOOP_BUF_DROP = UPCM_TEST | UPCM_LOOP  | UPCM_BUF   | UPCM_DROP,
+}upcm_test_e;
+
+typedef enum
+{
+    TACT_DELAYTIMER_RUNNING,
+    TACT_DELAYTIMER_TIMEOUT,
+    TACT_BUFFER,
+    TACT_LOOPBACK,
+    TACT_DISCARD,
+    TACT_DELIVER_TO_UPPER,
+}upcm_test_act_e;
+
+typedef enum
+{
+    UBACT_ACTIVE,
+    UBACT_DEACTIVE,
+}upcm_bearer_act_e;
+
+typedef enum
+{
+    UPCM_SUSPEND,
+    UPCM_RESUME,
+}upcm_sus_res_e;
+
+typedef enum
+{
+    UPT_Open,
+    UPT_Close,
+}upcm_act_test_mode_e;
+
+typedef enum
+{
+    UPT_AlreadyAct,
+    UPT_NotAct,
+    UPT_AlreadyClose,
+    UPT_AlreadyOpen,
+    UPT_HasPDN,
+    UPT_HasMoreThan1PDN,
+}upcm_test_mode_fail_code_e;
+
+typedef enum
+{
+    UPCM_PDN_ACT,
+    UPCM_PDN_DEACT,
+}upcm_pdn_info_e;
+
+typedef enum
+{
+    UPCM_PDN_ID_234G_C2K,
+    UPCM_PDN_ID_5G,
+
+    UPCM_PDN_ID_MAX_NUM,
+} upcm_query_pdn_id_e;
+
+/********************************************
+ *           FUNCTION DECLARATIONS          *
+ ********************************************/
+/* Export for the users not in protocol */
+kal_uint8 upcm_query_pdn_id(upcm_query_pdn_id_e type, kal_uint8 bearer_id);
+
+
+#endif   /* ----- #ifndef UPCM_ENUM_INC  ----- */
diff --git a/mcu/interface/protocol/general/vdm_public_defs.h b/mcu/interface/protocol/general/vdm_public_defs.h
new file mode 100644
index 0000000..909147f
--- /dev/null
+++ b/mcu/interface/protocol/general/vdm_public_defs.h
@@ -0,0 +1,24 @@
+#ifndef _VDM_PUBLIC_DEFS_H
+#define _VDM_PUBLIC_DEFS_H
+
+#include "ps_public_struct.h"
+#include "ps_public_enum.h"
+#include "md_sap.h"
+
+/* Notified Modules */
+static call_status_notify_module_info_struct call_status_notify_module[] = 
+{
+    {MOD_L4C, VDM_L4C_SAP, VDM_CALL_STATUS_ALL, CFG_GEMINI_MOD},
+	{MOD_SASE_CLIENT, VDM_SASE_SAP, VDM_CALL_STATUS_IMS_GROUP, CFG_GEMINI_MOD},
+    
+#if defined(__IMS_SUPPORT__) && !defined(__TC01_IMS_SUPPORT__) && !defined(__IPC_ADAPTER__)
+    {MOD_IMC, VDM_IMC_SAP, VDM_CALL_STATUS_FIRST_CALL_ATTEMPT|VDM_CALL_STATUS_ALL_CALL_END, CFG_GEMINI_MOD},
+#endif /* __IMS_SUPPORT__ && !(__TC01_IMS_SUPPORT__) */
+
+#if defined(__IDC_ENABLED__)
+    {MOD_L1_IDC, VDM_IDC_SAP, VDM_CALL_STATUS_FIRST_IMS_CALL_CONNECTED|VDM_CALL_STATUS_LAST_IMS_CALL_DISCONNECTED, CFG_GEMINI_MOD},
+#endif /*__IDC_ENABLED__*/
+
+};
+#endif /* _VDM_PUBLIC_DEFS_H */
+
diff --git a/mcu/interface/protocol/general/vgsm_cause_enum.h b/mcu/interface/protocol/general/vgsm_cause_enum.h
new file mode 100644
index 0000000..4f2eb8a
--- /dev/null
+++ b/mcu/interface/protocol/general/vgsm_cause_enum.h
@@ -0,0 +1,103 @@
+     /* ============================== VGSM cause ============================== */
+ // 3GPP 24.501 5GSM SPEC caue values
+    VGSM_SPEC_CAUSE_ENUM(NO_CAUSE                                   ,1   )  /* Cause not assigned                                   */
+    VGSM_SPEC_CAUSE_ENUM(OPERATOR_DETERMINED_BARRING                ,8   )  /* Operator determined barring                          */
+    VGSM_SPEC_CAUSE_ENUM(INSUFFICIENT_RESOURCES                     ,26  )  /* Insufficient resources                               */
+    VGSM_SPEC_CAUSE_ENUM(MISSING_OR_UNKNOWN_DNN                     ,27  )  /* Missing or unknown DNN                               */
+    VGSM_SPEC_CAUSE_ENUM(UNKNOWN_PDU_SESSION_TYPE                   ,28  )  /* Unknown PDU session type                             */
+    VGSM_SPEC_CAUSE_ENUM(USER_AUTH_FAILED                           ,29  )  /* User authentication or authorization failed          */
+    VGSM_SPEC_CAUSE_ENUM(REQUEST_REJECTED_BY_SGW_OR_PDNGW           ,30  )  /* Request rejected by Serving GW or PDN GW             */
+    VGSM_SPEC_CAUSE_ENUM(REQUEST_REJECTED_UNSPECIFIED               ,31  )  /* Request rejected unspecified                         */
+    VGSM_SPEC_CAUSE_ENUM(SERVICE_OPT_NOT_SUPPORTED                  ,32  )  /* Service option not supported                         */
+    VGSM_SPEC_CAUSE_ENUM(REQ_SERVICE_NOT_SUBSCRIBED                 ,33  )  /* Requested service option not subscribed              */
+    VGSM_SPEC_CAUSE_ENUM(SERVICE_OPT_TEMP_OUT_OF_ORDER              ,34  )  /* Service option temporarily out of order              */
+    VGSM_SPEC_CAUSE_ENUM(PTI_ALREADY_USED                           ,35  )  /* PTI already in use                                   */
+    VGSM_SPEC_CAUSE_ENUM(REGULAR_DEACTIVATION                       ,36  )  /* Regular deactivation                                 */
+    VGSM_SPEC_CAUSE_ENUM(EPS_QOS_NOT_ACCEPTED                       ,37  )  /* EPS QoS not accepted                                 */
+    VGSM_SPEC_CAUSE_ENUM(NETWORK_FAILURE                            ,38  )  /* Network failure                                      */
+    VGSM_SPEC_CAUSE_ENUM(REACTIVATION_REQUESTED                     ,39  )  /* Re-activation requitred                              */
+    VGSM_SPEC_CAUSE_ENUM(SEMANTIC_ERROR_IN_TFT                      ,41  )  /* Semantic error in the TFT operation                  */
+    VGSM_SPEC_CAUSE_ENUM(SYNTACTIC_ERROR_IN_TFT                     ,42  )  /* Syntactical error in the TFT operation               */
+    VGSM_SPEC_CAUSE_ENUM(INVALID_PDU_SESSION_IDENTITY               ,43  )  /* Invalid PDU session identity                         */
+    VGSM_SPEC_CAUSE_ENUM(SEMANTIC_ERROR_IN_PACKET_FILTERS           ,44  )  /* Semantic errors in packet filter(s)                  */
+    VGSM_SPEC_CAUSE_ENUM(SYNTACTIC_ERROR_IN_PACKET_FILTERS          ,45  )  /* Syntactical errors in packet filter(s)               */
+    VGSM_SPEC_CAUSE_ENUM(OUT_OF_LADN_SERVICE_AREA                   ,46  )  /* Out of LADN service area                             */
+    VGSM_SPEC_CAUSE_ENUM(PTI_MISMATCH                               ,47  )  /* PTI mismatch                                         */
+    VGSM_SPEC_CAUSE_ENUM(LAST_PDN_DISC_NOT_ALLOWED                  ,49  )  /* Last PDN disconnection not allowed                   */
+    VGSM_SPEC_CAUSE_ENUM(PDU_SESSION_TYPE_IPV4_ONLY_ALLOWED         ,50  )  /* PDU session type IPv4 only allowed                   */
+    VGSM_SPEC_CAUSE_ENUM(PDU_SESSION_TYPE_IPV6_ONLY_ALLOWED         ,51  )  /* PDU session type IPv6 only allowed                   */
+    VGSM_SPEC_CAUSE_ENUM(SINGLE_ADDRESS_ONLY_ALLOWED                ,52  )  /* Single address bearers only allowed                  */
+    VGSM_SPEC_CAUSE_ENUM(PDU_SESSION_NOT_EXIST                      ,54  )  /* PDU session does not exist                           */
+    VGSM_SPEC_CAUSE_ENUM(MULTIPLE_PDN_APN_NOT_ALLOWED               ,55  )  /* Multiple PDN connections for a given APN not allowed */
+    VGSM_SPEC_CAUSE_ENUM(COLLISION_WITH_NW_INIT_REQUEST             ,56  )  /* Collision with network initiated request             */
+    VGSM_SPEC_CAUSE_ENUM(UNSUPPORTED_QCI_VALUE                      ,59  )  /* Unsupported QCI value                                */
+    VGSM_SPEC_CAUSE_ENUM(MAXIMUM_NUM_OF_EPS_BEARERS_REACHED         ,65  )  /* Maximum number of EPS bearers reached                */
+    VGSM_SPEC_CAUSE_ENUM(REQUESTED_APN_NOT_SUPPORTED_IN_CURRENT_RAT_AND_PLMN_COMBINATION    ,66  )  /* Requested APN not supported in current RAT and PLMN combination          */
+    VGSM_SPEC_CAUSE_ENUM(INSUFFICIENT_RESOURCES_FOR_SPECIFIC_SLICE_AND_DNN                  ,67  )  /* Insufficient resources for specific slice and DNN                        */
+    VGSM_SPEC_CAUSE_ENUM(NOT_SUPPORTED_SSC_MODE                     ,68  )  /* Not supported SSC mode                               */
+    VGSM_SPEC_CAUSE_ENUM(INSUFFICIENT_RESOURCES_FOR_SPECIFIC_SLICE  ,69  )  /* Insufficient resources for specific slice            */
+    VGSM_SPEC_CAUSE_ENUM(MISSING_OR_UNKNOWN_DNN_IN_A_SLICE          ,70  )  /* Missing or unknown DNN in a slice                    */
+    VGSM_SPEC_CAUSE_ENUM(INVALID_PTI_VALUE                          ,81  )  /* Invalid PTI value                                    */
+    VGSM_SPEC_CAUSE_ENUM(MAX_DATA_RATE_PER_UE_FOR_UPLANE_INTEGRITY_PROTECTION_IS_TOO_LOW    ,82  )  /* Maximum data rate per UE for user-plane integrity protection is too low */
+    VGSM_SPEC_CAUSE_ENUM(SEMANTIC_ERROR_IN_QOS_OPERATION            ,83  )  /* Semantic error in QoS operation                      */
+    VGSM_SPEC_CAUSE_ENUM(SYNTACTIC_ERROR_IN_QOS_OPERATION           ,84  )  /* Syntactic error in QoS operation                     */
+    VGSM_SPEC_CAUSE_ENUM(INVALID_MAPPED_EPS_BEARER_IDENTITY         ,85  )  /* Invalid mapped EPS bearer identity                   */
+    VGSM_SPEC_CAUSE_ENUM(SEMANTICLLY_INCORRECT_MSG                  ,95  )  /* Semantically incorrect message                       */
+    VGSM_SPEC_CAUSE_ENUM(INVALID_MANDATORY_IE                       ,96  )  /* Invalid mandatory information                        */
+    VGSM_SPEC_CAUSE_ENUM(MSG_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENT     ,97  )  /* Message type non-existent or not implemented         */
+    VGSM_SPEC_CAUSE_ENUM(MSG_TYPE_NOT_COMPATIBLE_STATE              ,98  )  /* Message type not compatible with protocol state      */
+    VGSM_SPEC_CAUSE_ENUM(IE_NON_EXISTENT_NOT_IMPLEMENTED            ,99  )  /* Information element non-existent or not implemented  */
+    VGSM_SPEC_CAUSE_ENUM(CONDITIONAL_IE_ERROR                       ,100 )  /* Conditional IE error                                 */
+    VGSM_SPEC_CAUSE_ENUM(MSG_NOT_COMPATIBLE_STATE                   ,101 )  /* Message not compatible with the protocol state       */
+    VGSM_SPEC_CAUSE_ENUM(PROTOCOL_ERROR_UNSPECIFIED                 ,111 )  /* Protocol error unspecified                           */
+
+    /* VGSM PROPRIETARY CAUSE START */
+    
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_START     ,155)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_RESPONDER_REJ_REQ_DUE_TO_NESTED_SAME_REQ ,156)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_RESPONDER_REJ_REQ_DUE_TO_INVALID_PSI     ,157)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_RESPONDER_REJ_REQ_DUE_VGSM_INIT_MOD_ONGOING     ,158)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_RESPONDER_PROCESSING_TIME_NOT_ENOUGH     ,159)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_RESPONDER_GUARANTEE_RESPONSE_TIMER_TIME_OUT     ,160)
+	VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_RESPONDER_REJ_REQ_DUE_TO_VZ_REQ_5GNRSA_10_2_3   ,161)
+
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CONN_REJ_REQ_DUE_TO_PS_SUSPENDED     ,170)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CONN_REJ_REQ_DUE_TO_ERROR_OCCURED    ,171)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CONN_REJ_REQ_DUE_TO_HURRY_UP_REQ     ,172)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CONN_REJ_REQ_DUE_TO_UAC_BARRING      ,173)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CONN_REJ_REQ_DUE_TO_FATAL_FAIL       ,174)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CONN_ABORT_PROC_DUE_TO_POSSIBLE_LONG_GEMINI_SUSPEND      ,175)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CONN_REJ_REQ_DUE_TO_TRANSMISSION_FAILURE      ,176)
+
+
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_SYSTEM_STATE_CHECK_FAIL  ,180)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_REQ_INFO_ERROR           ,181)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_TX_FAILURE               ,182)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_TIMER_TIMEOUT            ,183)   
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_LOCAL_RELEASE            ,184)   
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_CANCLE_BY_RELEASE_FROM_UPPER_LAYER    ,185)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_NW_RELEASE_ABORT_ORIGINAL_PROCEDURE   ,186)  
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_MSG_NOT_FORWARD_ROUTING_FAILURE       ,187)            /* map to 5GMM cause #90*/
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_MSG_NOT_FORWARD_DNN_NOT_SUPPORT_IN_SLICE         ,188) /* map to 5GMM cause #91*/
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_MSG_NOT_FORWARD_PLMN_MAX_NUM_PDU_SESSION_REACH   ,189) /* map to 5GMM cause #65*/
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_MT_MOD_ABORT_ORIGINAL_PROCEDURE   ,190)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_MT_MOD_ONGOING_MO_MOD_NOT_ALLOW   ,191)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_SYNC_PDUS_STATUS_WITH_NW          ,192)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_UE_DEREGISTER_FROM_NW             ,193)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_5G23_DO_LOCAL_RELEASE            ,194)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_THIS_PDU_WAS_REVIVED_IN_4G       ,195)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_INTERSYSTEM_CHANGE_ABORT         ,196)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_PDU_SESSION_ALREADY_DEACTIVATE   ,197)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_5G4_MAP_FAILED           ,198)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_TRIGGERED_BY_RQOS            ,199)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_THIS_PDUS_CANNOT_TO_4G ,200)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_SYSTEM_STATE_UNSYNC_WITH_UPPER_LAYER             ,201)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_UPPER_LAYER_REQ_FORCE_TO_LOCAL_REL_PDUS          ,202)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_SYNC_EPSB_STATUS_WITH_NW         ,203)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_PAM_REJECT_REQ         ,204)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_SECOND_EMC_PDUS_NOT_ALLOW        ,205)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_EST_NON_EMC_PDUS_NOT_ALLOW_WHEN_ENTER_EMC_REGISTERED        ,206)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_THIS_MOD_REQ_ON_EMC_PDUS_IS_NOT_ALLOWED                     ,207)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_DUE_TO_DETACH_WITH_REATTACH_REQUIRED  ,209)
+    VGSM_PROPRIETARY_CAUSE_ENUM(PROPRIETARY_CAUSE_CORE_MSG_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENT_INDICATED_BY_5GSM_STATUS  ,210)
+ /* ============================== ~VGSM cause ============================== */
diff --git a/mcu/interface/protocol/general/wo_public_defs.h b/mcu/interface/protocol/general/wo_public_defs.h
new file mode 100644
index 0000000..bcb5e0c
--- /dev/null
+++ b/mcu/interface/protocol/general/wo_public_defs.h
@@ -0,0 +1,84 @@
+/*****************************************************************************
+*  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) 2012
+*
+*  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).
+*
+*****************************************************************************/
+
+#ifndef __WO_PUBLIC_DEFS_H__
+#define __WO_PUBLIC_DEFS_H__
+
+#include "kal_public_defs.h"
+
+typedef enum {
+    WO_STATUS_OK = 0,
+    WO_STATUS_FAIL = 1, //Can't be used in the errcause of d2rm_wo_act_data_call_cnf_prv_struct
+
+    WO_STATUS_MAIN_ERROR_START = 1001,
+
+    /* NW error */
+    WO_STATUS_DNS_QUERY_TIMEOUT = 1040,
+    WO_STATUS_FQDN_NO_ADDRESS = 1041,
+    WO_STATUS_UNABLE_CONNET_EPDG = 1081, // from strongswan
+    WO_STATUS_UNABLE_MAKE_IPSEC_TUNNEL = 1082,
+    WO_STATUS_UNABLE_TO_VALIDATE_SERVER_CERTIFICATE = 1010,  // Not support for ePDG
+    WO_STATUS_UNABLE_TO_VALIDATE_SERVER_CERTIFICATE_EPDG = 1101,
+    WO_STATUS_INVALID_CERTIFICATE = 1011,  // Not support for ePDG
+    WO_STATUS_INVALID_CERTIFICATE_EPDG = 1111,
+    WO_STATUS_INVALID_IP_IN_HANDOVER = 1999,
+
+    /* Internal error  */
+    WO_STATUS_NOT_READY = 2001,
+    WO_STATUS_NO_APN_CONNECTION = 2002,
+    WO_STATUS_PDN_INFO_NOT_MATCHED = 2003,
+    WO_STATUS_PDN_CAN_NOT_CREATE = 2004,
+    WO_STATUS_REJECT_PDN_ACT_REQ_IN_WRONG_STATE = 2005,
+    WO_STATUS_HO_ADDR_PROTO_NOT_MATCHED = 2006,
+    WO_STATUS_WRONG_PDN_REQ_TYPE = 2007,
+    WO_STATUS_PDN_ACT_ABORT = 2008,
+    WO_STATUS_PDN_ACT_TIMEOUT = 2009,
+    WO_STATUS_EMERGENCY_NO_IMEI = 2010,
+    WO_STATUS_PDN_LOCAL_RELEASE = 2011,
+
+    WO_STATUS_MAIN_ERROR_END = 3000,
+} wo_status_enum;
+
+typedef enum {
+    WO_IKE_ERR_STATUS_ENUM_NONE
+} wo_ike_err_status_enum;
+
+typedef enum {
+    WO_OOS_END,
+    WO_OOS_START,
+    WO_OOS_RESUME,
+} wo_oos_enum;
+
+#endif /* __WO_PUBLIC_DEFS_H__ */