[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/protocol/interface/lte/ciss_eval_struct.h b/mcu/protocol/interface/lte/ciss_eval_struct.h
new file mode 100644
index 0000000..0799c0e
--- /dev/null
+++ b/mcu/protocol/interface/lte/ciss_eval_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) 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:
+ * ---------
+ *   ciss_eval_struct.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   message and common structure definition between CISS and EVAL module
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ *
+ ****************************************************************************/
+
+
+#ifndef  _CISS_EVAL_STRUCT_INC
+#define  _CISS_EVAL_STRUCT_INC
+
+
+/***** message structure definition *****/
+
+/* This structure for MSG_ID_CISS_EVAL_DATA_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16  mui;
+    kal_uint8   addInfoLen;
+    kal_uint8   *addInfo;
+    kal_bool    isRelease;
+    /* raw data is in peer buffer */
+} ciss_eval_data_req_struct;
+
+/* This structure for MSG_ID_CISS_EVAL_DATA_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    lcs_emm_status_enum  result;
+    kal_uint16           mui;
+} ciss_eval_data_cnf_struct;
+
+/* This structure for MSG_ID_CISS_EVAL_DATA_IND */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8   addInfoLen;
+    kal_uint8   *addInfo;
+    /* raw data is in peer buffer */
+} ciss_eval_data_ind_struct;
+
+#endif   /* ----- #ifndef _CISS_EVAL_STRUCT_INC ----- */
+
diff --git a/mcu/protocol/interface/lte/common_def.h b/mcu/protocol/interface/lte/common_def.h
new file mode 100644
index 0000000..45b550f
--- /dev/null
+++ b/mcu/protocol/interface/lte/common_def.h
@@ -0,0 +1,26 @@
+#ifndef _MTK_LTE_COMMON_H_
+#define _MTK_LTE_COMMON_H_
+
+
+#define FLAG_CHK(v, ofst)		((v) & (1 << (ofst)))
+#define FLAG_SET(v, ofst)		(v) |= 1 << (ofst)
+#define FLAG_CLR(v, ofst)		(v) &= ~(1 << (ofst))
+
+#ifdef MIN
+#undef MIN
+#endif
+#define MIN(x, y)				((x) > (y) ? (y) : (x))
+
+#ifdef MAX
+#undef MAX
+#endif
+#define MAX(x, y)				((x) > (y) ? (x) : (y))
+
+#define REDUNDANT_ASSERT(x)		ASSERT(x)
+
+/*--------------------------------------------------------------------------
+ * EMBMS configuration 
+ *--------------------------------------------------------------------------*/
+#define MAX_EMBMS_FREQ_SUPPORT     (2)
+
+#endif // _LTE_SECURITY_CMN_FUNC_H_
diff --git a/mcu/protocol/interface/lte/eps_qos_and_bit_rate.h b/mcu/protocol/interface/lte/eps_qos_and_bit_rate.h
new file mode 100644
index 0000000..e88d936
--- /dev/null
+++ b/mcu/protocol/interface/lte/eps_qos_and_bit_rate.h
@@ -0,0 +1,40 @@
+#ifndef _LTE_EPS_BIT_RATE_TABLE_H_
+#define _LTE_EPS_BIT_RATE_TABLE_H_
+
+#include "kal_public_api.h"
+#include "tcm_eval_struct.h"
+#include "esm_ratdm_struct.h"
+#include "l4c_common_enum.h"
+
+
+// EPS QoS IE and APN-AMBR IE UPPER BOUND
+#define ESM_EPS_QOS_BIT_RATE_UPPER_BOUND_IN_KBPS  L4C_QOS_BITRATE_10_GBPS // 10M Kbps == 10 Gbps ;  #include "l4c_common_enum.h"
+#define ESM_APN_AMBR_BIT_RATE_UPPER_BOUND_IN_KBPS 65280 * 1000 //  65280K Kbps == 65280 Mbps
+
+#define  ESM_MIN_GBR_QCI                ESM_QCI_1
+#define  ESM_MAX_GBR_QCI                ESM_QCI_4
+#define  ESM_MIN_NON_GBR_QCI            ESM_QCI_5
+#define  ESM_MAX_NON_GBR_QCI            ESM_QCI_9
+
+// R12 CR2024
+#define ESM_IS_GBR_QCI(_qci)			((ESM_MIN_GBR_QCI <= _qci && ESM_MAX_GBR_QCI >= _qci) || \
+                                          ESM_QCI_65 == _qci || ESM_QCI_66 == _qci || ESM_QCI_67 == _qci || ESM_QCI_84 == _qci || ESM_QCI_85 == _qci)	   
+
+#define ESM_IS_NON_GBR_QCI(_qci)		((ESM_MIN_NON_GBR_QCI <= _qci && ESM_MAX_NON_GBR_QCI >= _qci) || \
+										  ESM_QCI_69 == _qci || ESM_QCI_70 == _qci) 
+
+#define ONE_Mbps_IN_Kbps ((kal_uint64) 1000)
+#define ONE_Gbps_IN_Kbps ((kal_uint64) 1000) * ONE_Mbps_IN_Kbps
+#define ONE_Tbps_IN_Kbps ((kal_uint64) 1000) * ONE_Gbps_IN_Kbps
+#define ONE_Pbps_IN_Kbps ((kal_uint64) 1000) * ONE_Tbps_IN_Kbps
+
+
+
+
+
+kal_bool esm_pasre_eps_qos_ie(kal_uint8 length, const kal_uint8 *data, eps_qos_struct *eps_qos_ptr);
+kal_bool esm_parse_ext_eps_qos_ie(kal_uint8 length, const kal_uint8 *data, eps_qos_struct *eps_qos_ptr);
+kal_bool esm_parse_apn_ambr_ie(kal_uint8 length, const kal_uint8 *data, eps_apn_ambr_struct *apn_ambr_ptr);
+kal_bool esm_parse_ext_apn_ambr_ie(kal_uint8 length, const kal_uint8 *data, eps_apn_ambr_struct *apn_ambr_ptr);
+
+#endif
\ No newline at end of file
diff --git a/mcu/protocol/interface/lte/etmr_enum.h b/mcu/protocol/interface/lte/etmr_enum.h
new file mode 100644
index 0000000..2dd521d
--- /dev/null
+++ b/mcu/protocol/interface/lte/etmr_enum.h
@@ -0,0 +1,87 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   etmr_enum.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * -------
+ *   
+ *
+ * ==========================================================================
+ * $Log$
+ ****************************************************************************/
+#ifndef  ETMR_ENUM_INC
+#define  ETMR_ENUM_INC
+
+typedef enum
+{
+	etmr_state_stop,
+	etmr_state_run,
+	etmr_state_expire
+}etmr_state_e;
+
+typedef enum
+{
+	etmr_type_unuse,
+	etmr_type_short,
+	etmr_type_long
+}etmr_type_e;
+
+typedef enum
+{
+    ETRMR_ACT_START,
+    ETRMR_ACT_STOP,
+    ETRMR_ACT_RESUME,
+    ETRMR_ACT_SET_ATTR,
+    ETRMR_ACT_SET_INIT_TICK,
+    ETRMR_ACT_SET_REMAIN_TICK,
+    ETRMR_ACT_SET_CALLBACK_PARAM,
+}etmr_act_e;
+
+
+#endif   /* ----- #ifndef ETMR_ENUM_INC ----- */
+
diff --git a/mcu/protocol/interface/lte/l4c_el1_struct.h b/mcu/protocol/interface/lte/l4c_el1_struct.h
new file mode 100644
index 0000000..d16f50f
--- /dev/null
+++ b/mcu/protocol/interface/lte/l4c_el1_struct.h
@@ -0,0 +1,395 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   l4c_el1_struct.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   message and common structure definition between L4C and EL1 modules.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 06 02 2021 titi.wu
+ * [MOLY00609450] [FM350][HP][Kaixuan.Zhang]LTE«D«H¥OTx©MRxªºAT©R¥O»Ý¨D
+ * 	
+ * 	.
+ *
+ * 04 09 2021 titi.wu
+ * [MOLY00609450] [FM350][HP][Kaixuan.Zhang]LTE«D«H¥OTx©MRxªºAT©R¥O»Ý¨D
+ * .
+ *
+ * 07 03 2020 wade.chen
+ * [MOLY00534567] LTE B38 ©M B41ªº «ü¥OAT+ERFTX=6,0,1,41,2,26825,1,1,4,0,25,0,23,1,1 ?¤£¥X?¥\²v
+ * 	
+ * 	[EWSP0000125300][R3]add rx ant state for ERFTX test
+ *
+ * 05 26 2020 chun-yu.chien
+ * [MOLY00516314] [CAYMAN][SPR] OMADM node to control ./LTE/QAM/Downlink ./LTE/QAM/Uplink ./LTE/TDD/TM9: ./LTE/FDD/TM9: ./LTE/B25/4x4MIMO:./LTE/B41/4x4MIMO:
+ * 	
+ * 	AT+EGDM extension : GET/SET omadm 4x4 MIMO interface
+ * 	R3.MP
+ *
+ * 09 25 2019 wade.chen
+ * [MOLY00347940] [Gen97][MT6297] tstm_meta development
+ * 	
+ * 	[VMOLY]ERFTX error handle enhancement (code sync)
+ *
+ * 01 29 2019 wade.chen
+ * [MOLY00347940] [Gen97][MT6297] tstm_meta development
+ * 	
+ * 	[ERS00028822][EVB.SEPT.DEV][code sync] RF De-sense modification
+ *
+ * 06 06 2018 vend_mtb_mobiveil012
+ * [MOLY00331680] [CODE SYNC] Looking for TAS AT comamnd while target execte RF test by AT+ERFTX
+ * Added two antenna parameters to AT+ERFTX=6.
+ *
+ * 05 22 2018 aki.hietala
+ * [MOLY00260136] [MT6295] EL1C TX development
+ * -SAR update for Gen95, EL1C part
+ *
+ * 12 04 2017 bart.liang
+ * [MOLY00293238] [GEN93] EM Power Detector - error handling
+ *
+ * 12 01 2017 bart.liang
+ * [MOLY00293238] [GEN93] EM Power Detector - error handling
+ *
+ * 12 01 2017 bart.liang
+ * [MOLY00293238] [GEN93] EM Power Detector - error handling
+ * Rollback for V-list sync fail
+ *
+ * 07 10 2017 jung-ching.hsieh
+ * [MOLY00262750] [PH1 VZW] Regarding Antenna Testing interface modify
+ *
+ * 12 19 2016 gary.liu
+ * [MOLY00207413] EL1C 6293 development
+ * [EL1 CH] change lte band from uint8 to uint16
+ *
+ * 11 16 2016 popcafa.shih
+ * [MOLY00196065] [MT6293][folder structure] Move EL1/EL2 files from LTE domain to SWRD domain
+ * modify MOLY00173949 & MOLY00172964 for IS_EL1_ANDROID_M_LCE_REPORT_SUPPORT 0.
+ *
+ * 01 15 2016 ty.shen
+ * [MOLY00159734] TX power detector support on Jade
+ * L4C/EL1 Interface.
+ *
+ * 07 09 2014 yr.chiang
+ * [MOLY00071851] [MT6290E2][EL1TX] ROME DSDA support for AT+EB3INFO
+ * .
+ *
+ * 05 20 2014 yr.chiang
+ * [MOLY00066106] [MT6290E2][EL1] EL1 support for EM forceTx function
+ * .
+ *
+ ****************************************************************************/
+
+
+#ifndef  _L4C_EL1_STRUCT_H_
+#define  _L4C_EL1_STRUCT_H_
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "el1_comm_inter_category_public.h"
+
+#if (!defined(__MAUI_BASIC__)) && (!(defined(__NR_L1SIM__) || defined(__LTE_L1SIM__)))
+#include "l3_inc_enums.h"
+#include "l4c_common_enum.h"
+#endif
+
+//#include "ps_public_enum.h"
+
+#define LTE_MAX_TX_PWR_REQ_ANT_NUM 16 // LTE_MAX_TX_PWR_REQ_ANT_NUM >= LTE_SAR_ENABLE_MAX_ANT_TABLE_NUM
+/* MSG_ID_EL1_LTE_MAX_TX_PWR_RED_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    // op 1: for all band, op 3,5: only for band, op 4: reset, n = 1
+    // op 9: for all band (2 antennas), op 10: one band (2 antennas), n = 2
+    // op 11: for all band (n antennas), op 12: one band (n antennas), 1 < n <= LTE_MAX_TX_PWR_REQ_ANT_NUM
+    kal_uint8   op;
+    kal_uint16  band;  // Band in integer format (1 - 255)
+    // note: para1, para2 and para3 to be removed
+    kal_uint8   para1; // 0~255, unit: 1/8 dB, (0~32 dB)
+    kal_uint8   para2; // reserved
+    kal_uint8   para3; // reserved
+    kal_uint8   n;     // 1~LTE_MAX_TX_PWR_REQ_ANT_NUM, number of valid parameters in param[]
+    kal_uint8   param[LTE_MAX_TX_PWR_REQ_ANT_NUM]; // 0~255, unit: 1/8 dB, (0~32 dB)
+} el1_lte_max_tx_pwr_red_req_struct;
+
+
+typedef enum
+{
+    EL1_EM_TST_CMD_FORCE_TX_PWR,
+    EL1_EM_TST_CMD_END,
+    EL1_EM_TST_CMD_TX_REPORT,
+} EL1_EM_TSTCmdType;
+
+typedef struct
+{
+    kal_uint8                   on;
+    kal_bool                    duplex_mode;
+    kal_uint8                   band;
+    kal_uint8                   ul_bandwidth;
+    kal_uint16                  ul_freq;
+    kal_uint8                   tdd_cfg;
+    kal_uint8                   tdd_sp_sf_cfg;
+    kal_uint8                   vrb_start;
+    kal_uint8                   vrb_len;
+    kal_uint8                   mcs;
+    kal_int16                   tx_power;
+    kal_bool                    tas_en;
+    kal_uint8                   tx_ant_state;
+    kal_uint8                   rx_ant_state; 
+} EL1_EM_TSTCmd_ForceTxPwr_T;
+
+typedef union
+{
+    EL1_EM_TSTCmd_ForceTxPwr_T  forceTxPwr;
+} EL1_EM_TSTCmdParam;
+
+
+/* MSG_ID_L4C_EL1_EM_TST_CONTROL_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint8                   src_id;
+    EL1_EM_TSTCmdType           type;
+    EL1_EM_TSTCmdParam          param;
+} l4c_el1_em_tst_control_req_struct;
+
+typedef enum
+{     
+    //L4CEL1_ERR_START           =   IND_AT_CMD_CAUSE_START, // 0x1900
+    L4C_EL1_ERR_NOT_IN_FLIGHT   =   0x1901,     
+    L4C_EL1_ERR_SIM_IN_SLOT     =   0x1902,
+    L4C_EL1_ERR_PARA_BAND       =   0x1903,
+    L4C_EL1_ERR_PARA_UL_BW      =   0x1904,
+    L4C_EL1_ERR_PARA_UL_FREQ    =   0x1905,
+    L4C_EL1_ERR_PARA_DUPLEX_MODE=   0x1906,
+    L4C_EL1_ERR_PARA_TDD_CFG    =   0x1907,
+    L4C_EL1_ERR_PARA_SP_SF_CFG  =   0x1908,
+    L4C_EL1_ERR_PARA_VRB        =   0x1909,
+    L4C_EL1_ERR_PARA_MCS        =   0x190A,
+    L4C_EL1_ERR_ROUTE_VALID     =   0x190B,
+    L4C_EL1_ERR_TEST_ONGOING    =   0x190C,
+    L4C_EL1_ERR_ANT_STATE       =   0x190D,
+    L4C_EL1_ERR_OTHERS          =   0x194F,
+    L4CEL1_ERR_INVALID          =   0x1950 //success=true, error_code is useless
+} l4cel1_error_enum       ; //error_code should be larger than 256
+
+/* MSG_ID_L4C_EL1_EM_TST_CONTROL_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint8                   src_id;
+    kal_bool                    success;
+    l4cel1_error_enum           error_code;
+} l4c_el1_em_tst_control_cnf_struct;
+
+
+/* MSG_ID_L4C_EL1_EM_TX_REPORT_IND */
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_int32                   tx_power;   // dBm*8
+} l4c_el1_em_tx_report_ind_struct;
+
+
+/* MSG_ID_L4CEL1_B3_INFO_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint8                   type;  // 0: Off, 1: TCH, 2: BCCH
+    kal_uint8                   index; // frequency index
+                                       // 0:1850-1860 
+                                       // 1:1860-1870
+                                       // 2:1870-1875
+                                       // 3:1875-1880
+                                       // 4:1845-1850
+    kal_uint16                  arfcn; // GSM arfcn
+    kal_int16                   rssi;  // GSM rssi
+    kal_uint8                   src;   // Sourcd id
+} l4cel1_b3_info_req_struct;
+
+
+/* MSG_ID_L4CEL1_B3_INFO_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint8                   result;// 1: success, 0: error
+    kal_uint8                   src;   // Sourcd id
+} l4cel1_b3_info_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8  srcid;               // srcid is set by request
+    kal_uint32 lce_mode;            // Stop:0, Push mode:1, Pull mode:2
+    kal_uint32 lce_rpt_interval_ms; // LCE report interval
+} l4c_el1_lce_report_start_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 srcid;
+} l4c_el1_lce_report_pulldata_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8  srcid;
+    kal_uint8  lce_status;          // stop:0, active:1
+    kal_uint32 lce_act_interval_ms; // actually reporting interval(ms)
+} l4c_el1_lce_report_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8  srcid;
+    kal_uint8  lce_suspend;    
+    kal_uint32 tput_curr;
+    kal_uint32 conf_lv1;
+} l4c_el1_lce_report_ind_struct;
+
+typedef enum
+{
+    ANTENNA_CONFIG_NORMAL_DUAL		=	0x1,	// normal dual receiver operation (default UE behavior)
+    ANTENNA_CONFIG_SINGLE_PRIMARY	=	0x2,	// Single receiver operation ' enable primary receiver only (disable secondary/MIMO receiver)
+    ANTENNA_CONFIG_SINGLE_SECONDARY	=	0x3	// Single receiver operation ' enable secondary/MIMO receiver only (disable primary receiver)
+} l4cel1_antenna_config_enum;
+
+typedef enum
+{
+    ANTENNA_STATUS_NORMAL_DUAL		=	0x1,	// normal dual receiver operation (default UE behavior)
+    ANTENNA_STATUS_SINGLE_PRIMARY	=	0x2,	// Single receiver operation ' enable primary receiver only (disable secondary/MIMO receiver)
+    ANTENNA_STATUS_SINGLE_SECONDARY	=	0x3	// Single receiver operation ' enable secondary/MIMO receiver only (disable primary receiver)
+} l4cel1_antenna_status_enum;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8 src_id;
+	kal_bool pri_receiver;
+	kal_bool sec_receiver;
+} l4cel1_antenna_information_req_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8 src_id;
+	kal_bool result; //KAL_TRUE if success; otherwise KAL_FALSE
+	kal_bool is_pri_receiver_valid;
+	kal_uint16 pri_rssi;
+	kal_bool is_sec_receiver_valid;
+	kal_uint16 sec_rssi;
+	kal_bool is_relative_phase_valid;
+	kal_uint16 relative_phase;
+} l4cel1_antenna_information_cnf_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8 src_id;
+	l4cel1_antenna_config_enum configuration;
+} l4cel1_antenna_config_req_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8 src_id;
+	kal_bool result; //KAL_TRUE if success; otherwise KAL_FALSE
+} l4cel1_antenna_config_cnf_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8 src_id;
+} l4cel1_antenna_config_status_req_struct;
+
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8 src_id;
+    kal_bool result; //antenna status result
+	l4cel1_antenna_status_enum ue_behavior;
+} l4cel1_antenna_config_status_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_int32 rssi_edBm[LTE_UE_ANT_NUM];
+}l4cel1_ps_local_rx_rssi_verify_ind_struct;
+
+#if (!defined(__MAUI_BASIC__)) && (!(defined(__NR_L1SIM__) || defined(__LTE_L1SIM__)))
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum   src_id;       // piggyback value, indicate the source
+    omadm_cmd_type_enum  cmd;          // command mode
+    omadm_node_type_enum node_type;    // OMADM node
+    kal_uint32           node_value;   // the value for set mode
+} l4c_el1_omadm_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum   src_id;       // piggyback value, indicate the source
+    omadm_cmd_type_enum  cmd;          // command mode
+    kal_bool             result;       // TRUE=>pass, FALSE=>error
+    omadm_node_type_enum node_type;    // OMADM node
+    kal_uint32           node_value;   // the value for set mode
+} l4c_el1_omadm_update_cnf_struct;
+#endif /* (!defined(__MAUI_BASIC__)) && (!(defined(__NR_L1SIM__) || defined(__LTE_L1SIM__))) */
+
+#endif
+
+
diff --git a/mcu/protocol/interface/lte/l4c_errc_struct.h b/mcu/protocol/interface/lte/l4c_errc_struct.h
new file mode 100644
index 0000000..b01ab4c
--- /dev/null
+++ b/mcu/protocol/interface/lte/l4c_errc_struct.h
@@ -0,0 +1,261 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   l4c_errc_struct.h
+ *
+ * Project:
+ * --------
+ *   UMOLY
+ *
+ * Description:
+ * ------------
+ *  Messages and common definitions for L4C-ERRC interface
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ ****************************************************************************/
+
+
+#ifndef  _L4C_ERRC_STRUCT_H_
+#define  _L4C_ERRC_STRUCT_H_
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "mcd_l3_inc_struct.h"
+#include "vdm_l4c_struct.h"
+
+#define L4C_ERRC_WLAN_MAX_MEAS_OBJ_BAND_NUM 2
+#define L4C_ERRC_WLAN_MAX_WLAN_NUM 32
+#define L4C_ERRC_WLAN_MAX_CARR_INFO_NUM 8
+#define L4C_ERRC_WLAN_MAX_CARR_INFO_CHANNEL_NUM 16
+#define L4C_ERRC_WLAN_MAX_MEAS_OBJECT_NUM 32
+#define L4C_ERRC_WLAN_MAX_MEAS_RESULT_NUM 33
+
+#define L4C_ERRC_WLAN_RSSI_NEG_INFINITY -128
+#define L4C_ERRC_WLAN_RSSI_POS_INFINITY 127
+
+typedef enum
+{
+    L4C_ERRC_WLAN_BAND_2_DOT_4,
+    L4C_ERRC_WLAN_BAND_5
+} l4c_errc_wlan_band_enum;
+
+typedef enum
+{
+    L4C_ERRC_WLAN_LWA_CONNECTION_SUCCESS,
+    L4C_ERRC_WLAN_LWA_CONNECTION_FAILURE
+} l4c_errc_wlan_lwa_connect_result_enum;
+
+typedef enum
+{
+    L4C_ERRC_WLAN_LWA_FAIL_CAUSE_RADIO_LINK_PROBLEM,
+    L4C_ERRC_WLAN_LWA_FAIL_CAUSE_UE_INTERNAL_PROBLEM
+} l4c_errc_wlan_lwa_failure_cause_enum;
+
+typedef enum
+{
+    L4C_ERRC_WLAN_COUNTRY_CODE_USA,
+    L4C_ERRC_WLAN_COUNTRY_CODE_EUROPE,
+    L4C_ERRC_WLAN_COUNTRY_CODE_JAPAN,
+    L4C_ERRC_WLAN_COUNTRY_CODE_GLOBAL,
+} l4c_errc_wlan_country_code_enum;
+
+typedef struct
+{
+    /* Length 0 means that ssid is not present. */
+    kal_uint8 ssid_len;
+    kal_uint8 ssid[32];
+
+    kal_bool bssid_valid;
+    kal_uint8 bssid[6];
+
+    kal_bool hessid_valid;
+    kal_uint8 hessid[6];
+} l4c_errc_wlan_id_struct;
+
+typedef struct
+{
+    kal_bool operating_class_valid;
+    kal_uint8 operating_class;
+
+    kal_bool country_code_valid;
+    l4c_errc_wlan_country_code_enum country_code;
+
+    /* Length 0 means that the list is not present. */
+    kal_uint8 wlan_channel_list_len;
+    kal_uint8 wlan_channel_list[L4C_ERRC_WLAN_MAX_CARR_INFO_CHANNEL_NUM];
+} l4c_errc_wlan_carrier_info_struct;
+
+typedef struct
+{
+    kal_bool report_carrier_info;
+    kal_bool report_available_admission_capacity;
+    kal_bool report_backhaul_dl_bw;
+    kal_bool report_backhaul_ul_bw;
+    kal_bool report_channel_utilization;
+    kal_bool report_station_count;
+} l4c_errc_wlan_report_quantity_struct;
+
+typedef struct
+{
+    kal_uint8 meas_object_id;
+
+    kal_uint8 wlan_list_len;
+    l4c_errc_wlan_id_struct wlan_list[L4C_ERRC_WLAN_MAX_WLAN_NUM];
+
+    /* Length 0 means that the list is not present. */
+    kal_uint8 wlan_band_list_len;
+    l4c_errc_wlan_band_enum wlan_band_list[L4C_ERRC_WLAN_MAX_MEAS_OBJ_BAND_NUM];
+
+    /* Length 0 means that the list is not present. */
+    kal_uint8 carrier_info_list_len;
+    l4c_errc_wlan_carrier_info_struct carrier_info_list[L4C_ERRC_WLAN_MAX_CARR_INFO_NUM];
+
+    l4c_errc_wlan_report_quantity_struct report_quantities;
+} l4c_errc_wlan_meas_object_struct;
+
+typedef struct
+{
+    l4c_errc_wlan_id_struct wlan_id;
+    /* RSSI has two special values: negative infinity (-128) and positive infinity (127).
+       Otherwise value range is [-100, 39] */
+    kal_int8 rssi;
+    l4c_errc_wlan_band_enum band;
+    kal_bool connected;
+
+    kal_bool carrier_info_valid;
+    l4c_errc_wlan_carrier_info_struct carrier_info;
+
+    kal_bool available_admission_capacity_valid;
+    kal_uint16 available_admission_capacity;
+
+    kal_bool backhaul_dl_bw_valid;
+    kal_uint64 backhaul_dl_bw;
+
+    kal_bool backhaul_ul_bw_valid;
+    kal_uint64 backhaul_ul_bw;
+
+    kal_bool channel_utilization_valid;
+    kal_uint8 channel_utilization;
+
+    kal_bool station_count_valid;
+    kal_uint16 station_count;
+} l4c_errc_wlan_meas_result_struct;
+
+/* MSG_ID_L4C_ERRC_WLAN_CAPABILITY_IND */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 wlan_mac_address[6];
+    kal_bool band_2_dot_4_supported;
+    kal_bool band_5_supported;
+} l4c_errc_wlan_capability_ind_struct;
+
+/* MSG_ID_L4C_ERRC_WLAN_LWA_CONNECT_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 wlan_mobility_set_list_len;
+    l4c_errc_wlan_id_struct wlan_mobility_set_list[L4C_ERRC_WLAN_MAX_WLAN_NUM];
+
+    /* S-Kwt encoding:
+         bits 0..7  encoded in s_kwt[0]
+         bits 8..15 encoded in s_kwt[1]
+          ...
+       First bit of S-Kwt is the MSB of s_kwt[0]. */
+    kal_bool s_kwt_valid;
+    kal_uint8 s_kwt[32];
+} l4c_errc_wlan_lwa_connect_req_struct;
+
+/* MSG_ID_L4C_ERRC_WLAN_LWA_CONNECT_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_errc_wlan_lwa_connect_result_enum result;
+    l4c_errc_wlan_lwa_failure_cause_enum failure_cause;
+} l4c_errc_wlan_lwa_connect_cnf_struct;
+
+/* MSG_ID_L4C_ERRC_WLAN_LWA_LOST_IND */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_errc_wlan_lwa_failure_cause_enum cause;
+} l4c_errc_wlan_lwa_lost_ind_struct;
+
+/* MSG_ID_L4C_ERRC_WLAN_MEASUREMENT_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 filter_coefficient;
+
+    kal_uint8 meas_object_list_len;
+    l4c_errc_wlan_meas_object_struct meas_object_list[L4C_ERRC_WLAN_MAX_MEAS_OBJECT_NUM];
+} l4c_errc_wlan_measurement_req_struct;
+
+/* MSG_ID_L4C_ERRC_WLAN_MEASUREMENT_IND */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 meas_object_id;
+
+    kal_uint8 meas_result_list_len;
+    l4c_errc_wlan_meas_result_struct meas_result_list[L4C_ERRC_WLAN_MAX_MEAS_RESULT_NUM];
+} l4c_errc_wlan_measurement_ind_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    set_plmn_freq_operation_enum operation;
+    plmn_id_struct plmn_id;
+    kal_uint8 num_of_freq;
+    EARFCN freq[MAX_LTE_SET_STORED_NUM];
+} l4c_errc_set_plmn_stored_freq_req_struct;
+
+/* MSG_ID_L4C_ERRC_IMS_CC_CALL_PROGRESS_IND */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    /* Must sync with vdm_l4c_ims_cc_call_progress_ind_struct */
+    kal_uint8                   call_id;
+    kal_uint8                   msg_type;
+    l4c_ecpi_info_struct        ecpi_info;
+} l4c_errc_ims_cc_call_progress_ind_struct;
+
+#endif /* _L4C_ERRC_STRUCT_H_ */
diff --git a/mcu/protocol/interface/lte/l4c_esm_struct.h b/mcu/protocol/interface/lte/l4c_esm_struct.h
new file mode 100644
index 0000000..481a927
--- /dev/null
+++ b/mcu/protocol/interface/lte/l4c_esm_struct.h
@@ -0,0 +1,88 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   l4c_esm_struct.h
+ *
+ * Project:
+ * --------
+ *   TATAKA
+ *
+ * Description:
+ * ------------
+ *   message and common structure definition between L4C and ESM module
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 02 18 2019 lucien.li
+ * [MOLY00347660] [NR] ENDC and Signal Strength related Information
+ * refine the primitive path.
+ *
+ * 08 17 2018 lucien.li
+ * [MOLY00306148] [NAS] pangu giant CR
+ * [Gen97][L4C] Cell info / SRVCC / inter-RAT / 5G extension and refactor
+ *
+ * 04 16 2015 jeffery.chen
+ * [MOLY00098964] [UMOLY][UBIN] NAS signaling Phase2 mode switch implementation
+ * Max's cl1159418: merge c2k related code..
+ *
+ ****************************************************************************/
+
+
+#ifndef  L4C_ESM_STRUCT_INC
+#define  L4C_ESM_STRUCT_INC
+
+#include "l3_inc_local.h"
+#include "irat_common_struct.h"
+#include "l3_inc_enums.h"
+#include "sm2l4c_struct.h"
+#include "c2k_irat_msg_struct.h"
+
+typedef struct {
+    LOCAL_PARA_HDR
+    vdm_voice_status_enum   vdm_voice_status;
+    ims_access_rat_enum     rat;
+} l4c_esm_vdm_ims_voice_status_req_struct;
+
+
+#endif   /* ----- #ifndef L4C_ESM_STRUCT_INC ----- */
+
diff --git a/mcu/protocol/interface/lte/l4c_eval_struct.h b/mcu/protocol/interface/lte/l4c_eval_struct.h
new file mode 100644
index 0000000..70b46f8
--- /dev/null
+++ b/mcu/protocol/interface/lte/l4c_eval_struct.h
@@ -0,0 +1,970 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   l4c_eval_struct.h
+ *
+ * Project:
+ * --------
+ *   TATAKA
+ *
+ * Description:
+ * ------------
+ *   message and common structure definition between L4C and EVAL module
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 12 16 2021 rahamtulla.mulla
+ * [MOLY00774161] [mt2735][CS eCall][NG eCall][patch back] ecall patch back from NR15.R3.MD700.MP.ECAll.DEV.
+ *
+ * 12 21 2020 guanglong.wu
+ * [MOLY00588181] [M80] ????AT&T lwm2m??????????object????Srxlev??????????????????????
+ * 	
+ * 	.[Srxlev Report] L4 part changes merged to MD700
+ * 	[EWSP0000195761]
+ * 	[CRS:MCRS000525]
+ *
+ * 11 28 2020 titi.wu
+ * [MOLY00598921] Sets the signal strength reporting criteria
+ * 	
+ * 	.
+ *
+ * 09 21 2020 chun-yu.chien
+ * [MOLY00569501] [Gen97] TC10 patch back
+ * 	
+ * 	trigger auto sync to TC10.SP (remove redundant space)
+ *
+ * 09 18 2020 allen.hsu
+ * [MOLY00569501] [Gen97] TC10 patch back
+ * .
+ *
+ * 09 18 2020 chengyu.chen
+ * [MOLY00570287] [Gen97] VzW T_VzW and T_eps_fallback timer Implementation
+ * [NR15.R3.MP][In TC10 Vlist]
+ *
+ * 08 18 2020 chun-yu.chien
+ * [MOLY00533682] [Huawei-6853][CA¯à¤OÚÌ?] 256qam¡B4 4 MIMO¯à¤O, CA??¤W?
+ * 	
+ * 	report phy config info(4x4MIMO, 256QAM) for TC3 requirement - MPD
+ * 	R3.MP
+ *
+ * 08 03 2020 chun-yu.chien
+ * [MOLY00542612] [Cayman][LC][TMO] fail to register cellular quality for ePDG HO
+ * 	
+ * 	[Gen97][LGE][Code Sync] AT&T Requirement<CDR-WiFi-1510> 500ms signaling report - MPD
+ * 	MOLY00372925 / MOLY00398253 / MOLY00435765
+ * 	NR15.R3.MP
+ *
+ * 06 29 2020 chun-yu.chien
+ * [MOLY00536765] AT&T CDR-WiFi-1510 (MD part) Cell measurement 500 ms
+ * 	
+ * 	[Gen97][Code Sync]AT&T Requirement<CDR-WiFi-1510> 500ms signaling report - MPD
+ * 	R3.MP
+ *
+ * 06 16 2020 chun-yu.chien
+ * [MOLY00536765] AT&T CDR-WiFi-1510 (MD part) Cell measurement 500 ms
+ * 	
+ * 	[Gen97][Code Sync]AT&T Requirement<CDR-WiFi-1510> 500ms signaling report - MPD
+ * 	PRE DEV
+ *
+ * 05 12 2020 chun-yu.chien
+ * [MOLY00520112] [WW FT][MT6873][Margaux][Q0][MP2][SQC][VDF][FT][UK][London][NSA][TCID:Free Test]MTK speed test cannot dispaly RSSI value
+ * 	
+ * 	LTE/NR ECSQ RSSI extension - NR15.R3.MP
+ *
+ * 04 15 2020 jack.chu
+ * [MOLY00511526] [Coverity Scanned Code Defect][MPD][CERT L1 for C]CID:976611 code defect happened in /mcu/protocol/lte_sec/errc/rcm/src/errc_rcm_main.c
+ * 	.
+ *
+ * 03 16 2020 chun-yu.chien
+ * [MOLY00504146] [5G-A][5G Modem·sfeature]ɬ¤Æ5G±µ¤J±±¨î
+ * 	
+ * 	[AC/SSAC barring optimization] L4
+ *
+ * 12 03 2019 youru.chen
+ * [MOLY00462646] [Gen97][Code Sync] LG code sync from VMOLY.1001.DEV to VMOLY.TRUNK
+ * [MPD] porting CL9800353
+ * 	
+ * 	Code sync LR12A.R3.TC01.SP: MOLY00393665: CL7795156, MOLY00425306: CL8821609, MOLY00394221: CL:7794838, MOLY00394597: CL:7859094, MOLY00447409: CL:9598047, MOLY00344821: CL:6130645, CL:6130687, MOLY00429268: CL8957260
+ *
+ * 11 14 2019 youru.chen
+ * [MOLY00459277] [Gen97][Code Sync] LG code sync to VMOLY.1001.DEV
+ * [MPD][DEV1001]
+ * 	Code sync LR12A.R3.TC01.SP: MOLY00393665: CL7795156, MOLY00425306: CL8821609, MOLY00394221: CL:7794838, MOLY00394597: CL:7859094, MOLY00447409: CL:9598047, MOLY00344821: CL:6130645, CL:6130687
+ *
+ * 07 29 2019 chun-yu.chien
+ * [MOLY00424591] [Code Sync][INTERFACE][US_DEV][TMO][2019Q2] TMOUS_2019Q2_GID-MTRREQ-245903
+ * 	
+ * 	.
+ *
+ * 06 11 2019 ian-yw.chen
+ * [MOLY00365575] [Gen97] 5G CB/PWS development
+ *  L4 part (MPD)
+ *
+ * 10 30 2018 allen.hsu
+ * [MOLY00360521] [MT6297][L4][PS]+CSCON for 5G
+ * 	
+ * 	add CSCON for 5G - main.
+ *
+ * 06 01 2018 prasad.hugar
+ * [MOLY00330321] [CODE SYNC] [CV7A SPR][Protocol] API for controlling LTE TDD/FDD TM9 separately.
+ * New AT command to enable/disable the TDD/FDD TM9 separately.
+ *
+ * 12 11 2017 morton.lin
+ * [MOLY00295077] [Gen93][ERRC][RCM] LTE support band and CA combination customization re-arch
+ * Common IF and MRS part (LR12A.R3.MP) (Not in V-List)
+ *
+ * 12 01 2017 kelly.lo
+ * [MOLY00291130] [R3][VZW feature] VZ_REQ_e911_30203 (EMC call type)
+ * 	
+ * 	roll back
+ *
+ * 11 29 2017 lucien.li
+ * [MOLY00290361] 203604 �i�~??�O�j��?�G�d1��?4G�B�d2?�H4G�n??�d2?�u�n��ï¿Ä£ï¿½ï¿½??�{��[L4C][.src]
+ * [R3][L4C] AT+EMRO - gaming optimization
+ *
+ * 11 23 2017 kelly.lo
+ * [MOLY00291130] [R3][VZW feature] VZ_REQ_e911_30203 (EMC call type)
+ * 	
+ * 	l4c_eval_vdm_voice_status_req_struct
+ *
+ * 11 21 2017 kuan-wei.chen
+ * [MOLY00289580] [L4-EVAL interface] extend AT+EIREG:...,<ims_rat> extend AT+EVIVS:...,<rat>
+ * [LR12A.R3.MP]
+ * 	L4-EVAL msgid and structure:
+ * 	extend AT+EIREG:...,<ims_rat>
+ * 	extend AT+EVIVS:...,<rat>
+ *
+ * 07 14 2017 lucien.li
+ * [MOLY00212922] New Feature UL64QAM switcher
+ * [UMOLYA] porting UL64QAM switcher from LR11.MP5
+ *
+ * 06 05 2017 aaron.liu
+ * [MOLY00254874] [MT6293] indicate SCM(Rel12) parameters to AP
+ * syn from [MOLY00251993] [LV5][Question] Does MT6750 support SCM(Rel12) - interfac..
+ *
+ * 04 05 2017 hong.yu
+ * [MOLY00239308] [Gen93] L4 M3 check in
+ * merge L4BNW and L4BPWR M3
+ *
+ * 01 09 2017 lucien.li
+ * [MOLY00222542] [UMPLYA] Remove __SGLTE__
+ * 	
+ * 	[MOLY00222542] [UMOLYA] Remove __SGLTE__
+ *
+ * 12 21 2016 cookie.chen
+ * [MOLY00220096] [MT6293][B66] type defined of band modification (ERRC part)
+ * .
+ *
+ * 11 03 2016 danny.kuo
+ * [MOLY00159801] [K7] Request the URC for reporting the rrc connection establishment failure
+ * 	
+ * 	.
+ *
+ * 10 24 2016 sagar.murthy
+ * [MOLY00209227] [L4] B66 feature integration
+ * Port from //UMOLYA_CBr/cookie.chen/UMOLYA_w16.41.P8.B66 to UMOLYA
+ *
+ * 10 24 2016 dennis.weng
+ * [MOLY00208768] [MT6293] [B66] Band66 porting (ERRC part)
+ * .
+ *
+ * 10 18 2016 benjamin.kuo
+ * [MOLY00205591] [6293][EVAL] development
+ * sync for MOLY00193865.
+ *
+ * 10 14 2016 benjamin.kuo
+ * [MOLY00205591] [6293][EVAL] development
+ * 	
+ * 	sync for MOLY00164984.
+ *
+ * 06 27 2016 kuan-wei.chen
+ * [MOLY00186867] L4/CM/SIM code sync
+ * UMOLY -> UMOLYA
+ *
+ * 06 14 2016 allen.hsu
+ * [MOLY00165236] [PH1_VZW][FLD][Radio_Protocol] VZ_REQ_LTEDATA_37821 Autonomous Gaps
+ * .
+ *
+ * 06 08 2016 shih-che.chou
+ * [MOLY00172782] [PH1_VZW][joint-camp][Radio_Protocol][E911] TC2.19 RIL_UNSOL_VOLTE_EMERGENCY_CALL_FAIL_CAUSE
+ * .
+ *
+ * 06 08 2016 bart.liang
+ * [MOLY00169240] [PH1_VZW][Radio_Protocol][UNSOL] LTE NETWORK INFORMATION
+ *
+ * 06 01 2016 kuan-wei.chen
+ * [MOLY00146327] [VzW] hVoLTE implementation
+ * vzw patchback - L4, VDM
+ *
+ * 04 26 2016 allen.hsu
+ * [MOLY00175760] [PH1_VZW][joint-camp][Radio_Protocol][E911] TC2.25 failure
+ * fix E911 TC 2.8/2.23 by sending emc_bar_network_req(TODO: sync l4c_nw_msg.c and l4c_nw_cmd.c).
+ *
+ * 04 14 2016 allen.hsu
+ * [MOLY00167138] MT6755 max RSRP/SNR report to AP
+ * 	
+ * 	add the MAX RSRP/RSRQ/RS_SNR support for OPPO.
+ *
+ * 03 09 2016 allen.hsu
+ * [MOLY00156079] [CA] Enable/Disable CA by AT+ECASW (L4)
+ * 	
+ * 	add LTE CA swtich support (AT+ECASW) (2).
+ *
+ * 01 25 2016 yc.chen
+ * [MOLY00146327] [VzW] hVoLTE implementation (non-LTE)
+ *
+ * 01 13 2016 hong.yu
+ * [MOLY00156229] [MT6292] Code sync from MT6291: AuDRX
+ * [EVAL] patch MOLY00097750 to UMOLY
+ *
+ * 11 17 2015 yc.chen
+ * [MOLY00149445] [UMOLY] Sync DoCoMo MOLY CR to related branch (MOLY00123677)(non-LTE)
+ *
+ * 10 26 2015 yingfui.hung
+ * [MOLY00141134] [Copy CR][Porting to LR11][TMO][IMS] bCSFB - L4 ERLQ, ERLM changes (without switch)
+ * 	
+ * 	.
+ *
+ * 10 26 2015 allen.hsu
+ * [MOLY00133440] [ERRC][RCM]Configurable CA combination
+ * add LTE CA band settings support (+EPCASE).
+ *
+ * 10 08 2015 allen.hsu
+ * [MOLY00133440] [ERRC][RCM]Configurable CA combination
+ * add LTE CA band settings feature related interface.
+ *
+ * 10 02 2015 hong.yu
+ * [MOLY00139482] [VzW] [VZ_REQ_LTEDATA_6800] Dynamic UE specific DRX setting
+ * [VzW] UE specific DRX
+ *
+ * 07 16 2015 bart.liang
+ * [MOLY00128924] [MT6291] [Low Power] Uplink Data Shaping MOLY code sync to UMOLY
+ *
+ * 07 06 2015 ralf.chen
+ * [MOLY00125845] [JADE] SRLTE related design
+ * 	Fix build error
+ *
+ * 07 03 2015 tim.huang
+ * [MOLY00125845] [JADE] SRLTE related design
+ * .
+ *
+ * 06 18 2015 panu.peisa
+ * [MOLY00122487] EMM, ESM & PAM module VzW feature porting from 6290 to 6291
+ * 	SWRD part, change have dependency to LTE_SEC parts.
+ *
+ * 06 16 2015 kuan-wei.chen
+ * [MOLY00115378] SS code revise
+ * merge from MOLY to UMOLY
+ *
+ * 06 16 2015 tim.huang
+ * [MOLY00083439] [MUSE] IMS Development for requirment 1-15 - get the information of MO Data Barring and SSAC barring
+ * .
+ *
+ * 06 15 2015 edwin.liu
+ * [MOLY00091999] [VzW][Merge to MOLY] RSSNR and SIB16 local time
+ * 	.
+ *
+ * 06 01 2015 henry.lai
+ * [MOLY00092508] [MT6291][LTE-C2K] AS Inter RAT feature
+ * .
+ *
+ * 05 06 2015 kuan-wei.chen
+ * [MOLY00098019] [VzW][Merge to MOLY] MRU revise / MRU AT command
+ * add AT+VZWMRUC, AT+VZWMRUE
+ *
+ * 04 16 2015 bart.liang
+ * [MOLY00091967] Merge C2K IRAT code
+ *
+ * 04 13 2015 jaakko.sitomaniemi
+ * L4 parts of operator specific requirement VZ_REQ_LTEDATA_6763.
+ * 	Serving LTE Band  is now passed from AS to AP in a new URC +ESLBAND.
+ * 	This is part 2/2 of the required L4 changes.
+ *
+ * 03 30 2015 jaakko.sitomaniemi
+ * L4 & SBP parts of operator specific requirement VZ_REQ_LTEDATA_6763.
+ * 	RS_SNR info is now passed from AS to AP for calculating signal strength indicator.
+ * 	This is part 1/x of the required L4 changes.
+ *
+ * 01 23 2015 bart.liang
+ * [MOLY00093004] [Y50] PS detach(cgatt=0) happens when performing manual network search.
+ *
+ * 11 28 2014 cooper.lin
+ * [MOLY00068710] [MT6291_DEV] Sync MOLY to MT6291_DEV
+ * Patch eDDA related interface
+ *
+ * 11 12 2014 carlson.lin
+ * [MOLY00084165] [UMOLY][R10][R11] NAS check-in from 6291_DEV to UMOLY Trunk
+ * (Sync from MT6291_DEV upto CL 869855)
+ *
+ * 04 29 2014 shih-chieh.liao
+ * [MOLY00063952] [SGLTE] New reselection/OOS/background search mechanism using network Sys/Cell Informations from EAS/TAS/GAS
+ * Merging
+ *  	
+ * 	//MOLY_CBr/danny.kuo/MOLY_LR9W1414B.MP4.W14.16.p1/mcu/modem/interface/lte/l4c_eval_struct.h
+ *  	
+ * 	to //MOLY/TRUNK/MOLY/mcu/modem/interface/lte/l4c_eval_struct.h
+ *
+ * 04 25 2014 tehuang.liu
+ * [MOLY00063538] [6290E2][VoLTE][VDM] Support VoLTE Gemini architecture
+ * not use compile options for VoLTE Gemini interface structures definition
+ *
+ * 04 23 2014 tehuang.liu
+ * [MOLY00063538] [6290E2][VoLTE][VDM] Support VoLTE Gemini architecture
+ * Check in VoLTE+Gemini related interfaces for VDM, IMSP, L4C, EVAL, and ERRC
+ *
+ * 01 21 2014 wcpuser_integrator
+ * [MOLY00054475] SGLTE option rename
+ * .
+ *
+ * 01 13 2014 benjamin.kuo
+ * [MOLY00053421] Merge VoLTE Phase 2 back to MOLY trunk
+ * VoLTE to MOLY
+ *
+ * 11 13 2013 xuejing.chen
+ * [MOLY00046027] [MT6290E1][MMDS_DC] MMDC feature patch back to MOLY trunk
+ * B39 capability change indication.
+ *
+ * 10 18 2013 shih-chieh.liao
+ * [MOLY00041595] [MT6290E1][MMDS_DC] MMDC feature patch back to MOLY trunk
+ * integrate EAS_TO_PEER_INFO_IND.
+ *
+ * 08 23 2013 shih-chieh.liao
+ * [MOLY00034931] [MMDC] change EAS_STATE_IND to TO_PEER_INFO_IND
+ * .
+ *
+ * 08 02 2013 loter.chang
+ * [MOLY00032186] [MMDS_DC] EMM MMDS_DC Feature Development and Enhancement
+ * - modify L4C_EVAL_PS_SWITCH_CONTEXT_IND/REQ interface
+ *
+ * 07 24 2013 benjamin.kuo
+ * [MOLY00031020] [MMDS_DC] Merge MMDC interface to MOLY
+ * .
+ *
+ * 05 30 2013 carlson.lin
+ * [MOLY00024438] [L4C][SM] add comments to rat_change interface
+ * .
+ *
+ * 04 23 2013 stanleyhy.chen
+ * [MOLY00010443] Code optimization
+ * Send POWER_LEVEL_IND every 2.5s in connected mode
+ *
+ * 03 28 2013 stanleyhy.chen
+ * [MOLY00010443] Code optimization
+ * Implementation of EVAL_ERRC_CELL_POWER_LEVEL_IND
+ *
+ * 03 27 2013 benjamin.kuo
+ * [MOLY00011934] LTE MM IT CBr merge to MOLY
+ * .
+ *
+ * 03 19 2013 benjamin.kuo
+ * [MOLY00011934] LTE MM IT CBr merge to MOLY
+ * <saved by Perforce>
+ *
+ * 03 15 2013 benjamin.kuo
+ * [MOLY00011934] LTE MM IT CBr merge to MOLY
+ * Temp solution.
+ *
+ * 03 15 2013 benjamin.kuo
+ * [MOLY00011934] LTE MM IT CBr merge to MOLY
+ * MM IT merge back to MOLY.
+ *
+ * 03 14 2013 benjamin.kuo
+ * [MOLY00011934] LTE MM IT CBr merge to MOLY
+ * common file: EVAL part.
+ *
+ * 02 05 2013 loter.chang
+ * [MOLY00009163] LTE Multimode merge back to MOLY
+ * revert interface
+ *
+ * 02 04 2013 loter.chang
+ * [MOLY00009163] LTE Multimode merge back to MOLY
+ * RATCHG Interface - duplex mode update
+ *
+ * 01 22 2013 roy.lin
+ * [MOLY00009163] LTE Multimode merge back to MOLY
+ * Multimode interface re-architecture.
+ *
+ * 11 07 2012 roy.lin
+ * [MOLY00005322] TATAKA merge to MOLY
+ * Add ESM related interface(msgid, struct, enum).
+ ****************************************************************************/
+
+
+#ifndef  L4C_EVAL_STRUCT_INC
+#define  L4C_EVAL_STRUCT_INC
+
+#include "l3_inc_local.h"
+#include "irat_common_struct.h"
+#include "nbr_public_struct.h"
+#include "as2l4c_struct.h"
+#include "l3_inc_enums.h"
+#include "l4c_common_enum.h"
+
+#ifdef __CDMA2000_RAT__
+#include "c2k_irat_msg_struct.h"
+#endif
+
+//#ifdef __VOLTE_SUPPORT__
+#include "ims_common_def.h"
+//#endif /* __VOLTE_SUPPORT__ */
+
+#include "ps_public_def.h"
+#include "ps_public_struct.h"
+#include "ps_public_enum.h"
+
+/***** message structure definition *****/
+
+typedef l4c_4g5g_etws_setting_req_struct l4c_eval_etws_setting_req_struct;
+
+typedef l4c_4g5g_etws_information_ind_struct l4c_eval_etws_information_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_errc_state_enum    errc_state;
+    cn_associate_enum  cn_associate;  /* only valid when errc_state = ERRC_CONNECTED */
+} l4c_eval_errc_state_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool  result;
+} l4c_eval_errc_ssac_resel_result_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_int32                  rssi_in_qdbm;
+    kal_int16                  rsrp_in_qdbm;
+    kal_int16                  rsrq_in_qdbm;
+    kal_int16                  rs_snr_in_qdb;
+    kal_uint16                 serv_lte_band;
+
+    kal_int16                  rsrp_in_qdbm_opt;
+    kal_int16                  rsrq_in_qdbm_opt;
+    kal_int16                  rs_snr_in_qdb_opt;
+    kal_int16                  srxlev_in_qdb;  /* qdB, invalid valude 0x7FFF */
+    kal_int16                  squal_in_qdb;   /* qdB, invalid valude 0x7FFF */
+
+    l4c_signal_reporting_type_enum signal_report_type; /* 0 - Normal, 1 - Initial, 2 - cross threshold*/
+    kal_uint8                  thres_cross_signal_type; /* Applicable only if is_thres_cross is TRUE. 
+                                                           1 - RSRP, 2 - RS_SNR, 3 - RSRP + RS_SNR, 4 - RSRQ, 5 - RSRP + RSRQ, 6 - RS-SNR + RSRQ, 7 - All three*/
+} l4c_eval_cell_power_level_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                        is_rest_command_present;
+    rest_command_struct             rest_command;
+    kal_bool                        is_monitor_mode_command_present;
+    monitor_mode_command_struct     monitor_mode_command;
+} l4c_eval_adjust_meas_req_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   result;
+} l4c_eval_adjust_meas_cnf_struct;
+
+typedef l4c_nbr_cell_info_reg_cnf_struct    l4c_eval_nbr_cell_info_start_cnf_struct;
+typedef l4c_nbr_cell_info_ind_struct        l4c_eval_nbr_cell_info_ind_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR    
+    rat_type_enum               rat;
+    kal_uint8                   num_earfcn;
+    EARFCN                      earfcn[MAX_NUMBER_OF_EARFCN];
+} l4c_eval_lte_neighbor_cell_info_req_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR    
+    kal_bool                    is_drb_existent;
+} l4c_eval_connected_drb_ind_struct;
+
+//#ifdef __LTE_R11__
+typedef enum {
+    PPI_INVALID=0,
+    PPI_NORMAL,
+    PPI_LOWPOWER,
+} ppi_status_enum;
+
+// MSG_ID_L4C_EVAL_EDDA_REQ
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    ppi_status_enum                 ppi_request;
+} l4c_eval_edda_req_struct;
+//#endif
+
+//#ifdef __VOLTE_SUPPORT__
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   barring_factor_voice;/*0~16*/
+    kal_uint8                   barring_factor_video;/*0~16*/
+    kal_uint8                   barring_time_voice;  /*0~8*/
+    kal_uint8                   barring_time_video;  /*0~8*/
+    kal_uint8                   barring_special_ac_voice;
+    kal_uint8                   barring_special_ac_video;
+} l4c_eval_get_ssac_param_cnf_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    srvcc_status_enum       status;
+} l4c_eval_srvcc_status_update_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    vdm_voice_status_enum   vdm_voice_status;
+} l4c_eval_vdm_voice_status_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    vdm_voice_status_enum   vdm_voice_status;
+    ims_access_rat_enum     rat;
+} l4c_eval_vdm_ims_voice_status_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint32 control_mode;
+} l4c_eval_erlm_control_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool  is_mo_data_barred;
+} l4c_eval_barring_status_ind_struct;
+
+//#endif /* __VOLTE_SUPPORT__ */
+
+typedef struct {
+    LOCAL_PARA_HDR
+    emm_est_ind_cause_enum  result;
+} l4c_eval_establishment_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    sr_failure_cause_enum  failure_cause;
+} l4c_eval_sr_failure_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    tau_failure_cause_enum  failure_cause;
+} l4c_eval_tau_failure_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    emm_cause_enum  reject_cause;
+    kal_uint32  wait_time;
+} l4c_eval_sr_reject_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8  reject_cause;
+    kal_uint32  wait_time;
+} l4c_eval_rach_reject_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    mru_cmd_type_enum cmd;
+    kal_uint32 entry_index; //used only cmd=EDIT
+    kal_uint8 band;         //used only cmd=EDIT
+    plmn_id_struct plmn_id; //used only cmd=EDIT
+} l4c_eval_mru_update_req_struct;
+
+typedef struct
+{
+    kal_uint8 band;
+    plmn_id_struct plmn_id;
+} mru_update_result_struct;
+
+#define MRU_UPDATE_RESULT_NUM_MAX 10
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint32 flag;
+} l4c_eval_audrx_enable_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    mru_cmd_type_enum cmd;
+    kal_bool result;                                           //TRUE=>pass, FALSE=>error
+    kal_uint32 entry_num;                                      //used only when cmd=QUERY
+    mru_update_result_struct entry[MRU_UPDATE_RESULT_NUM_MAX]; //used only when cmd=QUERY
+} l4c_eval_mru_update_cnf_struct;
+
+// for getting/setting LTE CA band
+typedef struct
+{
+    //ver2
+    kal_uint8       ver;
+    kal_uint8       enable;                          // 0: disable; 1: enable
+    kal_uint8       num_band;                        // refer to how many valid element in the inter_band array
+    kal_uint8       band_index[LTECA_INTER_BAND_NUM_MAX];   // 0: inter band 1~32; 1: inter band 33~64; 2:inter band: 65~96
+    kal_uint8       dl_bw_class[LTECA_INTER_BAND_NUM_MAX];
+    kal_uint8       ul_bw_class[LTECA_INTER_BAND_NUM_MAX];
+    kal_uint8       bw_combination_set;
+    //ver1
+    kal_uint8       num_inter_band;                         // refer to how many valid element in the inter_band array
+    kal_uint32      inter_band[LTECA_INTER_BAND_NUM_MAX];   // 0: inter band 1~32; 1: inter band 33~64; 2:inter band: 65~96
+    kal_uint32      intra_ncca_band;
+    kal_uint32      intra_band_1_32;
+    kal_uint32      intra_band_33_64;
+} lteca_band_setting_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    lteca_band_cmd_type_enum cmd;
+    lteca_band_setting_struct lteca_band_setting;
+} l4c_eval_lteca_band_setting_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    lteca_band_cmd_type_enum cmd;
+    lteca_band_setting_struct lteca_band_setting;
+    kal_bool result;
+} l4c_eval_lteca_band_setting_cnf_struct;
+
+// for getting/setting LTE CA mode
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    lteca_mode_cmd_type_enum cmd;
+    lteca_mode_enum lteca_mode_setting;
+} l4c_eval_lteca_mode_setting_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    lteca_mode_cmd_type_enum cmd;
+    lteca_mode_enum lteca_mode_setting;
+    kal_bool result;
+} l4c_eval_lteca_mode_setting_cnf_struct;
+
+// To notify AS whether there is high quality service ongoing, usually used for game optimization, e.g. cancel background search (DRX)
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_hq_service_ongoing;
+} l4c_eval_hq_service_status_req_struct;
+
+// __TC01__
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_valid;                           
+    kal_bool is_emc_attach_supported;
+    kal_bool is_emc_call_barred;
+    kal_uint32 cell_id;
+    kal_uint8 ta_code[2];     
+    kal_uint8 barring_factor_voice;/*0~16*/
+    kal_uint8 barring_factor_video;/*0~16*/
+    kal_uint8 barring_time_voice;  /*0~8*/
+    plmn_id_struct plmn_id;
+    kal_uint16 band;
+    kal_uint8 barring_time_video;  /*0~8*/
+    kal_uint8 barring_factor_mo_data;/*0~16,16 means factor=1*/
+    kal_uint8 barring_time_mo_data;  /*0~8, 0  means time=0*/
+    kal_uint8 acbar_special_ac_mo_data;/*LSB 5 Bits =>AC11~AC15*/
+    kal_uint8 barring_factor_mo_signal;/*0~16,16 means factor=1*/
+    kal_uint8 barring_time_mo_signal;  /*0~8, 0  means time=0*/
+    kal_uint8 acbar_special_ac_mo_signal;/*LSB 5 Bits =>AC11~AC15*/
+/*                bit8    bit7    bit6    bit5    bit4    bit3    bit2    bit1
+acbar special ac    0      0       0      AC11    AC12    AC13    AC14    AC15  
+*/
+    kal_bool is_acb_skip_for_mmtel_voice;
+    kal_bool is_acb_skip_for_mmtel_video;
+    kal_bool is_acb_skip_for_sms;
+} l4c_eval_ims_sys_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint32 event;
+	kal_uint32 band;
+
+} l4c_eval_erlm_report_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint32 event;
+	kal_uint32 band;
+
+} l4c_eval_erlq_report_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint32    rcv_tick;                        /* The time tick when SIB16 is received */
+    kal_uint64    timeinfo_utc;                    /* 0~549755813887 */
+    kal_bool      is_day_light_saving_time_valid;
+    kal_uint8     day_light_saving_time;           /* 2 bits */
+    kal_bool      is_leap_seconds_valid;
+    kal_int16     leap_seconds;                    /* -127~128 */
+    kal_bool      is_localtime_offset_valid;
+    kal_int8      localtime_offset;                /* -63~64 */
+} l4c_eval_time_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    omadm_cmd_type_enum cmd;
+    omadm_node_type_enum node_type;     // OMADM node
+    kal_uint32 node_value;
+} l4c_eval_omadm_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    omadm_cmd_type_enum cmd;
+    kal_bool result;                    // TRUE=>pass, FALSE=>error
+    omadm_node_type_enum node_type;     // OMADM node
+    kal_uint32 node_value;
+} l4c_eval_omadm_update_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    lte_modulation_cmd_type_enum cmd;
+    lte_modulation_mode_enum mode;
+    signal_modulation_enum modulation;
+    link_direction_enum link_direction;
+} l4c_eval_modulation_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    lte_modulation_cmd_type_enum cmd;
+    kal_bool result;
+    lte_modulation_mode_enum mode;
+    signal_modulation_enum modulation;
+    link_direction_enum link_direction;
+} l4c_eval_modulation_update_cnf_struct;
+
+#define MAX_CUSTOM_CA_COMB_NUM 50
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    ca_band_comb_list_cmd_type_enum cmd;
+    ca_band_comb_list_type_enum type;
+    kal_char ca_comb_list[63*MAX_CUSTOM_CA_COMB_NUM];
+} l4c_eval_ca_band_comb_list_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    ca_band_comb_list_cmd_type_enum cmd;
+    kal_bool result;
+    ca_band_comb_list_type_enum type;
+    kal_char ca_comb_list[63*MAX_CUSTOM_CA_COMB_NUM];
+} l4c_eval_ca_band_comb_list_cnf_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16   ue_specific_drx_value;
+} l4c_eval_drx_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool   is_drx_req_ok;
+} l4c_eval_drx_update_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16   ue_specific_drx_value;
+} l4c_eval_drx_update_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint32 pcell_earfcn;
+    kal_uint16 pcell_band;
+    kal_uint16 pcell_pci;
+    kal_uint8  pcell_bw;
+} l4c_eval_pcell_info_ind_struct;
+
+#ifdef __CDMA2000_RAT__
+typedef c2k_lte_csfb_req_struct l4c_eval_c2k_csfb_req_struct;
+typedef c2k_lte_csfb_cnf_struct l4c_eval_c2k_csfb_cnf_struct;
+typedef c2k_lte_csfb_stop_req_struct l4c_eval_c2k_csfb_stop_req_struct;
+#endif
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    emm_msg_type_enum       type;
+    kal_bool                is_emergency;
+    emm_attach_type_enum    emm_attach_type;
+    emm_attach_result_enum  emm_attach_result;
+    additional_update_result_enum    additional_update_result;	
+} l4c_eval_emm_msg_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_voice_over_ims_ongoing;
+} l4c_eval_ims_call_status_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ims_access_rat_enum     rat;
+} l4c_eval_ims_status_update_req_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    lte_tm9_cmd_type_enum cmd;
+    lte_tm9_fdd_enum tm9_fdd_setting;
+    lte_tm9_tdd_enum tm9_tdd_setting;
+} l4c_eval_lte_tm9_fdd_tdd_setting_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+	kal_bool result;
+    lte_tm9_cmd_type_enum cmd;
+    lte_tm9_fdd_enum tm9_fdd_setting;
+	lte_tm9_tdd_enum tm9_tdd_setting;
+} l4c_eval_lte_tm9_fdd_tdd_setting_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_cssrvnotif_acceptable; //1:Accept, 0:Reject
+} l4c_eval_cs_service_notification_rsp_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool dl256qam_configured;
+    kal_bool mimo_fourlayer_configured;
+} l4c_eval_phy_cfg_info_ind_struct;
+
+//MSG_ID_L4C_EVAL_MODIFY_B7_B38_IN_USA_REQ
+typedef struct {
+    LOCAL_PARA_HDR
+
+    l4c_source_id_enum src_id;
+
+    kal_uint8 cmd;  // 1: set, 2: query
+    kal_uint8 mode; // 0: disable, 1: enable
+
+}l4c_eval_modify_b7_b38_in_usa_req_struct;
+
+
+//MSG_ID_L4C_EVAL_MODIFY_B7_B38_IN_USA_CNF
+typedef struct {
+    LOCAL_PARA_HDR
+
+    l4c_source_id_enum src_id;
+
+    kal_bool  result;
+    kal_uint8 cmd;  // 1: set, 2: query
+    kal_uint8 curr_mode; // 0: disable, 1: enable
+
+}l4c_eval_modify_b7_b38_in_usa_cnf_struct;
+
+typedef l4c_eval_cell_power_level_ind_struct l4c_eval_report_signal_level_ind_struct;
+
+#ifdef __NG_ECALL_SUPPORT__
+// structure content is the same as vdm_l4c_ecall_test_call_attach_req_struct
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ecall_type_enum     ecall_type;
+} l4c_eval_ecall_test_call_attach_req_struct;
+
+// structure content is the same as vdm_l4c_ecall_abort_test_call_attach_req_struct
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ecall_abort_attach_reason_enum  reason;
+}l4c_eval_ecall_abort_test_call_attach_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_attach_success;
+} l4c_eval_ecall_test_call_attach_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ecall_registration_state_enum ecall_reg_state;
+} l4c_eval_ecall_registration_state_ind_struct;
+#endif
+
+#endif   /* ----- #ifndef L4C_EVAL_STRUCT_INC ----- */
+
diff --git a/mcu/protocol/interface/lte/lte_abs_time.h b/mcu/protocol/interface/lte/lte_abs_time.h
new file mode 100644
index 0000000..5858c46
--- /dev/null
+++ b/mcu/protocol/interface/lte/lte_abs_time.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).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ * Filename:
+ * ---------
+ *   lte_abs_time.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * -------
+ *   
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 02 13 2015 yungfu.chen
+ * [MOLY00091822] RATDM reorganization
+ *
+ * 11 22 2013 ms.lin
+ * [MOLY00006061] [Design change]LTE EL1 DRV/TSTM/PHS code change: add absolute time difference
+ * .
+ ****************************************************************************/
+/*
+ * =====================================================================================
+ *
+ *       Filename:  ltm_abs_time.h
+ *
+ *    Description:  LTE absolute time.
+ *
+ *        Created:  2012/6/8 ¤U¤È 03:26:33
+ *        Author:  mtk01641 (moja)
+ * =====================================================================================
+ */
+#ifndef  LTM_ABS_TIME_INC
+#define  LTM_ABS_TIME_INC
+
+#include "kal_public_api.h"
+#include "abs_time.h"
+
+typedef g_abs_time_struct lte_abs_time;
+
+#endif   /* ----- #ifndef LTM_ABS_TIME_INC  ----- */
+
diff --git a/mcu/protocol/interface/lte/lte_common_enum.h b/mcu/protocol/interface/lte/lte_common_enum.h
new file mode 100644
index 0000000..b0ee6b1
--- /dev/null
+++ b/mcu/protocol/interface/lte/lte_common_enum.h
@@ -0,0 +1,85 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   lte_common_enum.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ========================================================================== 
+ * $Log$
+ *
+ * 03 18 2013 mf.jhang
+ * [MOLY00007127] [MT7208] EL2 enhancement in MOLY
+ * Change C_RNTI enum to RNTI_TYPE_XXX_RNTI
+ ****************************************************************************/
+
+#ifndef LTE_COMMON_ENUM_H
+#define LTE_COMMON_ENUM_H
+
+
+typedef enum
+{
+    /*NOTE:
+    //Order and values of C_RNTI, TC_RNTI, SPSC_RNTI, RA_RNTI
+      are index of array in EMAC.
+    */ 
+    RNTI_TYPE_TC_RNTI            = 0,
+    RNTI_TYPE_C_RNTI             = 1,
+    RNTI_TYPE_RA_RNTI            = 2,
+    RNTI_TYPE_SPSC_RNTI          = 3,
+    
+    RNTI_TYPE_P_RNTI             = 4,
+    RNTI_TYPE_SI_RNTI            = 5,
+    RNTI_TYPE_M_RNTI             = 6,
+    RNTI_TYPE_TPC_PUCCH_RNTI     = 7,
+    RNTI_TYPE_TPC_PUSCH_RNTI     = 8
+} lte_rnti_type_enum;
+
+
+#endif /*LTE_COMMON_ENUM_H*/
diff --git a/mcu/protocol/interface/lte/lte_macros.h b/mcu/protocol/interface/lte/lte_macros.h
new file mode 100644
index 0000000..c62000b
--- /dev/null
+++ b/mcu/protocol/interface/lte/lte_macros.h
@@ -0,0 +1,209 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   lte_macros.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * -------
+ *   
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 01 16 2014 moja.hsu
+ * [MOLY00053980] Fix complier warning
+ * .
+ *
+ * 01 07 2014 moja.hsu
+ * [MOLY00052548] Add trace for ERT boot up procedure time
+ * add SWLA log.
+ *
+ * 01 06 2014 moja.hsu
+ * [MOLY00052548] Add trace for ERT boot up procedure time
+ * .
+ *
+ * 05 15 2013 moja.hsu
+ * [MOLY00007625] Maintain code
+ * integrate from firstcall
+ * ERT TASK TO ert HISR.
+ * DSP lisr2hisr.
+ * LTM, edyn, etmr trace.
+ * EDYN EM Channel
+ ****************************************************************************/
+/**
+ *  @file   lte_macros.h
+ *  @brief  Common LTE Module Macros 
+ *
+ *  @author Moja Hsu, moja_hsu@mtk.com.tw
+ *  @date   2012/06/19 16:26:04
+ *
+ **/
+
+#ifndef  LTE_MACROS_INC
+#define  LTE_MACROS_INC
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+/** 
+ * Goal: 
+ * To reduce construct/destroy 2000 CPU Cycles.
+ * For some special condition(e.g. we know the receiver should finish the ILM before sender next action)
+ * We can use the following marcos to keep local parameter memory.
+ *
+ * Usage example:
+ * //Use static buffer and init it first..
+ * nonFreeLocalPara_Init(&g_elx.xx_para, (sizeof(xxx_yyy_t));
+ *
+ * //sender usage
+ * nonFreeLocalPara_Hold(g_elx.xx_local_para_ptr);
+ * //fill some blah, blah data...
+ *  msg_send6(
+        MOD_ELX,
+        MOD_ELY,
+        XX_YY_SAP,
+        MSG_ID_XX_YY_IND,
+        (local_para_struct*)g_elx.xx_local_para_ptr,
+        NULL
+        );
+ *
+ * //receiver usage
+ * //When receive finish, it only need to use the macro for ilm.
+ * nonFreeILM_Release(p_ilm);
+ */
+#define nonFreeLocalPara_Init(_local_para_ptr, _size) \
+    do{                                               \
+        (_local_para_ptr)->msg_len = _size;           \
+        (_local_para_ptr)->ref_count = 1;             \
+    }while(0)
+
+/** 
+ * @brief nonFreeLocalPara_Hold
+ * Used to hold local parameter and check if the local parameter is released by receiver module.
+ * 
+ * @param _local_para_ptr 
+ * 
+ * @return 
+ */
+#define nonFreeLocalPara_Hold(_local_para_ptr)   \
+    do {                                         \
+        ASSERT((_local_para_ptr)->ref_count == 1); \
+        (_local_para_ptr)->ref_count++;            \
+    }while(0)
+
+/** 
+ * @brief nonFreeLocalPara_Release
+ * Release local parameter and set the local_para_ptr to NULL on ILM.
+ * 
+ * @param _ilm_ptr 
+ * 
+ * @return 
+ */
+#define nonFreeLocalPara_Release(_ilm_ptr)           \
+    do {                                       \
+        (_ilm_ptr)->local_para_ptr->ref_count--; \
+        (_ilm_ptr)->local_para_ptr = NULL;       \
+    }while(0)
+
+/** 
+ * @brief nonFreeLocalPara_Hold2, nonFreeLocalPara_Release2
+ * Used for pure hold and release case.
+ * If the loca parameter will need to be hold, but also don't want to release.
+ * user the macros.
+ * 
+ * @param _local_para_ptr 
+ * 
+ * @return 
+ */
+#define nonFreeLocalPara_Hold2(_local_para_ptr) \
+    do {                                        \
+        (_local_para_ptr)->ref_count++;           \
+    }while(0)
+#define nonFreeLocalPara_Release2(_local_para_ptr) \
+    do {                                           \
+        (_local_para_ptr)->ref_count--;              \
+    }while(0)
+
+/**
+ * Used for init time trace
+ */
+#ifdef __MTK_TARGET__
+#include "kal_public_api.h"
+#include "cpu.h"
+#include "TrcMod.h"
+//prevent compiler warning. So user need to include the header file by itself
+//#include "edyn_str.h"
+#include "swla_public.h"
+/* used to declare variable*/
+#define EINIT_LOG_HEAD() \
+    kal_uint32 __c1, __c2, __sys1, __sys2;
+
+/* used to get cycles*/
+#define EINIT_LOG_START(_a)                            \
+    do {                                               \
+        cpu_event_counter_get_cycle(__c1);             \
+        __sys1 = kal_get_systicks();                   \
+        EINIT_TIME(0, _a, __c1, __sys1);               \
+        SLA_CustomLogging((kal_char *)einit_str_tbl[_a],SA_start); \
+    }while(0)
+
+#define EINIT_LOG_END(_a)                                                       \
+    do {                                                                        \
+        cpu_event_counter_get_cycle(__c2);                                      \
+        __sys2 = kal_get_systicks();                                            \
+        EINIT_TIME(1, _a, cpu_event_get_duration(__c1, __c2), __sys2 - __sys1); \
+        SLA_CustomLogging((kal_char *)einit_str_tbl[_a],SA_stop);               \
+    }while(0)
+
+#else/*MODIS case, just empty them*/
+#define EINIT_LOG_HEAD()
+#define EINIT_LOG_START(_a)
+#define EINIT_LOG_END(_a)
+#endif/*__MTK_TARGET__*/
+
+#endif   /* ----- #ifndef LTE_MACROS_INC  ----- */
+
diff --git a/mcu/protocol/interface/lte/lte_meas.h b/mcu/protocol/interface/lte/lte_meas.h
new file mode 100644
index 0000000..69064e6
--- /dev/null
+++ b/mcu/protocol/interface/lte/lte_meas.h
@@ -0,0 +1,136 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   lte_meas.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 05 24 2019 nelsonhe.huang
+ * [MOLY00384666] [6297][IRAT-RSTD] [MP2] 6293 MP2 Feature, IRAT RSTD related changes
+ * 	
+ * 	for IRAT-RSTD R15 feature check in - MPD
+ *
+ * 09 13 2018 po-chun.chiu
+ * [MOLY00346972] [MT6297][VMOLY][EL1][MEAS] New feature developments for Gen97
+ * 	
+ * 	Fix ECID build error.
+ *
+ * 11 17 2014 george.chang
+ * [MOLY00084695] [6291] Code mergeed from MT6291_DEV to UMOLY TRUNK
+ * 	.
+ *
+ * 08 19 2014 david.niu
+ * [MOLY00068710] [MT6291_DEV] Sync MOLY to MT6291_DEV
+ * R10R11 baseline CRs code checked-in
+ *
+ * 01 24 2013 jasper.chen
+ * [MOLY00009163] LTE Multimode merge back to MOLY - Change L3 filtering function according to CSD new design.
+ ****************************************************************************/
+
+#ifndef LTE_MEAS_H
+#define LTE_MEAS_H
+
+#include "kal_general_types.h"
+
+
+#define LTE_MEAS_FC_PERIOD_0                   200
+#define LTE_MEAS_FC_PERIOD_1                   400
+#define LTE_MEAS_FC_PERIOD_2                   600
+#define LTE_MEAS_FC_PERIOD_3                   1000
+#define LTE_MEAS_FC_PERIOD_4                   2560
+
+#define LTE_MEAS_FC_MAX                        20
+#define LTE_MEAS_FC_CONV_PERIOD_MAX            6
+
+kal_uint8 lte_meas_l3_filter_get_time_theshold(kal_uint64 pass_time);
+
+kal_int32 lte_meas_l3_filter(kal_int32 old_value,
+                              kal_int16 new_value,
+                              kal_uint64 delta_time,
+                              kal_uint8  fc);
+
+kal_uint8 lte_meas_rsrp_qdb_encode( kal_int16 rsrp);
+kal_uint8 lte_meas_rsrq_qdb_encode( kal_int16 rsrq);
+kal_bool el1_meas_api_cell_mib_rcv(kal_uint32 earfcn, kal_uint16 phyCellId);
+//kal_bool el1_meas_api_cell_mib_rcv_p(kal_uint32 earfcn, kal_uint16 phyCellId);
+
+#endif /* LTE_MEAS_H */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mcu/protocol/interface/lte/lte_time_common.h b/mcu/protocol/interface/lte/lte_time_common.h
new file mode 100644
index 0000000..f0742f3
--- /dev/null
+++ b/mcu/protocol/interface/lte/lte_time_common.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) 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:
+ * ---------
+ *   lte_time.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ *
+ ****************************************************************************/
+
+#ifndef LTE_TIME_COMMON_H
+#define LTE_TIME_COMMON_H
+
+#include "lte_abs_time.h"
+#include "global_def.h"      // NOTE: for MAX_LTE_NUM
+
+#if !defined(EL1C_PHY_LINEAR)
+#define EL1C_PHY_LINEAR (1)
+#endif
+
+#define MAX_ABS_TICK_TIME       0xFFFFFFFFFFFFFFFF
+
+/*LTE system time from DSP */
+typedef struct
+{
+    kal_uint8       subframe_nb;// 4bit: 0~9
+    kal_uint16      frame_nb;   //10bit: 0~1026
+} lte_cell_time;
+
+void el1c_task_ps_get_lte_timer(kal_uint8 sim_index, lte_cell_time* pCellTime, lte_abs_time* pAbsTime);
+
+#endif /*LTE_TIME_H*/
+
diff --git a/mcu/protocol/interface/lte/mm_emm_struct.h b/mcu/protocol/interface/lte/mm_emm_struct.h
new file mode 100644
index 0000000..7ca05cd
--- /dev/null
+++ b/mcu/protocol/interface/lte/mm_emm_struct.h
@@ -0,0 +1,499 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   mm_emm_struct.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   message and common structure definition between MM and EMM module
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 01 28 2022 ashutosh.gadre
+ * [MOLY00729137] [MT6873][Margaux][Q0][R3][JAPAN][DOCOMO][SS][LiveNW][B-3-1] It takes a time to show an error message of OOS when invalid USSD code is input under no 3G subscription condition.
+ *
+ * 11 04 2020 chengyu.chen
+ * [MOLY00562485] ¤âÉ󴡤J?¦³¡§´L·qªº¥Î?¡A?ªï±z¨Ï¥Î¤¤??³q¡¨?®ØªºSIM¥d¡AµnÊI¦¨¥\¦Z¤£?¥X?ªï´£¥Ü?
+ * [NR15.R3.MP][MPD][In V-List] SIM Context Pop-out
+ *
+ * 12 05 2019 sonu.akhand
+ * [MOLY00460960] [GEN97]T3346 handling between GMM and VGMM
+ * 	
+ * 	MM T3346
+ *
+ * 08 14 2019 chengyu.chen
+ * [MOLY00423643] [Gen97][EMM] Code sync from UMOLYE/UMOLYA to VMOLY
+ * [Code Sync] 7977435 + 7977420 + emm uniontag problem
+ *
+ * 04 25 2019 chengyu.chen
+ * [MOLY00401516][Gen97][MPD] Support Approving for CSFB call (MOLY00371004, MOLY00374905, MOLY00392753)
+ *
+ * 08 17 2018 chinte.chen
+ * [MOLY00306148] [NAS] pangu giant CR
+ * patch back 6138126.
+ *
+ * 08 16 2017 kelly.lo
+ * [MOLY00271307] [LR12 sync][copy MOLY00262660][VzW CDMA-less][Pre-IT] 2.3.26.2 EMM 10 Error string: ## BASE ## Ping resulted in failure, still continue the scenario.. !!
+ * 	
+ * 	new emm_sr_type_enum and add sr type item in update_reg/dereg_ind
+ *
+ * 01 17 2017 kelly.lo
+ * [MOLY00224986] [MT6293][R13 DoS] rename MARCO and ENUM
+ * 	
+ * 	rename MAX_UE_IMPLEMENTATION_SPECIFIC_VALUE to DOS_ENHANCEMENT_MAX_RETRY_VALUE and integ_protect_status to integ_protect_status_enum
+ *
+ * 09 26 2016 sh.yeh
+ * [MOLY00205082] EMM_REG merge from UMOLYA-PS-DEV to UMOLYA
+ * sync MOLY187316 CL2614331, MOLY00141896 CL2648845.
+ *
+ * 01 12 2016 ivan.chung
+ * [MOLY00155565] [MT6755][VzW] Replace __SS_TIME_READY__ to __SUPPORT_CLIB_TIME__
+ *
+ * 08 25 2015 kinki.lin
+ * . (non-secure domain) merge MOLY00119733
+ *
+ * 11 10 2014 robert.wu
+ * [MOLY00083874] [UMOLY][R10][R11] EMM MTC sync code from 6291_DEV to UMOLY trunk
+ *
+ * 07 07 2014 lt.chang
+ * [MOLY00071459] Add Mobility Management for IMS Voice Termination
+ * . emm interface & mm to emm struct
+ *
+ * 04 21 2014 raymond.chen
+ * [MOLY00062966] [SGLTE] Modify the usage of mm_emm_peer_lr_result_ind message to avoid possible R+E PLMN list unsync between MD1 and MD2
+ * Fix the build error due to typo
+ *
+ * 04 21 2014 raymond.chen
+ * [MOLY00062966] [SGLTE] Modify the usage of mm_emm_peer_lr_result_ind message to avoid possible R+E PLMN list unsync between MD1 and MD2
+ * Separate the eplmn update usage of mm_emm_peer_lr_result_ind_struct (From EMM to 2G) from procedure update.
+ *
+ * 10 18 2013 raymond.chen
+ * [MOLY00041595] [MT6290E1][MMDS_DC] MMDC feature patch back to MOLY trunk
+ * Correct type of peer_lr_result and ref_count/msg_len for mm_emm_peer_lr_result_req/ind_struct.
+ *
+ * 09 04 2013 loter.chang
+ * [MOLY00035044] [EMM] RATCHG, SEC, CMNPROC Enhancement and Trace Modification
+ * - Add tin value into initial NAS context transfer
+ *
+ * 07 24 2013 shaowu.huang
+ * [MOLY00031020] [MMDS_DC] Merge MMDC interface to MOLY
+ * NAS REJECT CAUSE interface, MM<->EMM,MM<->NWSEL,MM<->MM.
+ *
+ * 05 22 2013 loter.chang
+ * [MOLY00021705] [EMM][Design Change] Revision and Enhancement
+ * add UE mode to EMM/MM interface
+ *
+ * 03 25 2013 loter.chang
+ * [MOLY00011934] LTE MM IT CBr merge to MOLY
+ * add TMSI to mm_emm_init_nas_ctxt_rsp_struct
+ *
+ ****************************************************************************/
+
+
+#ifndef  MM_EMM_STRUCT_INC
+#define  MM_EMM_STRUCT_INC
+
+#include "l3_inc_local.h"
+#include "l3_inc_enums.h"
+#include "irat_common_struct.h"
+
+/***** message structure definition *****/
+// MSG_ID_MM_EMM_INIT_NAS_CTXT_IND
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                    is_mapped_ptmsi_present;
+    kal_uint8                   mapped_ptmsi[PTMSI_LEN];
+    kal_bool                    is_mapped_ptmsi_sig_present;
+    kal_uint8                   mapped_ptmsi_sig[PTMSI_SIG_LEN];
+    kal_bool                    is_mapped_rai_present;
+    rai_struct                  mapped_rai;
+    tin_enum                    tin;
+}mm_emm_init_nas_ctxt_ind_struct;
+
+// MSG_ID_MM_EMM_INIT_NAS_CTXT_RSP
+typedef struct
+{
+    LOCAL_PARA_HDR
+    mm_emm_tmsi_status_enum     is_tmsi_valid;
+    kal_uint8                   tmsi[TMSI_LEN];
+    kal_bool                    is_ptmsi_valid;
+    kal_uint8                   ptmsi[PTMSI_LEN];
+    kal_bool                    is_ptmsi_sig_valid;
+    kal_uint8                   ptmsi_sig[PTMSI_SIG_LEN];
+    kal_bool                    is_rai_valid;
+    rai_struct                  rai;
+    kal_bool                    is_mm_update_status_valid;
+    gsm_update_status_enum      mm_update_status;
+    kal_bool                    is_lai_valid;
+    lai_struct                  lai;
+}mm_emm_init_nas_ctxt_rsp_struct;
+
+// MSG_ID_MM_EMM_EMM_NAS_CTXT_TRANSFER_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+    emm2mm_irat_info_struct emm_info;
+}mm_emm_emm_nas_ctxt_transfer_req_struct;
+
+// MSG_ID_MM_EMM_MM_NAS_CTXT_TRANSFER_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+    mm2emm_irat_info_struct mm_info;
+}mm_emm_mm_nas_ctxt_transfer_req_struct; 
+
+
+// MSG_ID_MM_EMM_ISR_UPDATE_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+    mm_emm_isr_event_enum   event_trigger;
+    kal_bool                tin_present;
+    tin_enum                tin;
+}mm_emm_isr_update_req_struct;
+
+// MSG_ID_MM_EMM_ISR_UPDATE_IND
+typedef struct
+{
+    LOCAL_PARA_HDR
+    mm_emm_isr_event_enum   event_trigger;
+    kal_bool                tin_present;
+    tin_enum                tin;
+}mm_emm_isr_update_ind_struct;
+
+// MSG_ID_MM_EMM_GMM_UPDATE_REGISTRATION_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+    gmm_msg_type_enum           gmm_msg_type;
+    kal_bool                    is_gmm_attach_type_present;
+    gmm_attach_type_enum        gmm_attach_type;
+    kal_bool                    is_gmm_update_type_present;
+    gmm_update_type_enum        gmm_update_type;
+    kal_bool                    is_gmm_attach_result_present;
+    gmm_attach_result_enum      gmm_attach_result;
+    kal_bool                    is_gmm_update_result_present;
+    gmm_update_result_enum      gmm_update_result;
+    kal_bool                    is_gmm_cause_present;
+    gmm_cause_enum              gmm_cause;
+    kal_bool                    is_gmm_attempt_cnt_present;
+    kal_uint8                   gmm_attempt_cnt;
+    kal_bool                    is_rai_changed;
+    kal_bool                    is_gu1_updated;
+    kal_bool                    is_lai_changed;
+    kal_bool                    is_u1_updated;
+    kal_bool                    is_ims_voice_over_ps_ind_present;
+    ug_ims_ind_enum             ims_voice_over_ps_ind;
+    integ_protect_status_enum   is_integ_protected;
+    kal_uint8                   invalid_cs_sim_counter;
+    kal_uint8                   invalid_ps_sim_counter;
+}mm_emm_gmm_update_registration_req_struct;
+
+// MSG_ID_MM_EMM_GMM_UPDATE_DEREGISTRATION_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                    is_gmm_msg_type_present;
+    gmm_msg_type_enum           gmm_msg_type;
+    kal_bool                    is_gmm_proc_direction_present;
+    gmm_proc_direction_enum     gmm_proc_direction;
+    kal_bool                    is_gmm_attach_type_present;
+    gmm_attach_type_enum        gmm_attach_type;
+    kal_bool                    is_gmm_update_type_present;
+    gmm_update_type_enum        gmm_update_type;
+    kal_bool                    is_gmm_detach_type_present;
+    gmm_detach_type_enum        gmm_detach_type;    
+    kal_bool                    is_gmm_attach_result_present;
+    gmm_attach_result_enum      gmm_attach_result;
+    kal_bool                    is_gmm_cause_present;
+    gmm_cause_enum              gmm_cause;
+    kal_bool                    is_gmm_mt_cause_present;
+    mm_emm_mt_cause_enum        gmm_mt_cause;
+    kal_bool                    is_gmm_attempt_cnt_present;
+    kal_uint8                   gmm_attempt_cnt;
+    kal_bool                    is_rai_changed;
+    kal_bool                    is_gu1_updated;
+    kal_bool                    is_lai_changed;
+    kal_bool                    is_u1_updated;
+    kal_bool                    is_ps_detach_pending;
+    integ_protect_status_enum   is_integ_protected;
+    kal_uint8                   invalid_cs_sim_counter;
+    kal_uint8                   invalid_ps_sim_counter;
+}mm_emm_gmm_update_deregistration_req_struct;
+
+
+// MSG_ID_MM_EMM_MM_UPDATE_REGISTRATION_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+    mm_msg_type_enum            mm_msg_type;
+    integ_protect_status_enum   is_integ_protected;
+    kal_uint8                   invalid_cs_sim_counter;
+    kal_uint8                   invalid_ps_sim_counter;
+
+}mm_emm_mm_update_registration_req_struct;
+
+// MSG_ID_MM_EMM_MM_UPDATE_DEREGISTRATION_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+    mm_msg_type_enum            mm_msg_type;
+    kal_bool                    is_mm_rej_cause_present;
+    mm_rej_cause_enum           mm_rej_cause;
+    kal_bool                    is_mm_attempt_cnt_present;
+    kal_uint8                   mm_attempt_cnt;
+    kal_bool                    is_lai_changed;
+    kal_bool                    is_u1_updated;
+    integ_protect_status_enum   is_integ_protected;
+    kal_uint8                   invalid_cs_sim_counter;
+    kal_uint8                   invalid_ps_sim_counter;
+}mm_emm_mm_update_deregistration_req_struct;
+
+// MSG_ID_MM_EMM_EMM_UPDATE_REGISTRATION_IND
+typedef struct
+{
+    LOCAL_PARA_HDR
+    emm_msg_type_enum           emm_msg_type;
+    kal_bool                    is_emm_attach_type_present;
+    emm_attach_type_enum        emm_attach_type;
+    kal_bool                    is_emm_update_type_present;
+    emm_update_type_enum        emm_update_type;
+    kal_bool                    is_emm_attach_result_present;
+    emm_attach_result_enum      emm_attach_result;
+    kal_bool                    is_emm_update_result_present;
+    emm_update_result_enum      emm_update_result;
+    kal_bool                    is_emm_cause_present;
+    emm_cause_enum              emm_cause;
+    kal_bool                    is_emm_attempt_cnt_present;
+    kal_uint8                   emm_attempt_cnt;
+	kal_bool                    is_emm_sr_type_present;
+    emm_sr_type_enum            emm_sr_type;
+    kal_bool                    is_tai_changed;
+    kal_bool                    is_eu1_updated;
+    kal_bool                    is_lai_valid;
+    lai_struct                  lai;
+    kal_bool                    is_ms_id_valid;
+    kal_uint8                   ms_id_len;
+    kal_uint8                   ms_id[MS_ID_LEN];
+    ue_mode_enum                ue_mode;
+    kal_bool                    is_ims_voice_over_ps_ind_present;
+    ims_ind_enum                ims_voice_over_ps_ind;
+    integ_protect_status_enum   is_integ_protected;
+    kal_uint8                   invalid_cs_sim_counter;
+    kal_uint8                   invalid_ps_sim_counter;
+    kal_bool                    is_fake_lai_valid;
+    lai_struct                  fake_lai;
+}mm_emm_emm_update_registration_ind_struct;
+
+// MSG_ID_MM_EMM_EMM_UPDATE_DEREGISTRATION_IND
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                    is_emm_msg_type_present;
+    emm_msg_type_enum           emm_msg_type;
+    kal_bool                    is_emm_proc_dir_present;
+    gmm_proc_direction_enum     emm_proc_dir;
+    kal_bool                    is_emm_attach_type_present;
+    emm_attach_type_enum        emm_attach_type;
+    kal_bool                    is_emm_update_type_present;
+    emm_update_type_enum        emm_update_type;
+    kal_bool                    is_emm_detach_type_present;
+    emm_detach_type_enum        emm_detach_type;
+    kal_bool                    is_emm_attach_result_present;
+    emm_attach_result_enum      emm_attach_result;
+    kal_bool                    is_emm_cause_present;
+    emm_cause_enum              emm_cause;
+    kal_bool                    is_emm_mt_cause_present;
+    mm_emm_mt_cause_enum        emm_mt_cause;    
+    kal_bool                    is_emm_attempt_cnt_present;
+    kal_uint8                   emm_attempt_cnt;
+	kal_bool                    is_emm_sr_type_present;
+    emm_sr_type_enum            emm_sr_type;
+    kal_bool                    is_tai_changed;
+    kal_bool                    is_eu1_updated;
+    ue_mode_enum                ue_mode;    
+    kal_bool                    is_ps_detach_pending;
+    integ_protect_status_enum   is_integ_protected;
+    kal_uint8                   invalid_cs_sim_counter;
+    kal_uint8                   invalid_ps_sim_counter;
+}mm_emm_emm_update_deregistration_ind_struct;
+
+// MSG_ID_MM_EMM_CSFB_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   req_id;
+    mm_emm_csfb_req_type_enum   csfb_req_type;
+}mm_emm_csfb_req_struct;
+
+// MSG_ID_MM_EMM_CSFB_CNF
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   req_id;
+}mm_emm_csfb_stop_req_struct;
+
+// MSG_ID_MM_EMM_CSFB_STOP_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   req_id;
+    mm_emm_csfb_result_enum     result;
+    emm_csfb_failure_info_enum  csfb_failure_info;
+}mm_emm_csfb_cnf_struct;
+
+// MSG_ID_MM_EMM_CSFB_PAGE_IND
+typedef struct {
+    LOCAL_PARA_HDR
+    mm_emm_csfb_paging_id_enum  csfb_paging_id;         //Paging identity used in CS SERVICE NOTIFICATION
+    kal_bool                    is_cli_present;         //Whether CLI (Calling Line Identification) IE exists or not
+    kal_uint8                   cli_len;                //Length of CLI
+    kal_uint8                   cli[12];                //CLI value Refer to TS 24.008 subclause 10.5.4.9  Calling party BCD number for decoding.
+    kal_bool                    is_ss_code_present;     //Whether SS code IE exists or not
+    kal_uint8                   ss_code;                //SS code value Refer to TS 29.002 subclause 17.7.5 for decoding.
+    kal_bool                    is_lcs_ind_present;     //Whether LCS indicator IE exists or not
+    kal_uint8                   lcs_indicatior;         //LCS indicator value; 0x01: MT-LR, Other values: Normal, unspecified in this version of the protocol
+    kal_bool                    is_lcs_client_id_present;   //Whether LCS client identity IE exists or not
+    kal_uint8                   lcs_client_id_len;      //Length of LCS client identity
+    kal_uint8                   lcs_client_id[255];     //LCS client identity value, Refer to TS 29.002 subclause 17.7.13 for decoding.
+}mm_emm_csfb_page_ind_struct;
+
+// MSG_ID_MM_EMM_CSFB_RESULT_IND
+typedef struct {
+    LOCAL_PARA_HDR
+    mm_emm_csfb_result_enum is_csfb_failure;   //notify upper layer if csfb is failure
+}mm_emm_csfb_result_ind_struct;
+
+// MSG_ID_MM_EMM_CSFB_PAGE_RSP
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_accept_paging;   //Whether upper layer decides to answer the mobile terminating CS service
+}mm_emm_csfb_page_rsp_struct;
+
+// MSG_ID_MM_EMM_CSFB_PAGE_CONFIG_REQ
+typedef struct {
+    LOCAL_PARA_HDR
+    csfb_page_config_enum csfb_page_config;
+    kal_uint8 add_info; // if csfb_page_config is 3 or 4, add_info will be the new timer value
+}mm_emm_csfb_page_config_req_struct;
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#ifdef __SUPPORT_CLIB_TIME__
+/* under construction !*/
+#else
+/* under construction !*/
+#endif
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#ifdef __SUPPORT_CLIB_TIME__
+/* under construction !*/
+#else
+/* under construction !*/
+#endif
+/* under construction !*/
+#endif
+#if defined (__SGLTE__)
+/*EMM->MM*/
+typedef struct {
+    LOCAL_PARA_HDR
+    lr_result_enum peer_lr_result;
+    nas_proc_enum peer_lr_procedure;
+    emm_cause_enum  emm_peer_reject_cause;
+    plmn_id_struct emm_peer_plmn_id;
+    kal_bool is_update_eq_plmn_only; /* If set TRUE, only R+E PLMN info are valid. */
+    kal_uint8 eq_plmn_byte_count;
+    kal_uint8 eq_plmn_id[MAX_NUM_EQ_PLMN*3];	
+}mm_emm_peer_lr_result_ind_struct;
+
+/*MM->EMM*/
+typedef struct {
+    LOCAL_PARA_HDR 
+    lr_result_enum peer_lr_result;
+    nas_proc_enum peer_lr_procedure;
+    mm_cause_enum mm_peer_reject_cause;
+    plmn_id_struct mm_peer_plmn_id;
+    kal_bool is_update_eq_plmn_needed;
+    kal_uint8 eq_plmn_byte_count;
+    kal_uint8 eq_plmn_id[MAX_NUM_EQ_PLMN*3];
+}mm_emm_peer_lr_result_req_struct;
+
+#endif
+
+// MSG_ID_EMM_MM_NAS_CTXT_TRANSFER_REQ
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum	irat_type;
+    rat_type_enum	source_rat;
+    rat_type_enum	target_rat;
+    domain_id_enum  connection_domain;
+    emm2mm_irat_info_struct emm_info;   
+}emm_mm_nas_ctxt_transfer_req_struct;
+
+// MSG_ID_MM_EMM_NAS_CTXT_TRANSFER_REQ
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum	irat_type;
+    rat_type_enum	source_rat;
+    rat_type_enum	target_rat;
+    mm2emm_irat_info_struct mm_info;   
+}mm_emm_nas_ctxt_transfer_req_struct;
+
+#endif   /* ----- #ifndef MM_EMM_STRUCT_INC ----- */
diff --git a/mcu/protocol/interface/lte/mm_errc_struct.h b/mcu/protocol/interface/lte/mm_errc_struct.h
new file mode 100644
index 0000000..9cae022
--- /dev/null
+++ b/mcu/protocol/interface/lte/mm_errc_struct.h
@@ -0,0 +1,85 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * mm_errc_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for to define stucture between mm and errc .
+ *
+ * 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  _MM_ERRC_STRUCT_INC
+#define  _MM_ERRC_STRUCT_INC
+
+
+/***** message structure definition *****/
+// MSG_ID_MM_ERRC_NO_DATA_DETECT_IND
+typedef struct
+{
+    LOCAL_PARA_HDR
+}mm_errc_no_data_detect_ind_struct;
+
+#endif   /* ----- #ifndef MM_ERRC_STRUCT_INC ----- */
+
diff --git a/mcu/protocol/interface/lte/nwsel_eval_enums.h b/mcu/protocol/interface/lte/nwsel_eval_enums.h
new file mode 100644
index 0000000..5ade16a
--- /dev/null
+++ b/mcu/protocol/interface/lte/nwsel_eval_enums.h
@@ -0,0 +1,125 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   nwsel_eval_enums.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   common enum definition between NWSEL and EVAL module
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 06 24 2016 mw.hsu
+ * [MOLY00186459] [MT6293] [NWSEL] UMOLY merge to UMOLYA.
+ *
+ * 04 26 2016 sherry.kuo
+ * [MOLY00175925] sync LR11 to UMOLY
+ * .
+ *
+ * 03 31 2016 justin.li
+ * [MOLY00172070] Gen92 cross core interface migration
+ * .
+ *
+ * 10 05 2015 panu.peisa
+ * [MOLY00142657] [VzW][VZ_REQ_e911_30203] RAL and MRU cell band info update implementation to 6291
+ * 	Integrated CLs 1690397 and 1690428 from LR11_VzW.
+ *
+ * 09 30 2015 marko.akselin
+ * [MOLY00142657][VzW] VZ_REQ_e911_30203 - Add band information into NWSEL - EVAL interface.
+ * 	.
+ *
+ * 04 16 2015 james-chi-ju.chang
+ * [MOLY00078264] [UMOLY][R10][R11] NAS check-in from CBr to 6291_DEV
+ * 	.
+ *
+ * 03 27 2013 benjamin.kuo
+ * [MOLY00011934] LTE MM IT CBr merge to MOLY
+ * .
+ *
+ * 01 23 2013 sherry.kuo
+ * [MOLY00009250] [LTE Multimode] NWSEL check in
+ * nwsel related files check in.
+ *
+ * 11 06 2012 yu.huang
+ * [MOLY00005322] TATAKA merge to MOLY
+ * [EVAL] Add EVAL related interfaces and common strust
+ ****************************************************************************/
+
+
+#ifndef  _NWSEL_EVAL_ENUMS_INC
+#define  _NWSEL_EVAL_ENUMS_INC
+
+/***** common enum definition *****/
+typedef enum
+{
+    EPS_ATTACH_UPDATE_RESULT_NONE = 0x00,
+	EPS_ONLY                      = 0x01,
+	COMBINED_EPS_IMSI_ATTACH      = 0x02,
+	TA_UPDATED                    = 0x10,
+	COMBINED_TA_LA_UPDATED        = 0x11,
+	TA_UPDATED_ISR_ACTIVATED      = 0x14,
+	COMBINED_TA_LA_UPDATED_ISR_ACTIVATED = 0x15
+}  eps_attach_update_result_enum;
+
+/* move to l3_inc_enum_public.h */
+#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
+#endif   /* ----- #ifndef _NWSEL_EVAL_ENUMS_INC ----- */
+
diff --git a/mcu/protocol/interface/lte/nwsel_eval_struct.h b/mcu/protocol/interface/lte/nwsel_eval_struct.h
new file mode 100644
index 0000000..5a64da7
--- /dev/null
+++ b/mcu/protocol/interface/lte/nwsel_eval_struct.h
@@ -0,0 +1,936 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   nwsel_eval_struct.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   message and common structure definition between NWSEL and EVAL module
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 02 08 2022 ot_suresha.m
+ * [MOLY00761475] [Tonga] Patch Request - MOLY00680766
+ * 	
+ * 	.
+ *
+ * 12 16 2021 rahamtulla.mulla
+ * [MOLY00774161] [mt2735][CS eCall][NG eCall][patch back] ecall patch back from NR15.R3.MD700.MP.ECAll.DEV.
+ *
+ * 12 04 2020 wen.zhuang
+ * [MOLY00591485] [MT6853][Mouton][VzW][Pre-LRA][MP7 must][HQ][RnS][LTE][DR][2.4]Fail at step 18 - UE does not send RACH attempt within WaitTime
+ * 	
+ * 	.
+ *
+ * 11 26 2020 ken.lu
+ * [MOLY00591485] [MT6853][Mouton][VzW][Pre-LRA][MP7 must][HQ][RnS][LTE][DR][2.4]Fail at step 18 - UE does not send RACH attempt within WaitTime
+ * 	
+ * 	.
+ *
+ * 07 30 2020 chengyu.chen
+ * [MOLY00545502] [MT6853][Mouton][MP6][R3][Q0][SQC][China][Shanghai][CU FT][NSA][MDST][SWIFT]mtkrild:AT command pending too long. assert!!! AT cmd: EPSCONFIG
+ * Don't know why there's always a file being modified after I submitted it to P4....
+ *
+ * 05 25 2020 lucien.li
+ * [MOLY00526454] [Gen97][UNITE][5G][SA][HEAT][EMER][R15_SA_IRAT_ECC_ESFB_3]EMM_CALL for TAU ¡§active¡¨ flag not set problem.
+ * [L4C] add call_current_rat in CALL_STATUS_IND
+ *
+ * 05 19 2020 chengyu.chen
+ * [MOLY00524216] [Gen97][VZW][E2E] Code sync request from Gen93 to Gen97
+ * [MPD][R3.MP][Out of Vlist] ECBM re-arch on Gen97
+ *
+ * 05 07 2020 harry.chang
+ * [MOLY00511199] (VMOLY)[A21 NA][MTK] Please implement the feature for IPC_NET_NETWORK_SCAN
+ * [NWSEL] IPC_NET_NETWORK_SCAN
+ *
+ * 01 17 2020 harry.chang
+ * MOLY00470870
+ *
+ * 01 13 2020 harry.chang
+ * [MOLY00470870] [Gen97][VMOLY] Huawei's Gen93 CR patch-back activity
+ * NWSEL reply is_ims_support to EMM
+ *
+ * 12 06 2019 harry.chang
+ * [MOLY00464108] [IMS] T311 timeout local release call patch back
+ * T311 feature patch back
+ *
+ * 12 02 2019 prime.xiao
+ * [MOLY00381008] [Gen97][GMSS] 5G related feature
+ * 	
+ * 	.MOLY00366859
+ * 	MOLY00438399
+ * 	MOLY00442288
+ * 	MOLY00442633
+ * 	MOLY00442781
+ * 	MOLY00443807
+ *
+ * 07 25 2019 andy.huang
+ * [MOLY00423200] [VMOLY][D2/L4/NAS] Gen93/Gen95 CR sync to Gen97
+ * ia apn change.
+ *
+ * 07 24 2019 norman.chang
+ * [MOLY00424396] [CODE SYNC] ?ªA?¤U¥\¯Óɬ¤Æ¤§·jÊIµ¦²¤
+ * .
+ *
+ * 06 17 2019 shih-che.chou
+ * [MOLY00413860] [NAS_SV/ xMM/ xAS] S1/ N1 mode update
+ * [Interface] cap.update and local release
+ *
+ * 04 13 2019 jerry-yh.chang
+ * [MOLY00399102] [MT6297][Apollo][DCT][SQC][5G][TC_Apollo_DCT_Register_Network_005][EVB] Not show 5G
+ * relay endc_sib_status/endc_available
+ *
+ * 10 24 2018 chinte.chen
+ * [MOLY00360557] [VMOLY][CODE_SYNC] UMOLY code sync to VMOLY
+ * .
+ *
+ * 10 04 2018 james-chi-ju.chang
+ * [MOLY00306148] [NAS] pangu giant CR
+ * .
+ *
+ * 09 26 2018 shih-che.chou
+ * [MOLY00355476] [Gen97][NWSIM][4G][TC_6_3_1][TC_6_3_6][TC_6_4_1] CSG related cases failed
+ * .
+ *
+ * 09 13 2018 jerry-yh.chang
+ * [MOLY00306148] [NAS] pangu giant CR
+ * [EMM][OA Domain] PLMN_SEARCH_STATUS_UPDATE_REQ struct re-arch
+ *
+ * 08 17 2018 yenchih.yang
+ * [MOLY00346658] [VMOLY] Gen97 ERRC-CEL modifications
+ * 	
+ * 	1) ERRC-CEL ENDC support.
+ * 	2) MRS ERRC Up to Down Search Information.
+ *
+ * 08 17 2018 james-chi-ju.chang
+ * [MOLY00306148] [NAS] pangu giant CR
+ * interface
+ *
+ * 08 01 2018 chien-li.chou
+ * [MOLY00343510] [Gen95][LR13.R0] R14 Enhanced EUTRAN Sharing
+ * 	
+ * 	R14 sys info ind multi TAC and cell id
+ *
+ * 06 26 2018 chien-li.chou
+ * [MOLY00334837] [Gen95] Replace MAX_NUM_HPLMN by MD1_MAX_NUM_HPLMN and fix MAX_NUM_SEARCH_PLMN
+ * 	
+ * 	remove MAX_NUM_HPLMN (NWSEL part)
+ *
+ * 04 23 2018 andy.huang
+ * [MOLY00307255] [MT6771][BSP+][O1]Cannot show ECC button when put the device out to shielding room
+ * ECC Icon
+ * 	.
+ *
+ * 04 18 2018 chien-li.chou
+ * [MOLY00320601] [A70AXL TMO][simulator][US][Protocol][42271]Recover Interrupted File - Sender Interrupted due to network conditions ¡V Sender Resumes fail
+ * 	
+ * 	ALPS03864120 do not send IMS_SERVICE_IND when connected OOS end and no reestablishment
+ *
+ * 03 20 2018 sh.yeh
+ * [MOLY00314920] [GEN95][NWSEL]#15 fake cell enhancement
+ * .
+ *
+ * 03 09 2018 chien-li.chou
+ * [MOLY00307748] Sprint RMS ALFMS01265379
+ * 	
+ * 	Sprint requirement - add is higher plmn search in PLMN list
+ *
+ * 03 02 2018 puneet.t
+ * [MOLY00310959] [CODE SYNC] [Gen93] TELCEL CC33 (MM NWSEL interface change part)
+ * TELCEL patch back to UMOLYE
+ *
+ * 11 29 2017 harry.chang
+ * [MOLY00292927] [MT6755][TMO-US][N0+MP5][2017Q3][Simulation][Anritsu][IMS][L_IMS_VoLTE_43003_3]Fail at step2.
+ * .
+ *
+ * 11 28 2017 chien-li.chou
+ * [MOLY00292082] [Gen93][TMO] 2G disable with ecc enable
+ * Dummy check-in for auto-sync
+ *
+ * 11 28 2017 chien-li.chou
+ * [MOLY00292082] [Gen93][TMO] 2G disable with ecc enable
+ * 2G disable (NWSEL interface and SBP part)
+ *
+ * 11 02 2017 harry.chang
+ * [MOLY00286282] [Gen93][Network Search+CDMA-less+plmn-loss Optimization] Code merge from LR12 to LR12A.R3
+ * .
+ *
+ * 08 31 2017 harry.chang
+ * [MOLY00274693] [Gen93][Network Search Optimization] Code Merge from LR11 to UMOLYA TRUNK
+ * 	
+ * 	NWSEL part
+ *
+ * 08 30 2017 chien-li.chou
+ * [MOLY00274799] [MT6763][C2K][OM6M][Regression][Titan case] too long time and hang up automatically when dialing 110 (UMOLYA)
+ * Send regn_status_update_req to EMM when emc_session_ongoing
+ *
+ * 08 29 2017 harry.chang
+ * [MOLY00274167] [Copy MOLY00262171][CDMA-less][LR12] main CR
+ * NWSEL part
+ *
+ * 08 24 2017 kelly.lo
+ * [MOLY00273395] [Bianco][N1][MTK FT][SRLTE][CT 6M C][SH][Random]APN protocol changing issue(TRUNK & R2)
+ * 	
+ * 	ia_apn_change (interface) (OA)
+ *
+ * 08 17 2017 harry.chang
+ * [MOLY00271671] [Copy MOLY00259858][Rose][Vinson][N1]The ECC call will can't be dial out success.(5/5)
+ * .
+ *
+ * 04 05 2017 mw.hsu
+ * [MOLY00223961] [93] Remove EMM's C2K context maintenance for GMSS LWCG search flow
+ * Patch NWSEL M3 related features: remove LC mode and remove EMM LC context.
+ *
+ * 02 09 2017 mw.hsu
+ * [MOLY00228375] [copy MOLY00220113][6292][Gemini][LG+WG] SBP_CSFB_DUPLEX_CHG_FOR_LG_MODE / SBP_DUPLEX_MODE_CHG_AFTER_CSFB / AT+ETWMODE
+ * .
+ *
+ * 01 17 2017 mw.hsu
+ * [MOLY00224986] [MT6293][R13 DoS] rename MARCO and ENUM
+ * .
+ *
+ * 12 21 2016 mw.hsu
+ * [MOLY00220167] [NWSEL] check in B66 related modification
+ * .
+ *
+ * 11 08 2016 mw.hsu
+ * [MOLY00211920] [6293] MOLY00190308 merge to UMOLYA
+ * .
+ *
+ * 09 26 2016 mw.hsu
+ * [MOLY00205124] [NWSEL] sync R12/R13 feature to UMOLYA
+ * .
+ *
+ * 09 26 2016 sh.yeh
+ * [MOLY00205082] EMM_REG merge from UMOLYA-PS-DEV to UMOLYA
+ * sync MOLY187316 CL2614331, MOLY00141896 CL2648845.
+ *
+ * 06 24 2016 mw.hsu
+ * [MOLY00186459] [MT6293] [NWSEL] UMOLY merge to UMOLYA.
+ *
+ * 05 27 2016 james-chi-ju.chang
+ * [MOLY00175925] sync LR11 to UMOLY
+ * SP01 sync to UMOLY (missing part)
+ *
+ * 05 23 2016 james-chi-ju.chang
+ * [MOLY00179411] [Denali1+][CT 6M C][IR][Macau][Free Test]If UE uses China Telecom 4G SIM card, can not roam to Macao 4G network
+ * .
+ *
+ * 05 17 2016 mark.ng
+ * [MOLY00179023] Allowable Registration Area List Feature V2 Check In
+ * ARAL 2.0 interface
+ *
+ * 04 26 2016 sherry.kuo
+ * [MOLY00175925] sync LR11 to UMOLY
+ * .
+ *
+ * 04 26 2016 tim.huang
+ * [MOLY00172111] [PH1_VZW][joint-camp][Protocol] [E911] TC 2.8. failure. No ESR
+ * .
+ *
+ * 04 26 2016 tim.huang
+ * [MOLY00167450] [PH1_VZW][joint-camp][Radio][hVoLTE][Blocking] TC 2.1.10.2 - At step5, in the TAU Request message, there is not "UE radio capability information update needed" field
+ * .
+ *
+ * 10 28 2015 tim.huang
+ * [MOLY00147169] [Rose]The CT card camp on 2G all time after switch data to CT card.
+ * .
+ *
+ * 10 19 2015 james-chi-ju.chang
+ * [MOLY00145708] [Jade-L][SRLTE][CT OM 6M][LTE IOT][FT][SH][ALU][Random]?ºÝ¦b3G¤U¡A¥X?¤£¯à?¦æPS©MCS??
+ * .
+ *
+ * 10 07 2015 yc.chen
+ * [MOLY00141417] [Jade-L][SRLTE][LTE IOT][FT][SH][ZTE][random]±µ¦¬±m«H¦Z?«Ì EE,0,0,99,/data/core/,1,modem,md1
+ * 	.
+ *
+ * 10 05 2015 panu.peisa
+ * [MOLY00142657] [VzW][VZ_REQ_e911_30203] RAL and MRU cell band info update implementation to 6291
+ * 	Integrated CLs 1690397 and 1690428 from LR11_VzW.
+ *
+ *
+ * 09 30 2015 marko.akselin
+ * [MOLY00142657][VzW] VZ_REQ_e911_30203 - Add band information into NWSEL - EVAL interface.
+ * 	.
+ *
+ * 07 27 2015 kun-lin.wu
+ * [MOLY00107136] [Denali-1] force success flag in C2L_TRANSFER_REQ
+ *
+ * 07 03 2015 tim.huang
+ * [MOLY00125845] [JADE] SRLTE related design
+ * .
+ *
+ * 06 18 2015 james-chi-ju.chang
+ * [MOLY00122048] [6795] Request new feature to improve registration time of roaming case
+ * 	.
+ *
+ * 05 29 2015 ye.yuan
+ * [MOLY00116932] [UMOLY] [NAS]compile option modify
+ * .
+ *
+ * 05 29 2015 kun-lin.wu
+ * [MOLY00117190] PLMN List in CONNECTED Mode
+ *
+ * 04 23 2015 mark.chung
+ * [MOLY00095378] Amazon Requirement
+ * 	.
+ *
+ * 04 16 2015 james-chi-ju.chang
+ * [MOLY00078264] [UMOLY][R10][R11] NAS check-in from CBr to 6291_DEV
+ * 	.
+ *
+ * 04 16 2015 carlson.lin
+ * [MOLY00091967] Merge C2K IRAT code
+ * C2K merge (OA, NWSEL EVAL interface)
+ *
+ * 02 23 2015 bob.chiang
+ * [MOLY00096607] Sync C2K CR
+ * .
+ *
+ * 01 09 2015 kun-lin.wu
+ * [MOLY00088493] CMCC���w�V���ѫO�@�u�Ƥ�ï½
+ * 01 06 2015 james-chi-ju.chang
+ * [MOLY00078264] [UMOLY][R10][R11] NAS check-in from CBr to 6291_DEV
+ * .
+ *
+ * 12 17 2014 james-chi-ju.chang
+ * [MOLY00078264] [UMOLY][R10][R11] NAS check-in from CBr to 6291_DEV
+ * 	.
+ *
+ * 11 10 2014 robert.wu
+ * [MOLY00083874] [UMOLY][R10][R11] EMM MTC sync code from 6291_DEV to UMOLY trunk
+ *
+ * 11 04 2014 james-chi-ju.chang
+ * [MOLY00078264] [UMOLY][R10][R11] NAS check-in from CBr to 6291_DEV
+ * .
+ *
+ * 10 07 2014 james-chi-ju.chang
+ * [MOLY00077752] 4G3G2Gauto�Ҧ��U����\�Ӥj
+ * .
+ *
+ * 09 19 2014 sherry.kuo
+ * [MOLY00077433] [SoMC][K2][LTE] Clear Code #29/#33 feature check in
+ * interface rename to is_esm_attempt_max_times.
+ *
+ * 08 28 2014 sherry.kuo
+ * [MOLY00077433] [SoMC][K2][LTE] Clear Code #29/#33 feature check in
+ * Clear Code 33
+ *
+ * 08 14 2014 jinghan.wang
+ * [MOLY00075318] [4G Gemini][FT][CMCC Case][TDL FT][BJ][5.4.6][CMCC+CMCC] [K2 Alpha][Regression 1]ping���q��ping�q43.61s,��ɬ�_?����Ficon��ping�q27.92s�A��??���� [FOCUS ISSUE]
+ * 	Change full_band_search to full_band_searched_3g_status & full_band_searched_4g
+ *
+ * 07 07 2014 benjamin.kuo
+ * [MOLY00071459] Add Mobility Management for IMS Voice Termination
+ * MMIVT2MOLY
+ *
+ * 07 02 2014 shaowu.huang
+ * [MOLY00070824] [4G Gemini][FT][BJ][CSFB test][case5.1.1][SIM1 CMCC+SIM2 CMCC][4G,3G,2Gע��ʱ�Ӿ�ϳ�]
+ * .
+ *
+ * 06 19 2014 roy.lin
+ * [MOLY00069512] �iCMCC Official �Ĥ@?�J? �j�iZTE Q507T�j�i���n�j�i?1-Critical�j�i�D�ΨÒ¡j??��L-�D�Ψ�-��?��?"APN"?�A�I?�ݱ`
+ * Update interface for PS detach without disable EUTRAN.
+ *
+ * 06 09 2014 tuan-che.chen
+ * [MOLY00068767] [MT6290] Recovery to other RAT after 4G OOS speed up
+ * add full_band_search
+ *
+ * 01 21 2014 wcpuser_integrator
+ * [MOLY00054475] SGLTE option rename
+ * .
+ *
+ * 01 14 2014 sherry.kuo
+ * [MOLY00052313] [Customer requested feature] 4G factory mode arfcn
+ * Merging from //MOLY_CBr/maruco.tu/MOLY_CBr.factory/mcu/modem/...
+ *
+ * 01 13 2014 james-chi-ju.chang
+ * [MOLY00037567] [VOLTE] IMS NWSEL IT
+ * Merging
+ *  	
+ * 	//MOLY_CBr/ben.chiu/MOLY_VOLTE.PHASE2.DEV/mcu/...
+ *  	
+ * 	to //MOLY/TRUNK/MOLY/mcu/...
+ *
+ * 08 19 2013 sherry.kuo
+ * [MOLY00009250] [LTE Multimode] NWSEL check in
+ * MT last PDN deactivation.
+ *
+ * 07 24 2013 benjamin.kuo
+ * [MOLY00031020] [MMDS_DC] Merge MMDC interface to MOLY
+ * .
+ *
+ * 07 24 2013 benjamin.kuo
+ * [MOLY00031020] [MMDS_DC] Merge MMDC interface to MOLY
+ * .
+ *
+ * 07 10 2013 shaowu.huang
+ * NAS REJECT CAUSE interface, MM<->EMM,MM<->NWSEL,MM<->MM
+ * 07 15 2013 sherry.kuo
+ * [MOLY00029775] [MT6290E1][NAS RTD][MM][FDD] EMM_PLMNSEL_doesn't_report_sys_info
+ * add search_type to search_status_update_req_struct
+ *
+ * 03 27 2013 benjamin.kuo
+ * [MOLY00011934] LTE MM IT CBr merge to MOLY
+ * .
+ *
+ * 03 14 2013 tuan-che.chen
+ * [MOLY00009163] LTE Multimode merge back to MOLY
+ * merge back to MOLY.
+ *
+ * 02 04 2013 sherry.kuo
+ * [MOLY00009250] [LTE Multimode] NWSEL check in
+ * td-fdd lte separate nwsel interface.
+ *
+ * 01 22 2013 benjamin.kuo
+ * [MOLY00009163] LTE Multimode merge back to MOLY
+ *
+ * 01 22 2013 benjamin.kuo
+ * [MOLY00009163] LTE Multimode merge back to MOLY
+ *
+ * 01 22 2013 benjamin.kuo
+ * [MOLY00009163] LTE Multimode merge back to MOLY
+ * MOLY_CBr to MOLY.
+ ****************************************************************************/
+
+
+#ifndef  _NWSEL_EVAL_STRUCT_INC
+#define  _NWSEL_EVAL_STRUCT_INC
+
+
+#include "nwsel_eval_enums.h"
+#include "l3_inc_local.h"
+#include "ps_public_enum.h"
+#include "l3_inc_enums.h"
+#include "irat_common_enums.h"
+#include "ims_common_def.h"
+#include "c2k_irat_msg_struct.h"
+#include "nas_sv_struct.h"
+#include "ps_public_struct.h"
+
+
+/***** common structure definition *****/
+typedef struct
+{
+    nas_proc_enum               emm_proc;
+    lr_result_enum              lr_result;
+    mm_cause_enum               lr_cause;
+    esm_cause_enum              esm_cause; 
+    kal_uint8                   attempt_counter;
+    kal_bool                    is_esm_attempt_max_times;
+    additional_update_result_enum   additional_update_result;
+    eps_attach_update_result_enum   eps_attach_update_result;
+    kal_bool                        is_ims_vops_support;
+    lte_duplex_type_enum        lte_type;
+//CR1917: REL12 feature, use REL11 temporarily
+    /* is_eutran_not_allowed should be checked only when Reject#15. Disable E-UTRAN if #15 and this field is True. */
+    kal_bool                    is_eutran_not_allowed; 
+    kal_bool                    is_ps_reattach;
+    kal_bool                    is_service_request_max_times; 
+    kal_bool                    is_t3402_valid;
+    kal_uint16                  t3402;
+    kal_bool                    is_rach_fail_max_times;
+    integ_protect_status_enum   is_integ_protected;
+    kal_uint8                   invalid_cs_sim_counter;
+    kal_uint8                   invalid_ps_sim_counter;
+    /* use to identify the TA is change or not when TAU/Combined TAU */
+    kal_bool                    is_mobility_tau;
+//#ifdef __REL10__ // persistent EPSB
+    kal_bool                    is_persistent_EPS_bearer_exist;
+//#endif
+    kal_bool                    is_emc_bs_support;
+} proc_result_only_struct;
+
+/***** message structure definition *****/
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   trx_id;
+    plmn_search_type_enum       plmn_search_type;
+    lte_duplex_type_enum        lte_type;
+    kal_uint8                   plmn_id_count;
+    plmn_id_struct              plmn_id[MAX_NUM_SEARCH_PLMN];
+    kal_bool                    is_manual_sel;        // if search is manual selection
+    kal_bool                    force_to_release;
+    kal_bool                    is_manual_csg_sel;    // identify if the csg_id below is valid
+    kal_uint32                  csg_id;
+    kal_bool                    trigger_by_signal_appear;
+    kal_bool                    is_higher_plmn_search;
+    kal_uint32                  factory_mode_arfcn; //0xFFFFFFFF means invalid arfcn - do normal search. For fast camp on test machine
+    kal_bool                    is_power_on; //for CMCC case 5.1.1: is first search after power on
+    kal_bool                    is_mpsr_trigger;    //for VzW MPSR expired based improvement
+    scan_type_enum              scan_type; 
+    search_period_enum          search_period; // only a suggestion value for RAT switch.
+    /**< Number of valid items in the KAL/MRU list. */
+    kal_uint8                   num_items;
+    /**< RAL/MRU list */
+    cell_band_info_struct       ral_mru_list_info [SYS_MAX_MRU_LIST_NUM];
+    kal_bool                    is_resel_shared_nw; // R13 feature, TS24.301 CR2100
+    kal_bool                    is_quick_search;
+    kal_bool                    is_all_stored;
+    found_mcc_info_struct       found_mcc_info;
+    // NWSEL search ANY and this flag set to True, ERRC will only find LTE with IMS support.Otherwise, ERRC report Not_Found
+    kal_bool                    force_ims_ecc_cell; 
+} nwsel_eval_plmn_search_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   trx_id;
+    plmn_search_result_enum     result;
+    kal_bool                    full_band_searched_4g;  // for NWSEL to decide if 2nd round PLMN search is necessary when PLMN is not found
+    kal_bool                    is_eas_plmn_list_present;
+    as_plmn_list_struct         eas_plmn_list;
+    kal_uint8                   multi_plmn_count;
+    plmn_id_struct              multi_selected_plmn[MAX_NUM_MULTI_PLMN];
+    as_cell_type_enum           multi_selected_cell_type[MAX_NUM_MULTI_PLMN];
+    scan_type_enum              scan_type;
+    kal_bool                    is_stored_list_exist; // only for stored search not for fullband + fullband and stored
+    fullband_result_enum        is_fullband_finished;
+    kal_bool                    is_quick_search;
+} nwsel_eval_plmn_search_cnf_struct; 
+
+typedef struct 
+{ 
+    LOCAL_PARA_HDR 
+    kal_uint8                   multi_plmn_count; 
+    plmn_id_struct              multi_plmn_id[MAX_NUM_MULTI_PLMN]; 
+    as_cell_type_enum           multi_cell_type[MAX_NUM_MULTI_PLMN];
+    /// source from cell reselection or search 
+    found_ind_source_enum source;
+} nwsel_eval_plmn_found_ind_struct;
+
+typedef  nwsel_nas_sv_search_status_update_req_struct  nwsel_eval_search_status_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_user_plmn_list_ongoing;
+} nwsel_eval_plmn_list_status_update_req_struct;
+
+//#ifdef __VOLTE_SUPPORT__
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                    prefer_ims_emergency;
+} nwsel_eval_search_preference_update_req_struct;
+//#endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                  gibi_tag;
+    plmn_id_struct              plmn_id;
+    kal_uint8                   ta_code[2];
+    kal_uint32                  cell_id;  // NWSEL chooses the cell_id and sends back to EMM. Requested by EMM 
+    as_cell_type_enum           cell_type;
+    hplmn_status_enum           hplmn_status;
+    fplmn_status_enum           fplmn_status;
+    kal_bool                    is_in_eq_plmn_list;
+    csg_access_mode_enum        csg_access_mode;
+    csg_info_struct             csg_info;
+//#if defined( __VOLTE_SUPPORT__) || defined (UNIT_TEST)
+    kal_bool                    ims_emergency_support;
+//#endif
+    kal_uint16                  band; /* MOLY00142657 VZ_REQ_e911_30203, band for VzW RAL and MRU */
+    kal_bool                    match_op_cfg;
+    endc_sib_status_enum        endc_sib_status; /* "endc_sib_status" will be set to "ENDC_SIB_STATUS_SUPPORT" if the corresponding 
+                                                  * bit of selected PLMN in PLMN-InfoList-r15 from SIB2 is TRUE. 
+                                                  */
+    kal_bool                    endc_available;  /* "endc_available" wil be set to TRUE if any bit in PLMN-InfoList-r15 from SIB2 is TRUE */
+#ifdef __NG_ECALL_SUPPORT__
+    kal_bool                    ecall_over_ims_support;
+#endif            
+} nwsel_eval_sys_info_update_req_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    event_type_enum             event_type_bitmask;
+    update_eplmn_struct         eplmn_info;
+    proc_result_only_struct     proc_result_only;
+    update_param_struct         update_param;
+
+} nwsel_eval_regn_result_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    regn_proc_status_enum       mm_proc_status;         // indicate if MS is in limited or no service
+    plmn_search_status_enum     plmn_search_status;
+    plmn_search_type_enum       plmn_search_type;
+    // sniff RPLMN 
+    // only valid when the conditions hold 
+    // plmn_search_status  == PLMN_SEARCH_UNRELATED
+    // mm_proc_status == (MS_IN_NO_SERVICE || MS_IN_LIMITED_SERVICE)
+    kal_uint8                   plmn_id_count;
+    plmn_id_struct              plmn_id[MAX_NUM_SEARCH_PLMN];
+    kal_bool                    is_send_to_as;
+    kal_bool                    other_rat_found_notify_4G;
+} nwsel_eval_regn_status_update_req_struct;
+
+typedef struct 
+{ 
+    LOCAL_PARA_HDR 
+    network_scan_4g_output_struct   nw_scan_4g_output;
+} nwsel_eval_plmn_scan_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                    is_manual_list;
+    lte_duplex_type_enum        lte_type;
+    kal_uint8                   plmn_id_count;
+    plmn_id_struct              plmn_id[MAX_NUM_SEARCH_PLMN];
+    scan_type_enum              scan_type;
+    kal_bool                    is_mpsr_trigger;   //for VzW MPSR expired based improvement
+    kal_bool                    is_higher_plmn_search;
+    found_mcc_info_struct       found_mcc_info;
+    kal_bool                    list_endc_info; /* LIST ENDC info or not for LTE cell. ERRC will collect SIB2 for PLMN_LIST. */
+} nwsel_eval_plmn_list_req_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    as_plmn_list_struct         eas_plmn_list;
+    kal_bool                    full_band_searched_4g;
+    scan_type_enum              scan_type;    
+    plmn_list_result_enum       cause;    
+} nwsel_eval_plmn_list_cnf_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    lte_duplex_type_enum        lte_type;
+    kal_uint8                   plmn_count;
+    plmn_id_struct              plmn_id[MAX_NUM_SEARCH_PLMN];  // include RPLMN
+
+} nwsel_eval_csg_list_req_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    as_csg_list_struct          eas_csg_list;
+
+} nwsel_eval_csg_list_cnf_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    domain_id_enum  conn_domain;
+    kal_bool        is_waiting_cell; //RRC connection release, no cell case, need to wiat ERRC to report a new cell
+    kal_bool        is_t311_expire;  /* RRC connection release due to RRC T311 timer expire */
+} nwsel_eval_out_of_service_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    as_plmn_list_struct         eas_plmn_list;
+    full_band_searched_enum     full_band_searched_3g_status;
+    kal_bool                    full_band_searched_4g;
+    plmn_loss_reason_enum       plmn_loss_reason;
+} nwsel_eval_plmn_loss_ind_struct;
+
+//#if defined( __VOLTE_SUPPORT__) || defined (UNIT_TEST)
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   emc_fplmn_count;
+    plmn_id_struct              emc_fplmn_list[MAX_NUM_EMC_FPLMN];
+    // band 0 => all band disabled, bar this PLMN
+    kal_uint16                  emc_fplmn_band[MAX_NUM_EMC_FPLMN];
+} nwsel_eval_emc_fplmn_list_update_req_struct;
+//#endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   eq_plmn_count;
+    plmn_id_struct              eq_plmn_id[MAX_NUM_EQ_PLMN];
+    
+} nwsel_eval_eq_plmn_list_update_req_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   plmn_id_count;
+    plmn_id_struct              plmn_id[MD1_MAX_NUM_HPLMN];
+    kal_uint8                   home_country_mcc[3];
+} nwsel_eval_hplmn_info_update_req_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    voice_domain_preference_enum    eutran_voice_domain_preference;
+    kal_bool                        is_evdp_changed_by_ims_on_off;
+    ue_mode_enum                    ue_mode;
+    kal_bool                        sms_only;
+    voice_domain_preference_enum    utran_voice_domain_preference;
+    kal_bool                        ims_support;
+    /* EMC specific config*/
+    kal_bool                        is_emc_param_valid;
+    voice_domain_preference_enum    emc_voice_domain_preference;
+    ue_usage_setting_enum           emc_ue_usage_setting;
+} nwsel_eval_uemode_param_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16           t3402_value;   // t3402 value in seconds
+    kal_bool             is_reset_t3402_after_5_attempt_to_attach_fail;
+} nwsel_eval_t3402_change_ind_struct;  // __REL10__: t3402
+
+//#if defined( __VOLTE_SUPPORT__) || defined (UNIT_TEST)
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool        prefer_ims_emergency;
+} nwsel_eval_plmn_search_preference_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    emc_status_enum         emc_status;
+    emc_pdn_status_enum     emc_pdn_status;
+} nwsel_eval_emergency_status_update_ind_struct;
+
+
+//#endif // __VOLTE_SUPPORT__
+#if defined(__LTE_RAT__) && (defined(__GSM_RAT__) || defined(__UMTS_RAT__))         
+
+typedef errc_sim_protect_req_struct nwsel_eval_power_on_protection_req_struct;
+
+#endif
+
+typedef struct {
+    LOCAL_PARA_HDR
+    eutran_cap_enum eutran_cap;  //only use "EUTRAN_DISABLED", for EMM to know if need to reset CService and CExtService
+} nwsel_eval_eutran_cap_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_based_timer_enum timer_type;
+    timer_status_enum timer_status;
+    plmn_id_struct target_plmn;
+    plmn_restrict_additional_information_enum event;
+} nwsel_eval_plmn_restriction_change_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    //kal_uint8                   req_id; //MD3 can only allow one 1XCSFB session
+    c2k_lte_csfb_req_type_enum  csfb_req_type;
+} nwsel_eval_c2k_csfb_start_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    //kal_uint8                   req_id; //MD3 can only allow one 1XCSFB session
+    c2k_lte_csfb_result_enum    result;
+}  nwsel_eval_c2k_csfb_est_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    c2k_lte_csfb_stop_req_type_enum    cause;
+} nwsel_eval_c2k_csfb_stop_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type; // new added, for AS triggered iRAT, need to forward IRAT_COMPLETE_REQ to EMM, for GMSS triggered iRAT, no need to forward. 
+    c2k_irat_attach_result_enum result;
+} nwsel_eval_c2k_irat_complete_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   plmn_id_count;
+    plmn_id_struct              plmn_id[MAX_NUM_SEARCH_PLMN];
+    gmss_rat_enum               c2k_ps_rat; /* C2K or HRPD */
+} nwsel_eval_c2k_normal_service_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_attach_needed; 
+} nwsel_eval_irat_c2l_success_notify_ind_struct;
+
+// should be consistent to nwsel_mm_need_duplex_mode_chg_update_req_struct
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_type_enum    target_rat;
+    kal_uint8        freq_num;
+    kal_uint32       redirect_freq[MAX_REDIRECT_FREQ_NUM];
+    mt_csfb_type_enum   mt_csfb_type;
+} nwsel_eval_need_duplex_mode_chg_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    mode_switch_cause_enum  cause;
+} nwsel_eval_global_mode_change_start_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum               rat;   
+    plmn_id_struct         plmn_id;
+    kal_uint16             arfcn;
+    kal_uint16             requested_band;
+} nwsel_eval_set_mru_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    set_mru_result_enum result;  
+} nwsel_eval_set_mru_cnf_struct;
+
+/* VzW requirement for MRU/RAL, only band/channel */
+typedef struct {
+    LOCAL_PARA_HDR  
+    cell_band_info_type_enum    type;
+    plmn_id_struct         plmn_id;
+    kal_uint16             band; 
+} nwsel_eval_cell_band_info_update_ind_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    emm_nwsel_event_enum event;  
+} nwsel_eval_search_interrupt_event_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool  bEvdoEnterConnection;  /* TRUE, means EVDO has been in PS connection state; else, EVDO has been in idle state. */
+} nwsel_eval_evdo_ps_connection_status_ind_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    hvolte_mode_enum    source_hvolte_mode;            /** indicate original hvolte mode */ // enum defined in ims_common_def.h
+    hvolte_mode_enum    target_hvolte_mode;            /** indicate source hvolte mode */ // enum defined in ims_common_def.h
+    kal_bool            is_silent_redial_and_call_ongoing;
+} nwsel_eval_hvolte_mode_change_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool  b1xRttEnterConnection;  /* TRUE, means 1xRTT has been in PS connection state; else, 1xRTT has been in idle state. */
+} nwsel_eval_1xrtt_ps_connection_status_ind_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    aral_op_enum op_code;
+    plmn_id_struct plmn;
+    rat_enum rat;
+    kal_uint8 ara_start[2];
+    kal_uint8 ara_end[2];
+} nwsel_eval_aral_update_req_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    call_status_enum call_status;
+    call_type_indication_enum call_type;
+    kal_bool                  is_flight_mode_on_ecc;    // align rac_gmss_call_status_req_struct
+    rat_enum                  call_current_rat;         // the call start/stop current rat
+} nwsel_eval_call_status_ind_struct;
+
+
+typedef struct{
+    LOCAL_PARA_HDR
+    emc_pdn_status_enum emc_pdn_status;
+}nwsel_eval_update_emc_pdn_status_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum disable_rat;
+} nwsel_eval_rat_disable_config_req_struct;
+
+typedef ia_apn_change_req_struct nwsel_eval_ia_apn_change_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool    normal_oos_recovery_round_present;
+    kal_uint8   normal_oos_recovery_round;  // default value = 5
+    kal_bool    inactive_fullband_period_present;
+    kal_uint16  inactive_fullband_period;   // default = 200s
+    kal_bool    inactive_sniffer_period_present;    
+    kal_uint8   inactive_sniffer_period;    // default = 30s
+    kal_bool    is_inactive_mode_present;
+    kal_bool    is_inactive_mode;           // True: enter inactive mode, False: leave inactive mode
+} nwsel_eval_inactive_mode_configuration_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                    is_over_inactive_mode_threshold;
+} nwsel_eval_service_recovery_round_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool  is_dan_sms_start;
+} nwsel_eval_send_dan_sms_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16  gibi_tag;
+}nwsel_eval_discard_sys_info_update_req_struct;
+#endif   /* ----- #ifndef _NWSEL_EVAL_STRUCT_INC ----- */
+
diff --git a/mcu/protocol/interface/lte/rac_eval_struct.h b/mcu/protocol/interface/lte/rac_eval_struct.h
new file mode 100644
index 0000000..3f0a41c
--- /dev/null
+++ b/mcu/protocol/interface/lte/rac_eval_struct.h
@@ -0,0 +1,707 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   rac_eval_struct.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   message and common structure definition between RAC and EVAL module
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 12 16 2021 derek.yang
+ * [MOLY00774161] [mt2735][CS eCall][NG eCall][patch back] ecall patch back from NR15.R3.MD700.MP.ECAll.DEV
+ * 	
+ * 	.
+ *
+ * 07 24 2020 titi.wu
+ * [MOLY00548688] ³q?MM INFO¤U??ÊI?¦W?¡A¶W?26¦ì?¡A¤âÉóª`?¦Z¥u¯à?¥Ü26¦ì
+ * ALPS05219189.
+ *
+ * 01 20 2020 lucien.li
+ * [MOLY00474623] [VMOLY][Huawei][M&J][MT6765/MT6761]?¤_¥D?¤W?©R¥OAT+EACMTªº?®i»Ý¨D
+ * 	
+ * 	[RAC] AT+EACMT
+ *
+ * 01 17 2020 lucien.li
+ * [MOLY00470870] [Gen97][VMOLY] Huawei's Gen93 CR patch-back activity
+ * [RAC] NVRAM - REJ Mapping rename
+ *
+ * 12 03 2019 lucien.li
+ * [MOLY00457575] ¥Ó?patch¡G§âALPS04415220¤¤ªº?ªG²¾´Ó¨ìMT6885¥­¥x¤W
+ * [Code Sync][RAC] __ARFCN_TO_CAMERA_SUPPORT__
+ *
+ * 10 14 2019 lucien.li
+ * [MOLY00442846] [Gen97] Modem´¼¯à«ÝÉófeature - NSA part (implementation)
+ * [CODE SYNC][RAC] Smart IDLE
+ *
+ * 05 02 2019 chinte.chen
+ * [MOLY00403093] [Gen97][VMOLY] extended emergency number list (EENL) support
+ * [EMM] extended emergency number list
+ *
+ * 02 18 2019 yingfui.hung
+ * [MOLY00384902] [Gen97][VzW]LTEPCO Requirement - VZ_REQ_LTEPCO_34859 - EMM cause source reporting
+ * 	
+ * 	.
+ *
+ * 	
+ * 	.
+ *
+ * 11 01 2018 yingfui.hung
+ * [MOLY00361478] [Gen97] Gemini Compile Option Clean Up
+ * 	
+ * 	.
+ *
+ * 10 24 2018 chinte.chen
+ * [MOLY00360557] [VMOLY][CODE_SYNC] UMOLY code sync to VMOLY
+ * .
+ *
+ * 08 20 2018 yingfui.hung
+ * [MOLY00346992] [Gen97][RAC] RAC revise and vgRAC implementation
+ * CL6151862 - 6171771
+ *
+ * 08 17 2018 chinte.chen
+ * [MOLY00306148] [NAS] pangu giant CR
+ * patch back 6136963.
+ *
+ * 08 17 2018 lucien.li
+ * [MOLY00306148] [NAS] pangu giant CR
+ * [Gen97][L4C] Cell info / SRVCC / inter-RAT / 5G extension and refactor
+ *
+ * 08 17 2018 james-chi-ju.chang
+ * [MOLY00306148] [NAS] pangu giant CR
+ * interface
+ *
+ * 08 06 2018 po-hung.lin
+ * [MOLY00343770] [Gen95 patch back] CE ·s¼W¸Á?©MWIFI?¦XSAR¡A®g?¡B¤Ñ?´£¥X»Ý¨D§Æ±æWIFI®ÚÕu?¬q?¦æ¦^°h
+ * 	
+ * 	- UMOLYE
+ *
+ * 06 21 2018 po-hung.lin
+ * [MOLY00332431] [Gen93][MP3][RD IT][VSIM 3.0] Modem EE after rsim enables (errc_conn_main) - RAC interface
+ * 	
+ * 	.
+ *
+ * 05 22 2018 morning.lee
+ * [MOLY00325228] [UMOLYE] Remove NVRAM group header file
+ * 	
+ * 	.
+ *
+ * 03 28 2018 kelly.lo
+ * [MOLY00316571] [95 feature] non-3gpp NW policies
+ * 	
+ * 	interface
+ *
+ * 03 20 2018 chinte.chen
+ * [MOLY00314768] [CV1][Gen93][SPR][LC] IRAT 4.2 Fail
+ * .
+ *
+ * 03 02 2018 po-hung.lin
+ * [MOLY00310712] [Rose][Cervino][BSP+]Title bar will show signal icon but SIM cards will show no SIM card.
+ * 	
+ * 	UMOLYE
+ *
+ * 12 08 2017 morning.lee
+ * [MOLY00294894] [ATT][RnS][LTE-BTR-1-8909]#30: FAIL - EMERGENCY PDN connection establishment over WLAN is performed.
+ * 	
+ * 	.
+ *
+ * 12 01 2017 po-hung.lin
+ * [MOLY00292291] [LR12A.R3.MP] Change IMEISV during RF OFF state
+ * relay IMEISV to EMM/MM
+ *
+ * 07 28 2017 morning.lee
+ * [MOLY00267428] [copy MOLY00250354]Remote SIM full function LR11 MP5 check-in for L4C, RAC and SIM - EVAL part
+ * 	
+ * 	.
+ *
+ * 07 18 2017 morning.lee
+ * [MOLY00265023] [Copy MOLY00250685][TCL][MICKEY6T TMO] [IMS/VoLTE] - L_IMS_VoLTE_50944_1
+ *
+ * 06 06 2017 sagar.murthy
+ * [MOLY00254972] [CCI57_64_SM11_N] [DMS10925972] [Freedom] Incorrect RAT icon shown in National and International roaming.
+ * Interface files: Report LTE Carrier Aggregation info to AP
+ * 	
+ * 	.
+ *
+ * 02 09 2017 morning.lee
+ * [MOLY00228375] [copy MOLY00220113][6292][Gemini][LG+WG] SBP_CSFB_DUPLEX_CHG_FOR_LG_MODE / SBP_DUPLEX_MODE_CHG_AFTER_CSFB / AT+ETWMODE -EVAL part
+ * 	
+ * 	.
+ *
+ * 12 28 2016 morning.lee
+ * [MOLY00221333] [6293] R13 DoS enhancement - change detach_ind
+ * 	
+ * 	.
+ *
+ * 12 12 2016 morning.lee
+ * [MOLY00217959] [copy MOLY00215105][Multiple-PS][Enhancement] Session protection for IMS registration & de-registration
+ * 	
+ * 	.
+ *
+ * 11 22 2016 morning.lee
+ * [MOLY00214414] [copy MOLY00212265]Envelope Event(Location Status) mechanism improvement for the location info reduction
+ * 	
+ * 	.
+ *
+ * 11 03 2016 danny.kuo
+ * [MOLY00164081] ¡iCA¡j¦b°t¸m¦³?ªi»E¦Xªº?°ì???ÕuÊI?¡A???¤´µM?¥Ü4G+
+ * .
+ *
+ * 11 03 2016 danny.kuo
+ * .check-in for MOLY00093206
+ *
+ * 10 17 2016 morning.lee
+ *
+ * [MOLY00206982] [Volunteer_Patch]remove __SGLTE__, __SGLTE_DSDS__ option
+ * 	
+ * 	.
+ *
+ * 09 29 2016 benjamin.kuo
+ * [MOLY00197956] [6293][RAC] development
+ * fix build error.
+ *
+ * 09 26 2016 sh.yeh
+ * [MOLY00205082] EMM_REG merge from UMOLYA-PS-DEV to UMOLYA
+ * sync MOLY187316 CL2614331, MOLY00141896 CL2648845.
+ *
+ * 06 28 2016 benjamin.kuo
+ * [MOLY00185907] [MT6293] [ENAS] UMOLY merge to UMOLYA
+ * UMOLY to UMOLYA - fix build error.
+ *
+ * 05 26 2016 yc.chen
+ * [MOLY00176301] [VZW_LC_IOT][PH1_VZW][joint-camp][Radio_Protocol][E911] TC3.1  failuire
+ * 	
+ * 	.
+ *
+ * 03 16 2016 shih-che.chou
+ * [MOLY00164081] ¡iCA¡j¦b°t¸m¦³?ªi»E¦Xªº?°ì???ÕuÊI?¡A???¤´µM?¥Ü4G+
+ * .
+ *
+ * 12 11 2015 mika.kaikkonen
+ * [MOLY00145451] [R12][CR1962] Handling of SCM at NAS layer - EVAL - EMM interface MSG IDs
+ *
+ * 07 17 2015 shih-che.chou
+ * [MOLY00129720] [VzW][Merge to UMOLY] Porting RAC part from MOLY to UMOLY
+ * .
+ *
+ * 06 18 2015 panu.peisa
+ * [MOLY00122487] EMM, ESM & PAM module VzW feature porting from 6290 to 6291
+ * 	SWRD part, change have dependency to LTE_SEC parts.
+ *
+ * 06 14 2015 teemu.partanen
+ * [VZ_REQ_LTEDATARETRY_7743] From 6290 to UBIN_DEV_VxW. SW_RD part. Integrated from CL 1372338.
+ *
+ * 06 08 2015 teemu.partanen
+ * [VZ_REQ_LTEDATARETRY_7799] VZ_LTEDATARETRY_REQ_7799 porting to UMOLY_DEV Cbr - Part 1/2
+ * 	SWRD located interface updates and Common NWRAM items
+ *
+ * 06 02 2015 hong.yu
+ * [MOLY00117879] [Need Patch] UMOLY build error for TK6291_E1EVB(LWTG2_V2SKU1)
+ * fix build error
+ *
+ * 06 02 2015 hong.yu
+ * [MOLY00117827] [Need Patch] [Build Error]  Build Error for TK6291_UESIM(LWTG)
+ * don't include LTE domain header
+ *
+ * 06 01 2015 hong.yu
+ * [MOLY00117564] [L4][EVAL] report LTE CA status to AP
+ * .
+ *
+ * 05 29 2015 shih-che.chou
+ * [MOLY00115617] [6291] Dynamic SIM switch without modem reset
+ * RAC part
+ *
+ * 05 29 2015 shih-che.chou
+ * [MOLY00117190] PLMN List in CONNECTED Mode
+ * RAC part
+ *
+ * 05 20 2015 carlson.lin
+ * [MOLY00109756] [MT6291][R11][NAS] SIC: SM IE Configuration check in
+ * R11 SM/ESM capability default ON (OA Domain, interface)
+ *
+ * 04 16 2015 hong.yu
+ * [MOLY00107864] [MT6291][L4] UBIN phase 2
+ * UBIN phase 2
+ *
+ * 03 16 2015 hong.yu
+ * [MOLY00098914] [MT6291] move erac_rat_enum to common
+ * move erac_rat_enum to common
+ *
+ * 02 23 2015 bob.chiang
+ * [MOLY00096607] Sync C2K CR
+ * .
+ *
+ * 12 31 2014 hong.yu
+ * [MOLY00084132] [UMOLY] sync MOLY, MT6291_DEV, and UMOLY
+ * fix build error
+ *
+ * 12 09 2014 hong.yu
+ * [MOLY00081154] [ATT_TMO_DEV] AT&T requirement merge back
+ * sync to UMOLY
+ *
+ * 11 10 2014 robert.wu
+ * [MOLY00083874] [UMOLY][R10][R11] EMM MTC sync code from 6291_DEV to UMOLY trunk
+ *
+ * 07 30 2014 danny.kuo
+ * [MOLY00073983] [Remote][WW FT][Singapore][MT6595][Singtel] UE is going to No Service momentarily during MO CISS or MO CS Call
+ * .
+ *
+ * 07 16 2014 benjamin.kuo
+ * [MOLY00072431] [TMO-US][Pre-LAB][VoLTE][1stCall] Incorrect SRVCC supported codecs capability
+ * remove supported_codec on MOLY
+ *
+ * 07 07 2014 benjamin.kuo
+ * [MOLY00071459] Add Mobility Management for IMS Voice Termination
+ * MMIVT2MOLY
+ *
+ * 06 19 2014 roy.lin
+ * [MOLY00069512] �iCMCC Official �Ĥ@?�J? �j�iZTE Q507T�j�i���n�j�i?1-Critical�j�i�D�ΨÒ¡j??��L-�D�Ψ�-��?��?"APN"?�A�I?�ݱ`
+ * Update interface for PS detach without disable EUTRAN.
+ *
+ * 05 16 2014 lt.chang
+ * [MOLY00065658] [sglte dsds]ps detach and attach redesign
+ * .check in actvie sim info req interface
+ *
+ * 03 05 2014 benjamin.kuo
+ * [MOLY00050602] [SAT] support Network Rejection Event
+ * .
+ *
+ * 02 24 2014 raymond.chen
+ * [MOLY00056490] [MT6290E2][SGLTE][82LTEv2][L+G] Assert fail: modem/lte_sec/enas/emm/ratchg/src/emm_ratchg_rcvmsg_evalif.cpp 489 - EMM
+ * Change kal_bool amnual_resel to attach_cause_enum attach_cause for emmreg_attach_req_struct.
+ *
+ * 02 17 2014 benjamin.kuo
+ * [MOLY00055341] [MP1 Post MP Patch][MT6290E2][LTE attach PDN] UE doesn't perform LTE attach due to TCM cmd conflict
+ * MOLY
+ *
+ * 01 21 2014 wcpuser_integrator
+ * [MOLY00054475] SGLTE option rename
+ * .
+ *
+ * 01 14 2014 raymond.chen
+ * [MOLY00053581] [MT6290E2][MMDS_DC][82LTEv2] [L+G] manual selection back to 4G fail because of CGATT and COPS conflict
+ * Add manual_resel in emmreg_attach_req_struct for manual selection re-design in SGLTE project.
+ *
+ * 01 13 2014 benjamin.kuo
+ * [MOLY00053421] Merge VoLTE Phase 2 back to MOLY trunk
+ * VoLTE to MOLY
+ *
+ * 10 18 2013 raymond.chen
+ * [MOLY00041595] [MT6290E1][MMDS_DC] MMDC feature patch back to MOLY trunk
+ * Add mmdc_ps_attach in emmreg_attach_req_struct for PS Switch.
+ *
+ * 09 17 2013 benjamin.kuo
+ * [MOLY00038205] [MT6290] [LTE] Rel-11 CR pre-implementation merge back
+ * add interface.
+ *
+ * 07 29 2013 benjamin.kuo
+ * [MOLY00031595] add is_on_hplmn in emmreg_attach_cnf/emmreg_detach_ind/emmreg_cell_info_update_ind
+ * .
+ *
+ * 07 26 2013 hc.chu
+ * [MOLY00031445] Add CXREG AT-cmd
+ * CREG, CEREG AT cmd enhancement
+ *
+ * 07 24 2013 josh.cheng
+ * [MOLY00031020] [MMDS_DC] Merge MMDC interface to MOLY
+ * Merge MMDC interface to MOLY
+ *
+ * 04 01 2013 benjamin.kuo
+ * [MOLY00011934] LTE MM IT CBr merge to MOLY
+ * add __MMDC__ for message/structure.
+ *
+ * 03 28 2013 benjamin.kuo
+ * [MOLY00011934] LTE MM IT CBr merge to MOLY
+ * Add active rat/proc. status in SetRatModeReq/Cnf for IRCC0 Stage2 Failure.
+ *
+ * 03 27 2013 benjamin.kuo
+ * [MOLY00011934] LTE MM IT CBr merge to MOLY
+ * .
+ *
+ * 01 22 2013 benjamin.kuo
+ * [MOLY00009163] LTE Multimode merge back to MOLY
+ *
+ * 01 22 2013 benjamin.kuo
+ * [MOLY00009163] LTE Multimode merge back to MOLY
+ *
+ * 01 22 2013 benjamin.kuo
+ * [MOLY00009163] LTE Multimode merge back to MOLY
+ * MOLY_CBr to MOLY.
+ *
+ * 11 22 2012 yu.huang
+ * [MOLY00006513] EMM Enhancement
+ * Add new msgid
+ ****************************************************************************/
+
+
+#ifndef  _RAC_EVAL_STRUCT_INC
+#define  _RAC_EVAL_STRUCT_INC
+
+#include "ps_public_enum.h"
+#include "l3_inc_local.h"
+#include "nvram_data_items.h"
+//#ifdef __VOLTE_SUPPORT__
+#include "ims_common_def.h"
+//#endif /* __VOLTE_SUPPORT__ */
+#include "nvram_editor_data_item.h"  // __REL10__: t3346
+#include "global_type.h"
+#include "l3_inc_enums.h"
+#include "gmss_public.h"
+#include "sim_public_enum.h"
+#include "erac_nvram_def.h" 
+#include "erac_nvram_editor.h"  
+#include "emm_nvram_def.h"  
+#include "emm_nvram_editor.h" 
+
+/***** message structure definition *****/
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   imei[SIZE_IMEI]; 
+    kal_uint8                   imei_svn;
+    kal_uint8                   nvram_epsloci[SIZE_EPSLOCI];
+    kal_uint8                   nvram_epsnsc[SIZE_EPSNSC];
+    kal_uint8                   drx_data[SIZE_DRX_DATA];
+    tin_enum                    tin;
+    kal_uint8                   feature_config[NVRAM_LTE_FEATURE_CONFIG_SIZE];
+    nvram_ef_t3346_timer_info_struct t3346_info;  // __REL10__: t3346
+    nvram_ef_t3402_timer_info_struct t3402_info;
+    kal_uint8                   max_CService;
+    init_cause_enum             init_cause;
+    nvram_ef_failure_list_struct failure_list;    
+    kal_uint8                   imsi[SIZE_IMSI];
+    nvram_ef_emm_smart_idle_info_struct emm_smart_idle_info;
+} emmreg_init_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    data_speed_support_enum cell_data_speed_support;
+    cell_info_and_rat_struct    cell_info;
+    endc_sib_status_enum        endc_sib_status;
+} emmreg_cell_info_update_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   full_nw_nameP;
+    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_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;
+    nw_time_zone_time_struct    nw_time_zone_time;
+    kal_uint8                   nw_day_light_saving_timeP;
+    kal_uint8                   nw_day_light_saving_time;
+    plmn_id_struct              plmn_id;
+
+} emmreg_nw_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                    is_ecc_changed;           /**< tell L4 if ecc changed */
+    kal_uint8                   no_ecc;
+    ecc_number_struct           ecc_list[MAX_NW_ECC_NUM];
+
+    /* extended emergency number list (9.9.3.37A in TS 24.301) */
+    kal_bool                    is_eenl_changed;          /**< tell L4 if eenl changed */
+    plmn_id_struct              eenl_plmn;
+} emmreg_nw_ecc_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                    non_3gpp_emergency_number_indicator;
+
+} emmreg_non_3gpp_nw_policies_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                    is_valid_requested_gsm_band;
+    kal_uint8                   requested_gsm_band;
+    kal_bool                    is_valid_requested_umts_fdd_band;
+    kal_uint8                   requested_umts_fdd_band[SIZE_UMTS_FDD_BAND];
+    kal_bool                    is_valid_requested_umts_tdd_band;
+    kal_uint8                   requested_umts_tdd_band[SIZE_UMTS_TDD_BAND];
+    kal_bool                    is_valid_requested_lte_band;
+    kal_uint8                   requested_lte_band[SIZE_LTE_BAND];
+
+} emmreg_set_preferred_band_req_struct;
+
+//#ifdef __VOLTE_SUPPORT__
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                        force_emc_attach;
+} emmreg_emc_attach_ind_struct;
+
+/* relay EMMREG_EMC_ATTACH_IND to EMMREG_EMC_ATTACH_REQ (from ESM to EMM) */
+typedef emmreg_emc_attach_ind_struct    emmreg_emc_attach_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                       att_id;
+    cell_info_and_rat_struct    	cell_info;
+} emmreg_emc_attach_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                       att_id;
+    emm_cause_enum    	            emm_cause;
+    emm_cause_source_enum           emm_cause_source;
+    esm_cause_enum	                esm_cause;
+    cell_info_and_rat_struct    	cell_info;
+    #if 0
+/* under construction !*/
+/* under construction !*/
+    #endif
+    dos_enhance_info_struct         dos_enhance_info;
+} emmreg_emc_detach_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                       is_ims_voice_available;
+} emmreg_set_ims_voice_availability_req_struct;
+
+typedef  struct
+{
+    LOCAL_PARA_HDR
+    mm_ims_voice_termination        mm_ivt;
+} emmreg_set_ims_voice_termination_req_struct;
+
+//#endif /* __VOLTE_SUPPORT__ */
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    emm_nw_feature_support_struct   eps_nw_feature;
+} emmreg_nw_feature_ind_struct;
+
+#if 0 /* mark empty primitive message structure */
+/* under construction !*/
+/* under construction !*/
+/* 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 /* mark empty primitive message structure */
+
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    ps_cause_enum               cause;
+} emmreg_eps_attach_needed_rej_rsp_struct;
+
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    sat_nw_rej_info_enum        op;
+    cell_info_and_rat_struct    current_cell;
+    sat_nw_rej_type_enum        type;
+    kal_uint8                   rej_cause;
+} emmreg_nw_reject_ind_struct;
+
+
+#if defined(__CDMA2000_RAT__)
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    act_sim_enum                act_sim;
+} emmreg_active_sim_info_req_struct;
+
+#endif /*  __CDMA2000_RAT__ */
+
+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;
+} emmreg_duplex_mode_change_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool    result;
+} emmreg_duplex_mode_change_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_pgcheck_on;
+} emmreg_set_pgcheck_req_struct;
+
+//#ifdef __LTE_R11__
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    ca_info_enum ca_info;
+    kal_uint8 scell_bmp_dl;
+    kal_uint8 scell_bmp_ul;
+	kal_uint8 pcell_bw;
+	kal_uint8 scell_bw[4];
+	kal_uint16  pcell_band;  
+    kal_uint16  scell_band[4];
+    EARFCN      pcell_earfcn;
+    kal_uint16  scell_dl_band[4];
+    EARFCN      scell_dl_earfcn[4];
+} eval_rac_ca_info_ind_struct;
+//typedef eval_errc_ca_info_ind_struct eval_rac_ca_info_ind_struct;
+//#endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR 
+    kal_bool                    is_voice_over_ims_ongoing; 
+    kal_bool                    is_ims_reg_ongoing;
+    kal_bool                    is_voice_over_ims_ongoing_valid;
+    kal_bool                    is_ims_reg_ongoing_valid;
+} emmreg_ims_call_reg_info_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR 
+    ims_reg_state_enum              reg_state;
+    ims_reg_type_enum               reg_type;
+    ims_access_rat_enum             rat;            // only valid when IMS_REG_STATE_REGISTERED
+} emmreg_ims_reg_status_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR 
+    kal_uint8                src_id;
+    ims_scm_info_type_enum   ims_scm_type;
+    ims_scm_info_action_enum ims_scm_action;
+} emmreg_ims_scm_info_req_struct;
+
+#ifdef __GEMINI__ //__REMOTE_SIM__
+typedef struct
+{
+    LOCAL_PARA_HDR
+	rsim_auth_finish_result_enum result;
+} emmreg_rsim_auth_finish_ind_struct;
+#endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                src_id;
+} emmreg_ims_scm_info_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                svn;
+}emmreg_set_ms_sv_req_struct;
+
+#ifdef __GEMINI__ //__REMOTE_SIM__
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_rsim_enabled;
+    kal_bool is_aka_sim_enabled;
+} emmreg_rsim_aka_status_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rsim_auth_abort_result_enum result;
+} emmreg_rsim_auth_abort_cnf_struct;
+#endif
+
+#ifdef __NG_ECALL_SUPPORT__
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8 purpose; //0 for IMS eCALL, 1 for CS eCALL
+	kal_uint8 mode; //0 reset timer, 1 for set timer
+    kal_uint32 timer1;
+	kal_bool is_timer1_valid;
+    kal_uint32 timer2;
+    kal_bool is_timer2_valid;
+}emm_set_timer_req_struct;
+#endif
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+    nvram_ef_emm_reject_cause_mapping_struct mapping_ef;
+}emmreg_reject_cause_mapping_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    emm_cause_source_enum     event;
+    emm_cause_enum            original_emm_cause;
+    emm_cause_enum            converted_emm_cause;
+    kal_bool                  is_ps_sim_valid;
+    kal_bool                  is_cs_sim_valid;
+}emmreg_cause_info_ind_struct;
+
+#endif   /* ----- #ifndef _RAC_EVAL_STRUCT_INC ----- */
+
diff --git a/mcu/protocol/interface/lte/sms_emm_enums.h b/mcu/protocol/interface/lte/sms_emm_enums.h
new file mode 100644
index 0000000..5b11a68
--- /dev/null
+++ b/mcu/protocol/interface/lte/sms_emm_enums.h
@@ -0,0 +1,71 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   sms_emm_enums.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   common enum definition between SMS and EMM module
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ ****************************************************************************/
+
+
+#ifndef  _SMS_EMM_ENUMS_INC
+#define  _SMS_EMM_ENUMS_INC
+
+/***** common enum definition *****/
+typedef enum
+{
+    SMS_EMM_REG_STATUS_EPS_ONLY_ATTACHED = 0,
+    SMS_EMM_REG_STATUS_EPS_AND_NON_EPS_ATTACHED,
+    SMS_EMM_REG_STATUS_EPS_DETACHED,
+    SMS_EMM_REG_STATUS_NON_EPS_DETACHED,
+    SMS_EMM_REG_STATUS_EPS_AND_NON_EPS_DETACHED
+
+} sms_emm_reg_status_enum;
+
+#endif   /* ----- #ifndef _SMS_EMM_ENUMS_INC ----- */
+
diff --git a/mcu/protocol/interface/lte/sms_emm_struct.h b/mcu/protocol/interface/lte/sms_emm_struct.h
new file mode 100644
index 0000000..3f200d8
--- /dev/null
+++ b/mcu/protocol/interface/lte/sms_emm_struct.h
@@ -0,0 +1,73 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   sms_emm_struct.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   message and common structure definition between SMS and EMM module
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ ****************************************************************************/
+
+
+#ifndef  _SMS_EMM_STRUCT_INC
+#define  _SMS_EMM_STRUCT_INC
+
+
+#include "sms_emm_enums.h"
+#include "l3_inc_enums.h"
+
+
+/***** message structure definition *****/
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    sms_emm_reg_status_enum    state;
+
+} sms_emm_reg_status_ind_struct;
+
+#endif   /* ----- #ifndef _SMS_EMM_STRUCT_INC ----- */
+
diff --git a/mcu/protocol/interface/lte/sms_eval_enums.h b/mcu/protocol/interface/lte/sms_eval_enums.h
new file mode 100644
index 0000000..966b617
--- /dev/null
+++ b/mcu/protocol/interface/lte/sms_eval_enums.h
@@ -0,0 +1,178 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   sms_eval_enums.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   common enum definition between SMS and EVAL module
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 01 22 2020 youru.chen
+ * [MOLY00475582] ¡i¥«?¤Ï?¡j¡i¤ª«n??ÃÛ?¡j ¡i19165¡j¤ª«n??°â¦Z¤Ï?²¾?¦³³q?§vµ©??¡A?¦Û?¬E? - TAU capability change for workaround
+ * 	
+ * 	[MPD][VMOLY]
+ * 	[ALPS04956277] 
+ * 	[issue secnario] 
+ * 	AS needs to disable NR related capability(ENDC..etc) to workaround NW weird behavior. 
+ * 	In order to get the 5G service, UE needs to notify NW the correct capability(included ENDC...etc) when TAI changes or detach/attach happens. 
+ * 	Hence, EMM may need to perform TAU with UE radio capability information update needed IE when TAI changes.  
+ * 	1. EMM recevied new release cause(CAPA_CHANGE) to trigger AS capability change TAU. 
+ * 	2. EMM_REG judges UE radio capability information update needed IE by mrs_get_as_radio_capability_change 
+ * 	3. EMM notify ERRC the TAI changes/ MO DETACH/MT DETACH
+ *
+ * 02 18 2019 jerry-yh.chang
+ * [MOLY00360557] [VMOLY][CODE_SYNC] UMOLY code sync to VMOLY
+ * [MPD] Gemini Feature MOLY00353177 & AFR Local Release Protection
+ *
+ * 10 17 2017 sh.yeh
+ * [MOLY00281973] ¡iTOP¡j¡i¤s?¼w¦{¡j?¥d?³q¡A¥d2¥D¥d¡A?Éó¦Zª`?3G¦Aª`?4G¡A«ÝÉó?µ{¤¤¤S¦^¸¨3GÊI?¡A¤£«ìÎ`4G¡]3\10¡^
+ * .
+ *
+ * 10 05 2016 allen.keh
+ * [MOLY00185907] [MT6293] [ENAS] UMOLY merge to UMOLYA
+ * .merge MOLY00187936
+ *
+ * 07 01 2016 melody.tien
+ * [MOLY00187936] [MT6292][ELBRUS][EVB][Sanity][LWG][UMOLY TRUNK][6179][FULLLOAD][BLOCKING][234GMM]Assert fail: emm_conn_snd_internal_msg.cpp 833 - EMM
+ * 06 22 2016 kelly.lo
+ * [MOLY00185907] [MT6293] [ENAS] UMOLY merge to UMOLYA
+ * 	
+ * 	. (OA) sanity
+ * 	MOLY00164678 CL2255734
+ *
+ *
+ * 02 03 2016 juan.huang
+ * [MOLY00152764][SMS optimization][4G]after SMS send sms data to EVAL, EVAL return the send result to SMS
+ * 	Merging
+ * 	
+ * 	//UMOLY_CBr/jerry-yh.chang/UMOLY_W16.05.LTE.p6/mcu/...
+ * 	
+ * 	to //UMOLY/TRUNK/UMOLY/mcu/...
+ *
+ * 01 27 2016 ya.li
+ * 01 28 2016 juan.huang
+ * [MOLY00152764][SMS optimization][4G]after SMS send sms data to EVAL, EVAL return the send result to SMS
+ * 	Merging
+ * 	
+ * 	//MOLY_CBr/allen.keh/MOLY_MP7.W16.05.p1/mcu/...
+ * 	
+ * 	to //UMOLY_CBr/jerry-yh.chang/UMOLY_W16.05.LTE.p6/mcu/...
+ *
+ * 01 28 2016 juan.huang
+ * <saved by Perforce>
+ *
+ * 01 27 2016 ya.li
+ * 02 03 2016 ya.li
+ * [MOLY00152757] [MT6290][CMCC 2016 new requirement][SMS][Stop Receiving RP-ACK when UE from 4G connected mode to idle mode]
+ * .
+ *
+ * 09 30 2014 edwin.liu
+ * [MOLY00080010] [UMOLY]SMS retey for 4G congestion.
+ *
+ * 11 06 2012 yu.huang
+ * [MOLY00005322] TATAKA merge to MOLY
+ * [EVAL] Add EVAL related interfaces and common strust
+ ****************************************************************************/
+
+
+#ifndef  _SMS_EVAL_ENUMS_INC
+#define  _SMS_EVAL_ENUMS_INC
+
+/***** common enum definition *****/
+typedef enum
+{
+    SMS_EVAL_REG_STATUS_EPS_ONLY_ATTACHED = 0,
+    SMS_EVAL_REG_STATUS_EPS_AND_NON_EPS_ATTACHED,
+    SMS_EVAL_REG_STATUS_EPS_DETACHED,
+    SMS_EVAL_REG_STATUS_NON_EPS_DETACHED,
+    SMS_EVAL_REG_STATUS_EPS_AND_NON_EPS_DETACHED
+
+} sms_eval_reg_status_enum;
+
+
+typedef enum
+{
+    SMS_EVAL_EST_REJ_CAUSE_INVALID = 0,
+    SMS_EVAL_EST_REJ_CAUSE_EPS_DETACH,
+    SMS_EVAL_EST_REJ_CAUSE_REATTACH_REQ,
+    SMS_EVAL_EST_REJ_CAUSE_T3417_EXPIRY,
+    SMS_EVAL_EST_REJ_CAUSE_OTHER,
+    SMS_EVAL_EST_REJ_CAUSE_LOWER_LAYER_FAILURE,
+    SMS_EVAL_EST_REJ_CAUSE_INCOMPATIBLE_STATUS,
+    SMS_EVAL_EST_REJ_CAUSE_INTER_RAT_COLLISION,
+    SMS_EVAL_EST_REJ_CAUSE_CONGESTION
+
+} sms_eval_est_rej_cause_enum;
+
+typedef enum
+{
+    SMS_EVAL_REL_IND_CAUSE_REL_LB_TAU = 0,
+    SMS_EVAL_REL_IND_CAUSE_REL_OTHER,
+    SMS_EVAL_REL_IND_CAUSE_REEST_FAIL,
+    SMS_EVAL_REL_IND_CAUSE_CSFB_HIGH,
+    SMS_EVAL_REL_IND_CAUSE_GEMINI_ABORT,
+    SMS_EVAL_REL_IND_CAUSE_VIRTUAL_CONNECTED_LEAVE_FAIL,
+    SMS_EVAL_REL_IND_CAUSE_NW_OTHER, // turly from network release
+    SMS_EVAL_REL_IND_CAUSE_CAPA_CHANGE,    
+    SMS_EVAL_REL_IND_CAUSE_LOCAL_REL
+
+} sms_eval_rel_ind_cause_enum;
+
+typedef enum
+{
+    SMS_EVAL_UNITDATA_CNF_RESULT_DATA_SUCC = 0,
+    SMS_EVAL_UNITDATA_CNF_RESULT_RLC_FAILURE,
+    SMS_EVAL_UNITDATA_CNF_RESULT_DATA_NO_SEND,
+    SMS_EVAL_UNITDATA_CNF_RESULT_GEMINI_VIRTUAL_CONNECTED_FAIL    /*[Gemini3.0] Report New Cause when data cannot be sent by ERRC during Virtual Connected State.
+                                                                    *  This cause will be reported when __EMM_GEMINI_VC_CAUSE_FOR_SMS__ is ON.
+                                                                    */
+} sms_eval_unitdata_cnf_result_enum;
+
+#endif   /* ----- #ifndef _SMS_EVAL_ENUMS_INC ----- */
+
diff --git a/mcu/protocol/interface/lte/sms_eval_struct.h b/mcu/protocol/interface/lte/sms_eval_struct.h
new file mode 100644
index 0000000..4c400b2
--- /dev/null
+++ b/mcu/protocol/interface/lte/sms_eval_struct.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) 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:
+ * ---------
+ *   sms_eval_struct.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   message and common structure definition between SMS and EVAL module
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 03 17 2021 laxman.nadiminti
+ * [MOLY00585299] FT:LA:MX:2:F:N1:N1 - MUT is not receiving the commands via OTA
+ * 	
+ * 	.
+ *
+ * 12 05 2019 ya.li
+ * [MOLY00463909] [Gen97][EMM trigger local release after SGs SMS done]??????P90????????????for patch ??, follow ALPS04388534?
+ * 	
+ * 	.
+ *
+ * 10 29 2019 ya.li
+ * [MOLY00455375] ??????P90????????????for patch ??, follow ALPS04388534??EMM trigger local release after SGs SMS done[SMS part]?
+ * 	
+ * 	.
+ *
+ * 01 16 2018 ian-yw.chen
+ * [MOLY00302109] [MT6763][Bianco][N1][India FT][Chennai][WW FT][RCOM][TATA DOCOMO][TC_MTK_P1_4G_Gemini_13] [MP1.5] DUT long SMS to sim2 fails (common interface part)
+ *  SMS/EVAL
+ *
+ * 02 03 2016 juan.huang
+ * [MOLY00152764][SMS optimization][4G]after SMS send sms data to EVAL, EVAL return the send result to SMS
+ * 	Merging
+ * 	
+ * 	//UMOLY_CBr/jerry-yh.chang/UMOLY_W16.05.LTE.p6/mcu/...
+ * 	
+ * 	to //UMOLY/TRUNK/UMOLY/mcu/...
+ *
+ * 01 27 2016 ya.li
+ * 01 28 2016 juan.huang
+ * [MOLY00152764][SMS optimization][4G]after SMS send sms data to EVAL, EVAL return the send result to SMS
+ * 	Merging
+ * 	
+ * 	//MOLY_CBr/allen.keh/MOLY_MP7.W16.05.p1/mcu/...
+ * 	
+ * 	to //UMOLY_CBr/jerry-yh.chang/UMOLY_W16.05.LTE.p6/mcu/...
+ *
+ * 01 28 2016 juan.huang
+ * <saved by Perforce>
+ *
+ * 01 27 2016 ya.li
+ * 02 03 2016 ya.li
+ * [MOLY00152757] [MT6290][CMCC 2016 new requirement][SMS][Stop Receiving RP-ACK when UE from 4G connected mode to idle mode]
+ * .
+ *
+ * 03 27 2013 benjamin.kuo
+ * [MOLY00011934] LTE MM IT CBr merge to MOLY
+ * .
+ *
+ * 03 14 2013 tuan-che.chen
+ * [MOLY00009163] LTE Multimode merge back to MOLY
+ * merge back to MOLY.
+ *
+ * 11 06 2012 yu.huang
+ * [MOLY00005322] TATAKA merge to MOLY
+ * [EVAL] Add EVAL related interfaces and common strust
+ ****************************************************************************/
+
+
+#ifndef  _SMS_EVAL_STRUCT_INC
+#define  _SMS_EVAL_STRUCT_INC
+
+
+#include "sms_eval_enums.h"
+#include "l3_inc_enums.h"
+
+
+/***** message structure definition *****/
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    sms_eval_reg_status_enum    state;
+
+} sms_eval_reg_status_ind_struct;
+
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    sms_eval_est_rej_cause_enum cause;
+    
+} sms_eval_est_rej_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    sms_eval_rel_ind_cause_enum cause;
+    
+} sms_eval_rel_ind_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    kal_uint16 transaction_id;
+    sms_eval_unitdata_cnf_result_enum result;
+    
+} sms_eval_unitdata_cnf_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    kal_uint16 transaction_id;		
+    
+} sms_eval_unitdata_req_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    sms_status_enum sms_status;
+    sms_direction_enum sms_direction;
+
+} sms_eval_sms_status_req_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    imcsms_status_enum imcsms_status;   
+} imcsms_eval_mt_sms_over_ims_status_req_struct;
+
+#if 0 /* mark empty primitive message structure */
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* 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 /* mark empty primitive message structure */
+
+
+#endif   /* ----- #ifndef _SMS_EVAL_STRUCT_INC ----- */
+
diff --git a/mcu/protocol/interface/lte/smsal_eval_struct.h b/mcu/protocol/interface/lte/smsal_eval_struct.h
new file mode 100644
index 0000000..deba16d
--- /dev/null
+++ b/mcu/protocol/interface/lte/smsal_eval_struct.h
@@ -0,0 +1,118 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   smsal_eval_struct.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   message and common structure definition between SMSAL and EVAL module
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 06 11 2019 ian-yw.chen
+ * [MOLY00365575] [Gen97] 5G CB/PWS development
+ *  L4 part (MPD)
+ *
+ * 04 02 2014 edwin.liu
+ * [MOLY00060012] AT+ECBMR to remove modem CB records
+ * 	.
+ *
+ * 01 22 2013 benjamin.kuo
+ * [MOLY00009163] LTE Multimode merge back to MOLY
+ *
+ * 01 22 2013 benjamin.kuo
+ * [MOLY00009163] LTE Multimode merge back to MOLY
+ *
+ * 01 22 2013 benjamin.kuo
+ * [MOLY00009163] LTE Multimode merge back to MOLY
+ * MOLY_CBr to MOLY.
+ *
+ * 11 06 2012 yu.huang
+ * [MOLY00005322] TATAKA merge to MOLY
+ * [EVAL] Add EVAL related interfaces and common strust
+ ****************************************************************************/
+
+
+#ifndef  SMSAL_EVAL_STRUCT_INC
+#define  SMSAL_EVAL_STRUCT_INC
+
+#include "l3_inc_enums.h"
+#include "ps_public_struct.h"
+
+
+/***** message structure definition *****/
+
+typedef smsal_4g5g_cbch_req_struct smsal_eval_cbch_req_struct;
+
+
+typedef smsal_4g5g_cb_update_req_struct smsal_eval_cb_update_req_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+} smsal_eval_cb_reconfig_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   geography_type;
+
+} smsal_eval_cb_gs_change_ind_struct;
+
+
+
+typedef smsal_4g5g_cb_data_ind_struct smsal_eval_cb_data_ind_struct;
+
+
+typedef smsal_4g5g_cb_msg_removal_req_struct smsal_eval_cb_msg_removal_req_struct;
+
+
+#endif   /* ----- #ifndef SMSAL_EVAL_STRUCT_INC ----- */
+
diff --git a/mcu/protocol/interface/lte/tcm_eval_enums.h b/mcu/protocol/interface/lte/tcm_eval_enums.h
new file mode 100644
index 0000000..4f16362
--- /dev/null
+++ b/mcu/protocol/interface/lte/tcm_eval_enums.h
@@ -0,0 +1,155 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   tcm_eval_enums.h 
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   common enum definition between TCM and EVAL module
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 03 08 2018 renhuang.liu
+ * [MOLY00312318] [Gen95][ESM][PAM] SEW2 Development
+ * Add EPS_REQ_TYPE_HANDOVER_OF_EMERGENCY and related codes
+ *
+ * 09 26 2016 vera.yeh
+ * [MOLY00205116] [6293][ESM][TFTLIB] new feature/re-arch item porting to UMOLYA trunk
+ * [ESM][OA] PS.DEV proting to UMOLYA.Trunk.
+ * 	1. wlan offload IEI/interface/enum/structure
+ * 	2. iLM rename for GEMINI_suspend/resume
+ * 	3. LTE QCI default value
+ *
+ * 11 06 2012 yu.huang
+ * [MOLY00005322] TATAKA merge to MOLY
+ * [EVAL] Add EVAL related interfaces and common strust
+ ****************************************************************************/
+
+
+#ifndef  _TCM_EVAL_ENUMS_INC
+#define  _TCM_EVAL_ENUMS_INC
+
+
+#include "ps_public_struct.h"
+#include "l3_inc_enums.h"
+
+#define MAX_APN_LEN                     100
+
+
+/***** common enum definition *****/
+typedef enum
+{
+    TCMESM_REQ_REASON_NULL,
+    TCMESM_REQ_REASON_REGISTER,
+    TCMESM_REQ_REASON_ADD_PDN_CONN,
+    TCMESM_REQ_REASON_ALLOC_BEARER_RSC,
+    TCMESM_REQ_REASON_MOD_BEARER_RSC,
+    TCMESM_REQ_REASON_DEACT_DED_BEARER,
+    TCMESM_REQ_REASON_RMV_PDN_CONN
+
+} tcmesm_req_reason_enum;
+
+
+typedef enum
+{
+    EPS_REQ_TYPE_INITIAL_REQ = 1,
+    EPS_REQ_TYPE_HANDOVER    = 2,
+    EPS_REQ_TYPE_EMERGENCY   = 4,
+    EPS_REQ_TYPE_HANDOVER_OF_EMERGENCY = 6 //24.008 CR2996_R14_C1-165109 handover of emergency bearer services
+    	
+} eps_req_type_enum;
+
+
+typedef enum
+{
+    EPS_PDN_TYPE_NONE   = 0,
+    EPS_PDN_TYPE_IPV4   = 1,
+    EPS_PDN_TYPE_IPV6   = 2,
+    EPS_PDN_TYPE_IPV4V6 = 3
+
+} eps_pdn_type_enum;
+
+
+typedef enum
+{
+	WLAN_OFFLOAD_IND_3G4G_PROHIBIT 			= 0,
+	WLAN_OFFLOAD_IND_3G_PROHIBIT_4G_ALLOW 	= 1,
+	WLAN_OFFLOAD_IND_3G_ALLOW_4G_PROHIBIT 	= 2,
+	WLAN_OFFLOAD_IND_3G4G_ALLOW 			= 3
+} wlan_offload_ind_enum;
+
+
+typedef enum
+{
+    TCMESM_EPSB_NONE,
+    TCMESM_EPSB_ACTIVE,
+    TCMESM_EPSB_MODIFY
+
+} tcmesm_epsb_act_enum;
+
+
+typedef enum
+{
+    TCMESM_MOD_NONE,
+    TCMESM_MOD_QOS,
+    TCMESM_MOD_TFT,
+    TCMESM_MOD_QOS_TFT
+    
+} tcmesm_mod_type_enum;
+
+
+typedef enum
+{
+    TCMESM_PROC_NONE,
+    TCMESM_PROC_SUCCESS_IN_L4_VIEW,
+    TCMESM_PROC_FAILURE_IN_L4_VIEW
+    
+} tcmesm_proc_result_enum;
+
+
+#endif   /* ----- #ifndef _TCM_EVAL_ENUMS_INC ----- */
+
diff --git a/mcu/protocol/interface/lte/tcm_eval_struct.h b/mcu/protocol/interface/lte/tcm_eval_struct.h
new file mode 100644
index 0000000..9896f79
--- /dev/null
+++ b/mcu/protocol/interface/lte/tcm_eval_struct.h
@@ -0,0 +1,552 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   tcm_eval_struct.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   message and common structure definition between TCM and EVAL module
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 07 25 2019 poying.chuang
+ * [MOLY00423200] [VMOLY] L4 PS Gen93/Gen95 CR sync to Gen97
+ * 	
+ * 	- [MPD] L4 code .
+ *
+ * 06 27 2019 mike.lu
+ * [MOLY00399993] [Gen97][VMOLY] interworking withN26 features
+ * 	
+ * 	[5G iRAT potential bug fix] 
+ * 	1. Do not update APN-AMBR if NW doesn't assign it.
+ * 	2. Remove un-used WLAN Offload Ind. from interface of updating EPSBCs after 5G4.
+ * 	3. Fix Coding Defect: when 5G4, ESM updates wrong R99 QoS Value to TCM.
+ * 	.
+ *
+ * 04 19 2019 mike.lu
+ * [MOLY00399993] [Gen97][VMOLY] interworking withN26 features (non-ESM folder)
+ *
+ * 03 26 2019 mike.lu
+ * [MOLY00393456] [Gen97][VMOLY] 45G InterRAT & interSystem feature
+ * 	
+ * 	.
+ *
+ * 11 29 2018 mike.lu
+ * [MOLY00361576] TS24.301 R15.4 Aligment
+ * .
+ *
+ * 10 29 2018 mike.lu
+ * [MOLY00361576] TS24.301 R15.4 Aligment
+ * 	
+ * 	[MOLY00346729] VMOLY_CBr patch back to VMOLY TRUNK
+ * 	
+ * 	.
+ *
+ * 02 06 2017 parthasarathy.nagarajan
+ * [MOLY00227856] [6293][MTBF][TMOUS ePDG->LTE IMS handover] Response Time Guaranteed PDN Command
+ * Guaranteed PDN response time, Interface changes
+ *
+ * 11 09 2016 danny.kuo
+ * [MOLY00184907] [MOLY00142123][call for patch][KOR MNO][EMM][LGU+]attach reject handling if OTA PDN
+ * .
+ *
+ * 09 26 2016 vera.yeh
+ * [MOLY00205116] [6293][ESM][TFTLIB] new feature/re-arch item porting to UMOLYA trunk
+ * [ESM][OA] PS.DEV proting to UMOLYA.Trunk.
+ * 	1. wlan offload IEI/interface/enum/structure
+ * 	2. iLM rename for GEMINI_suspend/resume
+ * 	3. LTE QCI default value
+ *
+ * 06 27 2016 sj.syue
+ * [MOLY00185907] [MT6293] [ENAS] UMOLY merge to UMOLYA
+ * [PAM] Common.
+ *
+ * 03 16 2016 mika.kaikkonen
+ * [MOLY00145562] [R12] CR2088 UE retry behavior for ESM cause codes - SM-ESM-EVAL interface
+ *
+ * 08 31 2015 bo-kai.huang
+ * [MOLY00109918] [eTCM] Interface change for IMS PDP flag
+ * Merge for ATT.
+ *
+ * 08 31 2015 bo-kai.huang
+ * [MOLY00109918] [eTCM] Interface change for IMS PDP flag
+ * Merge for ATT.
+ *
+ * 06 18 2015 panu.peisa
+ * [MOLY00122487] EMM, ESM & PAM module VzW feature porting from 6290 to 6291
+ * 	SWRD part, change have dependency to LTE_SEC parts.
+ *
+ * 06 16 2015 mika.kaikkonen
+ * [VZ_REQ_LTEDATARETRY_7735] PAM Spesific parts configuration changes.
+ *
+ * 06 13 2015 mika.kaikkonen
+ * [VZ_REQ_LTEDATARETRY_7785] Preparation: VzW specifc utility functions and interface updates
+ *
+ * 02 13 2015 carlson.lin
+ * [MOLY00091822] RATDM reorganization
+ * RATDM merge LTM, SM and ESM related interface checkin
+ *
+ * 11 24 2014 carlson.lin
+ * [MOLY00084165] [UMOLY][R10][R11] NAS check-in from 6291_DEV to UMOLY Trunk
+ * sync interface comment (MTC_CBr CL 877656 and 881743).
+ *
+ * 11 17 2014 jeffery.chen
+ * [MOLY00084634] [UMOLY][R10][R11] NAS check-in from 6291_DEV to UMOLY
+ * [R10][R11] NAS check-in from 6291_DEV to UMOLY
+ *
+ * 03 06 2014 nick.wang
+ * [MOLY00058412] [MOLY] TFT validate revision
+ * 	ESM trigger bearer deactivate
+ *
+ * 01 21 2014 wcpuser_integrator
+ * [MOLY00054475] SGLTE option rename
+ * .
+ *
+ * 10 18 2013 xiaona.chen
+ * [MOLY00041595] [MT6290E1][MMDS_DC] MMDC feature patch back to MOLY trunk
+ * .
+ *
+ * 01 22 2013 roy.lin
+ * [MOLY00009163] LTE Multimode merge back to MOLY
+ * Multimode interface re-architecture.
+ *
+ * 11 06 2012 yu.huang
+ * [MOLY00005322] TATAKA merge to MOLY
+ * [EVAL] Add EVAL related interfaces and common strust
+ ****************************************************************************/
+
+
+#ifndef  _TCM_EVAL_STRUCT_INC
+#define  _TCM_EVAL_STRUCT_INC
+
+
+#include "tcm_eval_enums.h"
+#include "ps_public_enum.h"
+#include "ps_public_struct.h"
+#include "tcm2sm_struct.h"
+#include "tftlib_common_struct.h"
+#include "tcm_context_public.h"
+
+/* Multimode */
+#include "irat_common_struct.h"
+#include "mcd_l3_inc_gprs_struct.h"
+#include "l3_inc_enums.h"
+
+#include "mcd_l3_inc_struct.h"
+
+#include "general_qos_struct.h"
+
+#define MAX_CONCATE_DEDEBC_NUM          10
+//#define MAX_BEARER_CTXT_NUM             11
+
+
+/***** common structure definition *****/
+typedef struct
+{
+    kal_uint8                   length; // TODO: Roy: rename to "protocol_id_num"
+    config_option_struct        pco_list[MAX_NUM_CONFIG_OPTION_PACKETS];
+} tcmesm_pco_struct;
+
+//__WLAN_OL__
+typedef struct
+{
+	kal_bool				valid;
+	wlan_offload_ind_enum	value;
+} wlan_offload_ind_struct;
+
+
+typedef struct
+{
+    kal_bool                    ext_present;
+    kal_bool                    ext2_present;
+    kal_uint8                   dl_apn_ambr;
+    kal_uint8                   dl_apn_ambr_ext;
+    kal_uint8                   dl_apn_ambr_ext2;
+    kal_uint8                   ul_apn_ambr;
+    kal_uint8                   ul_apn_ambr_ext;
+    kal_uint8                   ul_apn_ambr_ext2;
+
+    // __R15.4__
+    kal_bool                    is_use_ext_apn_ambr_for_dl;
+    kal_bool                    is_use_ext_apn_ambr_for_ul;
+    kal_uint64                  ext_apn_ambr_for_dl;
+    kal_uint64                  ext_apn_ambr_for_ul;
+
+} eps_apn_ambr_struct;
+
+
+typedef struct
+{
+    kal_uint8                   ebi;
+    tcmesm_epsb_act_enum        epsb_action;
+    bcm_enum                    bcm_info;    
+    kal_bool                    eps_qos_present;
+    eps_qos_struct              eps_qos;
+    kal_bool                    r99_qos_present;
+    qos_struct                  r99_qos;
+    kal_bool                    apn_ambr_present;
+    eps_apn_ambr_struct         apn_ambr;
+    kal_bool                    tft_present;
+    tft_info_struct             *tft;
+    tcmesm_pco_struct           *pco;
+	wlan_offload_ind_struct 	wlan_offload_ind;	//__WLAN_OL__
+} tcmesm_updated_epsb_info_struct;
+
+typedef struct
+{
+    kal_uint8                   from_psi;    
+    kal_uint8                   to_ebi;
+    kal_uint8                   linked_ebi;
+    kal_bool                    eps_qos_present;
+    eps_qos_struct              eps_qos;
+    kal_bool                    r99_qos_present;
+    qos_struct                  r99_qos;
+    kal_bool                    apn_ambr_present;
+    eps_apn_ambr_struct         apn_ambr;
+} tcm_esm_5g4_context_transfer_epsb_info_struct;
+
+/***** message structure definition *****/
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   pti;
+    kal_uint8                   cid;
+    tcmesm_req_reason_enum      req_reason;
+    eps_req_type_enum           req_type;
+    eps_pdn_type_enum           pdn_type;
+    kal_bool                    pco_cipher_needed;
+    apn_struct                  apn;
+    tcmesm_pco_struct           *pco;
+    nas_priority_config_enum    nas_priority_config ;   // __MTC_SUPPORT__
+    eab_override_config_enum    eab_override_config ;   // __MTC_SUPPORT__    
+    tcm_im_cn_signalling_enum   user_defined_im_cn_signalling_flag;
+    kal_bool                    is_vzw_apn;             // For ESM handling PCO
+    req_processing_info_struct  req_processing_info;
+    kal_bool                    is_ota_pdn;
+    kal_uint8                   psi;
+} esmreg_pdn_conn_est_req_struct;
+
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   pti;
+    kal_uint8                   linked_ebi;
+    kal_uint8                   cid;
+    eps_qos_struct              eps_qos;
+    tft_info_struct             *tft;
+    tcmesm_pco_struct           *pco;
+    nas_priority_config_enum    nas_priority_config ;   // __MTC_SUPPORT__
+    eab_override_config_enum    eab_override_config ;   // __MTC_SUPPORT__   
+    tcm_im_cn_signalling_enum   user_defined_im_cn_signalling_flag;
+    req_processing_info_struct  req_processing_info;
+} esmreg_bearer_rsc_alloc_req_struct;
+
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   pti;
+    kal_uint8                   ebi;
+    kal_bool                    eps_qos_present;
+    eps_qos_struct              eps_qos;
+    tft_info_struct             *tft;
+    tcmesm_pco_struct           *pco;
+    nas_priority_config_enum    nas_priority_config ;   // __MTC_SUPPORT__
+    eab_override_config_enum    eab_override_config ;   // __MTC_SUPPORT__
+    req_processing_info_struct  req_processing_info;    
+} esmreg_bearer_rsc_mod_req_struct;
+
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   pti;
+    kal_uint8                   ebi;
+    kal_uint8                   cid;
+    tcmesm_req_reason_enum      req_reason;
+    tcm_pdp_deact_reason_enum   deact_reason;
+    tft_info_struct             *tft;
+    tcmesm_pco_struct           *pco;
+    nas_priority_config_enum    nas_priority_config ;   // __MTC_SUPPORT__
+    eab_override_config_enum    eab_override_config ;   // __MTC_SUPPORT__   
+    // __VZW__ __VZW_7__
+    /* Notify ESM to tell EMM to start T3402 for VZW class 3 APN */
+    kal_bool                    start_t3402_for_class3;
+
+    /* Indicate if "plmn_id_upon_pdn_est" exists */
+    kal_bool                    is_plmn_id_exist;     // VzW: Support ESM trigger detach with T3402    
+    
+    /* For the case which needs to start T3402 due to last PDN deactivation,
+     * T3402 should be started with respect to the PDN's PLMN ID upon establishment.
+     * (NOTE: Current PLMN ID is not accurate, since it might be changed from time to time)
+     */
+    plmn_id_struct              plmn_id_upon_pdn_est; // VzW: Support ESM trigger detach with T3402
+    
+	req_processing_info_struct  req_processing_info;
+} esmreg_epsb_deact_req_struct;
+
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    kal_uint16                  seq_id;
+
+} esmreg_pdn_conn_est_rsp_struct;
+
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    kal_uint16                  seq_id;
+
+} esmreg_pdn_conn_update_rsp_struct;
+
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   pti;
+    ps_cause_enum               failure_cause;
+    tcmesm_pco_struct           *pco;
+    kal_bool                    is_T3396_present; // R12 CR2088: Back-off timer value present
+    kal_uint32                  T3396_value_in_sec; // R12 CR2088: Back-off timer value in sec
+    kal_bool                    is_re_attempt_indicator_present; //R12 CR2088
+    kal_uint8                   re_attempt_indicator; //R12 CR 2088
+
+    /** Indicates the below current_plmn_id should be used or not. 
+     *  - TRUE,  if PDN-CONN-REQ is sent with ATTACH-request procedure,
+     *            the ATTACH is rejected by the Network, and the EMM use
+     *            the ESM_EMM_GET_ESM_CAUSE_IND to carry PDN_CONNECTIVITY_REJECT 
+     *            to ESM
+     *  - FALSE, other cases (ex: ESM local reject PDN-CONN-REQ for ATTACH because 
+     *                         APN is this_is_an_invalid_apn,
+     *                        or standalone PDN activation reject, ... etc)
+     *    - The current-plmn-id would be updated by 
+     *       nwsel_pam_eq_plmn_list_update_ind_struct . 
+     */
+    kal_bool is_valid_current_plmn_id ;
+
+    /** Originally sent by EMM to indicate the current-plmn-id for the ATTACH-reject. 
+     *  - For 4G attach-reject case, there is no eq-plmn so only
+     *    current-plmn-id is needed for PAM's arbitration . 
+     */
+    plmn_id_struct current_plmn_id ;
+    
+    // Indicate whether to additionally wait for available_apn_info
+    kal_bool                    wait_available_apn_info;      // __VZW__ __VZW_2__
+    kal_bool                    is_change_to_apn_class_valid; //__VZW__
+    kal_uint8                   change_to_apn_class;          //__VZW__
+} esmreg_pdn_conn_est_rej_struct;
+
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   pti;
+    ps_cause_enum               failure_cause;
+    tcmesm_pco_struct           *pco;
+    kal_bool                    is_T3396_present; // R12 CR2088: Back-off timer value present
+    kal_uint32                  T3396_value_in_sec; // R12 CR2088: Back-off timer value in sec
+    kal_bool                    is_re_attempt_indicator_present; //R12 CR2088
+    kal_uint8                   re_attempt_indicator; //R12 CR2088
+    // __R10_FEATURE_MTC__ __VZW__
+    // Indicates the below current_plmn_id should be used or not.
+    kal_bool                    is_valid_current_plmn_id;
+    // current_plmn_id for bearer rsc allocation reject
+    plmn_id_struct              current_plmn_id;
+} esmreg_bearer_rsc_alloc_rej_struct;
+
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   pti;
+    ps_cause_enum               failure_cause;
+    tcmesm_pco_struct           *pco;
+    kal_bool                    is_T3396_present; // R12 CR2088: Back-off timer value present
+    kal_uint32                  T3396_value_in_sec; // R12 CR2088: Back-off timer value in sec
+    kal_bool                    is_re_attempt_indicator_present; //R12 CR2088
+    kal_uint8                   re_attempt_indicator; //R12 CR2088
+    // __R10_FEATURE_MTC__ __VZW__
+    // Indicates the below current_plmn_id should be used or not. 
+    kal_bool                    is_valid_current_plmn_id;
+    // current_plmn_id for bearer rsc modification reject
+    plmn_id_struct              current_plmn_id;
+} esmreg_bearer_rsc_mod_rej_struct;
+
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   pti;
+    ps_cause_enum               failure_cause;
+    tcmesm_pco_struct           *pco;
+
+} esmreg_epsb_deact_rej_struct;
+
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    kal_uint8                       pti;
+    kal_uint8                       linked_ebi;
+    kal_uint16                      seq_id;
+    apn_struct                      apn;
+    ip_addr_struct                  ip_addr;
+    kal_bool                        r99_qos_present;
+    qos_struct                      r99_qos;
+    eps_qos_struct                  eps_qos;
+    kal_bool                        apn_ambr_present;
+    eps_apn_ambr_struct             apn_ambr;
+    kal_bool                        addr_type_limit_cause_present;
+    ps_cause_enum                   addr_type_limit_cause;
+    tcmesm_pco_struct               *pco;
+    kal_uint8                       act_ded_epsb_num;
+    tcmesm_updated_epsb_info_struct act_ded_epsb_info[MAX_CONCATE_DEDEBC_NUM];
+    bcm_enum                        bcm_info;
+    // __R10_FEATURE_MTC__ __VZW__
+    /* Indicates the below pdn_est_plmn_id should be used or not.  */
+    kal_bool                        is_valid_pdn_est_plmn_id;
+    /* The PLMN ID where PDN is established */
+    plmn_id_struct                  pdn_est_plmn_id;
+	wlan_offload_ind_struct			wlan_offload_ind;	// __WLAN_OL__
+    kal_bool						arrearage_flag;
+} esmreg_pdn_conn_est_ind_struct;
+
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    kal_uint8                       pti;
+    kal_uint8                       linked_ebi;
+    kal_uint16                      seq_id;
+    tcmesm_proc_result_enum         proc_result;
+    tcmesm_updated_epsb_info_struct nw_res_epsb_info;
+    kal_uint8                       nw_req_epsb_num;
+    tcmesm_updated_epsb_info_struct nw_req_epsb_info[MAX_BEARER_CTXT_NUM];
+    // __R10_FEATURE_MTC__ __VZW__
+    // Indicates the below pdn_update_plmn_id should be used or not. 
+    kal_bool                        is_valid_pdn_update_plmn_id;
+    // The PLMN ID where PDN is updated
+    plmn_id_struct                  pdn_update_plmn_id;
+} esmreg_pdn_conn_update_ind_struct;
+
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    kal_uint8                       pti;
+    kal_uint8                       ebi;
+    ps_cause_enum                   deact_cause;
+    tcmesm_pco_struct               *pco;
+    kal_bool                        is_T3396_present;
+    kal_uint32                      T3396_value_in_sec;
+    // __R10_FEATURE_MTC__ __VZW__
+    // Indicates the below deact_plmn_id should be used or not. 
+    kal_bool                        is_valid_deact_plmn_id;
+    // The PLMN ID where bearer is deactivated
+    plmn_id_struct                  deact_plmn_id;
+	wlan_offload_ind_struct			wlan_offload_ind;	// __WLAN_OL__
+} esmreg_epsb_deact_ind_struct;
+
+
+/***** interRAT message structure *****/
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+    irat_result_enum irat_result;
+
+} esmreg_rat_change_complete_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                     ebi;
+    tcm_pdp_deact_reason_enum     deact_reason;
+} esmreg_ps_init_bearer_deact_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    nas_priority_config_enum    nas_priority_config ;   // __MTC_SUPPORT__
+    eab_override_config_enum    eab_override_config ;   // __MTC_SUPPORT__   
+} esmreg_dual_priority_config_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 num_of_epsb_info;
+    tcm_esm_5g4_context_transfer_epsb_info_struct epsb_info[MAX_L4_PS_EBI_NUM];
+} esmreg_5g4_context_transfer_ind_struct;
+
+typedef ia_apn_change_req_struct pam_esm_ia_apn_change_req_struct;
+
+#if 0 /*(!defined(__EVAL_ENABLE__)) && (!defined(__ESM_ENABLE__))*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* 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 /* no __EVAL_ENABLE__ */
+
+#endif   /* ----- #ifndef _TCM_EVAL_STRUCT_INC ----- */
+
diff --git a/mcu/protocol/interface/lte/toolchain_dep_lte.h b/mcu/protocol/interface/lte/toolchain_dep_lte.h
new file mode 100644
index 0000000..b2f7f3f
--- /dev/null
+++ b/mcu/protocol/interface/lte/toolchain_dep_lte.h
@@ -0,0 +1,191 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   toolchain_dep_lte.h
+ *
+ * Project:
+ * --------
+ *   Moly
+ *
+ * Description:
+ * ------------
+ *   Macros for different toolchains
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 08 30 2018 jeremy.chen
+ * [MOLY00348399] [MT6295][LR13.R1.MP] remove legacy macros used in previous platform (toolchain_dep_lte.h )
+ * Remove macros used for legacy platforms
+ *
+ * 05 10 2013 moja.hsu
+ * [MOLY00007625] Maintain code
+ * add LS_PHY_EXTSRAM_RW for el1 to wrap Modis/Target.
+ ****************************************************************************/
+
+
+#ifndef __TOOLCHAIN_DEP_H__
+#define __TOOLCHAIN_DEP_H__
+
+#if defined(__MTK_TARGET__)
+    #if defined(__ARMCC_VERSION)
+        #define LINK_SECTION(x)             __attribute__ ((section (x)))
+        #define FUNC_OPTIMIZE(x)
+        #define INLINE __inline
+        #define FUNC_NOINLINE               __attribute__ ((noinline))
+        #define GET_RETURN_ADDR()           (__return_address())
+        #define PACKED_ATTRIBUTE            __attribute__((packed))
+    #elif defined(__GNUC__) /* end of __ARMCC_VERSION */
+        #define LINK_SECTION(x)             __attribute__ ((section (x)))
+        #define FUNC_OPTIMIZE(x)            __attribute__((optimize(x)))
+        #define INLINE inline
+        #define FUNC_NOINLINE               __attribute__ ((noinline))
+        #define GET_RETURN_ADDR()           ((unsigned int)__builtin_return_address(0))
+        #define PACKED_ATTRIBUTE            __attribute__((packed))
+    #else  /* end of __GNUC__ */
+        #error "Unsupported Compiler in Target"
+    #endif
+#else /* Simulator */
+    #if defined(_MSC_VER) && (_MSC_VER >= 1500)
+        void * _ReturnAddress(void);
+        #define LINK_SECTION(x)
+        #define FUNC_OPTIMIZE(x)
+        #define INLINE                      __inline
+        #define FUNC_NOINLINE
+        #define GET_RETURN_ADDR()           ((unsigned int)_ReturnAddress())
+        #define PACKED_ATTRIBUTE            /* VC need use #pragma pack(push, 1) ... #pragma pack(pop)*/
+    #else  /* end of _MSC_VER */
+        #error "Unsupported Compiler in Simulator"
+    #endif
+#endif /* end of __MTK_TARGET__ && Simulator*/
+
+/* Link Sections */
+#define LS_INTERNCODE               LINK_SECTION("INTERNCODE")
+#define LS_INTERNZI                 LINK_SECTION("INTERNZI")
+#define LS_INTERNZI_TP              LINK_SECTION("INTERNZI_TP")
+#define LS_INTSRAM_ROCODE           LINK_SECTION("INTSRAM_ROCODE")
+#define LS_INTSRAM_RODATA           LINK_SECTION("INTSRAM_RODATA")
+#define LS_INTSRAM_RW               LINK_SECTION("INTSRAM_RW")
+#define LS_INTSRAM_ZI               LINK_SECTION("INTSRAM_ZI")
+#define LS_INTSRAM_EX_ROCODE        LINK_SECTION("INTSRAM_EX_ROCODE")
+#define LS_INTERNRW                 LINK_SECTION("INTERNRW")
+#define LS_INTERNCONST              LINK_SECTION("INTERNCONST")
+#define LS_DRAM_EX_ROCODE           LINK_SECTION("DRAM_EX_ROCODE")
+#define LS_EMIINITZI                LINK_SECTION("EMIINITZI")
+#define LS_EMIINITCODE              LINK_SECTION("EMIINITCODE")
+#define LS_LEADING_PART             LINK_SECTION("LEADING_PART")
+#define LS_SECOND_PART              LINK_SECTION("SECOND_PART")
+#define LS_SNORCODE                 LINK_SECTION("SNORCODE")
+#define LS_INTERNBLOCK1_RW          LINK_SECTION("INTERNBLOCK1_RW")
+#define LS_INTERNBLOCK2_RW          LINK_SECTION("INTERNBLOCK2_RW")
+#define LS_INTERNBLOCK1_ZI          LINK_SECTION("INTERNBLOCK1_ZI")
+#define LS_INTERNBLOCK2_ZI          LINK_SECTION("INTERNBLOCK2_ZI")
+#define LS_INTERNBLOCK1_CO          LINK_SECTION("INTERNBLOCK1_CO")
+#define LS_INTERNBLOCK2_CO          LINK_SECTION("INTERNBLOCK2_CO")
+#define LS_SHOULD_NOT_USED_RODATA   LINK_SECTION("SHOULD_NOT_USED_RODATA")
+#define LS_DYNAMICCACHEABLERW_NC    LINK_SECTION("DYNAMICCACHEABLERW_NC")
+#define LS_DYNAMICCACHEABLEZI_NC    LINK_SECTION("DYNAMICCACHEABLEZI_NC")
+#define LS_DYNAMICCACHEABLERW_C     LINK_SECTION("DYNAMICCACHEABLERW_C")
+#define LS_DYNAMICCACHEABLEZI_C     LINK_SECTION("DYNAMICCACHEABLEZI_C")
+#define LS_PHY_EXTSRAM              LINK_SECTION("PHY_EXTSRAM")
+#define LS_PHY_EXTSRAM_RW           LINK_SECTION("PHY_EXTSRAM_RW")
+
+#define LINK_SECTION_NONCACHEDRW    LINK_SECTION("NONCACHEDRW")
+#define LINK_SECTION_NONCACHEDZI    LINK_SECTION("NONCACHEDZI")
+
+
+
+/* if __REDUCE_TCM_SUPPORT__ is defined,
+ * LS_INTXXXCODE_REDUCE_TCM_SUPPORT is placed in normal text section
+ */
+#if defined(__REDUCE_TCM_SUPPORT__)
+    #define LS_INTERNCODE_REDUCE_TCM_SUPPORT
+    #define LS_INTSRAM_ROCODE_REDUCE_TCM_SUPPORT
+#else
+    #define LS_INTERNCODE_REDUCE_TCM_SUPPORT LS_INTSRAM_ROCODE
+    #define LS_INTSRAM_ROCODE_REDUCE_TCM_SUPPORT LS_INTSRAM_ROCODE
+#endif
+
+
+/* Predefined Macro: http://www.cppblog.com/byc/archive/2010/11/15/133663.html
+
+
+C++:
+    __cplusplus
+
+GCC:
+    __GNUC__ 
+    __GNUC_MINOR__ 
+    __GNUC_PATCHLEVEL__
+    __GNUG__    equivalent to testing (__GNUC__ && __cplusplus).
+
+MinGW:
+    __MINGW32__
+    __STDC__
+    __GNUC__
+    _WIN32, __WINNT__, __MINGW32__, _X86_, i386, __GNUC__
+
+VC:
+    _WIN32
+    _MSC_VER
+    _ATL_VER
+    _DEBUG    Defined when compiling with /LDd, /MDd, /MLd, and /MTd. 
+    _M_IX86
+    _MT    Defined when /MD or /MDd (Multithreaded DLL) or /MT or /MTd (Multithreaded) is specified.  
+    _UNICODE
+
+CYGWIN:
+    __CYGWIN32__
+
+    Intel Compiler:
+    __INTEL_COMPILER
+
+Borland:
+    __WIN32__
+    __BORLANDC_
+
+
+*/
+
+#endif
+
+
diff --git a/mcu/protocol/interface/lte/vdm_eval_struct.h b/mcu/protocol/interface/lte/vdm_eval_struct.h
new file mode 100644
index 0000000..68e86b5
--- /dev/null
+++ b/mcu/protocol/interface/lte/vdm_eval_struct.h
@@ -0,0 +1,52 @@
+/*****************************************************************************
+*  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  _VDM_EVAL_STRUCT_H
+#define  _VDM_EVAL_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "ps_public_enum.h"
+
+#if defined(__ECALL_SUPPORT__) || defined(__NG_ECALL_SUPPORT__)
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool            is_ecall_success;
+    ecall_type_enum     ecall_type;
+} vdm_eval_ecall_end_ind_struct;
+#endif
+#endif
+