[Feature][Modem]Update MTK MODEM V1.6 baseline version: MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6

MTK modem version: MT2735_IVT_MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6.tar.gz
RF  modem version: NA

Change-Id: I45a4c2752fa9d1a618beacd5d40737fb39ab64fb
diff --git a/mcu/interface/service/em/em_as_common_public_struct.h b/mcu/interface/service/em/em_as_common_public_struct.h
new file mode 100644
index 0000000..4105c59
--- /dev/null
+++ b/mcu/interface/service/em/em_as_common_public_struct.h
@@ -0,0 +1,141 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_as_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef _EM_AS_PUBLIC_STRUCT_H
+#define _EM_AS_PUBLIC_STRUCT_H
+
+//***** Common for RRC and ERRC  ******//
+typedef enum {
+    EM_KPI_STATUS_BEGIN,
+    EM_KPI_STATUS_SUCCESS,
+    EM_KPI_STATUS_FAILURE,
+
+    EM_KPI_STATUS_NUM
+} em_kpi_status_enum;
+
+//***** Common for RRC and ERRC  ******//
+typedef enum {
+    EM_KPI_FAILURE_TYPE_INVALID,
+    EM_KPI_FAILURE_TYPE_S_FAILURE,
+    EM_KPI_FAILURE_TYPE_SIB_READ_FAILURE,
+    EM_KPI_FAILURE_TYPE_DL_WEAK_IND,
+    EM_KPI_FAILURE_TYPE_CELL_BARRED,
+    EM_KPI_FAILURE_TYPE_NON_EQ_PLMN,
+    EM_KPI_FAILURE_TYPE_FORBIDDEN_TA,
+    EM_KPI_FAILURE_TYPE_ABORTED,
+    EM_KPI_FAILURE_TYPE_FORBIDDEN_CSG_ID,
+    EM_KPI_FAILURE_TYPE_IRAT_RESEL_FAILURE,
+    EM_KPI_FAILURE_TYPE_FREQ_BARRED,
+    EM_KPI_FAILURE_TYPE_OTHERS
+} em_kpi_failure_type_enum;
+
+
+
+//***** Common for EL1 and EL2  ******//
+typedef enum
+{
+    EM_RNTI_NONE                = 0,
+    EM_C_RNTI                   = 1,
+    EM_SPSC_RNTI                = 2,
+    EM_P_RNTI                   = 3,
+    EM_RA_RNTI                  = 4,
+    EM_TC_RNTI                  = 5,
+    EM_SI_RNTI                  = 6,
+    EM_TPC_PUSCH_RNTI           = 7,
+    EM_TPC_PUCCH_RNTI           = 8,
+    EM_M_RNTI                   = 9,
+    EM_RNTI_INVALID             = 255
+} em_dl_rnti_enum;
+
+//***** Common for EL1 and EL2  ******//
+typedef enum
+{
+    EM_cRNTI                    = 0,
+    EM_spscRNTI                 = 1,
+    EM_pRNTI                    = 2,
+    EM_raRNTI                   = 3,
+    EM_tcRNTI                   = 4,
+    EM_siRNTI                   = 5,
+    EM_tpcPuschRNTI             = 6,
+    EM_tpcPucchRNTI             = 7,
+    EM_mbmsRNTI                 = 8,
+    EM_invalidRNTI              = 255
+} em_emac_rnti_enum;
+
+
+#endif /* _EM_AS_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_audio_public_struct.h b/mcu/interface/service/em/em_audio_public_struct.h
new file mode 100644
index 0000000..ded5e36
--- /dev/null
+++ b/mcu/interface/service/em/em_audio_public_struct.h
@@ -0,0 +1,311 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+ /*******************************************************************************
+ * Filename:
+ * ---------
+ *   em_audio_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_AUDIO_PUBLIC_STRUCT_H
+#define _EM_AUDIO_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+
+
+typedef enum
+{
+
+    SPH_CODEC_FR = 0,
+    SPH_CODEC_HR,
+    SPH_CODEC_EFR,
+    SPH_CODEC_AMR_12_20,
+    SPH_CODEC_AMR_10_20,
+    SPH_CODEC_AMR_7_95,
+    SPH_CODEC_AMR_7_40,
+    SPH_CODEC_AMR_6_70,
+    SPH_CODEC_AMR_5_90,
+    SPH_CODEC_AMR_5_15,
+    SPH_CODEC_AMR_4_75,
+    SPH_CODEC_AMR_SID,
+    SPH_CODEC_AMR_NODATA,
+
+    SPH_CODEC_AMRWB_6_60 = 0x20,
+    SPH_CODEC_AMRWB_8_85,
+    SPH_CODEC_AMRWB_12_65,
+    SPH_CODEC_AMRWB_14_25,
+    SPH_CODEC_AMRWB_15_85,
+    SPH_CODEC_AMRWB_18_25,
+    SPH_CODEC_AMRWB_19_85,
+    SPH_CODEC_AMRWB_23_05,
+    SPH_CODEC_AMRWB_23_85,
+    SPH_CODEC_AMRWB_SID,
+    SPH_CODEC_LOST_FRAME,
+
+    SPH_CODEC_C2K_SO1=0x30, // c2k
+    SPH_CODEC_C2K_SO3,
+    SPH_CODEC_C2K_SO17,
+    SPH_CODEC_C2K_SO68,
+    SPH_CODEC_C2K_SO73,
+    SPH_CODEC_C2K_SO73WB,
+
+
+    SPH_CODEC_G711=0x60,
+    SPH_CODEC_G722,
+    SPH_CODEC_G723_1,
+    SPH_CODEC_G726,
+    SPH_CODEC_G729,
+
+    SPH_CODEC_EVS_08K_005_9    =0x80,
+    SPH_CODEC_EVS_08K_002_8    =0x80,
+    SPH_CODEC_EVS_08K_007_2    =0x81,
+    SPH_CODEC_EVS_08K_008_0    =0x82,
+    SPH_CODEC_EVS_08K_009_6    =0x83,
+    SPH_CODEC_EVS_08K_013_2    =0x84,
+    SPH_CODEC_EVS_08K_016_4    =0x85,
+    SPH_CODEC_EVS_08K_024_4    =0x86,
+    SPH_CODEC_EVS_08K_032_0    =0x87,
+    SPH_CODEC_EVS_08K_048_0    =0x88,
+    SPH_CODEC_EVS_08K_064_0    =0x89,
+    SPH_CODEC_EVS_08K_096_0    =0x8A,
+    SPH_CODEC_EVS_08K_128_0    =0x8B,
+    SPH_CODEC_EVS_08K_002_4_SID   =0x8C,
+    SPH_CODEC_EVS_08K_000_0_REV   =0x8D,
+    SPH_CODEC_EVS_08K_000_0_LOST  =0x8E,
+    SPH_CODEC_EVS_08K_000_0_NODATA=0x8F,
+
+    SPH_CODEC_EVS_16K_005_9    =0x90,
+    SPH_CODEC_EVS_16K_002_8    =0x90,
+    SPH_CODEC_EVS_16K_007_2    =0x91,
+    SPH_CODEC_EVS_16K_008_0    =0x92,
+    SPH_CODEC_EVS_16K_009_6    =0x93,
+    SPH_CODEC_EVS_16K_013_2    =0x94,
+    SPH_CODEC_EVS_16K_016_4    =0x95,
+    SPH_CODEC_EVS_16K_024_4    =0x96,
+    SPH_CODEC_EVS_16K_032_0    =0x97,
+    SPH_CODEC_EVS_16K_048_0    =0x98,
+    SPH_CODEC_EVS_16K_064_0    =0x99,
+    SPH_CODEC_EVS_16K_096_0    =0x9A,
+    SPH_CODEC_EVS_16K_128_0    =0x9B,
+    SPH_CODEC_EVS_16K_002_4_SID   =0x9C,
+    SPH_CODEC_EVS_16K_000_0_REV   =0x9D,
+    SPH_CODEC_EVS_16K_000_0_LOST  =0x9E,
+    SPH_CODEC_EVS_16K_000_0_NODATA=0x9F,
+
+    SPH_CODEC_EVS_32K_005_9    =0xA0,
+    SPH_CODEC_EVS_32K_002_8    =0xA0,
+    SPH_CODEC_EVS_32K_007_2    =0xA1,
+    SPH_CODEC_EVS_32K_008_0    =0xA2,
+    SPH_CODEC_EVS_32K_009_6    =0xA3,
+    SPH_CODEC_EVS_32K_013_2    =0xA4,
+    SPH_CODEC_EVS_32K_016_4    =0xA5,
+    SPH_CODEC_EVS_32K_024_4    =0xA6,
+    SPH_CODEC_EVS_32K_032_0    =0xA7,
+    SPH_CODEC_EVS_32K_048_0    =0xA8,
+    SPH_CODEC_EVS_32K_064_0    =0xA9,
+    SPH_CODEC_EVS_32K_096_0    =0xAA,
+    SPH_CODEC_EVS_32K_128_0    =0xAB,
+    SPH_CODEC_EVS_32K_002_4_SID   =0xAC,
+    SPH_CODEC_EVS_32K_000_0_REV   =0xAD,
+    SPH_CODEC_EVS_32K_000_0_LOST  =0xAE,
+    SPH_CODEC_EVS_32K_000_0_NODATA=0xAF,
+
+    SPH_CODEC_EVS_48K_005_9    =0xB0,
+    SPH_CODEC_EVS_48K_002_8    =0xB0,
+    SPH_CODEC_EVS_48K_007_2    =0xB1,
+    SPH_CODEC_EVS_48K_008_0    =0xB2,
+    SPH_CODEC_EVS_48K_009_6    =0xB3,
+    SPH_CODEC_EVS_48K_013_2    =0xB4,
+    SPH_CODEC_EVS_48K_016_4    =0xB5,
+    SPH_CODEC_EVS_48K_024_4    =0xB6,
+    SPH_CODEC_EVS_48K_032_0    =0xB7,
+    SPH_CODEC_EVS_48K_048_0    =0xB8,
+    SPH_CODEC_EVS_48K_064_0    =0xB9,
+    SPH_CODEC_EVS_48K_096_0    =0xBA,
+    SPH_CODEC_EVS_48K_128_0    =0xBB,
+    SPH_CODEC_EVS_48K_002_4_SID   =0xBC,
+    SPH_CODEC_EVS_48K_000_0_REV   =0xBD,
+    SPH_CODEC_EVS_48K_000_0_LOST  =0xBE,
+    SPH_CODEC_EVS_48K_000_0_NODATA=0xBF,
+
+    SPH_CODEC_EVS_AWB_06_60    =0xD0,
+    SPH_CODEC_EVS_AWB_08_85    =0xD1,
+    SPH_CODEC_EVS_AWB_12_65    =0xD2,
+    SPH_CODEC_EVS_AWB_14_25    =0xD3,
+    SPH_CODEC_EVS_AWB_15_85    =0xD4,
+    SPH_CODEC_EVS_AWB_18_25    =0xD5,
+    SPH_CODEC_EVS_AWB_19_85    =0xD6,
+    SPH_CODEC_EVS_AWB_23_05    =0xD7,
+    SPH_CODEC_EVS_AWB_23_85    =0xD8,
+    SPH_CODEC_EVS_AWB_02_00_SID   =0xD9,
+    SPH_CODEC_EVS_AWB_00_00_REV0  =0xDA,
+    SPH_CODEC_EVS_AWB_00_00_REV1  =0xDB,
+    SPH_CODEC_EVS_AWB_00_00_REV2  =0xDC,
+    SPH_CODEC_EVS_AWB_00_00_REV3  =0xDD,
+    SPH_CODEC_EVS_AWB_00_00_LOST  =0xDE,
+    SPH_CODEC_EVS_AWB_00_00_NODATA=0xDF,
+
+    SPH_CODEC_CODEC_NONE                 =0xFF,
+}em_speech_info_SpeechCodecType;
+
+
+typedef enum {
+   SPH_NETWORK_IDLE = 0,
+   SPH_NETWORK_2G_SPEECH_ON,
+   SPH_NETWORK_3G_SPEECH_ON,
+   SPH_NETWORK_3G324M_SPEECH_ON,
+   SPH_NETWORK_3G_SPEECH_CLOSING,
+   SPH_NETWORK_4G_SPEECH_ON,
+   SPH_NETWORK_4G_SPEECH_CLOSING, 
+   SPH_NETWORK_C2K_SPEECH_ON,
+   SPH_NETWORK_C2K_SPEECH_CLOSING, 
+}em_speech_info_SpeechNetworkType;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum             em_info;
+    em_speech_info_SpeechCodecType   ulSphCodec;
+    em_speech_info_SpeechCodecType   dlSphCodec;
+    em_speech_info_SpeechNetworkType sphNetwork;
+} em_speech_info_sph_codec_ind_struct;
+
+typedef enum {
+	SPH_VOICE_QUALLITY_EVENT_TYPE_DISCON_NW = (1<<0),
+	SPH_VOICE_QUALLITY_EVENT_TYPE_DISCON_SPH = (1<<1),
+	SPH_VOICE_QUALLITY_EVENT_TYPE_SILENCE_NW = (1<<2),
+	SPH_VOICE_QUALLITY_EVENT_TYPE_SILENCE_SPH = (1<<3),
+	SPH_VOICE_QUALLITY_EVENT_TYPE_NOISE_NW = (1<<4),	
+	SPH_VOICE_QUALLITY_EVENT_TYPE_NOISE_SPH = (1<<5),
+}em_speech_info_VoiceQualityEventType;
+
+#define SPH_VOICE_QUALLITY_BADFRM_ID_NUM 11 // SAL_DMF_BADFRM_ID_NUM
+#define SPH_VOICE_QUALLITY_HOMFRM_ID_NUM 5 // SAL_DMF_HOMFRM_ID_NUM
+#define SPH_VOICE_QUALLITY_NODATA_ID_NUM 3 // SAL_DMF_NODATA_ID_NUM
+
+
+typedef enum {
+	SPH_RAT_NONE=0,
+	SPH_RAT_C2K,
+	SPH_RAT_2G,
+	SPH_RAT_3G,
+	SPH_RAT_4G,		
+}em_speech_info_SpeechRate; // mapping to SAL_DMF_RATE*
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum             em_info;
+    kal_uint32 event; // bit wise or operation of em_speech_info_VoiceQualityEventType
+    em_speech_info_SpeechRate dspRate;
+    kal_bool is4GWifi;
+    kal_bool isDlHaveSound;
+	
+	kal_uint16 dlCRCFailCnt;
+	kal_uint16 dlSphRstCnt;
+	kal_uint16 dlPktLossCnt;
+	kal_uint16 dlJitterLossCnt;
+	kal_uint16 dlBadFrmCnt[SPH_VOICE_QUALLITY_BADFRM_ID_NUM];
+	kal_uint16 dlHomFrmCnt[SPH_VOICE_QUALLITY_HOMFRM_ID_NUM]; 
+	
+	kal_uint16 uLMutePosENHCnt; 
+	
+	kal_uint16 enhUlRobustStatusPre;
+	kal_uint16 enhUlRobustStatusPos; 
+
+	kal_uint16 dlNoDataCnt[SPH_VOICE_QUALLITY_NODATA_ID_NUM]; 
+} em_speech_info_voice_quality_event_ind_struct;
+
+#endif /* _EM_AUDIO_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_cc_public_struct.h b/mcu/interface/service/em/em_cc_public_struct.h
new file mode 100644
index 0000000..db56fa1
--- /dev/null
+++ b/mcu/interface/service/em/em_cc_public_struct.h
@@ -0,0 +1,171 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_cc_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_CC_PUBLIC_STRUCT_H
+#define _EM_CC_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+
+
+#define EM_CC_ECPI_NUM_LEN  (81) //MAX_CC_ECPI_NUM_LEN
+#define EM_CC_MAX_ASSERTED_URI        (512) //IMC_MAX_ASSERTED_URI
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   kal_uint8 call_id;
+   kal_bool is_ibt;
+   kal_bool is_tch;
+   kal_bool is_emergency;
+   kal_uint8 call_dir;  //ims_call_dir_enum
+   kal_uint8 call_mode;   //ims_call_mode_enum
+   kal_uint8 msg_type;
+   kal_uint8 call_type; //ims_call_type_enum
+   kal_uint32 disc_cause; //ims_disc_cause_enum
+   kal_uint8 number[EM_CC_ECPI_NUM_LEN];
+   kal_uint8 p_assert_uri[EM_CC_MAX_ASSERTED_URI];
+} em_call_info_ind_struct;
+
+//--------------------------------------------------
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+} em_cc_mt_setup_info_ind_struct;
+
+
+/* CC structure */
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+   kal_uint8   cause;   //channel sync cause
+   kal_uint8   channel_type;    //channel type
+   kal_uint8   channel_mode;    //channel mode
+} em_cc_channel_info_ind_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+  em_info_enum em_info;
+	kal_uint8	call_id;	//call id
+	kal_uint8	ti;	//transaction identifier
+	kal_uint8   state;	//call state - Please refer to cc_call_state_enum in ps_public_enum.h file to decode this field
+	kal_uint8	aux_state;	//auxiliary state
+	kal_uint8	pi; //progress indicator
+	kal_uint16	cause;	//call disconnect cause - Please refer to ps_cause_enum in ps_public_enum.h file to decode this field
+	kal_uint8	cause_location;	//cause originating locatioin
+	kal_uint8 dir;
+	kal_uint8 call_mode;
+	l4_addr_bcd_struct call_num;
+	kal_bool is_emergency_call;
+	kal_bool is_csfb;
+	kal_uint8 csfb_result; //0 null, 1 fail, 2 success
+} em_cc_call_info_ind_struct;
+
+/* CB structure */
+typedef struct
+{
+    kal_uint16  sn; //serial number
+    kal_uint16  mi; //message identifier
+    kal_uint8   dcs;    //data code scheme
+    kal_uint8   page;   //current number of this page
+    kal_uint8   pages;  //total number of pages
+} cb_em_info_struct;
+
+
+#endif /* _EM_CC_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_ddm_public_struct.h b/mcu/interface/service/em/em_ddm_public_struct.h
new file mode 100644
index 0000000..6025e55
--- /dev/null
+++ b/mcu/interface/service/em/em_ddm_public_struct.h
@@ -0,0 +1,107 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+#ifndef __EM_DDM_PUBLIC_STRUCT_H__
+#define __EM_DDM_PUBLIC_STRUCT_H__
+
+#include "em_public_struct.h"
+#include "atcmd_enum.h"
+
+typedef struct {
+    kal_bool is_ho_attempt;
+    kal_uint8 epdg_ip_addr_len;
+    kal_uint8 epdg_ip_addr[IPV6_ADDR_LEN];
+    kal_bool is_succ;
+    kal_uint8 apn[APN_STRING_LEN];
+    kal_bool is_call_active;
+    kal_uint32 cause;
+    kal_uint32 wo_error;
+} em_ddm_w2lho_event_para_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    em_info_enum    em_info;
+
+    em_ddm_w2lho_event_para_struct para;
+} em_ddm_w2lho_event_ind_struct;
+
+typedef em_ddm_w2lho_event_para_struct em_ddm_l2who_event_para_struct;
+typedef em_ddm_w2lho_event_ind_struct em_ddm_l2who_event_ind_struct;
+
+typedef struct {
+    kal_uint32 cid;
+    kal_uint16 err_cause;    
+} ddm_em_deact_fail_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    ddm_em_deact_fail_info_struct ddm_em_deact_fail_info;
+} em_ddm_deact_fail_info_ind_struct;
+
+typedef struct {
+    kal_uint32 cid;
+    kal_uint16 err_cause;    
+} em_ddm_ia_fail_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    em_ddm_ia_fail_info_struct fail_info;
+} em_ddm_ia_fail_info_ind_struct;
+
+// MSG_ID_EM_DDM_IP_INFO_IND
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_int32 p_cid;
+    at_addr_struct addr;
+}em_ddm_ip_info_ind_struct;
+
+// MSG_ID_EM_DDM_LAST_ERROR_CODE_INFO_IND
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_int32 cid;
+    kal_int32 last_error_code;
+}em_ddm_last_error_code_info_ind_struct;
+
+#endif /* __EM_DDM_PUBLIC_STRUCT_H__ */
diff --git a/mcu/interface/service/em/em_dhl_public_struct.h b/mcu/interface/service/em/em_dhl_public_struct.h
new file mode 100644
index 0000000..9a28f7b
--- /dev/null
+++ b/mcu/interface/service/em/em_dhl_public_struct.h
@@ -0,0 +1,93 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_dhl_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef _EM_DHL_PUBLIC_STRUCT_H
+#define _EM_DHL_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+
+
+/* For DHLL4C_EM_UPDATE_REQ */
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_status_enum  info_request[NUM_OF_EM_INFO];
+} dhll4c_em_update_req_struct;
+
+
+#endif /* _EM_DHL_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_el1_public_struct.h b/mcu/interface/service/em/em_el1_public_struct.h
new file mode 100644
index 0000000..c426c88
--- /dev/null
+++ b/mcu/interface/service/em/em_el1_public_struct.h
@@ -0,0 +1,1532 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_el1_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_EL1_PUBLIC_STRUCT_H
+#define _EM_EL1_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+#include "em_as_common_public_struct.h"
+
+
+/* EL1 */
+#ifndef RPT_LTE_RX_CC_MAX
+#define RPT_LTE_RX_CC_MAX    5
+#endif /* #ifndef RPT_LTE_RX_CC_MAX */
+
+#if defined(__MD95__)
+#ifndef RPT_LTE_TX_CC_MAX
+#define RPT_LTE_TX_CC_MAX   3
+#endif /* #ifndef RPT_LTE_TX_CC_MAX */
+#else /* #if defined(__MD95__) */
+#ifndef RPT_LTE_TX_CC_MAX
+#if defined(MT6833)
+#define RPT_LTE_TX_CC_MAX   2
+#else
+#define RPT_LTE_TX_CC_MAX   3
+#endif
+#endif /* #ifndef RPT_LTE_TX_CC_MAX */
+#endif /* #if defined(__MD95__) */
+
+#define LTE_MAX_DATA_BUF   30   // EL1 MDMI
+#if __IS_EL1_4X4_MIMO_SUPPORT__
+#define AGC_RX_ANT_NUM 4
+#else
+#define AGC_RX_ANT_NUM 2
+#endif
+typedef enum
+{
+    EM_TX_ANT_L_ANT    = 0, // L_ANT
+    EM_TX_ANT_U_ANT    = 1, // U_ANT
+    EM_TX_ANT_L_ANT_A  = 2, // L_ANT'
+    EM_TX_ANT_INVALID  = 0xFF
+} em_tx_ant_enum;
+
+
+typedef enum
+{
+    EM_TAS_VERSION_1_0     = 0,
+    EM_TAS_VERSION_2_0     = 1,
+    EM_TAS_VERSION_INVALID = 0xFF
+} em_tas_version_enum;
+
+
+typedef enum
+{
+	EM_ALT_CQI_RELEASE = 0, //NW do not configure altCQI-Table-r12
+	EM_ALT_CQI_ALL_SF  = 1,
+	EM_ALT_CQI_SF_SET1 = 2,
+	EM_ALT_CQI_SF_SET2 = 3
+} em_alt_cqi_table_enum;
+
+typedef enum
+{
+    EM_TX_MOD_QPSK,
+    EM_TX_MOD_16QAM,
+    EM_TX_MOD_64QAM,
+    EM_TX_MOD_256QAM,
+    EM_TX_MOD_INVALID = 0xFF
+} em_tx_mod_enum;
+
+typedef enum
+{
+   EM_SM_LAYER_1     = 0,   ///< spatial multiplexing number = 1
+   EM_SM_LAYER_2     = 1,   ///< spatial multiplexing number = 2
+   EM_SM_LAYER_3     = 2,   ///< spatial multiplexing number = 3
+   EM_SM_LAYER_4     = 3,   ///< spatial multiplexing number = 4
+   EM_SM_LAYER_MAX
+} em_sm_layer_enum;
+
+typedef struct
+{
+    /* PWR info */
+    kal_int16  prach_tx_power_ave;
+    kal_int16  pucch_tx_power_ave;
+    kal_int16  pusch_tx_power_ave;
+    kal_int16  srs_tx_power_ave;
+
+    /* Tx report */
+    kal_int16  tm;
+    kal_int16  phr;
+    kal_int16  ta;
+
+    /* UL info */
+    kal_uint32 UL_Tput;
+    kal_int16  UL_Imcs;
+    kal_int16  UL_rb;
+    kal_int16  UL_block;
+    kal_int16  UL_bler;
+    kal_uint16 UL_retx_rate;
+
+   /* TAS info */
+    kal_int16   tx_ant;
+    kal_int8   UL_Mod;
+
+    /*RJIL requirement*/
+    kal_uint8   srs_bw_ave;
+    kal_int16   pucch_tx_power_ave_fmt[9]; //0:FMT1 1:FMT1A 2:FMT1B 3:FMT2 4:FMT2_extCP 5:FMT2A 6:FMT2B 7:FMT3 8:FMT1B_CS
+    kal_bool    hop_en;
+    kal_int8    puschPrb0;
+    kal_int8    puschPrb1;
+
+    /*Power scaling*/
+    kal_int16  pucch_tx_pwr;
+    kal_int16  pucch_tx_pwr_out;
+    kal_int16  pusch_tx_pwr;
+    kal_int16  pusch_tx_pwr_out;
+    kal_int16  ul_ca_pucch_tx_pwr_out;
+    kal_int16  ul_ca_pusch_tx_pwr_out;
+
+    /* TAS Info */
+    em_tx_ant_enum  tx_ant_type;
+    kal_int16       rsrp_l_ant;      // L_ANT: -255: disable, -140 ~ 18 (dBm)
+    kal_int16       rsrp_u_ant;      // U_ANT: -255: disable, -140 ~ 18 (dBm)
+    kal_int16       rsrp_l_ant_a;    // L_ANT' -255: disable, -140 ~ 18 (dBm)
+    kal_int16       tx_power;        // -50...33
+
+    kal_int8    res0;               // Reserved byte to indicate padding: Can be used later
+    kal_uint16  ul_grant_cnt;
+    kal_uint16  cqi_req_cnt;
+    kal_int16   total_tx_power_ave;
+
+    /* PUCCH format statistics */
+    kal_uint16  pucch_f1_cnt;       // Standalone SR count
+    kal_uint16  pucch_f1a_cnt;      // Probable SR + 1 bit HARQ count
+    kal_uint16  pucch_f1b_cnt;      // Probable SR + 2 bit HARQ count
+    kal_uint16  pucch_f2_cnt;       // Standalone CSI over PUCCH count
+    kal_uint16  pucch_f2a_cnt;      // CSI + 1 bit HARQ count
+    kal_uint16  pucch_f2b_cnt;      // CSI + 2 bit HARQ count
+    kal_uint16  pucch_f2_ecp_cnt;   // CSI with extended CP
+    kal_uint16  pucch_f3_cnt;       // Format 3 count
+    kal_uint16  pucch_f1b_cs_cnt;   // Format 1b with CS count
+    kal_uint16  pucch_sr_cnt;       // Overall SR count
+
+    /* TITAN Info */
+    kal_int16   curr_fi;
+    kal_int16   curr_gi;
+    kal_int16   num_tpc_fi;
+    kal_int16   num_tpc_gi;
+    kal_int16   avg_ul_retx;
+
+    /* TAS Info */ // This is request by OPPO
+    kal_uint8   tas_status;         // TAS status: 0: disable/ 1: enable
+    kal_uint8   force_tx_ant;       // TAS force tx ant status: 0: disable/ 1: enable
+    kal_uint8   force_tx_idx;       // TAS force tx ann index: 0~7 according to antenna state
+
+    kal_int16   pcmax;
+    /* UTAS Info */
+    /* Common */
+    kal_uint8       utas_info_valid;        // UTAS status: 0: disable / 1: enable
+    kal_uint8       utas_switch_state;      // Switch state used in RF board: 0...31
+    kal_int16       utas_tx_power;          // Total TX power: -50...33 (dBm)
+    /* CC0/1/2 */
+    kal_uint8       utas_tx_activated;      // TX activated: 0: false / 1: true
+    kal_uint8       utas_cur_ant_idx;       // Current physical TX antenna index: 0...31
+    kal_uint8       utas_max_ant_idx_cnt;   // Max physical antenna index count
+    kal_uint8       utas_rx_idx[16];         // UTAS RX index
+    kal_uint8       utas_ant_idx[16];        // Physical antenna index in the RF board: 0?31
+    kal_int16       utas_rsrp[16];           // RSRP value: -255: disable, -140 ~ 18 (dBm)
+    kal_int8        utas_tx_pwr[16];         // TX power: -50...33 (dBm)
+    kal_int8        utas_phr[16];            // PHR power: -50...33 (dBm)
+    kal_uint8       utas_partial_blank[16];  // Blank information: 0: show information / 1: blank information
+
+    em_tx_mod_enum  highest_modulation;
+} em_el1_ul_status_struct;
+
+typedef struct
+{
+    /* DL Qual indicator */
+    kal_int16  dl_rssi[2]; // -255: disable, -140 ~ 18 (dBm)
+    kal_int16  dl_rsrp[2]; // -255: disable, -140 ~ 18 (dBm)
+    kal_int16  dl_rsrq[2]; //
+    kal_int16  dl_sinr[2];
+    kal_int16  rsrp;
+    kal_int16  rsrq;
+    kal_int16  sinr;
+    kal_int16  rsSNR;
+
+    /* Rx report */
+    kal_int16  tm;
+    kal_int16  cqi_cw0;
+    kal_int16  cqi_cw1;
+    kal_int16  ri;
+
+    /* DL info */
+    kal_uint32 DL_Tput;
+    kal_uint32 DL_Tput_cw0;
+    kal_uint32 DL_Tput_cw1;
+    kal_int16  DL_Imcs;
+    kal_int16  DL_rb;
+    kal_int16  DL_block;
+    kal_int16  DL_bler;
+    kal_int8  DL_Mod0;
+    kal_int8  DL_Mod1;
+
+    /* MCH info */
+    kal_uint32 MCH_Tput;
+    kal_int16  MCH_block;
+    kal_int16  MCH_bler;
+
+    // PDSCH info
+    kal_uint16 pdsch_tc_rnti;
+    kal_uint16 pdsch_c_rnti;
+    kal_uint16 pdsch_sps_rnti;
+    kal_uint16 pdsch_avg_tbs;
+    kal_uint16 dl_grant_cnt;
+    kal_int8   dl_carrier_idx;
+    kal_int8   dl_mcs0;
+    kal_int8   dl_mcs1;
+    kal_int8   dl_pmi0;
+    kal_int8   dl_pmi1;  // Not used in 90 as well. Can be used to differentiate 1CW and 2CW scenario in future.
+
+    // PDCCH info
+    kal_int8   pdcch_dci;
+    kal_uint16 pdcch_agg_lv[4];
+    kal_uint16 pdcch_sps_rnti;
+    kal_uint16 pdcch_ra_rnti;
+    kal_uint16 tpc_pucch_rnti;
+    kal_uint16 tpc_pusch_rnti;
+    kal_uint16 pdcch_p_rnti;
+    kal_uint16 pdcch_si_rnti;
+
+    // For 93 KPI
+    kal_int16  kpi_DL_bler[2];
+
+    //For 91 Titan request
+    kal_int16  avg_dl_grant;
+    kal_int16  dl_sm_ratio;
+
+    /* MCH info */
+    kal_int16  MCH_sf_skip_cnt;
+
+    /* DL Qual indicator */
+    kal_int16  sir;
+
+    /* DL tb Number*/
+    kal_uint8	DL_TB;
+
+    /* rxpath_sum for RSRP/RSRQ/SNR as Mohamed' request */
+    kal_int16    rsrp_l1_rxpath_sum_dBm;     /*rx0 + rx1  RSRP dBm*/
+    kal_int16    rsrq_l1_rxpath_sum_dB;      /*rx0 + rx1  RSRQ dB*/
+    kal_int16    snr_l1_rxpath_sum_dB;       /*rx0 + rx1  SNR dB*/
+
+    // For LG
+    kal_int16  DL_bler_harq[15];
+    kal_int16  DL_rb_tb1;
+    kal_int16  DL_rb_tb2;
+
+    /* DL Qual indicator for 4RX */
+    kal_int16  dl_rssi_avg[4]; // -255: disable, -140 ~ 18 (dBm)
+    kal_int16  dl_rsrp_avg[4]; // -255: disable, -140 ~ 18 (dBm)
+    kal_int16  dl_sinr_avg[4];
+	//Huawei
+	kal_uint16 idle_neighbour_meas_period;
+	kal_uint16 idle_drx_cnt[4];
+	/*Path loss*/
+	kal_uint8    pathloss;                   /* Rs_power - RSRP*/
+} em_el1_dl_status_struct;
+
+typedef struct
+{
+    /* DL info */
+    kal_int16  DL_block;
+    kal_int16  DL_nack_cnt;
+    kal_int16  DL_bler;
+    kal_uint8  fail_rate_ind;
+} em_el1_dl_pdsch_status_struct;
+
+typedef struct
+{
+    /* TPC info */
+    kal_uint8 pa_mode[RPT_LTE_TX_CC_MAX];
+    kal_uint8 pa_idx[RPT_LTE_TX_CC_MAX];
+    kal_int16 pa_gain[RPT_LTE_TX_CC_MAX];
+    kal_uint8 temper_idx[RPT_LTE_TX_CC_MAX];  //temperature idx
+    kal_int16 temper_comp[RPT_LTE_TX_CC_MAX]; //temperature compensation power for PA
+    kal_int16 cmeas_rf[RPT_LTE_TX_CC_MAX];    //close loop compensation
+    kal_int16 ppa_dbm[RPT_LTE_TX_CC_MAX];     //DDPC report(antenna power)
+    kal_uint8 op_mode[RPT_LTE_TX_CC_MAX];     //0/1/2/3: DEFAULT/DPD/APT/ET (ETPC_OP_MODE_E)
+
+    /* RF info */
+    kal_int16 rf_gain_absolute[RPT_LTE_RX_CC_MAX][AGC_RX_ANT_NUM];
+
+    /* Power info */
+    kal_int16  mpr[RPT_LTE_TX_CC_MAX];
+    kal_int16  a_mpr[RPT_LTE_TX_CC_MAX];
+    kal_int16  p_cmax[RPT_LTE_TX_CC_MAX];
+    kal_int16 main_ant_sar[RPT_LTE_TX_CC_MAX]; // S(9,7)
+    kal_int16 div_ant_sar[RPT_LTE_TX_CC_MAX];  // S(9,7)
+} em_el1_tpc_rf_status_struct;
+
+typedef struct
+{
+    /* cell info */
+    kal_uint8  band;
+    kal_uint8  ant_port;
+    kal_uint8  dl_bw;       // 100kHz
+    kal_uint8  ul_bw;       // 100kHz
+    kal_uint8  tdd_cfg;     // TDD: 0~6, FDD: 0xFF
+    kal_uint8  sp_cfg;      // TDD: 0~9, FDD: 0xFF
+    kal_uint8  tm;          // 0,1~9
+    kal_int8   ul_cc_idx;   //-1,0~(ul_cc_max-1)
+    kal_int16  pci;         // 0~503
+    EARFCN     earfcn;
+    EARFCN     ul_earfcn;
+    kal_uint16 dlFreq;      // 100kHz
+    kal_uint16 ulFreq;      // 100kHz
+    kal_bool   enable_64qam;
+    kal_uint8  ue_category;
+    kal_uint8  sr_period;   //ms
+    kal_uint8  main_ant_swap; // Main Antenna swap information
+    kal_uint8  rx_antenna_config;
+    kal_bool   enable_dl_256qam;
+	em_alt_cqi_table_enum alt_cqi_table;
+    kal_uint8  max_mimo_layer;
+
+} em_el1_cell_info_struct;
+
+typedef struct
+{
+    kal_uint16 sm_layer_sum[EM_SM_LAYER_MAX];
+    kal_uint16 sm_layer_ack[EM_SM_LAYER_MAX]; 
+    kal_uint8  bler[EM_SM_LAYER_MAX];   
+} em_el1_layer_info_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum            em_info;
+    kal_uint8               dl_cc_count;
+    kal_uint8               ul_cc_count;
+    em_el1_cell_info_struct cell_info[RPT_LTE_RX_CC_MAX];
+    em_el1_dl_status_struct dl_info[RPT_LTE_RX_CC_MAX];
+    em_el1_ul_status_struct ul_info[RPT_LTE_TX_CC_MAX];
+    em_tas_version_enum     tas_version;
+    em_el1_tpc_rf_status_struct tpc_rf_info;
+    em_el1_layer_info_struct layer_info[RPT_LTE_RX_CC_MAX];
+} em_el1_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum            em_info;
+    em_el1_dl_pdsch_status_struct dl_info[RPT_LTE_RX_CC_MAX]; 
+} em_el1_status_pdsch_ind_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	em_info_enum            em_info;
+	kal_bool                dr_status;
+} em_el1_dr_status_ind_struct;
+
+typedef enum
+{
+    EM_CRC_FAIL                 = 0,
+    EM_CRC_PASS                 = 1
+} em_dl_crc_enum;
+
+typedef enum
+{
+    EM_FDD                      = 0,
+    EM_TDD                      = 1
+} em_duplex_enum;
+
+typedef enum
+{
+    EM_COMMON_SPACE             = 0,
+    EM_UE_SPECIFIC_SPACE        = 1
+} em_dci_srch_space;
+
+typedef enum
+{
+    EM_PCC                      = 0,
+    EM_SCC1                     = 1,
+    EM_SCC2                     = 2
+} em_carrier_idx_enum;
+
+typedef enum
+{
+    EM_Bandwidth_1_4            = 1,
+    EM_Bandwidth_3              = 2,
+    EM_Bandwidth_5              = 3,
+    EM_Bandwidth_10             = 4,
+    EM_Bandwidth_15             = 5,
+    EM_Bandwidth_20             = 6
+} em_BandWidth_enum;
+
+typedef enum
+{
+    EM_CCE_AGG_LV1              = 0,
+    EM_CCE_AGG_LV2              = 1,
+    EM_CCE_AGG_LV4              = 2,
+    EM_CCE_AGG_LV8              = 3
+} em_cce_agg_lv_enum;
+
+typedef enum
+{
+    EM_PDCCH_FMT0               = 0,
+    EM_PDCCH_FMT1               = 1,
+    EM_PDCCH_FMT1A              = 2,
+    EM_PDCCH_FMT1B              = 3,
+    EM_PDCCH_FMT1C              = 4,
+    EM_PDCCH_FMT1D              = 5,
+    EM_PDCCH_FMT2               = 6,
+    EM_PDCCH_FMT2A              = 7,
+    EM_PDCCH_FMT2B              = 8,
+    EM_PDCCH_FMT2C              = 9,
+    EM_PDCCH_FMT2D              = 10,
+    EM_PDCCH_FMT3               = 11,
+    EM_PDCCH_FMT3A              = 12,
+    EM_PDCCH_FMT4               = 13,
+    EM_PDCCH_INVALID            = 255
+} em_pdcch_fmt_enum;
+
+typedef enum
+{
+    EM_DCI_FMT0                 = 0,
+    EM_DCI_FMT1                 = 1,
+    EM_DCI_FMT1A                = 2,
+    EM_DCI_FMT1B                = 3,
+    EM_DCI_FMT1C                = 4,
+    EM_DCI_FMT1D                = 5,
+    EM_DCI_FMT2                 = 6,
+    EM_DCI_FMT2A                = 7,
+    EM_DCI_FMT3                 = 8,
+    EM_DCI_FMT3A                = 9
+} em_dci_fmt_enum;
+
+typedef enum
+{
+    EM_dciSuc                   = 1,
+    EM_dciErr                   = 2
+} em_dci_stat_enum;
+
+typedef enum
+{
+    EM_PHICH_NACK               = 0,
+    EM_PHICH_ACK                = 1
+} em_phich_val_enum;
+
+typedef enum
+{
+    EM_PUCCH_FMT1               = 0,
+    EM_PUCCH_FMT1A              = 1,
+    EM_PUCCH_FMT1B              = 2,
+    EM_PUCCH_FMT2               = 3,
+    EM_PUCCH_FMT2A              = 4,
+    EM_PUCCH_FMT2B              = 5
+} em_pucch_fmt_enum;
+
+typedef enum
+{
+    EM_DL_TM_MODE_DISABLED      = 0,
+    EM_DL_TM_MODE_1             = 1,
+    EM_DL_TM_MODE_2             = 2,
+    EM_DL_TM_MODE_3             = 3,
+    EM_DL_TM_MODE_4             = 4,
+    EM_DL_TM_MODE_5             = 5,
+    EM_DL_TM_MODE_6             = 6,
+    EM_DL_TM_MODE_7             = 7,
+    EM_DL_TM_MODE_8             = 8,
+    EM_DL_TM_MODE_9             = 9,
+    EM_DL_TM_MODE_10            = 10,
+    EM_DL_TM_MODE_INVALID       = 255
+} em_dl_tm_mode_enum;
+
+typedef enum
+{
+    EM_mode10                   = 0,
+    EM_mode11                   = 1,
+    EM_mode20                   = 2,
+    EM_mode21                   = 3
+} em_pucch_rpt_mode_enum;
+
+typedef enum
+{
+    EM_subBandCqiFeedback       = 0,
+    EM_wideBandCqiPmiFeedback   = 1,
+    EM_riFeedback               = 2,
+    EM_widebandCqiFeedback      = 3
+} em_pucch_rpt_type_enum;
+
+typedef enum
+{
+    EM_UL_BPSK                  = 0,
+    EM_UL_QPSK                  = 1,
+    EM_UL_QAM16                 = 2,
+    EM_UL_QAM64                 = 3
+} em_pusch_mcs_enum;
+
+typedef enum
+{
+    EM_FREQ_HOP_DISABLED        = 0,
+    EM_FREQ_HOP_INTER_SF        = 1,
+    EM_FREQ_HOP_INTRA_INTER_SF  = 2,
+    EM_FREQ_HOP_INVALID         = 255
+} em_pusch_freq_hop_enum;
+
+typedef enum
+{
+    EM_semiPersistent           = 0,
+    EM_dynamic                  = 1,
+    EM_rachMsg3                 = 2
+} em_pusch_type_enum;
+
+typedef enum
+{
+    EM_modeAperiodicRm12        = 0,
+    EM_modeAperiodicRm20        = 1,
+    EM_modeAperiodicRm22        = 2,
+    EM_modeAperiodicRm30        = 3,
+    EM_modeAperiodicRm31        = 4
+} em_pusch_rpt_mode_enum;
+
+typedef enum
+{
+    EM_NoSrs                    = 0,
+    EM_UpPtsSymbol0             = 1,
+    EM_UpPtsSymbol1             = 2,
+    EM_BothUpPtsSymbols         = 3
+} em_srs_uppts_enum;
+
+typedef enum
+{
+    EM_SRS_Type0                = 0,
+    EM_SRS_Type1Dci0            = 1,
+    EM_SRS_Type1Dci1A2B2C       = 2,
+    EM_SRS_Type1Dci4            = 3
+} em_srs_trig_enum;
+
+typedef enum
+{
+    EM_CYCLE_320                = 0,
+    EM_CYCLE_640                = 1,
+    EM_CYCLE_1280               = 2,
+    EM_CYCLE_2560               = 3
+} em_paging_cyc_enum;
+
+typedef enum
+{
+    EM_fourT                    = 0,
+    EM_twoT                     = 1,
+    EM_oneT                     = 2,
+    EM_one2T                    = 3,
+    EM_one4T                    = 4,
+    EM_one8T                    = 5,
+    EM_one16T                   = 6,
+    EM_one32T                   = 7
+} em_drx_nb_enum;
+
+typedef enum
+{
+    EM_T310_STOP                = 0,
+    EM_T310_START               = 1,
+    EM_T310_EXPIRE              = 2,
+    EM_T310_INVALID             = 255
+} em_t310_status_enum;
+
+
+
+typedef enum
+{
+    EM_DL_QPSK                  = 0,
+    EM_DL_QAM16                 = 1,
+    EM_DL_QAM64                 = 2,
+    EM_DL_QAM256                = 3,
+    EM_DL_INVALID               = 255
+} em_dl_mod_enum;
+
+
+typedef struct
+{
+    kal_bool                        tbEn;
+    kal_uint8                       Imcs;
+    em_dl_mod_enum                  mcs;
+    kal_uint8                       rv;
+    kal_uint8                       ndi;
+    kal_uint8                       tbIndex;
+    kal_uint32                      tbsize;
+    kal_uint8                       dupPacket;
+    kal_bool                        harqComb;
+    //pdsch 3
+    em_dl_crc_enum                  tbCrc;
+    kal_uint64                      cbCrc;
+    kal_uint8                       cw_idx;
+    kal_uint8                       reRxNum;                        // 1~8
+    kal_uint16                      cbSizePlus;                     // 0~6168
+    kal_uint8                       numCbPlus;                      // 0~13
+    kal_uint8                       turboDecMaxIterNum;
+    kal_uint8                       turboDecIterNum;
+    kal_bool                        earlyEndAlgm;
+} em_PdschTb_struct;
+
+typedef struct
+{
+    kal_uint8                       numRBs;      //pdsch 1,2
+    kal_uint8                       numLayers;   //pdsch 2
+    kal_uint8                       numTBs;      //pdsch 2
+    kal_uint8                       harqId;      //pdsch 1,3
+    em_dl_rnti_enum                 rntiType;
+    kal_uint16                      rntiValue;
+    em_PdschTb_struct               PdschTb[2];
+} em_PdschRlt_struct;
+
+typedef struct
+{
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+    kal_uint16                      pci;
+
+    kal_uint8                       cc_idx;//pdsch 3
+    kal_uint8                       ueCat;//pdsch 3
+    kal_uint8                       tranMode;//pdsch 3
+    kal_uint8                       mimoRi;                     // num of tb
+    kal_uint8                       pmchId;                     // 0~255
+    kal_uint8                       areaId;                     // 0~255
+    em_PdschRlt_struct              PdschRlt[5];
+} el1_em_PdschRpt_struct;
+
+typedef struct
+{
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+    kal_uint16                      pci;
+    kal_uint8                       cc_idx;
+    kal_uint8                       ulDlCfg;                        // 0~6:TDD
+    //ltePhyPdcch 1
+    em_dl_rnti_enum                 rntiType[9];
+    em_cce_agg_lv_enum              cceAggLv[9];
+    kal_bool                        newDl[9];
+    em_dci_srch_space               srchSpace[9];                   // 0: common, 1: ue-specific
+    kal_uint16                      payloadSize[9];                 // pi/si/ra/c,tc,sps
+    kal_uint8                       spsType;                        // 1:rel, 2:acv, 3:cfg, 4:retx
+    //ltePhyPdcch 2
+    kal_uint8                       numDlTbs[9];                    // 0~3, number of DL TBs
+    //ltePhyPdcch 3
+    em_pdcch_fmt_enum               dciFormat[9];
+    kal_uint8                       strtCce[9];                     // 0~86
+    kal_bool                        dciStatus[9];
+} el1_em_PdcchRpt_struct;
+
+typedef struct
+{
+    //ltePhyPhich 1, 3
+    kal_bool                        phichEn;
+    em_phich_val_enum               phichRlt;
+    //ltePhyPhich 3
+    kal_uint8                       spreadCode;                     // 0~7
+    kal_uint8                       groupNum;                       // 0~31
+} em_PhichRlt_struct;
+
+typedef struct
+{
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+    kal_uint16                      pci;
+    em_carrier_idx_enum             cc_idx;
+    kal_uint8                       ulDlCfg;                        //0~6:TDD
+    em_PhichRlt_struct              phichRlt0;
+    em_PhichRlt_struct              phichRlt1;
+} el1_em_PhichRpt_struct;
+
+typedef struct
+{
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+    kal_uint16                      pci;
+    em_pdcch_fmt_enum               dciFormat[9];
+    em_pucch_fmt_enum               txFormat;
+    kal_uint8                       numAck;                         //0~2, number of Harq bits
+    kal_bool                        csiEn[RPT_LTE_RX_CC_MAX];
+    kal_uint8                       numCqi[RPT_LTE_RX_CC_MAX];
+    kal_int8                        pucchTpc[9];
+    kal_int16                       gi;
+    kal_uint8                       digitalGain;                    //0~255, PUCCH digital amplitude gain in dB
+    kal_int8                        txPower;
+    kal_int8                        ActualTxPower;
+    kal_uint8                       pathLoss;
+    kal_uint8                       startRbSlot0;                   //0~110
+    kal_uint8                       startRbSlot1;                   //0~110
+    kal_uint8                       dmrsSeqSlot0;                   //0~29
+    kal_uint8                       dmrsSeqSlot1;                   //0~29
+} em_el1_PucchRpt_struct;
+
+typedef struct
+{
+    kal_bool                        csiEn;
+    kal_uint8                       cc_idx;
+    em_dl_tm_mode_enum              csiTxMode;
+    em_pucch_rpt_mode_enum          csiRptMode;
+    em_pucch_rpt_type_enum          csiRptType;
+    //kal_uint8                       numCqi;
+    kal_uint8                       bpSize;                         //0~4
+    kal_uint8                       bpIndex;                        //0~4
+    kal_uint8                       sbNum;
+    kal_uint8                       ri;
+    kal_uint8                       cqiCw0;
+    kal_uint8                       cqiCw1;
+    kal_uint8                       wbPmi;
+} em_pucchCsiRpt_struct;
+
+typedef struct
+{
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+
+    em_pucchCsiRpt_struct           csiRpt[RPT_LTE_RX_CC_MAX];
+} em_el1_PucchCsiRpt_struct;
+
+typedef struct
+{
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+    kal_uint16                      pci;
+    em_pdcch_fmt_enum               dciFormat;                      // DCI format of the decoded PDCCH
+    kal_int8                        puschTpc;
+    em_pusch_type_enum              puschType;
+    kal_int16                       fi;
+    kal_uint8                       digitalGain;                    //0~255, PUSCH digital amplitude gain in dB
+    kal_int8                        txPower;
+    kal_int8                        ActualTxPower;
+    kal_uint8                       pathLoss;
+    kal_uint8                       rbNum;
+    em_pusch_mcs_enum               ModOrd;
+    kal_uint8                       harqId;
+    kal_uint16                      tbSize;
+    kal_uint8                       retxIndex;                      //1~8, HARQ retransmission number
+    em_pusch_freq_hop_enum          freqHop;
+    //kal_bool                        ackExists;
+    kal_uint8                       numAck;                         //0~7, length of ACK NACK bit
+    //kal_bool                        cqiExists[RPT_LTE_RX_CC_MAX];
+    kal_bool                        csiEn[RPT_LTE_RX_CC_MAX];
+    kal_uint8                       numCqi[RPT_LTE_RX_CC_MAX];      //0~66, length of CQI bit
+    //kal_bool                        riExists[RPT_LTE_RX_CC_MAX];
+    kal_uint8                       numRi[RPT_LTE_RX_CC_MAX];       //0~3, length of RI bit
+    kal_uint8                       startRbSlot0;                   //0~110
+    kal_uint8                       startRbSlot1;                   //0~110
+    kal_uint8                       dmrsSeqSlot0;                   //0~29
+    kal_uint8                       dmrsSeqSlot1;                   //0~29
+} em_el1_PuschRpt_struct;
+
+typedef struct
+{
+    kal_bool                        csiEn;
+    kal_uint8                       cc_idx;
+    em_dl_tm_mode_enum              csiTxMode;
+    em_pusch_rpt_mode_enum          csiRptMode;
+    kal_uint8                       sbNum;
+    kal_uint8                       ri;
+    kal_uint8                       wbCqiCw0;
+    kal_uint8                       wbCqiCw1;
+    kal_uint8                       sizeM;
+    kal_uint8                       snglWbPmi;
+    kal_uint8                       snglMbPmi;
+    kal_uint8                       sbCqiCw0[13];
+    kal_uint8                       sbCqiCw1[13];
+    kal_uint8                       mSbCqiCw0;
+    kal_uint8                       mSbCqiCw1;
+    kal_uint8                       sbSize;
+} em_puschCsiRpt_struct;
+
+typedef struct
+{
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+
+    em_puschCsiRpt_struct           csiRpt[RPT_LTE_RX_CC_MAX];
+} em_el1_PuschCsiRpt_struct;
+
+typedef struct
+{
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+    kal_uint16                      pci;
+    em_carrier_idx_enum             cc_idx;
+    kal_uint8                       cfi;
+} em_el1_PcfichRpt_struct;
+
+typedef struct
+{
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+    kal_uint16                      pci;
+    em_carrier_idx_enum             cc_idx;
+    kal_uint8                       pmchId;
+    kal_uint8                       areaId;
+    //kal_uint8                       numOfRB;
+    kal_uint8                       numRBs;
+    kal_uint8                       numLayers;
+    kal_uint8                       harqId;
+    kal_uint8                       rv;
+    kal_uint8                       ndi;
+    em_dl_crc_enum                  crcRlt;
+    em_dl_rnti_enum                 rntiType;
+    kal_uint8                       tbIndex;
+    kal_uint16                      tbSize;                         // bytes
+    kal_uint8                       Imcs;                           // 0~31
+    //kal_uint8                       numRBs;                         // 0~255 // TBD
+} em_el1_PmchRpt_struct;
+
+typedef struct
+{
+    kal_uint16                      strtSFN;
+    kal_uint8                       strtSubframe;
+    kal_uint32                      strtDlFrameTimeOffst;           // 0~307200, Ts units
+    kal_uint32                      strtUlFrameTimeOffst;           // 0~307200, Ts units
+    kal_uint32                      strtUlTimeAdv;                  // 0~307200, Ts units
+
+    kal_int16                       dlFrameTimeChng;                // -512~511
+    kal_int8                        ulFrameTimeChng;                //  -16~15
+    kal_int8                        timeAdvChng;                    // -128~127
+} em_el1_CellTime_struct;
+
+typedef struct
+{
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+    kal_uint16                      pci;
+    kal_int16                       rsrp;                           // -180~-30
+    kal_int16                       rsrp0;
+    kal_int16                       rsrp1;
+    kal_int16                       rsrq;                           //  -30~ 10
+    kal_int16                       rsrq0;
+    kal_int16                       rsrq1;
+    kal_int16                       rssi;                           // -110~-10
+    kal_int16                       rssi0;
+    kal_int16                       rssi1;
+    kal_int16                       sinr;                           //  -20~ 30
+    kal_int16                       sinr0;
+    kal_int16                       sinr1;
+    EARFCN                          earfcn;
+    kal_uint8                       priority;                       // 0~7, The priority of the layer that the cell resides on
+    kal_bool                        isIdleMode;
+    em_BandWidth_enum               Bandwidth;
+    em_carrier_idx_enum             CarrierType;
+} em_el1_SrvMeasRpt_struct;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+
+typedef struct
+{
+    kal_bool                        ueSrsEn;
+    kal_bool                        cellSrsEn;
+    kal_uint8                       strtRb;
+    kal_uint8                       numRb;
+    kal_uint16                      zcRoot;                         // 1~1151
+    em_srs_uppts_enum               upPtsType;
+    //em_srs_trig_enum                srsTrigType;
+} em_srsTxParam_struct;
+
+typedef struct
+{
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+    kal_uint16                      pci;
+    em_carrier_idx_enum             carrierType;
+    em_duplex_enum                  duplexMode[RPT_LTE_RX_CC_MAX];
+    //ltePhyMeasurements 15
+    kal_int8                        srsTxPower;
+    kal_int16                       fi;
+    kal_uint8                       pathLoss;
+    kal_uint8                       srsTxBw;
+    kal_int8                        srsActualTxPower;
+    //ltePhyMeasurements 16
+    em_srs_trig_enum                srsTrigType;
+    kal_uint8                       cycShift;
+    kal_int8                        srsPwrOffst;                 // 0:p-srs,    1:a-srs
+    em_srsTxParam_struct            srsTxParam[2];                  // 0:symbol 1, 1:symbol 2
+} em_el1_SrsRpt_struct;
+
+typedef struct
+{
+    kal_uint8                       mcsIndex;
+    kal_uint8                       cqiRequest;
+    kal_uint8                       startRB[2];
+    kal_uint8                       numRB[2];
+    kal_uint8                       tbSizeIndex;
+    kal_uint8                       modType;
+    kal_bool                        freqHop;                        // 0: disable, 1: enable
+    kal_uint8                       ndi;
+    kal_uint8                       rv;
+    kal_int8                        tpcCmd;
+    kal_uint8                       dmrsCycShift;
+    kal_uint8                       timeToTx;
+} ul_grant_struct;
+
+typedef struct
+{
+    kal_uint16                      pci;
+    em_pdcch_fmt_enum               dlAssgnFmt[7];
+    kal_uint8                       numAck[7];                      // 0~2
+    kal_int8                        tpcCmd[7];
+} dl_assgn_struct;
+
+typedef struct
+{
+    em_duplex_enum                  duplexMode[RPT_LTE_RX_CC_MAX];
+
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+
+    kal_bool                        pdcchOrderVld[RPT_LTE_TX_CC_MAX];
+
+    kal_bool                        ulGrantVld[RPT_LTE_TX_CC_MAX];
+    ul_grant_struct                 ulGrantInfo[RPT_LTE_TX_CC_MAX];
+
+    kal_bool                        tpcVld;
+    em_pdcch_fmt_enum               tpcFmt[2];                      // 0: tpc-pucch, 1: tpc-pusch
+
+    kal_bool                        dlAssgnVld[RPT_LTE_RX_CC_MAX];                  // 2cc
+    dl_assgn_struct                 dlAssgnInfo[RPT_LTE_RX_CC_MAX];                 // 2/tc/spsc -rnti
+} em_el1_DciRpt_struct;
+
+typedef struct
+{
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+    //PSS result
+    kal_int16                       pssQualLev;
+    kal_uint16                      pssPeakPos;                     // 0~10000
+    kal_uint8                       pssIndex;                       // 0~2
+    //SSS result
+    kal_uint16                      pci;
+    kal_int16                       sssQualLev;
+    kal_uint16                      sssFrameBoundary;
+    kal_uint16                      sssCp;
+} em_el1_CsrRpt_struct;
+
+typedef struct
+{
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+    kal_uint16                      pci;
+    EARFCN                          earfcn;
+    kal_uint8                       dlBw;
+    kal_uint16                      payloadSize;
+    kal_uint16                      decSFN;
+    em_dl_crc_enum                  crcRlt;
+    kal_uint8                       numAnt;
+    kal_uint8                       txAntCfg;
+    kal_uint16                      sfnOffst;
+    kal_uint16                      freqOffst;                      // TBD
+    kal_uint16                      tx0Rx0Cir;                      // TBD
+} em_el1_PbchRpt_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    //lteMacKpis 7
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+    kal_uint8                       srPeriod;
+} em_el1_status_sr_cfg_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    //ltePhyPrach 1
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+    kal_int16                       rachTxPwr;
+    kal_uint16                      zadOffSeq;                      //0~837, ZadOFF Sequence Number
+    kal_uint8                       prachCfg;
+    kal_uint8                       preambleFmt;
+    em_duplex_enum                  duplexType;
+    kal_uint8                       maxTxMsg3;
+    kal_uint8                       rarWinSize;
+    kal_bool                        rachRlt;
+} em_el1_status_prach_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    //ltePhyMeasurements 5
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+    kal_uint32                      dlTputVal;
+    kal_uint32                      dlTputCw0;
+    kal_uint32                      dlTputCw1;
+} em_el1_status_dl_tput_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    //ltePhyMeasurements 6
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+    kal_uint32                      ulTputVal;
+} em_el1_status_ul_tput_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    el1_em_PdcchRpt_struct          PdcchRpt[LTE_MAX_DATA_BUF];
+    kal_uint16                      PdcchRpt_num;
+    kal_uint16                      Pdcch_num;
+} em_el1_status_pdcch_rpt_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    //ltePhyPdsch 1
+    el1_em_PdschRpt_struct          PdschRpt[LTE_MAX_DATA_BUF];
+    kal_uint16                      PdschRpt_num;
+    kal_uint16                      Pdsch_num;
+} em_el1_status_pdsch_rpt_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    //ltePhyPhich 1,3
+    el1_em_PhichRpt_struct          PhichRpt[LTE_MAX_DATA_BUF];
+    kal_uint16                      PhichRpt_num;
+} em_el1_status_phich_rpt_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    //ltePhyMeasurements 10, 11
+    em_el1_CsrRpt_struct            CsrRlt[LTE_MAX_DATA_BUF];
+    kal_uint8                       CsrRlt_num;
+} em_el1_status_csr_rpt_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    em_info;
+
+    //Carrier search information
+    EARFCN                          csr_earfcn;
+    kal_uint8                       csr_band;
+} em_el1_status_csr_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    //ltePhyMeasurements 1
+    em_el1_SrvMeasRpt_struct        SrvMeasRpt[LTE_MAX_DATA_BUF];
+    kal_int8                        SrvMeasRpt_num;
+} em_el1_status_srv_meas_rpt_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    //ltePhyPucch 1,3
+    em_el1_PucchRpt_struct          PucchRpt[LTE_MAX_DATA_BUF];
+    kal_uint8                       PucchRpt_num;
+} em_el1_status_pucch_rpt_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    //ltePhyPucch 4
+    em_el1_PucchCsiRpt_struct       PucchCsiRpt[LTE_MAX_DATA_BUF];
+    kal_uint8                       PucchCsiRpt_num;
+} em_el1_status_pucch_csi_rpt_ind_struct;
+
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    //ltePhyPusch 1,3
+    em_el1_PuschRpt_struct          PuschRpt[LTE_MAX_DATA_BUF];
+    kal_uint8                       PuschRpt_num;
+} em_el1_status_pusch_rpt_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    //ltePhyPusch 4
+    em_el1_PuschCsiRpt_struct       PuschCsiRpt[LTE_MAX_DATA_BUF];
+    kal_uint8                       PuschCsiRpt_num;
+} em_el1_status_pusch_csi_rpt_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    //ltePhyMeasurements 17
+    em_el1_DciRpt_struct            DciRpt[LTE_MAX_DATA_BUF];
+    kal_uint8                       DciRpt_num;
+} em_el1_status_dci_rpt_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    //ltePhyPmch 3
+    em_el1_PmchRpt_struct           PmchRpt[LTE_MAX_DATA_BUF];
+    kal_uint8                       PmchRpt_num;
+} em_el1_status_pmch_rpt_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    //ltePhyMeasurements 15, 16
+    em_el1_SrsRpt_struct            SrsRpt[LTE_MAX_DATA_BUF];
+	kal_uint8                       SrsRpt_num;
+} em_el1_status_srs_rpt_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    //ltePhyDebug 1
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+    kal_uint32                      strtDlFrmeTimeOffst;            // 0~307200, Ts units
+    kal_uint32                      strtUlFrameTimeOffst;           // 0~307200, Ts units
+    kal_uint32                      strtUlTimeAdv;                  // 0~307200, Ts units
+    kal_int16                       dlFrameTimeChng;                // -512~511
+    kal_int16                       ulFrameTimeChng;                //  -16~15
+    kal_int8                        timeAdvChng;                    // -128~127
+} em_el1_status_celltime_rpt_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    //ltePhyPcfich 3
+    em_el1_PcfichRpt_struct         PcfichRpt[LTE_MAX_DATA_BUF];
+    kal_uint8                       PcfichRpt_num;
+} em_el1_status_pcfich_rpt_ind_struct;
+
+typedef struct
+{
+    kal_uint8                       sequence;                       //    0~63, Preamble sequence index
+    kal_int8                        prachTxPower;                   // -112~23, PRACH tx power
+    kal_uint8                       duplexMode;
+} el1_em_msg1_rpt_struct;
+
+typedef struct
+{
+    kal_uint8                       mcs;
+    kal_uint8                       modType;
+    kal_uint8                       startRb;
+    kal_uint8                       numRb;
+    kal_uint8                       tbSizeIndex;
+} el1_em_msg3_rpt_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+
+    kal_bool                        msg1_valid;
+    el1_em_msg1_rpt_struct          msg1_rpt;
+    kal_bool                        msg3_valid;
+    el1_em_msg3_rpt_struct          msg3_rpt;
+} em_el1_status_rach_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    em_el1_PbchRpt_struct           PbchRpt[LTE_MAX_DATA_BUF];
+    kal_uint8                       PbchRpt_num;
+} em_el1_status_pbch_rpt_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    EARFCN                          earfcn;
+    kal_uint16                      pci;
+    em_paging_cyc_enum              pagCyc;
+    em_drx_nb_enum                  nb;
+    kal_uint16                      ueId;                           // IMSI mod 1024
+    kal_uint8                       drxFrameNumOffst;
+    kal_uint8                       drxSubframeNum;
+} em_el1_status_pch_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    //ltePhyMeasurements 7
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+    kal_int16                       ta_value;
+} em_el1_status_ta_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    mdmi_info;
+
+    //ltePhyMeasurements 8
+    kal_uint16                      SFN;
+    kal_uint8                       subframe;
+    kal_int8                        phr_value;                      // -23~40
+} em_el1_status_phr_ind_struct;
+
+// CIQ
+typedef struct
+{
+    kal_bool                        wb_rpt_valid;
+    kal_uint8                       sb_rpt_num;
+    kal_uint16                      wb_cqi_dist[16];
+    kal_uint16                      sb_cqi_dist[4][16];
+    kal_uint16                      ri_dist[5];
+    kal_uint16                      pmi_dist[16];
+} el1_em_csi_rpt_struct;
+
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    ciq_info;
+    kal_uint32				trig_time;
+    //LT13 - E-UTRA Radio Link Sync Status
+    em_t310_status_enum             t310_status;
+} em_el1_ciq_rlf_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    ciq_info;
+    kal_uint32				trig_time;
+
+    //LT12 - E-UTRA PUSCH Transmission Status
+    kal_int16                       total_pwr;
+    kal_int16                       perRB_pwr;
+    kal_uint16                      count_pwr;
+    //CSI info
+    //TBD
+    el1_em_csi_rpt_struct		csi_rpt;
+} em_el1_ciq_pusch_ind_struct;
+
+
+
+
+#endif /* _EM_EL1_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_el2_public_struct.h b/mcu/interface/service/em/em_el2_public_struct.h
new file mode 100644
index 0000000..034022b
--- /dev/null
+++ b/mcu/interface/service/em/em_el2_public_struct.h
@@ -0,0 +1,717 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_el2_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_EL2_PUBLIC_STRUCT_H
+#define _EM_EL2_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+#include "em_as_common_public_struct.h"
+
+
+/* EL2 public EM info */
+typedef struct
+{
+    kal_uint8 srb_num;
+    kal_uint8 drb_num;
+} em_el2_pub_info_t;
+
+typedef struct
+{
+    kal_uint32 emac_tx_bits;
+    kal_uint32 emac_rx_bits;
+} em_emac_pub_tput_info_struct;
+
+typedef enum
+{
+    ERLC_RLC_MODE_TM    = 0,
+    ERLC_RLC_MODE_UM    = 1,
+    ERLC_RLC_MODE_AM    = 2
+} erlc_rlc_mode_enum;
+
+
+/* ERLC-DL RB cfg, refresh per RB life cycle */
+typedef struct
+{
+    kal_bool    valid;
+    /* Configurations */
+    kal_uint8   rb_id;      // 1...32
+    kal_uint8   epsb_id;    // 0,5...15
+    kal_uint8   lgch_id;    // 3...10
+    kal_uint8   cfg_idx;    // (0...34)0~31:DRB1~DRB32, 32:SRB0, 33:SRB1, 34:SRB2
+    erlc_rlc_mode_enum  rlc_mode;   // 0: TM, 1: UM, 2: AM
+
+    /* RB control */
+    kal_uint32  est_cntr;       // establish
+    kal_uint32  rel_cntr;       // release
+    kal_uint32  reest_wo_recfg_cntr;  // re-establish w/o reconfig
+    kal_uint32  reest_wi_recfg_cntr;  // re-establish w/ reconfig
+    kal_uint32  recfg_cntr;         // reconfig
+
+    /* 15-bit LI configured */
+    kal_bool   li_len_15_bit;
+} erlcdl_rb_pub_stats_cfg;
+
+
+
+/* ERLC-DL MCCH,MRB cfg, refresh per RB life cycle */
+typedef struct
+{
+    kal_bool    valid;
+    /* Configuration */
+    kal_uint8   mbsfn_area_id;
+    kal_uint8   pmch_id;
+    kal_uint8   lgch_id;    // 3...10
+    kal_uint16  session_id;
+
+} erlcdl_mrb_pub_stats_cfg;
+
+/* ERLC-DL RB statistics since the last RLC re-establishment */
+typedef struct
+{
+    kal_uint32  rx_data_pdu_cntr_rst;   // Total number of RLC Data PDUs received since the last RLC re-establishment
+    kal_uint32  rx_data_pdu_bytes_rst;   // Total number of RLC Data PDU received in bytes since the last RLC re-establishment
+    kal_uint32  rx_stus_pdu_cntr_rst;   // Total number of RLC Control PDUs received since the last RLC re-establishment
+    kal_uint32  rx_stus_pdu_bytes_rst;   // Total number of RLC Control PDU received in bytes since the last RLC re-establishment
+    kal_uint32  rx_valid_stus_cntr_rst;   // Total number of RLC status PDU received and forwarded to uplink since the last RLC re-establishment
+    kal_uint32  rx_valid_stus_bytes_rst;   // Total number of RLC status PDU received and forwarded to uplink in bytes since the last RLC re-establishment
+    kal_uint32  invalid_pdu_cntr_rst;   // Total number of RLC PDUs invalid since the last RLC re-establishment
+    kal_uint32  invalid_pdu_bytes_rst;   // Total number of RLC PDUs invalid in bytes since the last RLC re-establishment
+    kal_uint32  dropped_pdu_cntr_rst;   // Total number of PDUs dropped excluding duplicated since the last RLC re-establishment
+    kal_uint32  dropped_pdu_bytes_rst;   // Total number of PDUs dropped in bytes excluding duplicated since the last RLC re-establishment
+    kal_uint32  rx_retx_cntr_rst;   // Total number of RLC PDUs retransmitted from receiver perspective since the last RLC re-establishment
+    kal_uint32  rx_retx_bytes_rst;   // Total number of RLC PDUs retransmitted in bytes from receiver perspective since the last RLC re-establishment
+    kal_uint32  dup_pdu_cntr_rst;   // Total number of RLC PDUs duplicated since the last RLC re-establishment
+    kal_uint32  dup_pdu_bytes_rst;   // Total number of RLC PDUs duplicated in bytes since the last RLC re-establishment
+    kal_uint32  missed_um_pdu_cntr_rst;   // Total number of UM PDUs missing on DL since the last RLC re-establishment
+    kal_uint32  reest_ooo_sdu_cntr_rst;   // Total number of out of order SDUs forwarded to PDCP during RLC reestablishment since the last RLC re-establishment
+    kal_uint32  dropped_pdu_flc_cntr_rst;  // Total number of PDUs dropped because of flow control since the last RLC re-establishment(in eRLC current design value will always be zero)
+    kal_uint32  dropped_pdu_flc_bytes_rst;  // Total number of PDUs dropped in bytes because of flow control since the last RLC re-establishment(in eRLC current design value will always be zero)
+    kal_uint32  reasm_sdu_cntr_rst;
+    kal_uint32  reasm_sdu_bytes_rst;
+    kal_uint32  reorder_tmr_expry_cntr_rst;
+    kal_uint32  reorder_tmr_start_cntr_rst;
+    kal_uint32  rx_stus_nack_pdu_cntr_rst;   // Total number of Complete RLC PDU NACKs received since last RLC re-establishemnet
+    kal_uint32  rx_stus_nack_seg_cntr_rst;   // Total number of NACKs for RLC Segments received since last RLC re-establishemnet
+
+} erlcdl_rb_pub_stats_rst;
+
+/* ERLC-DL RB statistics, refresh per statistic cycle */
+typedef struct
+{
+    /* PDU */
+    kal_uint32  rcv_blks;        // total rcv. pdu and segment
+    kal_uint32  rx_pdu_cntr;    // total received PDU
+    kal_uint32  rx_data_pdu_cntr;   // Total number of RLC Data PDUs received
+    kal_uint32  rx_stus_pdu_cntr;   // Total number of RLC Control PDUs received
+    kal_uint32  rx_stus_nack_pdu_cntr;   // Total number of Complete RLC PDU NACKs received
+    kal_uint32  rx_stus_nack_seg_cntr;   // Total number of NACKs for RLC Segments received
+    kal_uint32  rx_valid_stus_cntr;   // Total number of RLC status PDU received and forwarded to uplink
+    kal_uint32  dup_pdu_cntr;   // duplicated PDU and segment
+    kal_uint32  invalid_pdu_cntr;   // invalid PDU and segment
+    kal_uint32  dropped_pdu_cntr;   // Total number of PDUs dropped excluding duplicated
+    kal_uint32  rx_retx_cntr;   // Total number of RLC PDUs retransmitted from receiver perspective (vr_r < sn <= vr_ms)
+    kal_uint32  oow_pdu_cntr;   // out-of-window PDU and segment
+    kal_uint32  rx_seg_cntr;    // total received segment
+    kal_uint32  missed_um_pdu_cntr;   // Total number of UM PDUs missing on DL
+    kal_uint32  reest_ooo_sdu_cntr;    // Total number of out of order SDUs forwarded to PDCP during RLC reestablishment
+    kal_uint32  dropped_pdu_flc_cntr;    // Total number of PDUs dropped because of flow control (in eRLC current design value will always be zero)
+    kal_uint32  rcv_bits;       // total bits of blks
+
+    kal_uint32  rx_data_pdu_bytes;  //Total number of Data PDU received in bytes
+    kal_uint32  rx_stus_pdu_bytes;  //Total number of Control PDU received in bytes
+    kal_uint32  rx_valid_stus_bytes;// Total number of RLC status PDU received and forwarded to uplink in bytes
+    kal_uint32  invalid_pdu_bytes;  //Total number of PDUs invalid in bytes
+    kal_uint32  dropped_pdu_bytes;  // Total number of PDUs dropped in bytes excluding duplicated
+    kal_uint32  rx_retx_bytes;      // Total number of PDUs retransmitted in bytes from receiver perspective (vr_r < sn <= vr_ms)
+    kal_uint32  dup_pdu_bytes;      //Total number of PDUs duplicated in bytes
+    kal_uint32  oow_pdu_bytes;      //Total number of PDUs OOW in bytes
+    kal_uint32  dropped_pdu_flc_bytes;    // Total number of PDUs dropped in bytes because of flow control (in eRLC current design value will always be zero)
+
+    /* state variable */
+    kal_uint16  max_pdu_num_in_win;   // max. vr_h - vr_r (vr_uh - vr_ur) when t-reordering expry
+    kal_uint16  sum_pdu_num_in_win;   // for avg. vr_h - vr_r (vr_uh - vr_ur) calculation when t-reordering expry
+
+    /* timeout */
+    kal_uint32  reorder_tmr_expry_cntr;     // num. of t-reordering expry
+    kal_uint32  reorder_tmr_start_cntr;
+
+    /* reassemble */
+    kal_uint32  reasm_sdu_cntr;     // num. of reassemble SDU
+    kal_uint32  reasm_sdu_bytes;    // bytes of reassemble
+
+    erlcdl_rb_pub_stats_rst  rb_stat_rst;   // ERLC-DL RB statistics since the last RLC re-establishment
+
+} erlcdl_rb_pub_stats;
+
+/* ERLC-UL RB cfg, refresh per RB life cycle */
+typedef struct
+{
+    kal_bool    valid;
+    /* Configuration */
+    kal_uint8   rb_id;      // 1...32
+    kal_uint8   epsb_id;    // 0,5...15
+    kal_uint8   lgch_id;    // 3...10
+    kal_uint8   cfg_idx;    // (0...34)0~31:DRB1~DRB32, 32:SRB0, 33:SRB1, 34:SRB2
+    erlc_rlc_mode_enum  rlc_mode;   // 0: TM, 1: UM, 2: AM
+
+    /* RB control */
+    kal_uint8  est_cntr;       // establish
+    kal_uint8  rel_cntr;       // release
+    kal_uint8  reest_wo_recfg_cntr;  // re-establish w/o reconfig
+    kal_uint8  reest_wi_recfg_cntr;  // re-establish w/ reconfig
+    kal_uint8  recfg_cntr;         // reconfig
+
+    /* 15-bit LI configured */
+    kal_bool   li_len_15_bit;
+} erlcul_rb_pub_stats_cfg;
+
+/* ERLC-UL RB statistics since the last RLC re-establishment */
+typedef struct
+{
+    kal_uint32  newtx_pdu_cntr_rst;   // Total number of New Data PDU transmitted since last RLC re-establishemnet
+    kal_uint32  newtx_pdu_bytes_rst;   // Total number of New Data PDU transmitted in bytes including RLC headers since last RLC re-establishemnet
+    kal_uint32  sdu_cntr_rst;   // Total number of RLC SDUs transmitted since last RLC re-establishemnet
+    kal_uint32  sdu_bytes_rst;   // Total number of RLC SDU in bytes transmitted since last RLC re-establishemnet
+    kal_uint32  stus_pdu_cntr_rst;   // Total number of RLC control PDU transmitted since last RLC re-establishemnet
+    kal_uint32  stus_pdu_bytes_rst;   // Total number of RLC Control PDU transmitted in bytes since last RLC re-establishemnet
+    kal_uint32  retx_pdu_cntr_rst;   // Total number of RLC PDUs retransmitted since last RLC re-establishemnet
+    kal_uint32  retx_bits_rst;   // Total number of RLC PDUs retransmitted in bytes since last RLC re-establishemnet
+    kal_uint32  stus_tx_nack_pdu_cntr_rst;   // Total number of complete RLC PDU NACKs sent since the last RLC re-establishment
+    kal_uint32  stus_tx_nack_seg_cntr_rst;   // Total number of RLC segments NACk sent since the last RLC re-establishment
+    kal_uint32  poll_cntr_rst;
+    kal_uint32  poll_retx_cntr_rst;
+
+} erlcul_rb_pub_stats_rst;
+
+/* ERLC-UL RB statistics, refresh per statistic cycle */
+typedef struct
+{
+    /* SDU statistics */
+    kal_uint32  sdu_cntr;           // num. of transmitted SDU
+
+    /* PDU statistics */
+    kal_uint32  newtx_pdu_cntr;     // Total number of New Data PDU transmitted
+    kal_uint32  retx_pdu_cntr;      // reTX AMD PDU
+    kal_uint32  retx_seg_cntr;      // reTX AMD PDU segment
+    kal_uint32  tx_bits;            // total tx bits
+    kal_uint32  retx_bits;          // total retx bits
+
+    kal_uint32  newtx_pdu_bytes;    //Total number of New Data PDU transmitted in bytes including RLC headers
+    kal_uint32  stus_pdu_bytes;     //Total number of RLC Control PDU transmitted in bytes
+    kal_uint32  sdu_bytes;          // Total number of RLC SDU in bytes transmitted
+
+    /* ARQ */
+    kal_uint32  max_retx_pdu_cntr;  // in AM mode and maximum number of retransmissions for a particular RLC PDU has reached
+    kal_uint16  poll_cntr;          // poll number
+    kal_uint16  stus_pdu_cntr;      // tx status pdu
+    kal_uint32  stus_tx_nack_pdu_cntr; //Total number of complete RLC PDU NACKs sent
+    kal_uint32  stus_tx_nack_seg_cntr; //Total number of RLC segments NACk sent
+    kal_uint16  req_retx_pdu_cntr;  // num. of RLC PDUs requested for retransmission
+    kal_uint8   max_pdu_retx_cntr;  // max. retx number of a pdu
+    kal_uint32  nack_pdu_seg_cntr;  // for avg. nacked pdu + seg number per status pdu
+
+    /* state variable */
+    kal_uint16  max_unack_num;   // max. vt_s - vt_a when rcv. a status pdu
+    kal_uint16  sum_unack_num;   // for avg. vt_s - vt_a calcuated when rcv. a status pdu
+
+    /* timeout */
+    kal_uint16  poll_retx_cntr;     // timeout of poll retx
+
+    erlcul_rb_pub_stats_rst  rb_stats_rst;   // ERLC-UL RB statistics since the last RLC re-establishment
+
+} erlcul_rb_pub_stats;
+
+/* ERLC-UL statistics, refresh per statistic cycle */
+typedef struct
+{
+    kal_uint32  grant_cntr;    // ther num. of UL grant count (notified by EMAC)
+    kal_uint32  padding_cntr;  // ther num. of padding count after scheduling
+    kal_uint32  grant_bits;    // total UL grant bits (notified by EMAC)
+    kal_uint32  padding_bits;  // total padding bits after shceduling
+} erlcul_comp_pub_stats;
+
+/* ERLC-DL statistics, refresh per statistic cycle */
+typedef struct
+{
+    kal_uint32  rcv_bad_blks;   // total received CRC failed, no RB mapping blocks
+    kal_uint32  rcv_bad_mbms_blks;   // total received CRC failed, no RB mapping blocks
+} erlcdl_comp_pub_stats;
+
+#define EM_MAX_RLC_HDR_CP_LEN   (16)
+#define EM_MAX_RLC_PDU_LOG_LEN  (256)
+#define EM_RLC_PDU_DATA         (0)    //value defined by VzW
+#define EM_RLC_UM_DATA_PDU_LOG  (0x40) //value defined by VzW, Bit 0 is LSB, Bit:6(RLCUL UM data PDU log)
+
+
+/*VzW EM ERLC OTA-message, ERLC header print*/
+typedef struct
+{
+    kal_uint8  layout_ver:4;
+    kal_uint8  type:3;  //MAC:1, RLC Header:2, PDCP:3, RLC UM PDU:4
+    kal_uint8  truncate:1; //if header is truncated, this bit will set to 1
+
+    kal_uint8  dir:1;  //ul:0, dl:1
+    kal_uint8  msg_type:1;  //data:0, control:1
+    kal_uint8  rlc_mode:1;  //AM:0, UM:1
+    kal_uint8  sn_len:1;  //5bits:0, 10bits:1
+    kal_uint8  li:1;  //w/o li:0, w/ li:1
+    kal_uint8  resv0:3;
+
+    kal_uint8  rlc_hd_len:5;  //range 1 ~ 16 bytes
+    kal_uint8  resv1:1;
+    kal_uint8  resv2:1;
+    kal_uint8  resv3:1;
+
+    kal_uint8  rlc_header[EM_MAX_RLC_HDR_CP_LEN];  //rlc header raw data
+} erlc_ota_stats_struct;
+
+
+/* VzW EM ERLC UmDataPdu, ERLC UM data PDU print */
+#pragma pack(1)
+typedef struct
+{
+    kal_uint8  layout_ver:4;
+    kal_uint8  type:3;  //MAC:1, RLC Header:2, PDCP:3, RLC UM PDU:4
+    kal_uint8  truncate:1; //don't care
+
+    kal_uint8  rlc_mode:1; //AM:0, UM:1
+    kal_uint8  sn_len:1;  //5bits:0, 10bits:1
+    kal_uint8  dir:1;  //ul:0, dl:1
+    kal_uint8  e_bit:1; //not exist:0, exist:1
+    kal_uint8  li:4;  //11bits LI or 15 bits LI (value is 11 or 15)
+
+    kal_uint8  cfg_idx:6;
+    kal_uint8  fi:2;
+
+    kal_uint8  pdu_status:3;
+    kal_uint8  resv1:5;
+
+    kal_uint16  logMask;
+    kal_uint16  pdu_size;  //pdu size in bytes
+    kal_uint16  num_logged;  //num bytes logged
+    kal_uint8   rlc_data[EM_MAX_RLC_PDU_LOG_LEN];
+} erlc_pdu_raw_struct;
+#pragma pack()
+
+/* this define number should be the same as defined in EL2 (in LTE domain) */
+#define EM_PUB_MAX_RLC_RB (10)
+#define EM_PUB_EMBMS_FREQ_SUPPORT (2)
+#define EM_PUB_EMBMS_MCCH_SUPPORT (8)
+#define EM_PUB_EMBMS_MRB_SUPPORT (8)
+
+typedef struct
+{
+    erlcul_comp_pub_stats   ul;
+    erlcdl_comp_pub_stats   dl;
+
+    erlcul_rb_pub_stats_cfg ul_rb_cfg[EM_PUB_MAX_RLC_RB];
+    erlcul_rb_pub_stats     ul_rb[EM_PUB_MAX_RLC_RB];
+    erlcdl_rb_pub_stats_cfg dl_rb_cfg[EM_PUB_MAX_RLC_RB];
+    erlcdl_rb_pub_stats     dl_rb[EM_PUB_MAX_RLC_RB];
+
+    erlcdl_mrb_pub_stats_cfg dl_mcch_cfg[EM_PUB_EMBMS_FREQ_SUPPORT][EM_PUB_EMBMS_MCCH_SUPPORT];
+    erlcdl_rb_pub_stats     dl_mcch[EM_PUB_EMBMS_FREQ_SUPPORT][EM_PUB_EMBMS_MCCH_SUPPORT];
+    erlcdl_mrb_pub_stats_cfg dl_mrb_cfg[EM_PUB_EMBMS_FREQ_SUPPORT][EM_PUB_EMBMS_MRB_SUPPORT];
+    erlcdl_rb_pub_stats     dl_mrb[EM_PUB_EMBMS_FREQ_SUPPORT][EM_PUB_EMBMS_MRB_SUPPORT];
+} em_erlc_pub_stats_struct;
+
+#define EM_PUB_EPDCP_MAX_DRB_NUM (8)
+typedef struct
+{
+    kal_uint8 ebi;
+    kal_uint8 rb_id;
+    kal_uint8 flag_rlc_um; // AM: 0, UM: 1
+    kal_uint8 flag_um_long_sn; // 7-bit: 0, 12-bit: 1 (UM only)
+    kal_uint8 flag_am_long_sn; // 12-bit: 0, 15-bit: 1 (AM only)
+    kal_uint8 rohc_enabled;
+} epdcp_pub_drb_cfg_t;
+
+typedef struct
+{
+    kal_uint32 ul_disc_cnt;
+    kal_uint32 ul_min_pkt_byte;
+    kal_uint32 ul_max_pkt_byte;
+
+    kal_uint32 dl_lost_cnt;
+        // Sum of PDCP SN gaps of SDUs delivered to upper layers
+    kal_uint32 dl_min_pkt_byte;
+        // For NML/OOW PDUs only.
+        // PDCP headers are not considered for simplicity.
+    kal_uint32 dl_max_pkt_byte;
+        // For NML/OOW PDUs only.
+        // PDCP headers are not considered for simplicity.
+    kal_uint32 next_sbmt_ltm_count; // phased out
+} epdcp_pub_drb_stat_t;
+
+typedef struct
+{
+    kal_uint32 ul_pdu_bits;
+    kal_uint32 ul_tput_bps; // calculate from ul_pdu_bits when send to EM
+    kal_uint32 dl_pdu_bits;
+        // SRB, DRB: includes NML/OOW/CTRL/PHE PDUs
+        // MRB: not counted
+        // PDCP headers are not counted for simplicity
+        // Stores the "byte" count. Will be converted to "bit" count in the
+        // preprocessings before the EM report is sent.
+    kal_uint32 dl_tput_bps; // calculate from dl_pdu_bits when send to EM
+    epdcp_pub_drb_cfg_t drb_cfg[EM_PUB_EPDCP_MAX_DRB_NUM];
+    epdcp_pub_drb_stat_t drb_stat[EM_PUB_EPDCP_MAX_DRB_NUM];
+} em_epdcp_pub_stats_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum        em_info;
+
+    em_el2_pub_info_t   el2_info;
+    em_erlc_pub_stats_struct erlc_stats;
+    em_emac_pub_tput_info_struct emac_tput_info;
+    em_epdcp_pub_stats_struct epdcp_stats;
+} em_el2_pub_status_ind_struct;
+
+//Legacy in LR12: extern em_el2_pub_status_ind_struct el2_pubstatus_g;
+
+typedef enum
+{
+    EMAC_RA_REASON_CHANNEL_REQUEST,
+    EMAC_RA_REASON_RADIO_LINK_TIMEOUT,
+    EMAC_RA_REASON_ULDATA,
+    EMAC_RA_REASON_NOPUCCH,
+    EMAC_RA_REASON_MAXSR,
+    EMAC_RA_REASON_HO,
+    EMAC_RA_REASON_DLDATA,
+    EMAC_RA_REASON_RSIM
+} emac_ra_reason_enum;
+
+typedef enum
+{
+    EMAC_RA_RESULT_SUCCEEDED,
+    EMAC_RA_RESULT_ABORTED,
+    EMAC_RA_RESULT_FAILED_RAR,
+    EMAC_RA_RESULT_FAILED_CR_EXPIRE,
+    EMAC_RA_RESULT_FAILED_CR_FAIL
+} emac_ra_result_enum;
+
+typedef enum
+{
+    EM_EMAC_TTI_BUNDLING_DISABLED,
+    EM_EMAC_TTI_BUNDLING_NORMAL,
+    EM_EMAC_TTI_BUNDLING_ENHANCED_FDD
+} em_emac_tti_bundling_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum          em_info;
+
+    // from ERRC_CONFIG
+    kal_uint8             group_a_size;
+    kal_uint8             msg_sz_group_a;
+    kal_uint8             pow_ramping;
+    kal_uint8             preamble_tx_max;
+    kal_uint8             rar_wnd_sz;
+    kal_uint8             cr_timer;
+    kal_uint8             msg3_tx_max;
+    kal_uint8             group_b_size;
+    kal_uint8             msg_pow_offset_group_b;
+    kal_int8              preamble_init_pow;
+
+    // from PHY_INFO
+    kal_int8              pmax;
+    kal_int8              delta_preamble_msg3;
+
+    em_emac_tti_bundling_enum tti_bundling;
+    kal_bool              dl_sps_configured;
+    kal_bool              ul_sps_configured;
+} em_emac_config_report_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum        em_info;
+    kal_uint32          num_of_rach_try;
+} em_emac_rach_success_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum        em_info;
+    kal_uint32          num_of_rach_try;
+} em_emac_rach_failure_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum        em_info;
+    emac_ra_reason_enum ra_reason;
+
+    kal_uint8           group_a_size;
+    kal_uint8           msg_sz_group_a;
+    kal_uint8           pow_ramping;
+    kal_uint8           preamble_tx_max;
+    kal_uint8           rar_wnd_sz;
+    kal_uint8           cr_timer;
+    kal_uint8           msg3_tx_max;
+    kal_uint8           group_b_size;
+    kal_uint8           msg_pow_offset_group_b;
+    kal_int8            preamble_init_pow;
+    kal_int8            pmax;
+    kal_int8            delta_preamble_msg3;
+
+    kal_uint64          ueid;
+    kal_bool            contention;
+    kal_uint8           prach_mask_index;
+    kal_uint32          msg3_potential_size;
+    kal_uint8           preamble_group;
+    kal_uint32          c_rnti;
+} em_emac_rach_trigger_ind_struct;
+
+
+#define EM_EMAC_MAX_MSG3_DATA_LEN 10
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    em_info_enum em_info;
+    emac_ra_result_enum ra_result;
+
+    kal_uint8           preamble_cnt;
+    kal_uint32          rar_ul_grant;
+    kal_uint16          rar_tc_rnti;
+    kal_uint16          rar_ta_value;
+    kal_bool            contention;
+    kal_uint8           rach_message;
+    kal_uint8           preamble_index;
+    kal_uint8           preamble_power_offset;
+    kal_uint16          backoff_time;
+    kal_int8            harq_id;
+    kal_uint8           msg3_mac_pdu_data[EM_EMAC_MAX_MSG3_DATA_LEN];
+    kal_uint8           msg3_mac_pdu_len;
+
+    kal_uint16          earfcn;
+    kal_uint16          phys_cell_id;
+    kal_uint16          ra_rnti;
+    kal_uint8           ra_preamble_last_TXpower;
+    kal_uint8           rar_successed;
+} em_emac_rach_finish_ind_struct;
+
+#define EM_EMAC_MAX_HEADER_LEN 11
+typedef struct
+{
+    kal_uint8           subframe_nb;
+    kal_uint16          frame_nb;
+    em_emac_rnti_enum   rnti_type;
+    kal_uint8           harq_id;
+    kal_uint32          num_rlc_pdus;
+    kal_uint32          num_padding_bytes;
+    kal_uint8           mac_header_data[EM_EMAC_MAX_HEADER_LEN];
+    kal_uint8           mac_header_len;
+    kal_uint32          tb;
+} em_emac_dl_tb;
+
+// report interval 100ms, maximum number of reported TBs is
+// 93: 2TB * 2CC * 100ms = 400TBs (92 3CC)
+#define EM_EMAC_MAX_TBS_REPORT_NUM 400
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint32          num_tbs;
+    em_emac_dl_tb       tbs[EM_EMAC_MAX_TBS_REPORT_NUM];
+} em_emac_dl_tbs_report_ind_struct;
+
+#define EMAC_NUM_SYNC_AREA      2
+#define EMAC_MAX_MTCH_LCID_NB   29
+#define EMAC_NUM_REPORT_EM      20
+
+typedef struct mtch_info_t
+{
+    kal_uint32  mtch_rx_bytes;   // received MTCH data size
+    kal_uint32  TMGI[6];         // TMGI info. to identify MBMS session
+    kal_uint8   lcid;            //MTCH-ID
+}em_mtch_info_t;
+
+typedef struct
+{
+    kal_uint8   mbsfn_area_id;
+    kal_uint8   pmch_id;
+    kal_uint8   crc_total_count; // used to calculate BLER
+    kal_uint8   crc_fail_count;  // used to calculate BLER
+    kal_uint8   num_of_mtch;        //the number of mtch info. per report
+    em_mtch_info_t  mtch_info[EMAC_MAX_MTCH_LCID_NB];  // 29 means MTCH max. size (NOTE: If you modifiy this macro, need to modify emac_strcut.h file's macro)
+}em_pmch_info_t;
+
+
+typedef struct
+{
+    kal_uint16  system_fn;
+    kal_uint8   sub_fn;
+    em_pmch_info_t pmch_info[EMAC_NUM_SYNC_AREA];    // NOTE: If you modifiy this macro, need to modify emac_strcut.h file's macro
+}em_pmchs_info_t;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 report_num;           // total report size
+    em_pmchs_info_t pmchs[EMAC_NUM_REPORT_EM];   // the array size 20 means max. report size (NOTE: If you modifiy this macro, need to modify emac_strcut.h file's macro)
+}em_emac_embms_report_ind_struct;
+
+extern em_emac_embms_report_ind_struct embms_status_20_records_g;
+
+
+typedef enum
+{
+    EPDCP_DATA_INACTV_NULL = 0,
+    EPDCP_UL_SINGLE_PASS_DETECTION = 1
+}epdcp_data_inactv_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    epdcp_data_inactv_enum cause;
+    kal_uint8 drb_id;
+    kal_uint8 epsb_id;
+    
+}em_epdcp_data_inactv_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;    
+}em_epdcp_oob_disc_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;    
+}em_epdcp_tmout_disc_ind_struct;
+
+/********************* begin of EL2 feature detection definition ***********/
+typedef enum
+{
+    EL2_FEAT_LONG_DRX_CMD
+}em_el2_feat_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_el2_feat_enum detected_feature;
+}em_el2_feature_detection_ind_struct;
+/********************* end of EL2 feature detection definition *************/
+
+#endif /* _EM_EL2_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_emm_public_struct.h b/mcu/interface/service/em/em_emm_public_struct.h
new file mode 100644
index 0000000..fbad515
--- /dev/null
+++ b/mcu/interface/service/em/em_emm_public_struct.h
@@ -0,0 +1,1523 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_emm_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_EMM_PUBLIC_STRUCT_H
+#define _EM_EMM_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+#include "em_nwsel_common_public_struct.h"
+#include "l3_inc_enums.h"
+
+/********************* begin of EMM definition ****************************/
+#define EM_TAI_LIST_MAX    16
+#define EM_TMSI_LEN        4
+
+typedef enum
+{
+    EM_EMM_EU1_UPDATE = 0,
+    EM_EMM_EU2_NOT_UPDATE,
+    EM_EMM_EU3_ROAMING_NOT_ALLOWED
+} em_emm_update_status_enum;
+
+typedef enum
+{
+    EM_EMM_SIM_REMOVE,
+    EM_EMM_SIM_INVALID,
+    EM_EMM_SIM_VALID,
+} em_emm_sim_status_enum;
+
+typedef enum
+{
+    EM_EMM_TIN_DELETED    = 0,
+    EM_EMM_TIN_PTMSI,
+    EM_EMM_TIN_RAT_RELATED_TMSI,
+    EM_EMM_TIN_GUTI
+} em_emm_tin_enum;
+
+typedef struct
+{
+    plmn_struct  plmn_id;
+    kal_uint8   mme_gid[2];
+    kal_uint8   mme_code;
+    kal_uint8   mtmsi[4];
+} em_emm_guti_struct;
+
+typedef enum
+{
+    EM_ECM_IDLE=0,
+    EM_ECM_CONNECTED
+}em_emm_ecm_status_enum;
+
+typedef enum
+{
+    EM_NORMAL_CELL    = 0,
+    EM_CSG_CELL,
+    EM_HYBRID_CELL
+} em_csg_access_mode_enum;
+
+typedef enum
+{
+    EM_DUPLEX_TYPE_FDD    = 0,
+    EM_DUPLEX_TYPE_TDD,
+    EM_DUPLEX_TYPE_UNKNOWN
+} em_lte_duplex_type_enum;
+
+typedef enum
+{
+    EM_TYPE_NONE                    = 0,
+    EM_TYPE_SERVICE_REQ,
+    EM_TYPE_EXTENDED_SERVICE_REQ,
+    EM_TYPE_MAX
+} em_sr_type_enum;
+
+// RRC Establishment cause mapping (valid for R11 and earlier implementations)
+typedef enum
+{
+    EM_CAUSE_MO_SIGNAL              = 0,
+    EM_CAUSE_MO_DATA,
+    EM_CAUSE_MT,
+    EM_CAUSE_EMERGENCY,
+    EM_CAUSE_MO_CSFB,
+    EM_CAUSE_MO_MMTEL_VOICE,
+    EM_CAUSE_MO_MMTEL_VIDEO,
+    EM_CAUSE_MO_SMS,
+    EM_CAUSE_INVALID
+} em_sr_cause_enum;
+
+// RRC Establishment cause mapping (valid from R12 implementation onwards)
+typedef enum
+{
+    EM_EST_CAUSE_MO_SIGNAL              = 0,
+    EM_EST_CAUSE_MO_DATA,
+    EM_EST_CAUSE_MT_ACCESS,
+    EM_EST_CAUSE_EMERGENCY,
+    EM_EST_CAUSE_DELAY_TOLERANT,
+    EM_EST_CAUSE_INVALID
+} em_sr_est_cause_enum;
+
+// RRC Establishment type mapping (valid from R12 implementation onwards)
+typedef enum
+{
+    EM_EST_TYPE_MO_SIGNAL              = 0,
+    EM_EST_TYPE_MO_DATA,
+    EM_EST_TYPE_MT,
+    EM_EST_TYPE_EMERGENCY,
+    EM_EST_TYPE_MO_CSFB,
+    EM_EST_TYPE_MO_MMTEL_VOICE,
+    EM_EST_TYPE_MO_MMTEL_VIDEO,
+    EM_EST_TYPE_MO_SMS,
+    EM_EST_TYPE_INVALID
+} em_sr_est_type_enum;
+
+typedef enum
+{
+    EM_MO_CSFB_TYPE_INVALID         = 0,
+    EM_MO_CSFB_TYPE_NORMAL_CALL,
+    EM_MO_CSFB_TYPE_EMERGENCY_CALL,
+    EM_MO_CSFB_TYPE_SS,
+    EM_MO_CSFB_TYPE_LCS,
+    EM_MO_CSFB_TYPE_RESERVED
+} em_mo_csfb_cause_enum;
+
+typedef enum
+{
+    EM_MT_CSFB_PAGING_ID_INVALID    = 0,
+    EM_MT_CSFB_PAGING_ID_IMSI,
+    EM_MT_CSFB_PAGING_ID_TMSI
+} em_mt_csfb_paging_id_enum;
+
+typedef enum
+{
+    EM_EMM_CAUSE_CAUSE_NONE = 0x00,
+    EM_EMM_CAUSE_IMSI_UNKNOWN_IN_HSS    = 0x02,
+    EM_EMM_CAUSE_ILLEGAL_UE    = 0x03,
+    EM_EMM_CAUSE_IMEI_NOT_ACCEPTED    = 0x05,
+    EM_EMM_CAUSE_ILLEGAL_ME    = 0x06,
+    EM_EMM_CAUSE_EPS_NOT_ALLOWED    = 0x07,
+    EM_EMM_CAUSE_EPS_NON_EPS_NOT_ALLOWED    = 0x08,
+    EM_EMM_CAUSE_UE_ID_NOT_DERIVED_BY_NW    = 0x09,
+    EM_EMM_CAUSE_IMPLICIT_DETACH    = 0x0a,
+    EM_EMM_CAUSE_PLMN_NOT_ALLOWED    = 0x0b,
+    EM_EMM_CAUSE_TA_NOT_ALLOWED    = 0x0c,
+    EM_EMM_CAUSE_ROAMING_NOT_ALLOWED_IN_TA    = 0x0d,
+    EM_EMM_CAUSE_EPS_NOT_ALLOWED_IN_PLMN    = 0x0e,
+    EM_EMM_CAUSE_NO_SUITABLE_CELL_IN_TA    = 0x0f,
+    EM_EMM_CAUSE_MSC_NOT_REACHABLE    = 0x10,
+    EM_EMM_CAUSE_NW_FAILURE    = 0x11,
+    EM_EMM_CAUSE_CS_NOT_AVAILABLE    = 0x12,
+    EM_EMM_CAUSE_ESM_FAILURE    = 0x13,
+    EM_EMM_CAUSE_MAC_FAILURE    = 0x14,
+    EM_EMM_CAUSE_SYNCH_FAILURE    = 0x15,
+    EM_EMM_CAUSE_CONGESTION    = 0x16,
+    EM_EMM_CAUSE_UE_SEC_CAPA_MISMATCH    = 0x17,
+    EM_EMM_CAUSE_SEC_MODE_REJ_UNSPECIFIED    = 0x18,
+    EM_EMM_CAUSE_NOT_AUTH_FOR_CSG    = 0x19,
+    EM_EMM_CAUSE_NON_EPS_AUTH_UNACCEPTABLE    = 0x1a,
+    EM_EMM_CAUSE_REQUEST_SERVICE_OPTION_NOT_AUTHORIZED_IN_PLMN = 0x23,
+    EM_EMM_CAUSE_CS_TEMP_NOT_AVAILABLE    = 0x27,
+    EM_EMM_CAUSE_NO_EPS_CTXT_ACT    = 0x28,
+    EM_EMM_CAUSE_SEVERE_NW_FAILURE    = 0x2a,
+    EM_EMM_CAUSE_SEMANTIC_INCORRECT    = 0x5f,
+    EM_EMM_CAUSE_INVALID_MANDATORY_INFO    = 0x60,
+    EM_EMM_CAUSE_MSG_TYPE_NOT_EXIST    = 0x61,
+    EM_EMM_CAUSE_MSG_TYPE_NOT_COMPATIBLE    = 0x62,
+    EM_EMM_CAUSE_IE_NOT_EXIST    = 0x63,
+    EM_EMM_CAUSE_CONDITIONAL_IE_ERROR    = 0x64,
+    EM_EMM_CAUSE_MESSAGE_NOT_COMPATIBLE    = 0x65,
+    EM_EMM_CAUSE_PROTOCOL_ERROR    = 0x6f,
+
+    EM_EMM_CAUSE_FORBIDDEN_PLMN                    = 0x70,
+    EM_EMM_CAUSE_NO_COVERAGE                       = 0x72,
+    EM_EMM_CAUSE_EPS_SERV_NOT_ALLOWED              = 0x73,
+    EM_EMM_CAUSE_SIM_REMOVED                       = 0x76,
+    EM_EMM_CAUSE_SIM_INVALID_FOR_PS                = 0x78,
+    EM_EMM_CAUSE_SIM_INVALID_FOR_CS                = 0x79,
+    EM_EMM_CAUSE_SIM_INVALID_FOR_CS_AND_PS         = 0x80,
+    EM_EMM_CAUSE_EAS_IN_SUSPEND_MODE               = 0x8b,
+    EM_EMM_CAUSE_LIMITED_SERVICE                   = 0x8d,
+    EM_EMM_CAUSE_SIM_INVALID_FOR_LTE_BECAUSE_NON_USIM_INSERTED = 0x8f,
+    EM_EMM_CAUSE_OOS_IND   = 0x90
+} em_emm_cause_enum;
+
+
+typedef enum
+{
+    EM_EMM_ATTACH_TYPE_INVALID = 0,
+    EM_EMM_ATTACH_TYPE_EPS_ATTACH    = 1,
+    EM_EMM_ATTACH_TYPE_COMBINED_ATTACH    = 2,
+    EM_EMM_ATTACH_TYPE_EMERGENCY_ATTACH    = 6
+} em_emm_attach_type_enum;
+
+typedef enum
+{
+    EM_EMM_ATTACH_RESULT_EPS_ONLY_ATTACHED    = 1,
+    EM_EMM_ATTACH_RESULT_COMBINED_ATTACHED
+} em_emm_attach_result_enum;
+
+typedef enum
+{
+    EM_EMM_TYPE_NO_ADDITIONAL_INFO = 1,
+    EM_EMM_TYPE_SMS_ONLY
+}em_emm_additional_update_type_enum;
+
+typedef enum
+{
+    EM_EMM_RESULT_NO_ADDITIONAL_INFO = 0,
+    EM_EMM_RESULT_CSFB_NOT_PREFERRED = 1,
+    EM_EMM_RESULT_SMS_ONLY           = 2
+}em_emm_additional_update_result_enum;
+
+typedef enum
+{
+    EM_EMM_UPDATE_TYPE_TAU    = 0,
+    EM_EMM_UPDATE_TYPE_COMBINED_TAU,
+    EM_EMM_UPDATE_TYPE_COMBINED_TAU_IMSI_ATTACH,
+    EM_EMM_UPDATE_TYPE_PERIODIC_TAU,
+    EM_EMM_UPDATE_TYPE_INVALID
+} em_emm_update_type_enum;
+
+typedef enum
+{
+    EM_EMM_UPDATE_RESULT_TA_UPDATED = 0,
+    EM_EMM_UPDATE_RESULT_COMBINED_UPDATED = 1,
+    EM_EMM_UPDATE_RESULT_TA_UPDATED_ISR_ACTIVATED = 4,
+    EM_EMM_UPDATE_RESULT_COMBINED_UPDATED_ISR_ACTIVATED = 5,
+    EM_EMM_UPDATE_RESULT_INVALID
+} em_emm_update_result_enum;
+
+typedef enum
+{
+    EM_EMM_USER_DETACH_EPS_DETACH  = 1,
+    EM_EMM_USER_DETACH_IMSI_DETACH ,
+    EM_EMM_USER_DETACH_COMBINED_EPS_IMSI_DETACH
+}em_emm_user_detach_type_enum;
+
+typedef enum
+{
+    EM_EMM_NW_DETACH_TYPE_RE_ATTACH_REQUIRED = 1,
+    EM_EMM_NW_DETACH_TYPE_RE_ATTACH_NOT_REQUIRED,
+    EM_EMM_NW_DETACH_TYPE_IMSI_DETACH
+}em_emm_nw_detach_type_enum;
+
+typedef enum
+{
+    EM_EMM_IMS_VOICE_OVER_PS_SESSION_IN_S1_MODE_NOT_SUPPORT = 0,
+    EM_EMM_IMS_VOICE_OVER_PS_SESSION_IN_S1_MODE_SUPPORT
+}em_emm_ims_service_ind_enum;
+
+typedef enum
+{
+    EM_EMM_EMERGENCY_BEARER_SERVICE_IN_S1_MODE_NOT_SUPPORT = 0,
+    EM_EMM_EMERGENCY_BEARER_SERVICE_IN_S1_MODE_SUPPORT
+}em_emm_emergency_service_ind_enum;
+
+typedef enum
+{
+    EM_EMM_ATTACH_NEEDED = 0,
+    EM_EMM_ATTACH_REQUEST,
+    EM_EMM_ATTACH_COMPLETE,
+    EM_EMM_ATTACH_SUCCESS,
+    EM_EMM_23G_ATTACH_SUCCESS
+}em_emm_attach_status;
+
+typedef enum
+{
+    EM_EMM_TAU_ONGOING_BEFORE_TAU_REQ = 0,
+    EM_EMM_TAU_REQUEST,
+    EM_EMM_TAU_COMPLETE,
+    EM_EMM_TAU_SUCCESS,
+    EM_EMM_TAU_FAIL,
+    EM_EMM_TAU_NO_TAU_EVER
+}em_emm_tau_status;
+
+//Sync from EMM internal cause
+//emm_call_fail_trigger_enum
+typedef enum
+{
+    EM_EMM_CALL_FAIL_TRIG_SUCCESS  = 0,
+    EM_EMM_CALL_FAIL_TRIG_EST_FAIL = 1,
+    EM_EMM_CALL_FAIL_TRIG_REL_IND  = 2,
+    EM_EMM_CALL_FAIL_TRIG_RETRANS  = 3,
+    EM_EMM_CALL_FAIL_TRIG_REJECT   = 4,
+    EM_EMM_CALL_FAIL_TRIG_T3417TO  = 9,
+    EM_EMM_CALL_FAIL_TRIG_AC_BARRED= 15,
+    EM_EMM_CALL_FAIL_TRIG_AUTH_REJ = 17,
+} em_emm_call_fail_trigger_enum;
+
+//Sync from EMM internal cause
+//emm_call_est_cause_enum
+typedef enum
+{
+    EM_EMM_CALL_EST_CAUSE_SUCCESS           =  0,
+    EM_EMM_CALL_EST_CAUSE_AC_BARRED         =  1,
+    EM_EMM_CALL_EST_CAUSE_NW_REJ_CONN       =  2,
+    EM_EMM_CALL_EST_CAUSE_CONN_FAIL         =  3,
+    EM_EMM_CALL_EST_CAUSE_AC_BARRED_MO_CSFB = 11,
+    EM_EMM_CALL_EST_CAUSE_CONGESTION        = 12,
+} em_emm_call_est_cause_enum;
+
+//Sync from EMM internal cause
+//emm_call_rel_cause_enum
+typedef enum
+{
+    EM_EMM_CALL_REL_CAUSE_REL_OTHER         =  1,
+    EM_EMM_CALL_REL_CAUSE_REEST_FAIL        =  2,
+    EM_EMM_CALL_REL_CAUSE_REEST_CSFB_HIGH   =  3,
+    EM_EMM_CALL_REL_CAUSE_REEST_LOCAL_REL   =  5,
+} em_emm_call_rel_cause_enum;
+
+//Sync from EMM internal cause
+//emm_call_ignore_paging_cause_enum
+typedef enum
+{
+    EM_EMM_CALL_IGNORE_PAGING_NONE                  =  0,
+    EM_EMM_CALL_IGNORE_PAGING_UNEXPECTED_TYPE       =  1,
+    EM_EMM_CALL_IGNORE_PAGING_IMS_CALL_ONGOING      =  2,
+    EM_EMM_CALL_IGNORE_PAGING_CS_NOT_ALLOW          =  3,
+    EM_EMM_CALL_IGNORE_PAGING_ID_ERROR              =  4,
+    EM_EMM_CALL_IGNORE_PAGING_NOT_SUITABLE_CELL     =  5,
+    EM_EMM_CALL_IGNORE_PAGING_NO_CS_INSTANCE        =  6,
+    EM_EMM_CALL_IGNORE_PAGING_INTERRAT              =  7,
+    EM_EMM_CALL_IGNORE_PAGING_TMSI_ERROR            =  8,
+    EM_EMM_CALL_IGNORE_PAGING_WAIT_ATTACH_END       =  9,
+    EM_EMM_CALL_IGNORE_PAGING_RSIM_AUTH_DOWNLOAD    =  10,
+} em_emm_call_ignore_paging_cause_enum;
+
+typedef enum
+{
+    EM_EMM_MAINSTATE_EMM_NULL = 0,
+    EM_EMM_MAINSTATE_EMM_DEREGISTERED,
+    EM_EMM_MAINSTATE_EMM_DEREGISTERED_INITIATED,
+    EM_EMM_MAINSTATE_EMM_REGISTERED,
+    EM_EMM_MAINSTATE_EMM_REGISTERED_INITIATED,
+    EM_EMM_MAINSTATE_EMM_TRACKING_AREA_UPDATING_INITIATED,
+    EM_EMM_MAINSTATE_EMM_SERVICE_REQUEST_INITIATED
+} em_emm_mainstate_enum;
+
+typedef enum
+{
+    EM_EMM_SUBSTATE_INVALID = 0,
+    EM_EMM_SUBSTATE_NORMAL_SERVICE,
+    EM_EMM_SUBSTATE_LIMITED_SERVICE,
+    EM_EMM_SUBSTATE_ATTEMPTING_TO_ATTACH,
+    EM_EMM_SUBSTATE_PLMN_SEARCH,
+    EM_EMM_SUBSTATE_NO_IMSI,
+    EM_EMM_SUBSTATE_ATTACH_NEEDED,
+    EM_EMM_SUBSTATE_NO_CELL_AVAILABLE,
+    EM_EMM_SUBSTATE_ATTEMPTING_TO_UPDATE,
+    EM_EMM_SUBSTATE_UPDATE_NEEDED,
+    EM_EMM_SUBSTATE_ATTEMPTING_TO_UPDATE_MM,
+    EM_EMM_SUBSTATE_IMSI_DETACH_INITIATED,
+    EM_EMM_SUBSTATE_ECALL_INACTIVE
+} em_emm_substate_enum;
+
+typedef enum {
+    EMM_EM_TIMERMNG_TINVALID = 0,
+    EMM_EM_TIMERMNG_T3410,
+    EMM_EM_TIMERMNG_T3346
+} emm_em_timermng_timer_id_enum;
+
+typedef struct
+{
+    plmn_struct plmn_id;
+    kal_uint8 lac[2];
+}em_emm_lai_struct;
+
+typedef enum
+{
+    EM_EMM_CAUSE_FROM_NONE = 0,
+    EM_EMM_CAUSE_FROM_ATTACH_REJECT,
+    EM_EMM_CAUSE_FROM_TAU_REJECT,
+    EM_EMM_CAUSE_FROM_SERVICE_REJECT,
+    EM_EMM_CAUSE_FROM_DETACH_REQUEST,
+    EM_EMM_CAUSE_FROM_ATTACH_ACCEPT,
+    EM_EMM_CAUSE_FROM_TAU_ACCEPT,
+} em_emm_cause_source_enum;
+
+typedef enum
+{
+	EMMREG_IMSI = 1,
+	EMMREG_NATIVE_GUTI,
+	EMMREG_MAPPED_GUTI,
+	EMMREG_IMEI
+}em_emm_reg_eps_mobile_identity_type_enum;
+
+typedef enum
+{
+	EMMREG_NO_ADDITIONAL_INFO = 1,
+	EMMREG_SMS_ONLY
+}em_emm_reg_additional_update_type_enum;
+
+typedef enum
+{
+	EMMREG_LAST_ATT_NONE = 0,
+	EMMREG_LAST_ATT_EPS_ATT_SUCCESS,
+	EMMREG_LAST_ATT_COMB_ATT_SUCCESS,
+	EMMREG_LAST_ATT_COMB_ATT_BUT_EPS,
+	EMMREG_LAST_ATT_ATT_REJECT,
+	EMMREG_LAST_ATT_COMB_ATT_CAUSE_OTHER,
+	EMMREG_LAST_ATT_ATT_ACCPT_FAIL,
+	EMMREG_LAST_ATT_ATT_ACCPT_INVALID,
+	EMMREG_LAST_ATT_ABNORAMAL_LOWER_LAYER_FAILURE,
+	EMMREG_LAST_ATT_ABNORAMAL_T3410_TIMEOUT,
+	EMMREG_LAST_ATT_ABNORAMAL_ATT_REQ_NEW_TA,
+	EMMREG_LAST_ATT_ABNORAMAL_ATT_ACCPT_NEW_TA,
+	EMMREG_LAST_ATT_ABNORAMAL_ATT_COMP_NEW_TA,
+	EMMREG_LAST_ATT_ABNORAMAL_ATT_REQ_SEND_FAIL,
+	EMMREG_LAST_ATT_ABNORAMAL_ATT_COMP_SEND_FAIL,
+	EMMREG_LAST_ATT_ABNORAMAL_MO_DETACH,
+	EMMREG_LAST_ATT_ABNORAMAL_MT_DETACH,
+	EMMREG_LAST_ATT_ABNORAMAL_ESM_DETACH,
+	EMMREG_LAST_ATT_ATT_REQ_RAT_CHANGE,
+	EMMREG_LAST_ATT_ATT_COMP_RAT_CHANGE,
+	EMMREG_LAST_ATT_WRAP_AROUND,
+	EMMREG_LAST_ATT_AUTH_REJECT,
+	EMMREG_LAST_ATT_COMMPROC_FAILURE,
+	EMMREG_LAST_ATT_E2UG_SUCCESS,
+	EMMREG_LAST_ATT_ABORT
+}em_emm_reg_last_attach_result_enum;	
+
+typedef enum
+{
+	EMMREG_NOTATT_INITIAL = 0,
+	EMMREG_NOTATT_USIM_REMOVED,
+	EMMREG_NOTATT_USIM_REMOVING,
+	EMMREG_NOTATT_USIM_INVALID,
+	EMMREG_NOTATT_WAIT_UG2E_FINISH,
+	EMMREG_NOTATT_WAIT_NW_RELEASING,
+	EMMREG_NOTATT_WAIT_ATTACH_REQ,
+	EMMREG_NOTATT_NOT_ACTIVE_RAT,
+	EMMREG_NOTATT_WAIT_E2UG_FINISH,
+	EMMREG_NOTATT_WAIT_NEW_CELL_INFO,
+	EMMREG_NOTATT_WAIT_SUITABLE_CELL,
+	EMMREG_NOTATT_WAIT_CONTINUE_REQ,
+	EMMREG_NOTATT_WAIT_TIMER_TIMEOUT,
+	EMMREG_NOTATT_WAIT_AC_BAR_END,
+	EMMREG_NOTATT_WAIT_ESM_MSG,
+	EMMREG_NOTATT_WAIT_PLMNSEL_SELECTION_FINISH,
+	EMMREG_NOTATT_WAIT_CONN_RELEASING,
+// #ifdef __REL10__ // t3346
+	EMMREG_NOTATT_WAIT_T3346_END,
+// #endif
+	EMMREG_NOTATT_ESM_MSG_IGNORE,
+	EMMREG_NOTATT_EVTCTRL_SUSPEND,
+	EMMREG_NOTATT_EVTCTRL_REJECT,
+	EMMREG_NOTATT_CONN_FAIL_CEL_RESEL,
+	EMMREG_NOTATT_CONN_FAIL_IRCR,
+	EMMREG_NOTATT_CONN_FAIL_IDLE_OOS,
+	EMMREG_NOTATT_CONN_FAIL_AC_BAR,
+	EMMREG_NOTATT_CONN_FAIL_NW_REJECT,
+	EMMREG_NOTATT_CONN_PEND_ACCPTABLE_CELL,
+	EMMREG_NOTATT_CONN_PEND_NO_CELL,
+	EMMREG_NOTATT_MO_DETACH,
+	EMMREG_NOTATT_ENCODE_ATT_REQ_FAILURE,
+	EMMREG_NOTATT_ABORT,
+	EMMREG_NOTATT_E2UG_SUCCESS,
+	EMMREG_NOTATT_SUCCESS
+}em_emm_reg_not_att_reason_enum;	
+
+typedef enum
+{
+    EMMREG_STATUS_INITIAL = 0,
+    EMMREG_STATUS_ATTACH_NEEDED,
+    EMMREG_STATUS_ATTACH_REQUEST,
+    EMMREG_STATUS_ATTACH_COMPLETE,
+    EMMREG_STATUS_TAU_START,
+    EMMREG_STATUS_TAU_REQUEST,
+    EMMREG_STATUS_TAU_COMPLETE,
+    EMMREG_STATUS_23G_ATTACH_SUCCESS,
+    EMMREG_STATUS_PROC_FINISH
+}em_emm_reg_proc_status_enum;
+
+typedef enum
+{
+    EMMREG_USER_DETACH_TYPE_NONE = 0,
+    EMMREG_USER_DETACH_TYPE_EPS_DETACH,
+    EMMREG_USER_DETACH_TYPE_IMSI_DETACH,
+    EMMREG_USER_DETACH_TYPE_EPS_IMSI_DETACH    
+}em_emm_reg_user_detach_type_enum;
+
+typedef enum
+{
+    EMMREG_NW_DETACH_TYPE_NONE = 0,
+    EMMREG_NW_DETACH_TYPE_RE_ATTACH_REQUIRED,
+    EMMREG_NW_DETACH_TYPE_RE_ATTACH_NOT_REQUIRED,
+    EMMREG_NW_DETACH_TYPE_IMSI_DETACH
+}em_emm_reg_nw_detach_type_enum;
+
+typedef enum
+{
+	EMMREG_DEREG_NONE = 0,
+	EMMREG_DEREG_USER_DETACH_SUCCESS,
+	EMMREG_DEREG_NW_DETACH_SUCCESS,
+	EMMREG_DEREG_NW_USER_DETACH_SUCCESS,
+	EMMREG_DEREG_LOCAL_DET_NOT_EU1,
+	EMMREG_DEREG_LOCAL_DET_ACCEPTABLE_CELL,
+	EMMREG_DEREG_LOCAL_DET_NO_CELL,
+	EMMREG_DEREG_LOCAL_DET_AC_BAR,
+	EMMREG_DEREG_LOCAL_DET_THROTTLING_TIMER_ACTIVE,
+	EMMREG_DEREG_LOCAL_DET_PLMNSEL_SEARCHING,
+	EMMREG_DEREG_LOCAL_DET_TAU_BUT_SIM_DET,
+	EMMREG_DEREG_LOCAL_DET_TDETACH_TIMEOUT,
+	EMMREG_DEREG_LOCAL_DET_CONN_FAIL_AC_BAR,
+	EMMREG_DEREG_LOCAL_DET_CONN_FAIL_NW_REJECT,
+	EMMREG_DEREG_LOCAL_DET_CONN_FAIL_IDLE_OOS,
+	EMMREG_DEREG_LOCAL_DET_CONN_FAIL_GEMINI,
+	EMMREG_DEREG_LOCAL_DET_CONN_FAIL_OTHER,
+	EMMREG_DEREG_LOCAL_DET_CONN_ACCEPTABLE_CELL,
+	EMMREG_DEREG_LOCAL_DET_CONN_NO_CELL,
+	EMMREG_DEREG_LOCAL_DET_LOWER_LAYER_FAILURE,
+	EMMREG_DEREG_LOACL_DET_COUNTER_MAX,
+	EMMREG_DEREG_LOCAL_DET_NEW_TA_BUT_SIM_DET,
+	EMMREG_DEREG_LOCAL_DET_ENCODE_DET_REQ_FAILURE,
+	EMMREG_DEREG_LOCAL_DET_UNREGISTED,
+	EMMREG_DEREG_LOCAL_DET_NEW_TA_BUT_UNREGISTED,
+	EMMREG_DEREG_LOCAL_DET_ESM_DET_BUT_E2UG,
+	EMMREG_DEREG_LOCAL_DET_ABORT,
+	EMMREG_DEREG_LOCAL_DET_TAU_FAILURE_DETACH_PENDING,
+	EMMREG_DEREG_LOCAL_DET_TAU_NEW_TA,
+	EMMREG_DEREG_LOCAL_DET_RETRY_TAU,
+	EMMREG_DEREG_LOCAL_DET_NW_DET_NEW_TA,
+	EMMREG_DEREG_LOCAL_DET_NW_DET_ACCEPTABLE_CELL,
+	EMMREG_DEREG_LOCAL_DET_SR_REJECT_DETACH_PENDING,
+	EMMREG_DEREG_SR_REJECT,
+	EMMREG_DEREG_LOCAL_DET_IMSI_PAGING,
+	EMMREG_DEREG_LOCAL_DET_WRAP_AROUND,
+	EMMREG_DEREG_LOCAL_DET_AUTH_REJECT,
+	EMMREG_DEREG_TAU_REJECT,
+	EMMREG_DEREG_E2UG_SUCCESS,
+	EMMREG_DEREG_ESM_LOCAL_DET_AND_REAATACH,
+	EMMREG_DEREG_MO_DETACH_IN_DEREG,
+	EMMREG_DEREG_2G3G_ENTER_DEREG,
+	EMMREG_DEREG_LOCAL_DET_AUTH_TRIGGER_END_DETACH,
+	EMMREG_DEREG_LOCAL_DET_MT_CSFB_TO_3GRAT
+}em_emm_reg_dereg_reason_enum;
+
+typedef enum
+{
+	EMMREG_LAST_TAU_NONE = 0,
+	EMMREG_LAST_TAU_NORMAL_TAU_SUCCESS,
+	EMMREG_LAST_TAU_COMB_TAU_SUCCESS,
+	EMMREG_LAST_TAU_COMB_TAU_BUT_EPS,
+	EMMREG_LAST_TAU_COMB_TAU_CAUSE_OTHER,
+	EMMREG_LAST_TAU_TAU_REJECT,
+	EMMREG_LAST_TAU_TAU_ACCPT_FAIL,
+	EMMREG_LAST_TAU_TAU_ACCPT_INVALID,
+	EMMREG_LAST_TAU_ABNORMAL_LOWER_LAYER_FAILURE,
+	EMMREG_LAST_TAU_ABNORMAL_T3430_TIMEOUT,
+	EMMREG_LAST_TAU_ABNORMAL_TAU_REQ_NEW_TA,
+	EMMREG_LAST_TAU_ABNORMAL_TAU_COMP_NEW_TA,
+	EMMREG_LAST_TAU_ABNORMAL_TAU_REQ_SEND_FAIL,
+	EMMREG_LAST_TAU_ABNORMAL_TAU_COMP_SEND_FAIL,
+	EMMREG_LAST_TAU_ABNORMAL_TAU_BUT_MT_DETACH,
+	EMMREG_LAST_TAU_ABNORMAL_TAU_BUT_MO_DETACH,
+	EMMREG_LAST_TAU_ABNORMAL_TAU_BUT_LOCAL_DETACH,
+	EMMREG_LAST_TAU_TAU_REQ_RAT_CHANGE,
+	EMMREG_LAST_TAU_TAU_COMP_RAT_CHANGE,
+	EMMREG_LAST_TAU_WRAP_AROUND,
+	EMMREG_LAST_TAU_AUTH_REJECT,
+	EMMREG_LAST_TAU_COMMPROC_FAILURE,
+	EMMREG_LAST_TAU_ABORT,
+	EMMREG_LAST_TAU_E2UG_SUCCESS
+}em_emm_reg_last_tau_result_enum;	
+
+typedef enum
+{
+	EMMREG_NOTTAU_INITIAL = 0,
+	EMMREG_NOTTAU_NOT_ACTIVE_RAT,
+	EMMREG_NOTTAU_E2UG,
+	EMMREG_NOTTAU_WAIT_NEW_CELL_INFO,
+	EMMREG_NOTTAU_LOCAL_DETACH,
+	EMMREG_NOTTAU_ACCEPTABLE_CELL,
+	EMMREG_NOTTAU_NO_CELL,
+	EMMREG_NOTTAU_TAU_BUT_MO_DETACH,
+	EMMREG_NOTTAU_CONN_RELEASING,
+	EMMREG_NOTTAU_AC_BAR,
+	EMMREG_NOTTAU_WAIT_THROTTLING_TIMER_TIMEOUT,
+	EMMREG_NOTTAU_WAIT_T3402_TIMEOUT,
+	EMMREG_NOTTAU_EVTCTRL_SUSPEND,
+	EMMERG_NOTTAU_EVTCTRL_REJECT,
+	EMMREG_NOTTAU_WAIT_PLMNSEL_SELECTION_FINISH,
+	EMMREG_NOTTAU_PERIODIC_TAU_BUT_EXSR,
+	EMMREG_NOTTAU_CONN_PEND_BY_OTHER,
+	EMMREG_NOTTAU_CONN_FAIL_CEL_RESEL,
+	EMMREG_NOTTAU_CONN_FAIL_IRCR,
+	EMMREG_NOTTAU_CONN_FAIL_AC_BAR,
+	EMMREG_NOTTAU_CONN_FAIL_NW_REJECT,
+	EMMREG_NOTTAU_CONN_FAIL_IDLE_OOS,
+	EMMREG_NOTTAU_CONN_PEND_ACCPTABLE_CELL,
+	EMMREG_NOTTAU_CONN_PEND_NO_CELL,
+	EMMREG_NOTTAU_ENCODE_TAU_REQ_FAILURE,
+	EMMREG_NOTTAU_ABORT,
+	EMMREG_NOTTAU_WRAP_AROUND,
+	EMMREG_NOTTAU_IMSI_PAGING,
+	EMMREG_NOTTAU_LOW_LAYER_FAILURE,
+	EMMREG_NOTTAU_PERIODIC_TAU_CANCEL,
+	EMMREG_NOTTAU_AUTH_REJECT,
+	EMMREG_NOTTAU_MT_DETACH,
+	EMMREG_NOTTAU_E2UG_SUCCESS,
+	EMMREG_NOTTAU_SUCCESS
+}em_emm_reg_not_tau_reason_enum;	
+
+typedef struct
+{
+	/* indicate if power down detach is triggered or not */
+	kal_bool 							powerDownDetach;
+
+	/* indicate if SIM detach is triggered or not */
+	kal_bool 							simDetach;
+
+	/* indicate if EPS detach or combined EPS detach is triggered or not */
+	kal_bool 							epsDetach;
+
+	/* indicate if ESM detach is triggered or not */
+	kal_bool 							esmDetach;
+
+	/* indicate if RB detach is triggered or not */
+	kal_bool 							rbDetach;
+
+	/* indicate if IMSI detach is triggered or not */
+	kal_bool 							imsiDetach;
+
+	/* calculated detach type to construct DETACH-REQUEST to network */
+	em_emm_reg_user_detach_type_enum 	detachType;
+}em_emm_reg_user_detach_type_struct;
+
+typedef struct
+{
+    kal_bool                    imsiDetach;
+    
+    kal_bool                    tauGmmstateCombinedIMSI;
+    
+    kal_bool                    regFailCauseOfImsiAtt;
+    
+    kal_bool                    periodicTimerTimeoutCovOut;
+    
+    kal_bool                    enterCsPsMode;
+    
+}em_emm_reg_combined_tau_info_type_struct;
+
+typedef enum
+{
+    EM_EMM_DOMAIN_NONE = 0,
+    EM_EMM_CS_DOMAIN,
+    EM_EMM_PS_DOMAIN,
+    EM_EMM_CS_PS_DOMAIN
+} em_emm_reject_domain_enum;
+
+typedef struct 
+{ 
+	plmn_struct 				plmn_id;
+	kal_uint16 					tac;
+} em_enasas_tai_struct;
+
+typedef enum
+{
+    EM_EMM_NASMSG_STATE_IDLE = 0,
+    EM_EMM_NASMSG_STATE_DATA_WAIT_ESMMSG,
+    EM_EMM_NASMSG_STATE_EPSB_WAIT_ESMMSG,
+    EM_EMM_NASMSG_STATE_WAIT_CELL_INFO,
+    EM_EMM_NASMSG_STATE_MAX
+} em_emm_nasmsg_state_enum;
+
+
+typedef struct
+{
+	/* trigger TAU because change into a new TAI not in TAI list or target
+	* TAI (abnorma case).
+	*
+	* Priority(V.S. PS detach): High
+	* Reason: The registration status is not valid for NW.
+	* PS detach conflict result: TAU first, then PS detach
+	*/
+	kal_bool movedInTai;
+
+	/* trigger TAU because connection is released with load balancing
+	*
+	* Priority(V.S. PS detach): High
+	* Reason: Load balancing is kind of meaning that the registration status
+	* is not valid for current MME
+	* PS detach conflict result: TAU first, then PS detach
+	*/
+	kal_bool loadBalancing;
+
+	/* trigger TAU becuase signaling recovery without pending UL data or signaling
+	*
+	* Priority(V.S. PS detach): Low
+	* Reason: PS detach is kind of UL signalling.
+	* PS detach conflict result: PS detach and ignore this trigger
+	*/
+	kal_bool nasSignallingRecovery;
+
+	/* trigger TAU because an EPS bearer is locally released by ESM
+	*
+	* Priority(V.S. PS detach): Low
+	* Reason: The regsiteration status is valid for NW and the EPS bearer sync
+	* is not very urgent. So forget it!
+	* PS detach conflict result: PS detach and ignore this trigger
+	*/
+	kal_bool epsBearerLocalRel;
+
+	/* trigger TAU because retrying TAU after T3411 timeout.
+	* Note: REG will clear all triggers after TAU failure and start T3411.
+	*
+	* Priority(V.S. PS detach): Low
+	* Reason: depend on update status. EU1 means previous TAU is for low
+	* pirority TAU and registration status is still valid for NW
+	* PS detach conflict result: if EU1, PS detach and ignore this trigger
+	* if not EU1, no such case, PS detach will
+	*                            local detach right awary after procedure judge
+	*/
+	kal_bool                    t3411Timeout;
+
+	/* trigger TAU because retrying TAU after T3402 timeout.
+	* Note: REG will clear all triggers after TAU failure and start T3402.
+	*
+	* Priority(V.S. PS detach): Low
+	* Reason: depend on update status. EU1 means previous TAU is for low
+	* pirority TAU and registration status is still valid for NW
+	* PS detach conflict result: if EU1, PS detach and ignore this trigger
+	* if not EU1, no such case, PS detach will
+	* local detach right awary after procedure judge
+	*/
+	kal_bool t3402Timeout;
+
+	/* trigger TAU because T3412 timeout
+	* Priority(V.S. PS detach): Low
+	* Reason: sync location is not necessary because UE want to detach
+	* PS detach conflict result: PS detach and ignore this trigger
+	*/
+	kal_bool periodicTimerTimeout;
+
+	/* trigger TAU because T3346 timeout in REGISTERED.attempting-to-update.
+	*
+	* Priority(V.S. PS detach): High
+	* Reason: The registration status is not valid for NW due to EU2
+	* PS detach conflict result: TAU, but the judge result will local detach
+	* due to EU2
+	*
+	*/
+	kal_bool t3346Timeout;
+
+	/* trigger TAU because CALL want REG perform immediately without waiting
+	 * T3411 or T3402.
+	 *
+	 * Priority(V.S. PS detach): Low
+	 * Reason: If the PS detach exists, the SR or EXSR is not important any
+	 *         more. So forget it!
+	 * PS detach conflict result: PS detach and ignore this trigger
+	 */
+    kal_bool                    callRequired;
+
+	/* trigger TAU because current TAU-REQUEST is sent but current TAU
+	* procedure is aborted by other higher priority event. Since original TAU
+	* trigger may be canceled, REG needs tauCancel to trigger TAU event when
+	* original trigger is canceled.
+	*
+	* Priority(V.S. PS detach): Low
+	* Reason: depend on other trigger. If there is no other trigger, it means
+	* the trigger may not be high priority.
+	* PS detach conflict result: PS detach and ignore this trigger
+	*/
+	kal_bool tauCancel;
+
+	/* (r) upon reception paign indication using S-TMSI, if the timer T3346 is
+	* running and the UE is in the EMM.REGISTERED.ATTEMPTING.TO.UPDATE. All
+	* the condition is checked by EMM_CALL.
+	*
+	* CR2724_R14_C1-170086
+	* MT paging is come at state EMM.REGISTERED.ATTEMPTING.TO.UPDATE, no
+	* matter the T3346 is running or not, CALL will trigger REG to do TAU.
+	*
+	* Priority(V.S. PS detach): Low
+	* Reason: depend on update status. EU1 means valid registration status.
+	* But if this happen, EMM_CALL must be something wrong because
+	* it can perform SR directly. If EU2, EMM_REG will local detach
+	* before receive TAU_INIT_REQ
+	* PS detach conflict result: If EU1, PS detach and ignore this trigger
+	* if not EU1, no such case, PS detach will
+	*                            local detach right awary after procedure judge
+	*/
+	kal_bool                    responseMtPaging;
+
+	/* CR1604, CR1772, CR1795, CR1828, CR1854
+	* When CSFB fails or cancel, UE should set EU2 and need to perform TAU
+	* to prevent missing PS paging. This decision and modification is done
+	* by EMM_CALL.
+	*
+	* Priority(V.S. PS detach): High
+	* Reason: NW does not know UE back to LTE
+	* PS detach conflict result: TAU first, then PS detach
+	*/
+	kal_bool csfbFailureOrCancel;
+
+	/* [multimode]
+	* trigger TAU because there is no EPS bearer after inter RAT UG2E.
+	*
+	* Priority(V.S. PS detach): Low
+	* Reason: The regsiteration status is valid for NW and the EPS bearer sync
+	* is not very urgent. So forget it!
+	* PS detach conflict result: PS detach and ignore this trigger
+	*/
+	kal_bool noEpsbCtxtRatChg;
+
+	/* [multimode]
+	* trigger TAU because inter RAT UG2E with HO and T3402 is running
+	* (skip T3402) or inter RAT UG2E and TIN is P-TMSI.
+	*
+	* Priority(V.S. PS detach): High
+	* Reason: NW does not know UE back to LTE
+	* PS detach conflict result: TAU first, then PS detach
+	*/
+	kal_bool interRatChg;
+
+	/* [multimode]
+	* trigger TAU because E2UG success, and T3411 or T3401 is running or
+	* current TAU type is not invalid. It is for a case that E2UG and back
+	* to LTE immediately.
+	*
+	* Priority(V.S. PS detach): Low
+	* Reason: This case will not happen. If 4G23 IRAT success, then MM will
+	* finish PS detach before IRAT 23G4.
+	* PS detach conflict result: PS detach and ignore this trigger
+	*/
+	kal_bool e2UgSuccess;
+
+	/* [multimode]
+	 * trigger TAU because NW initiated IMSI detach
+	 *
+	 * Priority(V.S. PS detach): Low
+	 * Reason: Only CS registration is invalid but PS registration is valid.
+	 * PS detach conflict result: PS detach and ignore this trigger
+	 */
+	kal_bool                    imsiDetach;
+
+	/* [multimode]
+	* trigger TAU because 2G3G required after inter RAT UG2E
+	*
+	* Priority(V.S. PS detach): High
+	* Reason: NW does not know UE back to LTE
+	* PS detach conflict result: TAU first, then PS detach
+	*/
+	kal_bool tauGmmstateRequired;
+
+	/* [multimode]
+	* trigger combined TAU with IMSI attach because 2G3G required after
+	* inter RAT UG2E
+	*
+	* Priority(V.S. PS detach): High
+	* Reason: NW does not know UE back to LTE
+	* PS detach conflict result: TAU first, then PS detach
+	*/
+	kal_bool tauGmmstateCombinedIMSI;
+
+	/* [multimode]
+	* trigger TAU because UE mode is changed from PS mode to CS/PS mode
+	*
+	* Priority(V.S. PS detach): Low
+	* Reason: capability change is not urgent. Forget it!
+	* PS detach conflict result: PS detach and ignore this trigger
+	*/
+	kal_bool enterCsPsMode;
+
+	/* trigger TAU because some capability is changed (e.g., voice domain
+	* preference or usage setting).
+	*
+	* Priority(V.S. PS detach): Low
+	* Reason: capability change is not urgent. Forget it!
+	* PS detach conflict result: PS detach and ignore this trigger
+	*/
+	kal_bool capabilityChanged;
+
+#ifdef __VOLTE_SUPPORT__
+	/* [IMS]
+	 * trigger TAU because UE activates mobility management for IMS voice 
+	 * termination and TIN is RAT-related TMSI
+	 *
+	 * Priority(V.S. PS detach): Low
+	 * Reason: Registration status is still valid due to ISR.
+	 * PS detach conflict result: PS detach and ignore this trigger
+	 */
+	kal_bool  actMmForImsVoice;
+
+	/* [IMS]
+	* trigger TAU because A/Gb to S1 and and TIN is RAT-related TMSI, but
+	* annex P.4 in TS 24.008 is meet
+	*
+	* Priority(V.S. PS detach): Low
+	* Reason: Registration status is still valid due to ISR.
+	* PS detach conflict result: PS detach and ignore this trigger
+	*/
+	kal_bool iratImsVoiceTerm;
+#endif /* __VOLTE_SUPPORT__ */
+
+// #ifdef __REL10__: t3245
+	/* trigger TAU because T3245 timeout in REGISTERED.attempting-to-update.
+	*
+	* Priority(V.S. PS detach): Low
+	* Reason:Only CS registration is invalid but PS registration is valid.
+	* PS detach conflict result: PS detach and ignore this trigger
+	*/
+	kal_bool csInvalidSIMRecovered;
+// #endif
+
+	/* trigger TAU because user manual CSG selection. REG only checks if
+	* current CSG cell is in allowed CSG list or not.
+	*
+	* Priority (V.S. PS detach): High
+	* Reason: The registration status is not valid for NW.
+	* PS detach conflict result: TAU first, then PS detach
+	*/
+	kal_bool manualCsgSelect;
+
+	/* trigger TAU if deplex type change
+	*
+	* Priority(V.S. PS detach): Low
+	* Reason: No need to sync connection with NW because PS detach will proceed
+	* PS detach conflict result: PS detach and ignore this trigger
+	*/
+	kal_bool duplexTypeChange;
+
+	/* trigger TAU if inter rat to 23G fail. 
+     * Work around solution only for GIONEE customer. 
+     * Currently, this trigger is set only if redirection 23G failure.
+     *
+     * Priority(V.S. PS detach): Low
+     * Reason: No need to sync connection with NW because PS detach will proceed
+     * PS detach conflict result: PS detach and ignore this trigger
+     */
+    kal_bool e2UgFail;
+
+	/*
+	* VZ_REQ_LTEDATA_6800
+	* trigger TAU because dynamic UE specific DRX setting has been
+	* requested byhigher layers.
+	*
+	* Priority(V.S. PS detach): Low
+	* Reason: capability change is not urgent. Forget it!
+	* PS detach conflict result: PS detach and ignore this trigger
+	*/
+	kal_bool dynamicDrx;
+
+#ifdef __CDMA2000_RAT__
+	/* [C2K + SRLTE] [CT spec]
+	* trigger TAU because DL data is suspend by NW when ExtSR is sent for 1xRTT
+	* C2K call to network, after this call procedure is end (might be: call
+	* disconnected, call abort, any other reason make call procedure end),
+	* TAU need to be perform to resume DL data in network side.
+	*
+	* Priority(V.S. PS detach): High
+	* Reason: NW does not know UE back to LTE
+	* PS detach conflict result: TAU first, then PS detach
+	*/
+	kal_bool extSRSentForC2K;
+#endif /* __CDMA2000_RAT__ */
+
+	/* Trigger TAU because user manual selection and T3402 is running in
+	* verizon. Due to verizon requirement, T3402 is running, UE cannot
+	* do TAU. User manual selection is an exception to let UE do tau.
+	* MTK design not verizon requirement, but related to VZ_REQ_LTEMMO_7399
+	* e.g. Manual System Selection functionality.
+	*
+	* Priority(V.S. PS detach): Low
+	* Reason: Since PS detach exists, it is not necessary to perform TAU
+	*         for manual selection.
+	* PS detach conflict result: PS detach and ignore this trigger
+	*/
+	kal_bool                    manualCellSelect;
+
+	/* trigger TAU if local release due to plmn list in connected mode
+	*
+	* Priority(V.S. PS detach): Low
+	* Reason: No need to sync connection with NW because PS detach will proceed
+	* PS detach conflict result: PS detach and ignore this trigger
+	*/
+	kal_bool plmnlistInConnected;
+
+#if defined(__VOLTE_SUPPORT__) && defined(__CDMA2000_RAT__)
+	/* [IMS] [C2K]
+	* [ALPS02585002] for VZ hVoLTE, E911 test
+	* trigger TAU because SRLTE mode to LTE-only mode or LTE-only mode
+	* to SRLTE mode in hVoLTE state.
+	*
+	* Priority(V.S. PS detach): High (TBD)
+	* Reason: TBD
+	* PS detach conflict result: TAU first, then PS detach
+	*/
+	kal_bool hvolteModeChange;
+#endif
+
+	/* When RRC notify "ENASAS_ACTION_TAU" in REL_IND, REG will set this
+	* trigger and perform TAU to let NW knows UE is keep staying in LTE.
+	*/
+	kal_bool syncConnStatus;
+
+#if defined(__REMOTE_SIM__)
+	/* This trigger is for connection locally released during RSIM Auth abort. Since
+	* signalling status is unsync with network, will need to further sync with NW.
+	*
+	* Priority(V.S. PS detach): Low
+	* Reason: PS detach is kind of UL signalling.
+	* PS detach conflict result: PS detach and ignore this trigger
+	*/
+	kal_bool authAbortInConnected;
+#endif /* __REMOTE_SIM__ */
+
+}em_emm_reg_tau_trigger_struct; //Same as emm_reg_tau_trigger_struct
+
+typedef struct
+{
+    em_sr_type_enum              service_request_type;
+    em_sr_cause_enum             service_request_cause; // RRC establishment cause (valid for R11 and earlier implementation)
+    em_sr_est_cause_enum         service_request_est_cause; // RRC establishment cause (valid from R12 implementation onwards)
+    em_sr_est_type_enum          service_request_est_type; // RRC establishment type (valid from R12 implementation onwards)
+    em_mo_csfb_cause_enum        mo_csfb_cause;
+    em_mt_csfb_paging_id_enum    mt_csfb_paging_id;
+    em_emm_cause_enum            ext_service_reject_cause;
+}l4c_em_emm_call_para_struct;
+
+
+typedef struct
+{
+    em_emm_ecm_status_enum ecm_status;
+    kal_uint8                              ac_barring_status;
+}l4c_em_emm_conn_para_struct;
+
+
+typedef struct
+{
+    em_emm_attach_type_enum                 eps_attach_type;
+    em_emm_additional_update_type_enum      attach_additional_update_type;
+    em_emm_attach_result_enum               eps_attach_result;
+    em_emm_additional_update_result_enum    attach_additional_update_result;
+    em_emm_cause_enum                       attach_emm_cause;
+    kal_uint32                              attach_attempt_count;
+    em_emm_attach_status                    attach_status;
+
+    em_emm_update_type_enum                 tau_req_update_type;
+    em_emm_additional_update_type_enum      tau_additional_update_type;
+    em_emm_update_result_enum               tau_update_result;
+    em_emm_additional_update_result_enum    tau_additional_update_result;
+    em_emm_cause_enum                       tau_emm_cause;
+    kal_uint32                              tau_attempt_count;
+    em_emm_tau_status                       tau_status;
+
+    em_emm_user_detach_type_enum            user_detach_type;
+    em_emm_nw_detach_type_enum              nw_detach_type;
+    em_emm_cause_enum                       nw_detach_emm_cause;
+    kal_uint32                              detach_attempt_count;
+
+    em_emm_ims_service_ind_enum             ims_service_ind;
+    em_emm_emergency_service_ind_enum       emergency_service_ind;
+
+    em_emm_lai_struct                       lai;
+
+    em_emm_cause_source_enum                emm_cause_source;
+    kal_uint32                              emm_cause;
+}l4c_em_emm_reg_para_struct;
+
+typedef struct
+{
+    plmn_struct selected_plmn;
+    kal_uint16        tac;
+    em_csg_access_mode_enum  csg_access_mode;
+    kal_uint32        csg_id;
+    em_lte_duplex_type_enum  duplex_type;
+    kal_uint32        cell_id;
+}l4c_em_emm_plmnsel_para_struct;
+
+typedef struct
+{
+    em_emm_update_status_enum update_status;
+    em_emm_sim_status_enum cs_sim_status;
+    em_emm_sim_status_enum ps_sim_status;
+    em_emm_guti_struct guti;
+
+}l4c_em_emm_usimsrv_para_struct;
+
+typedef struct
+{
+    em_emm_tin_enum tin;
+}l4c_em_emm_nvmsrv_para_struct;
+
+typedef struct
+{
+    kal_uint16  t3402_remaining_time;   //in second
+}l4c_em_emm_timersrv_para_struct;
+
+typedef struct
+{
+    em_emm_mainstate_enum  emm_mainstate;
+    em_emm_substate_enum    emm_substate;
+}l4c_em_emm_statesrv_para_struct;
+
+typedef struct
+{
+    kal_uint8  integrity_alg;
+    kal_uint8  ciphering_alg;
+    kal_bool   is_last_auth_rej;
+} l4c_em_emm_sec_para_struct;
+
+typedef struct
+{
+    kal_bool                       is_valid;
+    em_emm_call_fail_trigger_enum  call_fail_trigger;
+    em_emm_call_est_cause_enum     call_est_cause;
+    em_emm_call_rel_cause_enum     call_rel_cause;
+    em_emm_call_ignore_paging_cause_enum     call_ignore_paging_cause;
+}l4c_em_emm_call_csfb_para_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                            em_info;
+    l4c_em_emm_call_para_struct             emm_call_para;
+    l4c_em_emm_conn_para_struct             emm_conn_para;
+    l4c_em_emm_reg_para_struct              emm_reg_para;
+    l4c_em_emm_plmnsel_para_struct          emm_plmnsel_para;
+    l4c_em_emm_usimsrv_para_struct          emm_usimsrv_para;
+    l4c_em_emm_nvmsrv_para_struct           emm_nvmsrv_para;
+    l4c_em_emm_timersrv_para_struct         emm_timersrv_para;
+    l4c_em_emm_sec_para_struct              emm_sec_para;
+    l4c_em_emm_statesrv_para_struct         emm_statesrv_para;
+	l4c_em_emm_call_csfb_para_struct        emm_call_csfb_para; 
+} em_emm_l4c_emm_info_ind_struct;
+
+typedef em_emm_l4c_emm_info_ind_struct em_emm_elt_emm_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum    em_info;
+    l4c_em_emm_call_para_struct             emm_call_para;
+    l4c_em_emm_call_csfb_para_struct        emm_call_csfb_para;     
+} em_emm_l4c_csfb_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum    em_info;
+}em_emm_l4c_lai_change_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum    em_info;
+    kal_bool        is_auth_rej;
+}em_emm_sec_event_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum    em_info;
+    l4c_em_emm_call_para_struct             emm_call_para;
+}em_emm_l4c_call_info_ind_struct;
+
+
+/*
+ * Structure for EM_EMM_REG_EVENT_INFO_IND message
+ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum            em_info;
+	
+	/* [MOLY00170623] VzW MDMI KPI - emmFailureCauseEvent*/
+	kal_bool                is_attach_rej_cause_valid;
+	emm_cause_enum          emm_attach_rej_cause;
+	
+	/* CHR requirement - event(only one can be true)*/
+	kal_bool                is_attach_request;
+	kal_bool                is_attach_accept;
+	kal_bool                is_attach_reject;
+	kal_bool                is_t3410_expiry;
+	kal_bool                is_tau_request;
+	kal_bool                is_tau_accept;
+	kal_bool                is_tau_reject;
+	kal_bool                is_imsi_paging;
+	kal_bool                is_nw_detach;
+	kal_bool                is_ue_detach;
+	
+	/* CHR requirement - value*/
+	// valid when is_attach_reject is KAL_TRUE
+	emm_attach_type_enum    attach_type;
+	// valid when is_tau_reject is KAL_TRUE
+	emm_update_type_enum    tau_type;
+	emm_cause_enum          emm_tau_rej_cause;
+	// always valid
+	kal_bool                is_data_sim;
+    emm_cause_enum          emm_attach_rej_original_cause;
+	emm_cause_enum          emm_tau_rej_original_cause;
+    kal_bool                is_registration_success;
+}em_emm_reg_event_info_ind_struct;
+
+/*
+* Structure for EM_EMM_REG_COMMON_INFO_IND message
+*/
+typedef struct
+{
+	LOCAL_PARA_HDR
+	em_info_enum 						em_info;
+	kal_uint8 							tmsi[EM_TMSI_LEN];
+	em_enasas_tai_struct 				taiList[EM_TAI_LIST_MAX];
+	em_emm_lai_struct 					lai;
+	emergency_service_ind_enum 			emergency_service_ind;
+	location_service_epc_ind_enum 		location_service_epc_ind;
+	location_service_cs_ind_enum 		location_service_cs_ind;
+	ims_ind_enum 						ims_ind;
+
+}em_emm_reg_common_info_ind_struct;
+
+/*
+ * Structure for EM_EMM_NASMSG_INFO_IND message
+ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                            em_info;
+    em_emm_nasmsg_state_enum                substate;         //NASMSG's substate
+    emm_msg_type_enum                       last_rcv_emm_msg; //last received EMM message
+    kal_uint8 								reject_type;
+	kal_uint8                               reject_cause;
+}em_emm_nasmsg_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum    em_info;
+    em_emm_cause_source_enum    event;
+    kal_uint8                   reject_type;
+    em_emm_cause_enum           original_emm_cause;
+    em_emm_cause_enum           converted_emm_cause;
+    kal_bool                    is_ps_sim_valid;
+    kal_bool                    is_cs_sim_valid;
+    em_emm_reject_domain_enum   reject_domain;
+}em_emm_cause_info_ind_struct;
+
+/*
+ * Structure for EM_EMM_CALL_EVENT_INFO_IND message
+ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum    em_info;
+    kal_bool                                is_stmsi_paging_rcvd;
+    kal_bool                                is_data_sim;
+    kal_bool                                is_stmsi_paging_fail; //EMM fail to perform service request in response to PS paging
+}em_emm_call_event_info_ind_struct;
+
+/*
+* Structure for EM_EMM_REG_ATTACH_INFO_IND message
+*/
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	em_info_enum em_info;
+	em_emm_attach_type_enum eps_attach_type;
+	em_emm_reg_eps_mobile_identity_type_enum mobile_id_type;
+	em_emm_reg_additional_update_type_enum additional_update_type;
+	em_emm_attach_result_enum eps_attach_result;
+	em_emm_cause_enum emm_cause;
+	kal_uint32 attach_attempt_count;
+	/* The last attach procedure result */
+	em_emm_reg_last_attach_result_enum last_attach_proc_result;
+	/* The reason why can not do attach */
+	em_emm_reg_not_att_reason_enum not_attach_reason;
+	em_emm_reg_proc_status_enum                    attach_status;
+}em_emm_reg_attach_info_ind_struct;
+
+/*
+* Structure for EM_EMM_REG_DETACH_INFO_IND message
+*/
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	em_info_enum em_info;
+	em_emm_reg_user_detach_type_struct user_detach_type;
+	em_emm_reg_nw_detach_type_enum nw_detach_type;
+	em_emm_cause_enum nw_detach_cause;
+	kal_uint32 retry_count;
+	em_emm_reg_dereg_reason_enum                last_dereg_reason;
+	em_emm_reg_user_detach_type_struct          last_user_detach_type;
+	em_emm_reg_nw_detach_type_enum              last_nw_detach_type;
+	em_emm_cause_enum							last_nw_detach_cause;
+}em_emm_reg_detach_info_ind_struct;
+
+/*
+* Structure for EM_EMM_REG_TAU_INFO_IND message
+*/
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	em_info_enum em_info;
+	em_emm_update_type_enum eps_update_type;
+	kal_bool active_flag;
+	em_emm_reg_eps_mobile_identity_type_enum mobile_id_type;
+	em_emm_reg_additional_update_type_enum additional_update_type;
+	em_emm_update_result_enum eps_update_result;
+	em_emm_cause_enum emm_cause;
+	kal_uint32 tau_attempt_count;
+	/* indicate why do combined tau with imsi attach */
+	em_emm_reg_combined_tau_info_type_struct combined_tau_imsi_info;
+	/* The last tau procedure result */
+	em_emm_reg_last_tau_result_enum last_tau_proc_result;
+	/* The last tau procedure trigger event */
+	em_emm_reg_tau_trigger_struct last_tau_trigger_event;
+	/* The reason why can not do tau */
+	em_emm_reg_not_tau_reason_enum not_tau_reason;
+	em_emm_reg_proc_status_enum tau_status;
+	/* the total counts that TAU-request has been sent */
+	kal_uint16                                     tau_accumulated_count;    
+	    
+}em_emm_reg_tau_info_ind_struct;
+
+/*
+ * Structure for EM_EMM_CALL_INFO_IND message
+ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                 em_info;
+    kal_bool                     isBearerActive;
+    kal_bool                     isPsMoMtInstance;
+    kal_bool                     isCsMoMtInstance;
+    kal_bool                     isSmsEstTrigger;
+    kal_bool                     isKeepSmsEst;
+    kal_bool                     reestReqFlg;
+    kal_bool                     pageIndeFlg;
+    em_sr_type_enum              srType;
+    em_sr_est_type_enum          estCause; // R11
+    em_sr_est_cause_enum         establishmentCause; // R12 RRC establishment cause
+    em_sr_est_type_enum          establishmentType; // R12 RRC establishment type
+    kal_uint32                   waitSndEsmMsgNum;
+    kal_uint32                   waitSndSmsMsgNum;
+    em_mo_csfb_cause_enum        csMoTrigger;
+    em_mt_csfb_paging_id_enum    csMtTrigger;
+}em_emm_call_info_ind_struct;
+/********************* end of EMM definition ****************************/
+
+
+#endif /* _EM_EMM_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_enl2_public_struct.h b/mcu/interface/service/em/em_enl2_public_struct.h
new file mode 100644
index 0000000..00163f3
--- /dev/null
+++ b/mcu/interface/service/em/em_enl2_public_struct.h
@@ -0,0 +1,1403 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_enl2_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_ENL2_PUBLIC_STRUCT_H
+#define _EM_ENL2_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+#include "em_as_common_public_struct.h"
+#include "abs_time.h"
+#include "el1_cnst.h"
+
+/* For MDM use */
+typedef enum {
+    EMAC_MAJOR_VERSION = 13
+}EMAC_MAJOR_VERSION_INFO;
+
+typedef enum {
+    EMAC_MINOR_VERSION = 9
+}EMAC_MINOR_VERSION_INFO;
+
+typedef enum {
+    EMAC_RELEASE_VERSION = 0
+}EMAC_RELEASE_VERSION_INFO;
+
+
+typedef enum {
+    ERLC_MAJOR_VERSION = 13
+}ERLC_MAJOR_VERSION_INFO;
+
+typedef enum {
+    ERLC_MINOR_VERSION = 4
+}ERLC_MINOR_VERSION_INFO;
+
+typedef enum {
+    ERLC_RELEASE_VERSION = 0
+}ERLC_RELEASE_VERSION_INFO;
+
+
+typedef enum {
+    EPDCP_MAJOR_VERSION = 13
+}EPDCP_MAJOR_VERSION_INFO;
+
+typedef enum {
+    EPDCP_MINOR_VERSION = 6
+}EPDCP_MINOR_VERSION_INFO;
+
+typedef enum {
+    EPDCP_RELEASE_VERSION = 0
+}EPDCP_RELEASE_VERSION_INFO;
+
+
+
+/* EL2 public EM info */
+typedef struct
+{
+    kal_uint8 srb_num;
+    kal_uint8 drb_num;
+} em_el2_pub_info_t;
+
+typedef struct
+{
+    kal_uint32 emac_tx_bits;
+    kal_uint32 emac_rx_bits;
+} em_emac_pub_tput_info_struct;
+
+typedef enum
+{
+    ERLC_RLC_MODE_TM    = 0,
+    ERLC_RLC_MODE_UM    = 1,
+    ERLC_RLC_MODE_AM    = 2
+} erlc_rlc_mode_enum;
+
+
+/* ERLC-DL RB cfg, refresh per RB life cycle */
+typedef struct
+{
+    kal_bool    valid;
+    /* Configurations */
+    kal_uint8   rb_id;      // 1...32
+    kal_uint8   epsb_id;    // 0,5...15
+    kal_uint8   lgch_id;    // 3...10
+    kal_uint8   cfg_idx;    // (0...34)0~31:DRB1~DRB32, 32:SRB0, 33:SRB1, 34:SRB2
+    erlc_rlc_mode_enum  rlc_mode;   // 0: TM, 1: UM, 2: AM
+
+    /* RB control */
+    kal_uint32  est_cntr;       // establish
+    kal_uint32  rel_cntr;       // release
+    kal_uint32  reest_wo_recfg_cntr;  // re-establish w/o reconfig
+    kal_uint32  reest_wi_recfg_cntr;  // re-establish w/ reconfig
+    kal_uint32  recfg_cntr;         // reconfig
+
+    /* 15-bit LI configured */
+    kal_bool   li_len_15_bit;
+} erlcdl_rb_pub_stats_cfg;
+
+
+
+/* ERLC-DL MCCH,MRB cfg, refresh per RB life cycle */
+typedef struct
+{
+    kal_bool    valid;
+    /* Configuration */
+    kal_uint8   mbsfn_area_id;
+    kal_uint8   pmch_id;
+    kal_uint8   lgch_id;    // 3...10
+    kal_uint16  session_id;
+
+} erlcdl_mrb_pub_stats_cfg;
+
+/* ERLC-DL RB statistics since the last RLC re-establishment */
+typedef struct
+{
+    kal_uint32  rx_data_pdu_cntr_rst;   // Total number of RLC Data PDUs received since the last RLC re-establishment
+    kal_uint32  rx_data_pdu_bytes_rst;   // Total number of RLC Data PDU received in bytes since the last RLC re-establishment
+    kal_uint32  rx_stus_pdu_cntr_rst;   // Total number of RLC Control PDUs received since the last RLC re-establishment
+    kal_uint32  rx_stus_pdu_bytes_rst;   // Total number of RLC Control PDU received in bytes since the last RLC re-establishment
+    kal_uint32  rx_valid_stus_cntr_rst;   // Total number of RLC status PDU received and forwarded to uplink since the last RLC re-establishment
+    kal_uint32  rx_valid_stus_bytes_rst;   // Total number of RLC status PDU received and forwarded to uplink in bytes since the last RLC re-establishment
+    kal_uint32  invalid_pdu_cntr_rst;   // Total number of RLC PDUs invalid since the last RLC re-establishment
+    kal_uint32  invalid_pdu_bytes_rst;   // Total number of RLC PDUs invalid in bytes since the last RLC re-establishment
+    kal_uint32  dropped_pdu_cntr_rst;   // Total number of PDUs dropped excluding duplicated since the last RLC re-establishment
+    kal_uint32  dropped_pdu_bytes_rst;   // Total number of PDUs dropped in bytes excluding duplicated since the last RLC re-establishment
+    kal_uint32  rx_retx_cntr_rst;   // Total number of RLC PDUs retransmitted from receiver perspective since the last RLC re-establishment
+    kal_uint32  rx_retx_bytes_rst;   // Total number of RLC PDUs retransmitted in bytes from receiver perspective since the last RLC re-establishment
+    kal_uint32  dup_pdu_cntr_rst;   // Total number of RLC PDUs duplicated since the last RLC re-establishment
+    kal_uint32  dup_pdu_bytes_rst;   // Total number of RLC PDUs duplicated in bytes since the last RLC re-establishment
+    kal_uint32  missed_um_pdu_cntr_rst;   // Total number of UM PDUs missing on DL since the last RLC re-establishment
+    kal_uint32  reest_ooo_sdu_cntr_rst;   // Total number of out of order SDUs forwarded to PDCP during RLC reestablishment since the last RLC re-establishment
+    kal_uint32  dropped_pdu_flc_cntr_rst;  // Total number of PDUs dropped because of flow control since the last RLC re-establishment(in eRLC current design value will always be zero)
+    kal_uint32  dropped_pdu_flc_bytes_rst;  // Total number of PDUs dropped in bytes because of flow control since the last RLC re-establishment(in eRLC current design value will always be zero)
+    kal_uint32  reasm_sdu_cntr_rst;
+    kal_uint32  reasm_sdu_bytes_rst;
+    kal_uint32  reorder_tmr_expry_cntr_rst;
+    kal_uint32  reorder_tmr_start_cntr_rst;
+    kal_uint32  rx_stus_nack_pdu_cntr_rst;   // Total number of Complete RLC PDU NACKs received since last RLC re-establishemnet
+    kal_uint32  rx_stus_nack_seg_cntr_rst;   // Total number of NACKs for RLC Segments received since last RLC re-establishemnet
+
+} erlcdl_rb_pub_stats_rst;
+
+/* ERLC-DL RB statistics, refresh per statistic cycle */
+typedef struct
+{
+    /* PDU */
+    kal_uint32  rcv_blks;        // total rcv. pdu and segment
+    kal_uint32  rx_pdu_cntr;    // total received PDU
+    kal_uint32  rx_data_pdu_cntr;   // Total number of RLC Data PDUs received
+    kal_uint32  rx_stus_pdu_cntr;   // Total number of RLC Control PDUs received
+    kal_uint32  rx_stus_nack_pdu_cntr;   // Total number of Complete RLC PDU NACKs received
+    kal_uint32  rx_stus_nack_seg_cntr;   // Total number of NACKs for RLC Segments received
+    kal_uint32  rx_valid_stus_cntr;   // Total number of RLC status PDU received and forwarded to uplink
+    kal_uint32  dup_pdu_cntr;   // duplicated PDU and segment
+    kal_uint32  invalid_pdu_cntr;   // invalid PDU and segment
+    kal_uint32  dropped_pdu_cntr;   // Total number of PDUs dropped excluding duplicated
+    kal_uint32  rx_retx_cntr;   // Total number of RLC PDUs retransmitted from receiver perspective (vr_r < sn <= vr_ms)
+    kal_uint32  oow_pdu_cntr;   // out-of-window PDU and segment
+    kal_uint32  rx_seg_cntr;    // total received segment
+    kal_uint32  missed_um_pdu_cntr;   // Total number of UM PDUs missing on DL
+    kal_uint32  reest_ooo_sdu_cntr;    // Total number of out of order SDUs forwarded to PDCP during RLC reestablishment
+    kal_uint32  dropped_pdu_flc_cntr;    // Total number of PDUs dropped because of flow control (in eRLC current design value will always be zero)
+    kal_uint32  rcv_bits;       // total bits of blks
+
+    kal_uint32  rx_data_pdu_bytes;  //Total number of Data PDU received in bytes
+    kal_uint32  rx_stus_pdu_bytes;  //Total number of Control PDU received in bytes
+    kal_uint32  rx_valid_stus_bytes;// Total number of RLC status PDU received and forwarded to uplink in bytes
+    kal_uint32  invalid_pdu_bytes;  //Total number of PDUs invalid in bytes
+    kal_uint32  dropped_pdu_bytes;  // Total number of PDUs dropped in bytes excluding duplicated
+    kal_uint32  rx_retx_bytes;      // Total number of PDUs retransmitted in bytes from receiver perspective (vr_r < sn <= vr_ms)
+    kal_uint32  dup_pdu_bytes;      //Total number of PDUs duplicated in bytes
+    kal_uint32  oow_pdu_bytes;      //Total number of PDUs OOW in bytes
+    kal_uint32  dropped_pdu_flc_bytes;    // Total number of PDUs dropped in bytes because of flow control (in eRLC current design value will always be zero)
+
+    /* state variable */
+    kal_uint16  max_pdu_num_in_win;   // max. vr_h - vr_r (vr_uh - vr_ur) when t-reordering expry
+    kal_uint16  sum_pdu_num_in_win;   // for avg. vr_h - vr_r (vr_uh - vr_ur) calculation when t-reordering expry
+
+    /* timeout */
+    kal_uint32  reorder_tmr_expry_cntr;     // num. of t-reordering expry
+    kal_uint32  reorder_tmr_start_cntr;
+
+    /* reassemble */
+    kal_uint32  reasm_sdu_cntr;     // num. of reassemble SDU
+    kal_uint32  reasm_sdu_bytes;    // bytes of reassemble
+
+    erlcdl_rb_pub_stats_rst  rb_stat_rst;   // ERLC-DL RB statistics since the last RLC re-establishment
+
+} erlcdl_rb_pub_stats;
+
+/* ERLC-UL RB cfg, refresh per RB life cycle */
+typedef struct
+{
+    kal_bool    valid;
+    /* Configuration */
+    kal_uint8   rb_id;      // 1...32
+    kal_uint8   epsb_id;    // 0,5...15
+    kal_uint8   lgch_id;    // 3...10
+    kal_uint8   cfg_idx;    // (0...34)0~31:DRB1~DRB32, 32:SRB0, 33:SRB1, 34:SRB2
+    erlc_rlc_mode_enum  rlc_mode;   // 0: TM, 1: UM, 2: AM
+
+    /* RB control */
+    kal_uint8  est_cntr;       // establish
+    kal_uint8  rel_cntr;       // release
+    kal_uint8  reest_wo_recfg_cntr;  // re-establish w/o reconfig
+    kal_uint8  reest_wi_recfg_cntr;  // re-establish w/ reconfig
+    kal_uint8  recfg_cntr;         // reconfig
+
+    /* 15-bit LI configured */
+    kal_bool   li_len_15_bit;
+} erlcul_rb_pub_stats_cfg;
+
+/* ERLC-UL RB statistics since the last RLC re-establishment */
+typedef struct
+{
+    kal_uint32  newtx_pdu_cntr_rst;   // Total number of New Data PDU transmitted since last RLC re-establishemnet
+    kal_uint32  newtx_pdu_bytes_rst;   // Total number of New Data PDU transmitted in bytes including RLC headers since last RLC re-establishemnet
+    kal_uint32  sdu_cntr_rst;   // Total number of RLC SDUs transmitted since last RLC re-establishemnet
+    kal_uint32  sdu_bytes_rst;   // Total number of RLC SDU in bytes transmitted since last RLC re-establishemnet
+    kal_uint32  stus_pdu_cntr_rst;   // Total number of RLC control PDU transmitted since last RLC re-establishemnet
+    kal_uint32  stus_pdu_bytes_rst;   // Total number of RLC Control PDU transmitted in bytes since last RLC re-establishemnet
+    kal_uint32  retx_pdu_cntr_rst;   // Total number of RLC PDUs retransmitted since last RLC re-establishemnet
+    kal_uint32  retx_bits_rst;   // Total number of RLC PDUs retransmitted in bytes since last RLC re-establishemnet
+    kal_uint32  stus_tx_nack_pdu_cntr_rst;   // Total number of complete RLC PDU NACKs sent since the last RLC re-establishment
+    kal_uint32  stus_tx_nack_seg_cntr_rst;   // Total number of RLC segments NACk sent since the last RLC re-establishment
+    kal_uint32  poll_cntr_rst;
+    kal_uint32  poll_retx_cntr_rst;
+
+} erlcul_rb_pub_stats_rst;
+
+/* ERLC-UL RB statistics, refresh per statistic cycle */
+typedef struct
+{
+    /* SDU statistics */
+    kal_uint32  sdu_cntr;           // num. of transmitted SDU
+
+    /* PDU statistics */
+    kal_uint32  newtx_pdu_cntr;     // Total number of New Data PDU transmitted
+    kal_uint32  retx_pdu_cntr;      // reTX AMD PDU
+    kal_uint32  retx_seg_cntr;      // reTX AMD PDU segment
+    kal_uint32  tx_bits;            // total tx bits
+    kal_uint32  retx_bits;          // total retx bits
+
+    kal_uint32  newtx_pdu_bytes;    //Total number of New Data PDU transmitted in bytes including RLC headers
+    kal_uint32  stus_pdu_bytes;     //Total number of RLC Control PDU transmitted in bytes
+    kal_uint32  sdu_bytes;          // Total number of RLC SDU in bytes transmitted
+
+    /* ARQ */
+    kal_uint32  max_retx_pdu_cntr;  // in AM mode and maximum number of retransmissions for a particular RLC PDU has reached
+    kal_uint16  poll_cntr;          // poll number
+    kal_uint16  stus_pdu_cntr;      // tx status pdu
+    kal_uint32  stus_tx_nack_pdu_cntr; //Total number of complete RLC PDU NACKs sent
+    kal_uint32  stus_tx_nack_seg_cntr; //Total number of RLC segments NACk sent
+    kal_uint16  req_retx_pdu_cntr;  // num. of RLC PDUs requested for retransmission
+    kal_uint8   max_pdu_retx_cntr;  // max. retx number of a pdu
+    kal_uint32  nack_pdu_seg_cntr;  // for avg. nacked pdu + seg number per status pdu
+
+    /* state variable */
+    kal_uint16  max_unack_num;   // max. vt_s - vt_a when rcv. a status pdu
+    kal_uint16  sum_unack_num;   // for avg. vt_s - vt_a calcuated when rcv. a status pdu
+
+    /* timeout */
+    kal_uint16  poll_retx_cntr;     // timeout of poll retx
+
+    erlcul_rb_pub_stats_rst  rb_stats_rst;   // ERLC-UL RB statistics since the last RLC re-establishment
+
+} erlcul_rb_pub_stats;
+
+/* ERLC-UL statistics, refresh per statistic cycle */
+typedef struct
+{
+    kal_uint32  grant_cntr;    // ther num. of UL grant count (notified by EMAC)
+    kal_uint32  padding_cntr;  // ther num. of padding count after scheduling
+    kal_uint32  grant_bits;    // total UL grant bits (notified by EMAC)
+    kal_uint32  padding_bits;  // total padding bits after shceduling
+} erlcul_comp_pub_stats;
+
+/* ERLC-DL statistics, refresh per statistic cycle */
+typedef struct
+{
+    kal_uint32  rcv_bad_blks;   // total received CRC failed, no RB mapping blocks
+    kal_uint32  rcv_bad_mbms_blks;   // total received CRC failed, no RB mapping blocks
+} erlcdl_comp_pub_stats;
+
+#define EM_MAX_RLC_HDR_CP_LEN   (16)
+#define EM_MAX_RLC_PDU_LOG_LEN  (256)
+#define EM_RLC_PDU_DATA         (0)    //value defined by VzW
+#define EM_RLC_UM_DATA_PDU_LOG  (0x40) //value defined by VzW, Bit 0 is LSB, Bit:6(RLCUL UM data PDU log)
+
+
+/*VzW EM ERLC OTA-message, ERLC header print*/
+typedef struct
+{
+    kal_uint8  layout_ver:4;
+    kal_uint8  type:3;  //MAC:1, RLC Header:2, PDCP:3, RLC UM PDU:4
+    kal_uint8  truncate:1; //if header is truncated, this bit will set to 1
+
+    kal_uint8  dir:1;  //ul:0, dl:1
+    kal_uint8  msg_type:1;  //data:0, control:1
+    kal_uint8  rlc_mode:1;  //AM:0, UM:1
+    kal_uint8  sn_len:1;  //5bits:0, 10bits:1
+    kal_uint8  li:1;  //w/o li:0, w/ li:1
+    kal_uint8  resv0:3;
+
+    kal_uint8  rlc_hd_len:5;  //range 1 ~ 16 bytes
+    kal_uint8  resv1:1;
+    kal_uint8  resv2:1;
+    kal_uint8  resv3:1;
+
+    kal_uint8  rlc_header[EM_MAX_RLC_HDR_CP_LEN];  //rlc header raw data
+} erlc_ota_stats_struct;
+
+
+/* VzW EM ERLC UmDataPdu, ERLC UM data PDU print */
+#pragma pack(1)
+typedef struct
+{
+    kal_uint8  layout_ver:4;
+    kal_uint8  type:3;  //MAC:1, RLC Header:2, PDCP:3, RLC UM PDU:4
+    kal_uint8  truncate:1; //don't care
+
+    kal_uint8  rlc_mode:1; //AM:0, UM:1
+    kal_uint8  sn_len:1;  //5bits:0, 10bits:1
+    kal_uint8  dir:1;  //ul:0, dl:1
+    kal_uint8  e_bit:1; //not exist:0, exist:1
+    kal_uint8  li:4;  //11bits LI or 15 bits LI (value is 11 or 15)
+
+    kal_uint8  cfg_idx:6;
+    kal_uint8  fi:2;
+
+    kal_uint8  pdu_status:3;
+    kal_uint8  resv1:5;
+
+    kal_uint16  logMask;
+    kal_uint16  pdu_size;  //pdu size in bytes
+    kal_uint16  num_logged;  //num bytes logged
+    kal_uint8   rlc_data[EM_MAX_RLC_PDU_LOG_LEN];
+} erlc_pdu_raw_struct;
+#pragma pack()
+
+/* this define number should be the same as defined in EL2 (in LTE domain) */
+#define EM_PUB_MAX_RLC_RB (20)
+#define EM_PUB_EMBMS_FREQ_SUPPORT (2)
+#define EM_PUB_EMBMS_MCCH_SUPPORT (8)
+#define EM_PUB_EMBMS_MRB_SUPPORT (8)
+
+typedef struct
+{
+    erlcul_comp_pub_stats   ul;
+    erlcdl_comp_pub_stats   dl;
+
+    erlcul_rb_pub_stats_cfg ul_rb_cfg[EM_PUB_MAX_RLC_RB];
+    erlcul_rb_pub_stats     ul_rb[EM_PUB_MAX_RLC_RB];
+    erlcdl_rb_pub_stats_cfg dl_rb_cfg[EM_PUB_MAX_RLC_RB];
+    erlcdl_rb_pub_stats     dl_rb[EM_PUB_MAX_RLC_RB];
+
+    erlcdl_mrb_pub_stats_cfg dl_mcch_cfg[EM_PUB_EMBMS_FREQ_SUPPORT][EM_PUB_EMBMS_MCCH_SUPPORT];
+    erlcdl_rb_pub_stats     dl_mcch[EM_PUB_EMBMS_FREQ_SUPPORT][EM_PUB_EMBMS_MCCH_SUPPORT];
+    erlcdl_mrb_pub_stats_cfg dl_mrb_cfg[EM_PUB_EMBMS_FREQ_SUPPORT][EM_PUB_EMBMS_MRB_SUPPORT];
+    erlcdl_rb_pub_stats     dl_mrb[EM_PUB_EMBMS_FREQ_SUPPORT][EM_PUB_EMBMS_MRB_SUPPORT];
+} em_erlc_pub_stats_struct;
+
+#define EM_PUB_EPDCP_MAX_DRB_NUM (8)
+typedef struct
+{
+    kal_uint8 ebi;
+    kal_uint8 rbid;
+    kal_uint8 rlc_mode; // AM: 0, UM BIDIR: 1, UM UL: 2, UM DL: 3
+    kal_uint8 sn_size_dl;
+    kal_uint8 sn_size_ul;
+    kal_uint8 rohc_status; // not config:0, BIDIR: 1, UL_ONLY: 2
+} epdcp_pub_drb_cfg_t;
+
+typedef struct
+{
+    kal_uint32 ul_disc_cnt;
+    kal_uint32 ul_min_pkt_byte;
+    kal_uint32 ul_max_pkt_byte;
+
+    kal_uint32 dl_lost_cnt;
+        // Sum of PDCP SN gaps of SDUs delivered to upper layers
+    kal_uint32 dl_min_pkt_byte;
+        // For NML/OOW PDUs only.
+        // PDCP headers are not considered for simplicity.
+    kal_uint32 dl_max_pkt_byte;
+        // For NML/OOW PDUs only.
+        // PDCP headers are not considered for simplicity.
+    kal_uint32 next_sbmt_ltm_count; // phased out
+} epdcp_pub_drb_stat_t;
+
+typedef struct
+{
+    kal_uint32 ul_pdu_bits;
+    kal_uint32 ul_tput_bps; // calculate from ul_pdu_bits when send to EM
+    kal_uint32 dl_pdu_bits;
+        // SRB, DRB: includes NML/OOW/CTRL/PHE PDUs
+        // MRB: not counted
+        // PDCP headers are not counted for simplicity
+        // Stores the "byte" count. Will be converted to "bit" count in the
+        // preprocessings before the EM report is sent.
+    kal_uint32 dl_tput_bps; // calculate from dl_pdu_bits when send to EM
+    epdcp_pub_drb_cfg_t drb_cfg[EM_PUB_EPDCP_MAX_DRB_NUM];
+    epdcp_pub_drb_stat_t drb_stat[EM_PUB_EPDCP_MAX_DRB_NUM];
+} em_epdcp_pub_stats_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum        em_info;
+
+    em_el2_pub_info_t   el2_info;
+    em_erlc_pub_stats_struct erlc_stats;
+    em_emac_pub_tput_info_struct emac_tput_info;
+    em_epdcp_pub_stats_struct epdcp_stats;
+} em_el2_pub_status_ind_struct;
+
+//Legacy in LR12: extern em_el2_pub_status_ind_struct el2_pubstatus_g;
+
+typedef enum
+{
+    EMAC_RA_REASON_CHANNEL_REQUEST,
+    EMAC_RA_REASON_RADIO_LINK_TIMEOUT,
+    EMAC_RA_REASON_ULDATA,
+    EMAC_RA_REASON_NOPUCCH,
+    EMAC_RA_REASON_MAXSR,
+    EMAC_RA_REASON_HO,
+    EMAC_RA_REASON_DLDATA,
+    EMAC_RA_REASON_RSIM
+} emac_ra_reason_enum;
+
+typedef enum
+{
+    EMAC_RA_RESULT_SUCCEEDED,
+    EMAC_RA_RESULT_ABORTED,
+    EMAC_RA_RESULT_FAILED_RAR,
+    EMAC_RA_RESULT_FAILED_CR_EXPIRE,
+    EMAC_RA_RESULT_FAILED_CR_FAIL
+} emac_ra_result_enum;
+
+typedef enum
+{
+    EM_EMAC_TTI_BUNDLING_DISABLED,
+    EM_EMAC_TTI_BUNDLING_NORMAL,
+    EM_EMAC_TTI_BUNDLING_ENHANCED_FDD
+} em_emac_tti_bundling_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum          em_info;
+
+    // from ERRC_CONFIG
+    kal_uint8             group_a_size;
+    kal_uint8             msg_sz_group_a;
+    kal_uint8             pow_ramping;
+    kal_uint8             preamble_tx_max;
+    kal_uint8             rar_wnd_sz;
+    kal_uint8             cr_timer;
+    kal_uint8             msg3_tx_max;
+    kal_uint8             group_b_size;
+    kal_uint8             msg_pow_offset_group_b;
+    kal_int8              preamble_init_pow;
+
+    // from PHY_INFO
+    kal_int8              pmax;
+    kal_int8              delta_preamble_msg3;
+
+    em_emac_tti_bundling_enum tti_bundling;
+    kal_bool              dl_sps_configured;
+    kal_bool              ul_sps_configured;
+} em_emac_config_report_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum        em_info;
+    kal_uint32          num_of_rach_try;
+} em_emac_rach_success_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum        em_info;
+    kal_uint32          num_of_rach_try;
+} em_emac_rach_failure_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum        em_info;
+    emac_ra_reason_enum ra_reason;
+
+    kal_uint8           group_a_size;
+    kal_uint8           msg_sz_group_a;
+    kal_uint8           pow_ramping;
+    kal_uint8           preamble_tx_max;
+    kal_uint8           rar_wnd_sz;
+    kal_uint8           cr_timer;
+    kal_uint8           msg3_tx_max;
+    kal_uint8           group_b_size;
+    kal_uint8           msg_pow_offset_group_b;
+    kal_int8            preamble_init_pow;
+    kal_int8            pmax;
+    kal_int8            delta_preamble_msg3;
+
+    kal_uint64          ueid;
+    kal_bool            contention;
+    kal_uint8           prach_mask_index;
+    kal_uint32          msg3_potential_size;
+    kal_uint8           preamble_group;
+    kal_uint32          c_rnti;
+} em_emac_rach_trigger_ind_struct;
+
+
+#define EM_EMAC_MAX_MSG3_DATA_LEN 10
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    em_info_enum em_info;
+    emac_ra_result_enum ra_result;
+
+    kal_uint8           preamble_cnt;
+    kal_uint32          rar_ul_grant;
+    kal_uint16          rar_tc_rnti;
+    kal_uint16          rar_ta_value;
+    kal_bool            contention;
+    kal_uint8           rach_message;
+    kal_uint8           preamble_index;
+    kal_uint8           preamble_power_offset;
+    kal_uint16          backoff_time;
+    kal_int8            harq_id;
+    kal_uint8           msg3_mac_pdu_data[EM_EMAC_MAX_MSG3_DATA_LEN];
+    kal_uint8           msg3_mac_pdu_len;
+
+    kal_uint16          earfcn;
+    kal_uint16          phys_cell_id;
+    kal_uint16          ra_rnti;
+    kal_uint8           ra_preamble_last_TXpower;
+    kal_uint8           rar_successed;
+} em_emac_rach_finish_ind_struct;
+
+#define EM_EMAC_MAX_HEADER_LEN 11
+typedef struct
+{
+    kal_uint8           subframe_nb;
+    kal_uint16          frame_nb;
+    em_emac_rnti_enum   rnti_type;
+    kal_uint8           harq_id;
+    kal_uint32          num_rlc_pdus;
+    kal_uint32          num_padding_bytes;
+    kal_uint8           mac_header_data[EM_EMAC_MAX_HEADER_LEN];
+    kal_uint8           mac_header_len;
+    kal_uint32          tb;
+} em_emac_dl_tb;
+
+// report interval 100ms, maximum number of reported TBs is
+// 93: 2TB * 2CC * 100ms = 400TBs (92 3CC)
+#define EM_EMAC_MAX_TBS_REPORT_NUM 400
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint32          num_tbs;
+    em_emac_dl_tb       tbs[EM_EMAC_MAX_TBS_REPORT_NUM];
+} em_emac_dl_tbs_report_ind_struct;
+
+#define EMAC_NUM_SYNC_AREA      2
+#define EMAC_MAX_MTCH_LCID_NB   29
+#define EMAC_NUM_REPORT_EM      20
+
+typedef struct mtch_info_t
+{
+    kal_uint32  mtch_rx_bytes;   // received MTCH data size
+    kal_uint32  TMGI[6];         // TMGI info. to identify MBMS session
+    kal_uint8   lcid;            //MTCH-ID
+}em_mtch_info_t;
+
+typedef struct
+{
+    kal_uint8   mbsfn_area_id;
+    kal_uint8   pmch_id;
+    kal_uint8   crc_total_count; // used to calculate BLER
+    kal_uint8   crc_fail_count;  // used to calculate BLER
+    kal_uint8   num_of_mtch;        //the number of mtch info. per report
+    em_mtch_info_t  mtch_info[EMAC_MAX_MTCH_LCID_NB];  // 29 means MTCH max. size (NOTE: If you modifiy this macro, need to modify emac_strcut.h file's macro)
+}em_pmch_info_t;
+
+
+typedef struct
+{
+    kal_uint16  system_fn;
+    kal_uint8   sub_fn;
+    em_pmch_info_t pmch_info[EMAC_NUM_SYNC_AREA];    // NOTE: If you modifiy this macro, need to modify emac_strcut.h file's macro
+}em_pmchs_info_t;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 report_num;           // total report size
+    em_pmchs_info_t pmchs[EMAC_NUM_REPORT_EM];   // the array size 20 means max. report size (NOTE: If you modifiy this macro, need to modify emac_strcut.h file's macro)
+}em_emac_embms_report_ind_struct;
+
+extern em_emac_embms_report_ind_struct embms_status_20_records_g;
+
+
+typedef enum
+{
+    EPDCP_DATA_INACTV_NULL = 0,
+    EPDCP_UL_SINGLE_PASS_DETECTION = 1
+}epdcp_data_inactv_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    epdcp_data_inactv_enum cause;
+    kal_uint8 drb_id;
+    kal_uint8 epsb_id;
+    
+}em_epdcp_data_inactv_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+}em_epdcp_oob_disc_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+}em_epdcp_tmout_disc_ind_struct;
+
+typedef enum
+{   EMAC_NO_SLEEP_CAUSE_INVALID = 0,
+    EMAC_NO_SLEEP_CAUSE_NODRX   = 1,
+    EMAC_NO_SLEEP_CAUSE_OTHERS  = 2
+    
+}emac_no_sleep_cause_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint32                no_sleep_duration;
+    emac_no_sleep_cause_enum  cause;
+           
+}em_emac_no_sleep_ind_struct;
+
+/********************* begin of EL2 feature detection definition ***********/
+typedef enum
+{
+    EL2_FEAT_LONG_DRX_CMD
+}em_el2_feat_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_el2_feat_enum detected_feature;
+}em_el2_feature_detection_ind_struct;
+/********************* end of EL2 feature detection definition *************/
+//ERLC
+
+
+/// ERLC-DL REASM TBL statistics 
+typedef struct
+{
+    kal_uint32  reasm_desc_cntr;    ///< total rsb number of descriptor
+    kal_uint32  free_desc_cntr;     ///< total free number of descriptor
+} erlcdl_reasm_tbl_stats;
+
+/// ERLC-DL RB statistics 
+typedef struct
+{
+    // RLC control PDU 
+    kal_uint32  tx_status_pdu_trgr_cntr;         ///< num trigger of UL STATUS PDU
+
+    // reassemble 
+    kal_uint32  reasm_cntr;         ///< reassemble trigger
+    kal_uint32  reasm_drop_pdu_cntr;    ///< PDU dropped in reassembly
+} erlcdl_rb_stats;
+
+/// ERLC-UL RB statistics 
+typedef struct
+{
+    /* PDU statistics */
+    kal_uint32    reseg_cntr;        
+
+    /* ARQ */
+    kal_uint32    stus_pdu_expry_cntr;
+    kal_uint32    reseg_stus_pdu_cntr;
+
+} erlcul_rb_stats;
+
+/// ERLC-UL statistics 
+/*
+typedef struct
+{
+
+} erlcul_comp_stats;
+*/
+
+/// ERLC-DL statisitics
+typedef struct
+{
+    erlcdl_reasm_tbl_stats reasm_tbl[EM_PUB_MAX_RLC_RB];
+} erlcdl_comp_stats;
+
+// ERLC statistics
+typedef struct 
+{
+    //erlcul_comp_stats      ul;
+    erlcdl_comp_stats      dl;
+
+    erlcul_rb_stats        ul_rb[EM_PUB_MAX_RLC_RB];
+    erlcdl_rb_stats        dl_rb[EM_PUB_MAX_RLC_RB];
+#if 1 /* for MBMS_SUPPORT */  
+    erlcdl_rb_stats        dl_mcch[EM_PUB_EMBMS_FREQ_SUPPORT][EM_PUB_EMBMS_MCCH_SUPPORT];
+    erlcdl_rb_stats        dl_mrb[EM_PUB_EMBMS_FREQ_SUPPORT][EM_PUB_EMBMS_MRB_SUPPORT];    
+#endif        
+} erlc_stats_struct;
+
+//EPDCP
+
+#define EPDCP_MAX_DRB_NUM (8)
+#define HW_CHNL_NUM       (10)  // SRB(2) + DRB(8)
+
+/* --------------------------
+*   structure
+* ------------------------ */
+
+/* VzW MDMI: EPDCP-UL/DL-STATS */
+
+// We currently apply the LR12 implementation for MDMI EM
+// XXX: There are some potential issues / implementation notes listed below.
+//      Change of EM reporting implementation needs to be synced with 
+//      MTK tool team Josh Lin @ WCS/ST/ST2.
+// - The definition of 'cfgIndex' in EPDCP and ERLC do not match.
+//      MDMI spec:
+//          cfgIndex INTEGER(0..34), -- Unique radio bearer configuration index
+//      * In ERLC, the cfgIndex of
+//          DRB1: 0, DRB2: 1, ..., DRB 32: 31
+//          SRB0: 32, SRB1: 33, SRB2: 34
+//      * In EPDCP, the cfgIndex of
+//          DRB1: 16, DRB2: 17, ..., DRB 32: 47
+//          SRB0: N/A, SRB1: 1, SRB2: 2
+// - The cfgIndex filled by EPDCP exceeds the range of the field
+//      * Spec: 0~34
+//      * EPDCP could fill in the field up to 47
+// - If an RB was released and then established bewtween two
+//   consecutive EM reports, the value calcuated by the tool might overflow
+//      * rbid 0 (cfgIndex 0) is used to indicate that the current
+//        reporting array entry dl_stats[x]/ul_stats[x] is invalid
+//      * The reported values are saved by the tool for each
+//        valid rbid.
+//      * The statistics saved in the EM database
+//        (dl_stats[x]/ul_stats[x] is reset only upon EPDCP handles RB
+//        addition/deletion (including fullConfig HOs).
+//      * When a new report is received at t2, the latest report value
+//        (say v2) is subtracted by the last report value (say v1) 
+//        received at t1, and v2-v1 is used as the value increased 
+//        within the reporting period t2-t1.
+//      * So, if an RB is released and established within a single
+//        reporting period, chances are that the same rbid is used for
+//        the reporting array entry, but v2 is smaller than v1 and
+//        v2-v1 would be an overflow result.
+//  - rbid might be changed and restored for an rb_idx if fullConfig
+//    HO had failed. The currently implementation might not update the
+//    rbid correctly.
+//  - miss_sdu_to_upper is not updated at all.
+
+typedef struct
+{
+    kal_uint8  rbid;
+    kal_uint32 tx_data_pdu_bytes;
+    kal_uint32 tx_ctrl_pdu_bytes;
+    kal_uint32 pdu_rohc_fail;
+    kal_uint32 sdu_disc_bytes;
+    kal_uint32 pdu_retx_bytes;
+    kal_uint32 num_reest;
+    kal_uint32 num_tx_data_pdus;
+    kal_uint32 num_tx_ctrl_pdus;
+    kal_uint32 num_stus_rpt_pdus;
+    kal_uint32 num_sdu_disc;
+    kal_uint32 num_sdu_disc_oob;
+    kal_uint32 num_pdus_retx_during_ho;
+    kal_uint32 num_buff_data_pdus;    // num of pkt not acked by RLC yet
+    // above is accumulated
+    // below is per 500ms
+    kal_uint32 num_sdu_acked;         // num of pkt acked by RLC
+    kal_uint32 num_sdu_disc_all_type; // num of pkt dropped
+    kal_uint32 num_sent_data_pdus;    // num of pkt sent to RLC
+} epdcp_ul_stats_t;
+
+typedef struct
+{
+    kal_uint8 rbid;
+    kal_uint32 rx_data_pdu_bytes;
+        // SRB: includes only NML PDU; CTRL/OOW/PHE PDUs are considered as INVALID PDUs
+        // DRB: includes NML, OOW, DUP PDUs, but not CTRL/PHE PDUs 
+    kal_uint32 rx_ctrl_pdu_bytes;
+        // SRB: should have none; CTRL PDUs are considered as INVALID PDUs
+        // DRB: includes RoHC feedbacks & PDCP Status reports 
+        //      CTRL PDUs received on a UM DRB without RoHC enabled are
+        //      considered as INVALID PDUs
+    kal_uint32 pdu_rohc_fail;
+        // SRB: should have none
+        // DRB: PDUs that had decompression failure
+    kal_uint32 pdu_inte_fail;
+        // SRB: PDUs that had integrity check failure
+        // DRB: should have none
+    kal_uint32 miss_sdu_to_upper;
+        // SRB, DRB: should have none currently
+    kal_uint32 miss_sdu_from_lower;
+        // SRB: should have none currently
+        // DRB: SN gaps during RLC re-establishment flush
+    kal_uint32 pdu_oow_bytes;
+        // SRB: should have none; OOW PDUs are considered as INVALID PDUs
+        // DRB: OOW PDUs 
+    kal_uint32 pdu_dup_bytes;
+        // SRB: should have none
+        // DRB: DUP PDUs 
+    kal_uint32 pdu_invalid_bytes;
+        // SRB: includes OOW/CTRL/PHE PDUs
+        // DRB: PHE PDUs, CTRL PDUs received on a UM DRB without RoHC enabled 
+    kal_uint32 num_reest;
+        // SRB, DRB: number of PDCP re-establishments occured (HO_IND)
+    kal_uint32 num_data_pdus_recv;
+        // SRB: includes only NML PDU; CTRL/OOW/PHE PDUs are considered as INVALID PDUs
+        // DRB: includes NML, OOW, DUP PDUs, but not CTRL/PHE PDUs
+    kal_uint32 num_ctrl_pdus_recv;
+        // SRB: should have none; CTRL PDUs are considered as INVALID PDUs
+        // DRB: includes RoHC feedbacks & PDCP Status reports
+        //      CTRL PDUs received on a UM DRB without RoHC enabled are
+        //      considered as INVALID PDUs
+    kal_uint32 num_stus_rpt_pdus_recv;
+        // SRB: should have none; CTRL PDUs are considered as INVALID PDUs
+        // DRB: PDCP Status reports
+    kal_uint32 num_dup_pdus;
+        // SRB: should have none
+        // DRB: DUP PDUs 
+    kal_uint32 num_oow_pdus;
+        // SRB: should have none; OOW PDUs are considered as INVALID PDUs
+        // DRB: OOW PDUs
+    kal_uint32 num_invalid_pdus;
+        // SRB: includes OOW/CTRL/PHE PDUs
+        // DRB: PHE PDUs, CTRL PDUs received on a UM DRB without RoHC enabled
+} epdcp_dl_stats_t;
+
+typedef struct
+{
+    /* --------
+    *   UL 
+    * ------- */
+
+    /* read from HIF/L4 (to TFT) */
+    kal_uint32  ul_tft_total_rx_gpds;
+    /* 
+    *   read from TFT result or UL_RoHC result (per RB) 
+    *   - drop count (due to FC, or RB not exist)
+    *   - accept nml_data count (allowed)
+    *   - accept pri_data count (allowed)
+    */
+    kal_uint32  ul_rb_drop_gpds[HW_CHNL_NUM];
+    kal_uint32  ul_rb_que_nml_pkt[HW_CHNL_NUM];
+    kal_uint32  ul_rb_que_pri_pkt[HW_CHNL_NUM];
+    kal_uint32  ul_rb_que_fdbk_pkt[HW_CHNL_NUM];
+
+    /* sent to HW (per RB) */
+    kal_uint32  ul_hw_rb_tx_data_gpds[HW_CHNL_NUM];
+    kal_uint32  ul_hw_rb_tx_ctrl_gpds[HW_CHNL_NUM];
+    kal_uint32  ul_hw_rb_retx_gpds[HW_CHNL_NUM];
+
+    /* --------
+    *   DL 
+    * ------- */
+    /* 
+    *   read from decipher HW 
+    *
+    *   - total rx data_pdu count from HW (including CB)
+    *   - total rx ctrl_pdu count from HW
+    */
+    kal_uint32 dlhw_datapdu_gpds; // phased out
+    kal_uint32 dlhw_ctrlpdu_gpds; // phased out
+
+    /*
+    *   reestablishment flush
+    */
+    kal_uint32 dlfc_drop_flush_gpds; // phased out
+
+    /* read from SWM decipher (included in total rx_gpds) */
+    //kal_uint32 swm_total_dcip_gpds;
+
+    /* 
+    *   dispatch data GPDs to each RB 
+    *   - drop count (per channel, due to RB not exist)
+    *   - rx count (HW -> RB)
+    *   - rx count (HW -> SWM -> RB; due to CB)
+    */
+    kal_uint32 dlhw_ch_drop_gpds[HW_CHNL_NUM]; // phased out
+    kal_uint32 dlhw_rb_rx_gpds[HW_CHNL_NUM]; // phased out
+    kal_uint32 dlswm_rb_rx_gpds[HW_CHNL_NUM]; // phased out
+
+    /* drop due to Out-Of-Wnd */
+    kal_uint32 dl_rb_drop_oow_gpds[HW_CHNL_NUM]; // phased out
+
+    /* -------------------
+    *   RoHC statistics
+    * ----------------- */
+
+    //kal_uint32 rohc_dl_in_gpds[EPDCP_NB_TOTAL_HW_CHNL];
+    kal_uint32 rohc_dl_out_gpds[HW_CHNL_NUM]; // phased out
+    kal_uint32 rohc_dl_fdbk_gpds[HW_CHNL_NUM]; // phased out
+
+    /* uplink counter */
+    kal_uint32 rohc_ul_in_gpds[HW_CHNL_NUM];
+    kal_uint32 rohc_ul_re_in_gpds[HW_CHNL_NUM];
+    kal_uint32 rohc_ul_out_gpds[HW_CHNL_NUM];
+
+    /* -----------------
+    *   discard 
+    * --------------- */
+    // discard by timeout
+    kal_uint32 disc_tmout[HW_CHNL_NUM];
+    kal_uint32 disc_acked[HW_CHNL_NUM];
+
+    /* -----------------
+    *   eMBMS 
+    * --------------- */
+    // received SDU counts
+    kal_uint32 mcch_recv_count;
+    kal_uint32 mtch_recv_count;
+
+    /* -----------------
+    *   UL/DL throughput 
+    * --------------- */
+    // received SDU counts
+    /* VzW MDMI: EPDCP UL/DL throughput */
+    kal_uint32 ul_cip_enqueue_bytes;
+    kal_uint32 dl_dcip_dequeue_bytes;
+        // SRB, DRB: includes NML/CTRL/OOW/INVALID PDUs
+    kal_uint32 volte_rb_idx;
+    kal_uint32 disc_tmr_val[HW_CHNL_NUM];
+    /* VzW MDMI: EPDCP-UL/DL-STATS */
+    epdcp_ul_stats_t ul_stats[HW_CHNL_NUM];
+    epdcp_dl_stats_t dl_stats[HW_CHNL_NUM];
+
+    kal_uint32 buff_avg_time;    // avg time from PDCP
+    kal_uint32 buff_max_time;    // max time from PDCP
+    kal_uint32 buff_time_cal_pkt_cnt;    // number of pkt calculated for buffer time
+    kal_uint32 buff_time_sum;    // sum of all buffer time
+} epdcp_stats_t;
+//EMAC
+
+typedef enum
+{
+    EMAC_SCELL_STATE_NOT_CONFIG = 0,
+    EMAC_SCELL_STATE_DEACT      = 1,
+    EMAC_SCELL_STATE_ACT        = 2
+} emac_scell_state_enum;
+
+typedef enum
+{
+    EMAC_CR_RESULT_NONE,
+    EMAC_CR_RESULT_SUCCEEDED,
+    EMAC_CR_RESULT_FAILED
+}emac_cr_result_enum;
+
+typedef enum
+{
+    EMAC_TIMER_EXPIRY_NULL,
+    EMAC_TIMER_EXPIRY_TA,
+    EMAC_TIMER_EXPIRY_RA,
+    EMAC_TIMER_EXPIRY_CR,
+    EMAC_TIMER_EXPIRY_BACKOFF,
+    EMAC_TIMER_EXPIRY_STAG_TA
+} emac_timer_expiry_event_enum;
+
+
+
+typedef struct
+{
+    kal_uint8 ch_mode;
+    kal_uint8 fnt_status;
+
+    //CFG
+    kal_bool sr_resource_flag;
+    kal_uint8 sr_periodicity;
+    kal_uint32 sr_prohibit_timer_length;
+    kal_uint16 drx_long_cycle;
+    kal_uint16 drx_short_cycle;
+
+    //TA
+    kal_bool is_ta_running;
+    kal_bool is_stag_ta_running;
+    kal_uint32 ta_value;
+    kal_uint32 stag_ta_value;
+    kal_uint32 ta_command;
+    kal_uint32 stag_ta_command;
+
+    //RA
+    kal_uint16 earfcn; //wEarfcn for AT&T LT08, follow the EL1 type
+    kal_uint32 phys_cell_id; //wPhysCellId for AT&T LT08, follow the EL1 type
+    kal_uint32 ra_cnt;
+    kal_uint32 preamble_cnt;
+    kal_uint32 rar_cnt;
+    kal_uint32 rar_match_cnt;
+    kal_uint32 rar_mismatch_cnt;
+    kal_uint32 ra_ueid_cr_fail_cnt;
+    kal_uint32 ra_success_cnt;        
+    kal_bool ra_type_contention; 
+    emac_ra_result_enum ra_result;
+    kal_uint32 ra_max_preambles;
+    kal_uint8  ul_scell_ra_max_preambles;
+    kal_int8   ra_init_TXpower;
+    kal_uint8  ra_preamble_last_TXpower; //ucLastTxPower for AT&T LT08, follow the EL1 type
+    kal_int8   ul_scell_ra_init_TXpower;
+    kal_uint8  ra_ramping_step;
+    kal_uint8  ul_scell_ra_ramping_step;
+    kal_uint32 ra_preamble_fail;
+    kal_uint32 ra_preamble_success; 
+    kal_uint32 ra_rapid;
+    ABS_TICK_TIME ra_start_time;
+    ABS_TICK_TIME ra_access_delay;
+    ABS_TICK_TIME ra_1st_preamble_time;
+    ABS_TICK_TIME ra_latency; // time in ms between 1st preamble and response from NW in DL
+    ABS_TICK_TIME ra_time_msg1;
+    ABS_TICK_TIME ra_time_msg2;
+    ABS_TICK_TIME ra_time_msg4;
+    emac_cr_result_enum cr_result;
+    emac_ra_reason_enum ra_reason;
+    kal_uint32 ra_rnti;
+    kal_uint32 c_rnti;
+    kal_uint32 tc_rnti;
+    kal_uint32 rar_ul_grant;
+    kal_uint32 rar_ta_value;
+    kal_uint32 rar_tc_rnti;
+    kal_uint32 rar_successed;
+    kal_uint8  ra_cell;
+    ABS_TICK_TIME ra_begin_attempt_time;
+    ABS_TICK_TIME ra_access_delay_total;
+    kal_uint32 ra_access_delay_count;
+
+    //TX
+    kal_uint64 tx_byte;
+    kal_uint32 tx_cnt;
+    kal_uint32 new_tx_cnt;
+    kal_uint64 new_tx_byte;
+    kal_uint32 adp_retx_cnt;
+    kal_uint32 non_adp_retx_cnt;
+    kal_uint32 phich_nack_cnt;
+    kal_uint32 phich_ack_cnt;
+    kal_uint64 tx_byte_ul_scell;
+    kal_uint32 tx_cnt_ul_scell;
+    kal_uint32 new_tx_cnt_ul_scell;
+    kal_uint64 new_tx_byte_ul_scell;
+    kal_uint32 adp_retx_cnt_ul_scell;
+    kal_uint32 non_adp_retx_cnt_ul_scell;
+    kal_uint32 phich_nack_cnt_ul_scell;
+    kal_uint32 phich_ack_cnt_ul_scell;
+
+    kal_uint32 bsr_lcg_buf_byte[4];
+
+    kal_uint32 sr_trigger_cnt;
+    kal_uint32 sr_tx_cnt;
+    kal_uint32 sr_success_cnt;
+    kal_uint32 sr_fail_cnt;
+    kal_int16  tx_pathloss;
+    kal_int16  scell_tx_pathloss;
+    ABS_TICK_TIME ho_time_start;
+    ABS_TICK_TIME ho_time_end;
+    kal_uint32 emac_tx_bytes;
+    kal_uint32 emac_ul_grant_bytes;
+
+    //RX
+    kal_uint32 rx_cnt_pcell;
+    kal_uint32 rx_cnt_scell[MAX_NUM_SUPPORT_SCELL];
+    kal_uint32 rx_crc_ng_cnt_pcell;
+    kal_uint32 rx_crc_ng_cnt_scell[MAX_NUM_SUPPORT_SCELL];
+    kal_uint32 emac_rx_bytes;
+
+    //MCH
+    kal_uint32 mch_cnt_pcell;
+    kal_uint32 mch_cnt_scell;
+    kal_uint32 mch_crc_ng_cnt_pcell;
+    kal_uint32 mch_crc_ng_cnt_scell;
+
+    //LTE-A CA
+    kal_bool                extend_bsr_config;
+    kal_bool                extend_phr_config;
+    emac_scell_state_enum   scell_state[MAX_NUM_SUPPORT_SCELL];
+    emac_timer_expiry_event_enum  emac_timer_expiry;
+
+    kal_uint16 system_fn;
+    kal_uint8 sub_fn;
+
+    // sync 90 EM
+    kal_uint32 preamble_tx_cnt;
+
+    //LTE-A CA Statistics
+    //Only sync 1 scell scenario, if more than 1 scell, need check spec.
+    ABS_TICK_TIME scell_config_time;
+    ABS_TICK_TIME time_to_scell_act_min;
+    ABS_TICK_TIME time_to_scell_act_max;
+    ABS_TICK_TIME time_to_scell_act_total;
+    kal_uint32 scell_act_cnt;
+    ABS_TICK_TIME scell_activate_time;
+    ABS_TICK_TIME scell_activate_time_total;
+	ABS_TICK_TIME ra_1st_preamble_timestamp;
+} emac_stats_t;
+
+typedef struct 
+{
+    kal_uint32 lisr_dsp_evt;
+    kal_uint32 lisr_dsp_timer;
+    kal_uint32 hisr_dsp_timer;
+    kal_uint32 hisr_ert;
+
+    kal_uint32 protect_ear;
+    kal_uint32 non_protect_ear;
+    kal_uint32 protect_rar;
+    kal_uint32 non_protect_rar;
+    kal_uint32 protect_pdcch;
+
+    kal_uint32 poll_el2;
+
+    kal_uint32 ilms_ert_int;
+    kal_uint32 ilms_ert_ext;
+    kal_uint32 ilms_el1;
+    kal_uint32 ilms_el2;
+    kal_uint32 ilms_etstm;
+
+} edyn_stats_t;
+
+typedef kal_uint64 etmr_sys_tick_t;
+typedef struct 
+{
+    etmr_sys_tick_t sys_ticks;
+    kal_uint32 run_nodes;
+    kal_uint32 expires;
+    kal_uint32 expires_end;
+
+    kal_uint32 start;
+    kal_uint32 start_fail;
+    kal_uint32 stop;
+    kal_uint32 stop_fail;
+    kal_uint32 resume;
+    kal_uint32 resume_fail;
+
+    kal_uint32 set_attr;
+    kal_uint32 set_attr_fail;
+    kal_uint32 set_init_tick;
+    kal_uint32 set_init_tick_fail;
+    kal_uint32 set_remain_tick;
+    kal_uint32 set_remain_tick_fail;
+    kal_uint32 set_callback;
+    kal_uint32 set_callback_fail;
+}etmr_ov_status;
+
+#define LTM_MAX_EPSB_NUM 16
+
+typedef struct 
+{
+    kal_uint32 initCnt;
+    kal_uint32 actCnt;
+    kal_uint32 deactCnt;
+
+    kal_uint32 UL_DlvrCnt;
+    kal_uint32 ULNrmQueueCnt;
+    kal_uint32 ULPriQueueCnt;
+    kal_uint32 UL_RollbackCnt;
+    kal_uint32 UL_DropCnt;
+
+    kal_uint32 DL_DlvrCnt;
+    kal_uint32 DL_QueueCnt;
+    kal_uint32 DL_DropCnt;
+} ltm_epsb_stats_t;
+
+typedef struct 
+{
+    kal_uint32 ULNrmTotalBytes;
+    kal_uint32 ULNrmTotalGPDs;
+    kal_uint32 ULPriTotalBytes;
+    kal_uint32 ULPriTotalGPDs;
+
+    kal_uint32 UL_OnSuspend;
+#ifdef __GEMINI__
+    kal_uint32 UL_OnGeminiSuspend;
+#endif /* ifdef __GEMINI__ */
+    kal_uint32 UL_TrigDRXWake;
+    kal_uint32 UL_TrigIdleWake;
+
+    kal_uint32 drxIndCnt;
+    kal_uint32 idleEnterCnt;
+    kal_uint32 idleLeaveCnt;
+    kal_uint32 idleLeaveRejCnt;
+    kal_uint32 UL_SuspendCnt;
+    kal_uint32 UL_ResumeCnt;
+#ifdef __GEMINI__
+    kal_uint32 Gemini_SuspendCnt;
+    kal_uint32 Gemini_ResumeCnt;
+#endif /* ifdef __GEMINI__ */
+
+    ltm_epsb_stats_t epsb_stats[LTM_MAX_EPSB_NUM];
+} ltm_stats_t;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    erlc_stats_struct erlc_stats;
+    epdcp_stats_t     epdcp_stats;
+    emac_stats_t   emac_stats;
+
+    // No need in 93
+    edyn_stats_t   edyn_stats;
+    etmr_ov_status etmr_stats;
+    ltm_stats_t    ltm_stats;
+}em_el2_ov_status_ind_struct;
+
+
+
+#endif /* _EM_ENL2_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_errc_public_struct.h b/mcu/interface/service/em/em_errc_public_struct.h
new file mode 100644
index 0000000..642b5a2
--- /dev/null
+++ b/mcu/interface/service/em/em_errc_public_struct.h
@@ -0,0 +1,2090 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_errc_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_ERRC_PUBLIC_STRUCT_H
+#define _EM_ERRC_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+#include "em_as_common_public_struct.h"
+#include "em_nwsel_common_public_struct.h"
+
+
+/**************************************************************************
+  * Here is the ERRC related EM definition
+  *
+  * Notes: ERRC structures is defined here
+  * Michael: 2013/05/10:  Add ERRC EM related structures
+  **************************************************************************/
+  
+   
+  
+/********************* begin of ERRC definition ****************************/
+
+
+
+#define ERRC_MAX_EUTRA_RRC_MESSAGE_S_DATA_LEN (256)
+#define ERRC_MAX_EUTRA_RRC_MESSAGE_M_DATA_LEN (512)
+#define ERRC_MAX_EUTRA_RRC_MESSAGE_L_DATA_LEN (8192)
+
+#define ERRC_MAX_PLMN_ID_LIST 6
+
+#define ERRC_EM_MAX_B2_ONLY_MEAS_CONFIG_REPORT_NUM 8
+#define ERRC_EM_MAX_A2_ONLY_MEAS_CONFIG_REPORT_NUM 5
+#define ERRC_EM_MAX_IRAT_MEAS_CONFIG_REPORT_NUM 8
+
+
+typedef struct
+{
+    EARFCN earfcn;
+    kal_uint16 pci;
+    kal_uint32 csg_id;
+}em_errc_csg_info_struct;
+
+#define EM_ERRC_MAX_AUTOS_CSG_CELL_NUM 10
+
+typedef struct
+{
+    kal_uint8               num_cells;
+    em_errc_csg_info_struct detected_csg_cell[EM_ERRC_MAX_AUTOS_CSG_CELL_NUM];
+}em_errc_autos_info_struct;
+
+typedef enum
+{
+    EM_ERRC_CARRS_TRIG_TYPE_NAS,
+    EM_ERRC_CARRS_TRIG_TYPE_AS,
+    EM_ERRC_CARRS_TRIG_TYPE_IRAT
+}em_errc_carrs_trigger_type_enum;
+
+typedef enum
+{
+    EM_ERRC_CARRS_TYPE_PLMN_LIST,
+    EM_ERRC_CARRS_TYPE_CSG_LIST,
+    EM_ERRC_CARRS_TYPE_FINGER_PRINT,
+    EM_ERRC_CARRS_TYPE_MCC_LEARNING,
+    EM_ERRC_CARRS_TYPE_BACKGROUND_SEARCH,
+    EM_ERRC_CARRS_TYPE_AUTO_SEARCH,
+    EM_ERRC_CARRS_TYPE_OOS
+}em_errc_carrs_type_enum;
+
+typedef struct
+{
+    em_errc_carrs_trigger_type_enum trigger_type;
+    em_errc_carrs_type_enum         carrs_type;
+}em_errc_carrs_event_struct;
+
+typedef enum
+{
+    EM_ERRC_SIB_EVENT_3H_TIMEOUT,
+    EM_ERRC_SIB_EVENT_SIB_MODIFY,
+    EM_ERRC_SIB_EVENT_PWS
+}em_errc_sib_event_enum;
+
+typedef enum
+{
+    EM_ERRC_MOB_TYPE_CR,
+    EM_ERRC_MOB_TYPE_REDT,
+    EM_ERRC_MOB_TYPE_CCO,
+    EM_ERRC_MOB_TYPE_HO,
+    EM_ERRC_MOB_TYPE_REEST,
+    EM_ERRC_MOB_TYPE_INTER_BAND_HO_CA2CA,
+    EM_ERRC_MOB_TYPE_INTER_FREQ_HO_CA2CA,
+    EM_ERRC_MOB_TYPE_INTRA_FREQ_HO_CA2CA
+}em_errc_mob_type_enum;
+
+typedef enum
+{
+    EM_ERRC_MOB_DIR_INTRA_LTE,
+    EM_ERRC_MOB_DIR_TO_LTE,
+    EM_ERRC_MOB_DIR_FROM_LTE
+}em_errc_mob_dir_enum;
+
+typedef struct
+{
+    em_errc_mob_type_enum           mob_type;
+    em_errc_mob_dir_enum            mob_dir;
+}em_errc_mob_event_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+}em_errc_mob_meas_info_ind_struct;
+
+typedef enum
+{
+    EM_ERRC_RCM_SIM_STS_REMOVED,
+    EM_ERRC_RCM_SIM_STS_INVALID_BY_NAS,
+    EM_ERRC_RCM_SIM_STS_VALID
+}em_errc_rcm_sim_sts_enum;
+
+typedef enum
+{
+    EM_ERRC_SYS_SIB_RX_STS_IDLE,
+    EM_ERRC_SYS_SIB_RX_STS_WAIT,
+    EM_ERRC_SYS_SIB_RX_STS_CMPL,
+    EM_ERRC_SYS_SIB_RX_STS_STORED
+}em_errc_sys_sib_rx_sts_enum;
+
+typedef struct
+{
+    kal_bool                    is_rxing;
+    EARFCN                      earfcn;
+    kal_uint16                  pci;
+    em_errc_sys_sib_rx_sts_enum mib_rx_sts;
+    em_errc_sys_sib_rx_sts_enum sib1_rx_sts;
+    em_errc_sys_sib_rx_sts_enum sib2_rx_sts;
+    em_errc_sys_sib_rx_sts_enum sib3_rx_sts;
+    em_errc_sys_sib_rx_sts_enum sib4_rx_sts;
+    em_errc_sys_sib_rx_sts_enum sib5_rx_sts;
+    em_errc_sys_sib_rx_sts_enum sib6_rx_sts;
+    em_errc_sys_sib_rx_sts_enum sib7_rx_sts;
+// #ifdef __CDMA2000_RAT__
+    em_errc_sys_sib_rx_sts_enum sib8_rx_sts;
+// #endif /* __CDMA2000_RAT__ */
+    em_errc_sys_sib_rx_sts_enum sib9_rx_sts;
+    em_errc_sys_sib_rx_sts_enum sib10_rx_sts;
+    em_errc_sys_sib_rx_sts_enum sib11_rx_sts;
+    em_errc_sys_sib_rx_sts_enum sib12_rx_sts;
+// #ifdef __LTE_R11__
+    em_errc_sys_sib_rx_sts_enum sib13_rx_sts;
+    em_errc_sys_sib_rx_sts_enum sib14_rx_sts;
+    em_errc_sys_sib_rx_sts_enum sib15_rx_sts;
+    em_errc_sys_sib_rx_sts_enum sib16_rx_sts;
+// #endif /* __LTE_R11__ */
+    em_errc_sys_sib_rx_sts_enum sib17_rx_sts;
+    em_errc_sys_sib_rx_sts_enum sib24_rx_sts;
+}em_errc_sib_rx_info_struct;
+
+
+
+typedef enum {
+    EM_SYS_READ_STS_SUS  = 1,
+    EM_SYS_READ_STS_FAIL = 2
+} em_errc_sys_mibSibRead_sts_enum;
+
+
+typedef enum {
+    EM_ANTENNAPORTSCOUNT_NUM_1       = 0,
+    EM_ANTENNAPORTSCOUNT_NUM_2       = 1,
+    EM_ANTENNAPORTSCOUNT_NUM_4       = 2,
+    EM_ANTENNAPORTSCOUNT_NUM_8       = 3,
+    EM_ANTENNAPORTSCOUNT_NUM_INVALID   = 0xFF
+} em_el1_antn_port_num_enum;
+
+typedef enum {
+    EM_BW_6_RB        = 0,
+    EM_BW_15_RB       = 1,
+    EM_BW_25_RB       = 2,
+    EM_BW_50_RB       = 3,
+    EM_BW_75_RB       = 4,
+    EM_BW_100_RB      = 5,
+    EM_BW_INVALID     = 0xFF
+} em_el1_bandwidth_enum;
+
+typedef enum
+{
+    EM_BAR_RACH_FAIL                         =0,
+    EM_BAR_MULTI_REEST_NW_CONFIG_CHK_FAIL    =1,
+    EM_BAR_MULTI_REEST_HO_FAIL               =2,
+    EM_BAR_MULTI_REEST_INTEGRITY_ERR         =3,
+    EM_BAR_AC_BARRED                         =4,
+    EM_BAR_CONN_REJ                          =5,
+    EM_BAR_CONN_REL                          =6,
+    EM_BAR_INVALID                           =0xFF
+} em_errc_bar_cause_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_errc_sys_mibSibRead_sts_enum     read_sts_ind;
+    kal_bool                            mib_Content_update_ind;
+    kal_uint16                          pci;
+    EARFCN                              earfcn;
+    em_el1_antn_port_num_enum           antenna_port_num;
+    em_el1_bandwidth_enum               dl_bandwith;
+    kal_uint8                           systemInfoMsgNum;
+    kal_uint32                          systemInfoMask;
+    kal_uint32                          sibContent_mask;
+}em_errc_sys_mib_sib_readevent_info_ind_struct;
+
+
+
+/*MSG_ID_EM_ERRC_AUTOS_CSG_INFO_IND*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    em_errc_autos_info_struct autos_info;
+}em_errc_autos_csg_info_ind_struct;
+
+/*MSG_ID_EM_ERRC_CARRS_EVENT_IND*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    em_errc_carrs_event_struct carrs_evt;
+}em_errc_carrs_event_ind_struct;
+
+
+/*MSG_ID_EM_ERRC_SIB_EVENT_IND*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    em_errc_sib_event_enum sib_evt;
+}em_errc_sib_event_ind_struct;
+
+
+/*MSG_ID_EM_ERRC_MOB_EVENT_IND*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    em_errc_mob_event_struct mob_evt;
+}em_errc_mob_event_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_bool                     key_chg_ind;
+    //kal_uint32                   ul_nas_cnt;
+    kal_uint8                    ncc;
+    kal_uint8                      int_algo;
+    kal_uint8                      enc_algo;
+    //kal_uint8                    smc_maci[4];
+    //kal_uint8                    gen_maci[4];
+    //kal_uint8                    short_maci[2];
+    //kal_uint8                    kasme[32];
+    //kal_uint8                    kenb[32];
+}em_errc_sec_param_ind_struct;
+
+typedef enum
+{
+    EM_HO_FROM_LTE_TYPE_PS_HO,
+    EM_HO_FROM_LTE_TYPE_SRVCC_HO,     //4G to 2.3G
+    EM_HO_FROM_LTE_TYPE_PS_SRVCC_HO,  //4G to 3G
+    EM_HO_FROM_LTE_TYPE_CCO,         //CCO to 2G
+    EM_HO_FROM_LTE_TYPE_INVLID
+}em_ho_from_lte_type_enum;
+
+typedef enum
+{
+  EM_MFROM_UMTS_CELL,
+  EM_MFROM_GSM_CELL,
+  EM_MFROM_LTE_CELL,
+  EM_MFROM_NR_CELL
+}em_mform_rat_type_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_mform_rat_type_enum target_rat;
+    em_ho_from_lte_type_enum ir_ho_type;
+}em_errc_mfrom_info_ind_struct;
+
+typedef enum
+{
+    EM_ERRC_HO_OTHER,
+    EM_ERRC_HO_INVALIDCFG,
+    EM_ERRC_HO_CPHY,
+    EM_ERRC_HO_RACH,
+    EM_ERRC_HO_RACHMEAS,
+    EM_ERRC_HO_SUCCESS,
+    EM_ERRC_HO_FAILURE
+}em_errc_ho_type_enum;
+
+typedef struct
+{
+    kal_uint16 pci;
+    kal_uint32 earfcn;
+    kal_int32  rsrp;
+}em_errc_ho_target_cell_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_errc_ho_target_cell_info_struct targetcell;
+    em_errc_ho_type_enum ho_result;
+    kal_uint8 ho_type;
+	kal_uint32 ho_attempt_count;
+	kal_uint32 ho_failure_count;
+}em_errc_ho_event_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_errc_ho_type_enum ho_result;
+}em_errc_ho_fail_event_ind_struct;
+ 	
+typedef enum
+{
+    EM_ERRC_CONN_RLF_CFG_FAILURE,
+    EM_ERRC_CONN_RLF_HO_FAILURE,
+    EM_ERRC_CONN_RLF_RACH_PROBLEM,
+    EM_ERRC_CONN_RLF_MAX_RETRANSMISSION,
+    EM_ERRC_CONN_RLF_IP_CHECK_FAILURE,
+    EM_ERRC_CONN_RLF_SIB_READING_FAILURE,
+    EM_ERRC_CONN_RLF_MIB_CHANGE,
+    EM_ERRC_CONN_RLF_OTHER
+}em_errc_rlf_event_enum;
+
+typedef enum
+{
+    //KPI tool will print trace for rlf_causeother,so only add enum
+    EM_ERRC_CONN_RLF_OTHER_NONE = 0,         // report rlf counter when rrc release
+    EM_ERRC_CONN_RLF_OTHER_RLF = 1,          // EL1 timer timeout
+    EM_ERRC_CONN_RLF_OTHER_MFROM = 2
+}em_errc_rlf_other_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint8 rlf_counter;
+    em_errc_rlf_event_enum rlf_cause;
+    em_errc_rlf_other_enum rlf_causeother;
+}em_errc_rlf_event_ind_struct;
+
+typedef enum
+{
+    ERRC_REEST_CAUSE_LTE_HO_FAIL,
+    ERRC_REEST_CAUSE_LTE_MFROM_FAIL,
+    ERRC_REEST_RLC_ACK_TIMEOUT,
+    ERRC_REEST_SIB_UPDT_FAIL,
+    ERRC_REEST_CAUSE_L1_RLF,
+    ERRC_REEST_CAUSE_MAC_RLF,
+    ERRC_REEST_CAUSE_RLC_UL_MAX_RLF,
+    ERRC_REEST_CAUSE_RLC_DL_MAX_RLF,
+    ERRC_REEST_CAUSE_RLC_UL_DL_MAX_RLF,
+    ERRC_REEST_CAUSE_INTECHK_FAIL,
+    ERRC_REEST_CAUSE_RECONF_FAIL,
+    ERRC_REEST_CAUSE_PDCP_RLF,
+    ERRC_REEST_CAUSE_DISABLE_B39,
+    ERRC_REEST_CAUSE_GENERAL,
+    ERRC_REEST_CAUSE_VIRTUAL_CONNECTED_LEAVE_FAIL,
+    ERRC_REEST_CAUSE_CA_PARTIAL_BAND_FAIL
+}em_errc_reest_info_cause_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_errc_reest_info_cause_enum cause;
+    kal_uint32 num_of_reest;
+}em_errc_reest_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+}em_errc_reest_ul_max_rlf_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_bool is_ca_configured;
+}em_errc_ca_info_ind_struct;
+
+typedef enum
+{
+    EM_ERRC_POWERCLASS_INVALID,
+    EM_ERRC_POWERCLASS_3,
+    EM_ERRC_POWERCLASS_2
+}em_errc_powerclass_type_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_errc_powerclass_type_enum powerclass;
+}em_errc_el1_config_info_ind_struct;
+
+typedef enum
+{
+    ERRC_NORMAL_RECONF,
+    ERRC_INTRA_CEL_HO,
+    ERRC_INTER_CEL_HO,
+    ERRC_INTER_RAT_HO
+}em_errc_reconf_info_type_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_errc_reconf_info_type_enum reconf_type;
+    kal_bool                      is_cell_info_valid;
+    EARFCN                        earfcn;
+    kal_uint16                    pci;
+    kal_uint16                    crnti;
+    kal_uint32                    t311;
+    kal_uint32                    t301;
+    kal_uint32                    t304;
+}em_errc_reconf_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    
+    kal_uint8 em_reest_by_l2_cnt;
+    em_errc_reest_info_cause_enum em_reest_by_l2_cause;
+}em_errc_reest_by_l2_ind_struct;
+
+typedef enum
+{
+    //This enum must be consistent with errc_procedure_id_enum
+    EM_ERRC_PROC_EST,
+    EM_ERRC_PROC_RECONF_RR_MEAS_CONFIG, //Obsolete
+    EM_ERRC_PROC_RECONF_INTRALTEMOBILITY, //Obsolete
+    EM_ERRC_PROC_REEST,
+    EM_ERRC_PROC_INITIAL_SEC,
+    EM_ERRC_UE_CAPABILITY,
+    EM_ERRC_COUNTER_CHECK,
+    EM_ERRC_UE_INFORMATION,
+    EM_ERRC_PROC_IRAT_HO_FROM_LTE_TO_UMTS,
+    EM_ERRC_PROC_IRAT_HO_FROM_LTE_TO_GSM,
+    EM_ERRC_PROC_IRAT_CCO_FROM_LTE,
+    EM_ERRC_PROC_IRAT_CR_FROM_LTE_TO_UMTS,
+    EM_ERRC_PROC_IRAT_CR_FROM_LTE_TO_GSM,
+    EM_ERRC_PROC_IRAT_REDIR_FROM_LTE_TO_UMTS,
+    EM_ERRC_PROC_IRAT_REDIR_FROM_LTE_TO_GSM,
+    EM_ERRC_PROC_IRAT_HO_TO_LTE,
+    EM_ERRC_PROC_IRAT_CCO_TO_LTE,
+    EM_ERRC_PROC_IRAT_CR_TO_LTE,
+    EM_ERRC_PROC_IRAT_REDIR_TO_LTE,
+    EM_ERRC_PROC_INTRA_REDIR,
+    EM_ERRC_PROC_RECONF_SCELL_CONFIG, //Obsolete
+    EM_ERRC_PROC_IRAT_CR_FROM_LTE_TO_CDMA2000,
+    EM_ERRC_PROC_IRAT_REDIR_FROM_LTE_TO_CDMA2000,
+    EM_ERRC_PROC_HSR_SNIFFER,
+    EM_ERRC_PROC_HSR_RESEL,
+    EM_ERRC_PROC_RETURN_HSR,
+    EM_ERRC_PROC_RECONF,
+    EM_ERRC_PROC_IRAT_HO_FROM_LTE_TO_NR,
+    EM_ERRC_PROC_IRAT_CR_FROM_LTE_TO_NR,
+    EM_ERRC_PROC_IRAT_REDIR_FROM_LTE_TO_NR
+}em_errc_delay_proc_enum;
+
+typedef struct
+{
+        LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_errc_delay_proc_enum delay_proc_id;
+    kal_uint32              delay_time;
+}em_errc_over_proc_delay_warning_ind_struct;
+
+
+typedef enum
+{
+    EM_RAT_NONE,
+    EM_RAT_LTE,
+    EM_RAT_UMTS,
+    EM_RAT_GSM
+}em_rat_enum;
+
+typedef struct
+{
+    EARFCN      earfcn;
+    kal_uint16  pci;
+}em_lte_cell_info_struct;
+
+typedef struct
+{
+    em_rat_enum rat_type;
+    union
+    {
+        em_lte_cell_info_struct lte_cell;
+    } cell_inf;
+}em_general_cell_info_struct;
+
+typedef enum
+{
+    EM_ERRC_NEW_CELL_CAUSE_INVALID = 0x0,
+    EM_ERRC_NEW_CELL_CAUSE_CELLSELECTION,
+    EM_ERRC_NEW_CELL_CAUSE_CELLRESELECTION,
+    EM_ERRC_NEW_CELL_CAUSE_HANDOVER,
+    EM_ERRC_NEW_CELL_CAUSE_REDIRECTION
+}em_errc_new_cell_cause_enum;
+
+typedef enum
+{
+    EM_ERRC_NEW_CELL_STATUS_INVALID = 0x0,
+    EM_ERRC_NEW_CELL_STATUS_SUITABLE,
+    EM_ERRC_NEW_CELL_STATUS_ACCEPTABLE
+}em_errc_new_cell_status_enum;
+
+typedef enum
+{
+    EM_ERRC_SUCCESS_RATE_KPI_INTRA_LTE_CR,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_4G3_CR,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_4G2_CR,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_3G4_CR,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_2G4_CR,
+
+    EM_ERRC_SUCCESS_RATE_KPI_INTRA_CELL_HO,
+    EM_ERRC_SUCCESS_RATE_KPI_INTER_CELL_HO,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_4G3_HO,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_4G2_HO,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_3G4_HO,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_4G5_HO,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_5G4_HO,
+
+    EM_ERRC_SUCCESS_RATE_KPI_LTE_FDD_TDD_CELL_HO,
+    EM_ERRC_SUCCESS_RATE_KPI_LTE_TDD_FDD_CELL_HO,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_4GTDD_3G_HO,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_4GFDD_3G_HO,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_4GTDD_2G_HO,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_4GFDD_2G_HO,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_3G_4GFDD_HO,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_3G_4GTDD_HO,
+
+    EM_ERRC_SUCCESS_RATE_KPI_INTRA_LTE_FDDTDD_CR,
+    EM_ERRC_SUCCESS_RATE_KPI_INTRA_LTE_TDDFDD_CR,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_FDD4G3_CR,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_TDD4G3_CR,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_FDD4G2_CR,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_TDD4G2_CR,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_FDD3G4_CR,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_TDD3G4_CR,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_FDD2G4_CR,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_TDD2G4_CR,
+
+    EM_ERRC_SUCCESS_RATE_KPI_INTRA_LTE_FDDTDD_REDIRECT,
+    EM_ERRC_SUCCESS_RATE_KPI_INTRA_LTE_TDDFDD_REDIRECT,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_FDD4G3_R8_REDIRECT,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_FDD4G3_R9_REDIRECT,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_FDD4G3_R10_REDIRECT,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_TDD4G3_R8_REDIRECT,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_TDD4G3_R9_REDIRECT,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_TDD4G3_R10_REDIRECT,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_FDD4G2_R8_REDIRECT,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_FDD4G2_R9_REDIRECT,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_FDD4G2_R10_REDIRECT,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_TDD4G2_R8_REDIRECT,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_TDD4G2_R9_REDIRECT,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_TDD4G2_R10_REDIRECT,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_FDD3G4_REDIRECT,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_TDD3G4_REDIRECT,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_FDD2G4_REDIRECT,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_TDD2G4_REDIRECT,
+
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_FDD3G4_AFR,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_TDD3G4_AFR,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_FDD2G4_AFR,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_TDD2G4_AFR,
+
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_FDD3G4_BG_SRCH,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_TDD3G4_BG_SRCH,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_FDD2G4_BG_SRCH,
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_TDD2G4_BG_SRCH,
+
+    EM_ERRC_SUCCESS_RATE_KPI_IRAT_4G2_CCO,
+    EM_ERRC_SUCCESS_RATE_KPI_INTRA_LTE_CELLSELECTION,
+    EM_ERRC_SUCCESS_RATE_KPI_INTRA_LTE_REDIRECT
+
+}em_errc_success_rate_kpi_proc_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_errc_success_rate_kpi_proc_enum proc_id;
+    em_kpi_status_enum  status;
+    kal_uint32  attempt;
+    kal_uint32  success;
+    em_kpi_failure_type_enum failure_type;
+    em_errc_new_cell_cause_enum new_cell_cause;
+    em_errc_new_cell_status_enum new_cell_status;
+
+    kal_uint16 valid_bitmask;
+#define EM_SUCC_RATE_KPI_FAILURE_TYPE_VALID  0x01
+#define EM_SUCC_RATE_KPI_TARGET_CELL_VALID   0x02
+
+    em_general_cell_info_struct target_cell;
+}em_errc_success_rate_kpi_ind_struct;
+
+typedef enum
+{
+    EM_ERRC_ON_DUARTION_PS1,
+    EM_ERRC_ON_DUARTION_PS2,
+    EM_ERRC_ON_DUARTION_PS3,
+    EM_ERRC_ON_DUARTION_PS4,
+    EM_ERRC_ON_DUARTION_PS5,
+    EM_ERRC_ON_DUARTION_PS6,
+    EM_ERRC_ON_DUARTION_PS8,
+    EM_ERRC_ON_DUARTION_PS10,
+    EM_ERRC_ON_DUARTION_PS20,
+    EM_ERRC_ON_DUARTION_PS30,
+    EM_ERRC_ON_DUARTION_PS40,
+    EM_ERRC_ON_DUARTION_PS50,
+    EM_ERRC_ON_DUARTION_PS60,
+    EM_ERRC_ON_DUARTION_PS80,
+    EM_ERRC_ON_DUARTION_PS100,
+    EM_ERRC_ON_DUARTION_PS200,
+
+    EM_ERRC_ON_DUARTION_INVALID = 0xFFFFFFFF,
+}em_errc_on_duration_timer_enum;
+
+typedef enum
+{
+    EM_ERRC_DRX_INACTIVITY_PS1,
+    EM_ERRC_DRX_INACTIVITY_PS2,
+    EM_ERRC_DRX_INACTIVITY_PS3,
+    EM_ERRC_DRX_INACTIVITY_PS4,
+    EM_ERRC_DRX_INACTIVITY_PS5,
+    EM_ERRC_DRX_INACTIVITY_PS6,
+    EM_ERRC_DRX_INACTIVITY_PS8,
+    EM_ERRC_DRX_INACTIVITY_PS10,
+    EM_ERRC_DRX_INACTIVITY_PS20,
+    EM_ERRC_DRX_INACTIVITY_PS30,
+    EM_ERRC_DRX_INACTIVITY_PS40,
+    EM_ERRC_DRX_INACTIVITY_PS50,
+    EM_ERRC_DRX_INACTIVITY_PS60,
+    EM_ERRC_DRX_INACTIVITY_PS80,
+    EM_ERRC_DRX_INACTIVITY_PS100,
+    EM_ERRC_DRX_INACTIVITY_PS200,
+    EM_ERRC_DRX_INACTIVITY_PS300,
+    EM_ERRC_DRX_INACTIVITY_PS500,
+    EM_ERRC_DRX_INACTIVITY_PS750,
+    EM_ERRC_DRX_INACTIVITY_PS1280,
+    EM_ERRC_DRX_INACTIVITY_PS1920,
+    EM_ERRC_DRX_INACTIVITY_PS2560,
+    EM_ERRC_DRX_INACTIVITY_PS0,
+
+    EM_ERRC_DRX_INACTIVITY_INVALID = 0xFFFFFFFF,
+}em_errc_drx_inactivity_timer_enum;
+
+typedef enum
+{
+    EM_ERRC_DRX_RETX_TIMER_PS1,
+    EM_ERRC_DRX_RETX_TIMER_PS2,
+    EM_ERRC_DRX_RETX_TIMER_PS4,
+    EM_ERRC_DRX_RETX_TIMER_PS6,
+    EM_ERRC_DRX_RETX_TIMER_PS8,
+    EM_ERRC_DRX_RETX_TIMER_PS16,
+    EM_ERRC_DRX_RETX_TIMER_PS24,
+    EM_ERRC_DRX_RETX_TIMER_PS33,
+    EM_ERRC_DRX_RETX_TIMER_PS0,
+
+    EM_ERRC_DRX_RETX_TIMER_INVALID = 0xFFFFFFFF,
+}em_errc_drx_retx_timer_enum;
+
+typedef enum
+{
+    EM_ERRC_LONG_DRX_CYCLE_10,
+    EM_ERRC_LONG_DRX_CYCLE_20,
+    EM_ERRC_LONG_DRX_CYCLE_32,
+    EM_ERRC_LONG_DRX_CYCLE_40,
+    EM_ERRC_LONG_DRX_CYCLE_64,
+    EM_ERRC_LONG_DRX_CYCLE_80,
+    EM_ERRC_LONG_DRX_CYCLE_128,
+    EM_ERRC_LONG_DRX_CYCLE_160,
+    EM_ERRC_LONG_DRX_CYCLE_256,
+    EM_ERRC_LONG_DRX_CYCLE_320,
+    EM_ERRC_LONG_DRX_CYCLE_512,
+    EM_ERRC_LONG_DRX_CYCLE_640,
+    EM_ERRC_LONG_DRX_CYCLE_1024,
+    EM_ERRC_LONG_DRX_CYCLE_1280,
+    EM_ERRC_LONG_DRX_CYCLE_2048,
+    EM_ERRC_LONG_DRX_CYCLE_2560,
+    EM_ERRC_LONG_DRX_CYCLE_60,
+    EM_ERRC_LONG_DRX_CYCLE_70,
+
+    EM_ERRC_LONG_DRX_CYCLE_INVALID = 0xFFFFFFFF,
+}em_errc_long_drx_cycle_enum;
+
+typedef enum
+{
+    EM_ERRC_SHORT_DRX_CYCLE_2,
+    EM_ERRC_SHORT_DRX_CYCLE_5,
+    EM_ERRC_SHORT_DRX_CYCLE_8,
+    EM_ERRC_SHORT_DRX_CYCLE_10,
+    EM_ERRC_SHORT_DRX_CYCLE_16,
+    EM_ERRC_SHORT_DRX_CYCLE_20,
+    EM_ERRC_SHORT_DRX_CYCLE_32,
+    EM_ERRC_SHORT_DRX_CYCLE_40,
+    EM_ERRC_SHORT_DRX_CYCLE_64,
+    EM_ERRC_SHORT_DRX_CYCLE_80,
+    EM_ERRC_SHORT_DRX_CYCLE_128,
+    EM_ERRC_SHORT_DRX_CYCLE_160,
+    EM_ERRC_SHORT_DRX_CYCLE_256,
+    EM_ERRC_SHORT_DRX_CYCLE_320,
+    EM_ERRC_SHORT_DRX_CYCLE_512,
+    EM_ERRC_SHORT_DRX_CYCLE_640,
+    EM_ERRC_SHORT_DRX_CYCLE_4,
+
+    EM_ERRC_SHORT_DRX_CYCLE_INVALID = 0xFFFFFFFF,
+}em_errc_short_drx_cycle_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_errc_on_duration_timer_enum on_duration_timer_index;
+    em_errc_drx_inactivity_timer_enum drx_inactivity_timer_index;
+    em_errc_drx_retx_timer_enum drx_retx_timer_index;
+    em_errc_long_drx_cycle_enum long_drx_cycle_index;
+    em_errc_short_drx_cycle_enum short_drx_cycle_index;
+    kal_uint8 drx_short_cycle_timer; /* 1-16; invalid: 0xFF */
+    kal_uint16 drx_start_offset; /* 0 - 2559; Invalid: 0xFFFF */
+}em_errc_config_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+   em_errc_rcm_sim_sts_enum   sim_sts;
+}em_errc_rcm_sim_sts_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+   em_errc_sib_rx_info_struct   sib_rx_info[4]; /*Serving BCCH, Neighbor BCCH1, Neighbor BCCH2, SCell BCCH*/
+}em_errc_sys_sib_rx_sts_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    em_errc_state_enum errc_sts;
+}em_errc_state_ind_struct;
+
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_bool with_3g_neighbor;
+    kal_bool with_2g_neighbor;
+}em_errc_serv_ir_neighbor_info_ind_struct;
+
+typedef enum
+{
+    EM_ERRC_EVENT_REDIR_FROM_LTE_TO_GSM_R8,
+    EM_ERRC_EVENT_REDIR_FROM_LTE_TO_UMTS_R8,
+    EM_ERRC_EVENT_REDIR_FROM_LTE_TO_GSM_R9_LATER,
+    EM_ERRC_EVENT_REDIR_FROM_LTE_TO_UMTS_R9_LATER
+}em_errc_ir_redir_event_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_errc_ir_redir_event_enum redir_event;
+    kal_bool is_csfb_ongoing;
+}em_errc_ir_redir_event_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_bool utran_meas_cfg;
+    kal_bool geran_meas_cfg;
+    kal_bool c2k_meas_cfg;
+}em_errc_irat_meas_cfg_ind_struct;
+
+typedef enum
+{
+    EM_ERRC_TIMER_T300,
+    EM_ERRC_TIMER_T301,
+    EM_ERRC_TIMER_T302,
+    EM_ERRC_TIMER_T303,
+    EM_ERRC_TIMER_T304,
+    EM_ERRC_TIMER_T305,
+    EM_ERRC_TIMER_T311,
+    EM_ERRC_TIMER_T320,
+    EM_ERRC_TIMER_T321,
+    EM_ERRC_TIMER_OTHER
+}em_errc_timer_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_errc_timer_enum  tmr_type;
+}em_errc_timer_expiry_event_ind_struct;
+
+
+/*MSG_ID_EM_ERRC_SERVING_INFO_IND*/
+
+typedef enum
+{
+    EM_ERRC_DEFAULT_PAGING_CYCLE_32,
+    EM_ERRC_DEFAULT_PAGING_CYCLE_64,
+    EM_ERRC_DEFAULT_PAGING_CYCLE_128,
+    EM_ERRC_DEFAULT_PAGING_CYCLE_256,
+    EM_ERRC_DEFAULT_PAGING_CYCLE_INVALID = 0xFF
+}em_errc_default_paging_cycle_enum;
+
+typedef struct
+{
+    kal_uint8 mcc1;
+    kal_uint8 mcc2;
+    kal_uint8 mcc3;
+    kal_uint8 mnc1;
+    kal_uint8 mnc2;
+    kal_uint8 mnc3;
+} em_errc_plmnid_struct;
+
+typedef struct
+{
+    kal_uint8                   plmnid_list_len;
+    em_errc_plmnid_struct       plmnid_inf[ERRC_MAX_PLMN_ID_LIST];
+}em_errc_plmnid_list_struct;
+
+typedef struct
+{
+    EARFCN    dl_earfcn;
+    EARFCN    ul_earfcn;
+    kal_uint16    pci;
+    kal_uint32    cell_id;/*28 bits*/
+    kal_uint16    ta_code;
+    kal_uint16    dl_bandwidth; /*unit:100kHz*/
+    kal_uint16    ul_bandwidth; /*unit:100kHz*/
+    kal_bool      ims_emergency_supported;
+    kal_bool      csg_ind;
+    kal_uint32    csg_id;/* 27 bits, 0xFFFFFFFF means invalid*/
+    kal_bool      high_speed_flg;
+    em_errc_default_paging_cycle_enum  def_paging_cycle;
+    kal_uint16    band;
+    em_errc_plmnid_list_struct   plmnid_list;
+}em_errc_serv_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_bool                  is_serving_inf_valid;
+    em_errc_serv_info_struct  serv_inf;
+}em_errc_serving_info_ind_struct;
+
+typedef enum
+{
+    EM_ERRC_PAGING_FAIL_CAUSE_PDSCH_CRCNG
+}em_errc_paging_fail_cause_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_errc_paging_fail_cause_enum cause;
+}em_errc_paging_fail_ind_struct;
+
+#define EM_SCELL_MAX_NUM    4
+
+//#ifdef __LTE_R11__
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    EARFCN pcell_earfcn;
+    kal_uint16 pcell_band;
+    kal_uint16 pcell_pci;
+    kal_uint8  pcell_bw;
+    kal_uint8  unused[3];
+
+    kal_bool   is_scell_configured[EM_SCELL_MAX_NUM];
+    EARFCN scell_earfcn[EM_SCELL_MAX_NUM];
+    kal_uint16 scell_band[EM_SCELL_MAX_NUM];
+    kal_uint16 scell_pci[EM_SCELL_MAX_NUM];
+    kal_uint8  scell_bw[EM_SCELL_MAX_NUM];
+    kal_bool   scell_belongs_to_stag[EM_SCELL_MAX_NUM];
+}em_errc_conn_info_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_lte_rrc_state_enum errc_state;
+    em_lte_rrc_cause_enum errc_cause;
+
+} em_lte_rrc_state_ind_struct;
+//#endif
+
+typedef enum
+{
+    EM_ERRC_SEARCHING_STATE_UNKNOWN,
+    EM_ERRC_SEARCHING_STATE_IDLE,
+    EM_ERRC_SEARCHING_STATE_CONNECTED,    
+    EM_ERRC_SEARCHING_STATE_SEARCHING        
+}em_errc_searching_state_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_errc_searching_state_enum state;
+}em_errc_searching_state_ind_struct;
+
+#define MOB_EM_UPDATE_MAX_INTRA_CELL_QUAN 16
+#define MOB_EM_UPDATE_MAX_INTRA_CELL_MOD3_QUAN 3
+#define MOB_EM_UPDATE_MAX_INTER_FREQ_QUAN 4
+#define MOB_EM_UPDATE_MAX_INTER_FREQ_CELLS_QUAN 6
+#define MOB_EM_UPDATE_MAX_IR_UTRAN_FREQ_QUAN 16
+#define MOB_EM_UPDATE_MAX_IR_GERAN_CELL_QUAN 6
+#define MOB_EM_UPDATE_MAX_IR_UTRAN_CELL_QUAN 6
+#define MOB_EM_UPDATE_MAX_SCELL_QUAN 4 //support 4 scells in 6297 (MAX_SC is 5)
+
+#define MOB_EM_UPDATE_MAX_IR_C2K_BAND_QUAN 5 /* C2K support band, our chip allow customer to select at most 5 band
+                                              * from the following 7 band {BC0, BC1, BC4, BC6, BC10, BC14, BC15}
+                                              * So LTE need to support 5 C2K band measurement at same time */
+#define MOB_EM_UPDATE_MAX_IR_C2K_FREQ_QUAN 8 /* Align max freq number in MOB MRM/MIM table */
+#define MOB_EM_UPDATE_MAX_IR_C2K_CELL_QUAN 40
+
+typedef enum _errc_mob_em_spj_state_enum{
+    MOB_EM_HIGH_MOBILITY,
+    MOB_EM_MEDIUM_MOBILITY,
+    MOB_EM_NORMAL_MOBILITY
+}errc_mob_em_spj_state_enum;
+
+typedef enum {
+    MOB_EM_MEAS_BANDWIDTH_6_RB,
+    MOB_EM_MEAS_BANDWIDTH_15_RB,
+    MOB_EM_MEAS_BANDWIDTH_25_RB,
+    MOB_EM_MEAS_BANDWIDTH_50_RB,
+    MOB_EM_MEAS_BANDWIDTH_75_RB,
+    MOB_EM_MEAS_BANDWIDTH_100_RB,
+    MOB_EM_MEAS_BANDWIDTH_INVALID=0xFF
+}errc_mob_em_bandwidth_enum;
+
+typedef enum {
+    MOB_EM_FDD,
+    MOB_EM_TDD
+}errc_mob_em_duplex_type_enum;
+
+typedef struct _errc_mob_em_scell_info_struct{
+    EARFCN earfcn;
+    kal_uint16 pci;
+    kal_int32 rsrp;
+    kal_int32 rsrq;
+    kal_int32 rs_snr_in_qdb;
+    kal_uint16 serv_lte_band;
+}errc_mob_em_scell_info_struct;
+
+typedef struct _errc_mob_em_scell_info_list_struct{
+    kal_uint8 num_scell;
+    errc_mob_em_scell_info_struct scell_info[MOB_EM_UPDATE_MAX_SCELL_QUAN];
+}errc_mob_em_scell_info_list_struct;
+
+typedef struct _errc_mob_em_serving_info_struct{
+    EARFCN earfcn;
+    kal_uint16 pci;
+    kal_int32 rsrp;
+    kal_int32 rsrq;
+    kal_int32 rs_snr_in_qdb;
+    kal_uint16 serv_lte_band;
+    errc_mob_em_spj_state_enum mobility_state;
+    kal_uint8 S_intra_search_p;
+    kal_uint8 S_intra_search_q;
+    kal_uint8 S_nonintra_search_p;
+    kal_uint8 S_nonintra_search_q;
+    kal_uint8 thresh_serving_low_p;
+    kal_uint8 thresh_serving_low_q;
+    kal_uint8 tresel;
+    errc_mob_em_bandwidth_enum DlBandwidth;
+    errc_mob_em_bandwidth_enum UlBandwidth;
+}errc_mob_em_serving_info_struct;
+
+typedef struct _errc_mob_em_intrarat_intra_info_ecell_struct{
+    kal_bool valid;
+    kal_uint16 pci;
+    kal_int32 rsrp;
+    kal_int32 rsrq;
+    kal_bool is_detected_cell;
+    kal_bool is_barred_cell;
+    kal_int16 rsrp0;
+    kal_int16 rsrp1;
+    kal_int16 rsrq0;
+    kal_int16 rsrq1;
+    kal_int16 rssi;
+    kal_int16 rssi0;
+    kal_int16 rssi1;
+}errc_mob_em_intrarat_intra_info_ecell_struct;
+
+typedef struct _errc_mob_em_intrarat_intra_info_struct{
+    kal_int8 priority;
+    errc_mob_em_bandwidth_enum bandwidth;
+    kal_bool is_blacklist_present;
+    kal_int16 pcomp;
+    errc_mob_em_duplex_type_enum duplex_type;
+    kal_uint8 subframe_nb;
+    kal_uint16 frame_nb;
+    kal_uint8 cell_num;
+    errc_mob_em_intrarat_intra_info_ecell_struct intra_cell[MOB_EM_UPDATE_MAX_INTRA_CELL_QUAN];
+    kal_uint8 sub_priority; /* only valid when cellReselectionSubPrioity-r13 supported */
+}errc_mob_em_intrarat_intra_info_struct;
+
+typedef struct _errc_mob_em_intrarat_inter_info_ecell_struct{
+    kal_bool valid;
+    kal_uint16 pci;
+    kal_int32 rsrp;
+    kal_int32 rsrq;
+    kal_bool is_detected_cell;
+    kal_bool is_barred_cell;
+    kal_int16 rsrp0;
+    kal_int16 rsrp1;
+    kal_int16 rsrq0;
+    kal_int16 rsrq1;
+    kal_int16 rssi;
+    kal_int16 rssi0;
+    kal_int16 rssi1;
+}errc_mob_em_intrarat_inter_info_ecell_struct;
+
+typedef struct _errc_mob_em_intrarat_inter_info_inter_freq_struct{
+    kal_bool valid;
+    EARFCN earfcn;
+    kal_int16 pcomp;
+    kal_int8 priority;
+    errc_mob_em_bandwidth_enum bandwidth;
+    kal_bool is_blacklist_present;
+    kal_uint8 treselection;
+    kal_uint8 thresh_x_high_p;
+    kal_uint8 thresh_x_high_q;
+    kal_uint8 thresh_x_low_p;
+    kal_uint8 thresh_x_low_q;
+    errc_mob_em_duplex_type_enum duplex_type;
+    kal_uint8 subframe_nb;
+    kal_uint16 frame_nb;
+    kal_uint8 cell_num;
+    errc_mob_em_intrarat_inter_info_ecell_struct inter_cell[MOB_EM_UPDATE_MAX_INTER_FREQ_CELLS_QUAN];
+    kal_uint16 band;
+    kal_uint8 sub_priority; /* only valid when cellReselectionSubPrioity-r13 supported */
+}errc_mob_em_intrarat_inter_info_inter_freq_struct;
+
+typedef struct _errc_mob_em_intrarat_inter_info_struct{
+    kal_uint8 freq_num;
+    errc_mob_em_intrarat_inter_info_inter_freq_struct inter_freq[MOB_EM_UPDATE_MAX_INTER_FREQ_QUAN];
+}errc_mob_em_intrarat_inter_info_struct;
+
+typedef struct _errc_mob_em_intrarat_s_intra_info_s_intra_freq_struct{
+    kal_bool valid;
+    EARFCN earfcn;
+    kal_int8 priority;
+    errc_mob_em_bandwidth_enum bandwidth;
+    kal_bool is_blacklist_present;
+    kal_int16 pcomp;
+    errc_mob_em_duplex_type_enum duplex_type;
+    kal_uint8 subframe_nb;
+    kal_uint16 frame_nb;
+    kal_uint8 cell_num;
+    errc_mob_em_intrarat_intra_info_ecell_struct s_intra_cell[MOB_EM_UPDATE_MAX_INTRA_CELL_QUAN];
+}errc_mob_em_intrarat_s_intra_info_s_intra_freq_struct;
+
+typedef struct _errc_mob_em_intrarat_s_intra_info_struct{
+    kal_uint8 num_scell;
+    errc_mob_em_intrarat_s_intra_info_s_intra_freq_struct s_intra_freq[MOB_EM_UPDATE_MAX_SCELL_QUAN];
+}errc_mob_em_intrarat_s_intra_info_struct;
+
+typedef struct _em_errc_mob_meas_intrarat_info_ind_struct{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    errc_mob_em_serving_info_struct serving_info;
+    errc_mob_em_intrarat_intra_info_struct intra_info;
+    errc_mob_em_intrarat_inter_info_struct inter_info;
+    errc_mob_em_scell_info_list_struct scell_info_list;
+    errc_mob_em_intrarat_s_intra_info_struct s_intra_info_list;
+    kal_int8 SIB3_L2W; //SIB3:qrxlevmin*2+thresh_serving_low_p*2
+    kal_uint8 ucpad;//AT&T requirement
+}em_errc_mob_meas_intrarat_info_ind_struct;
+
+
+typedef struct _errc_mob_em_intrarat_info_mod3cell_struct{
+	  EARFCN earfcn;
+    kal_uint16 pci;
+    kal_int32 rsrp;
+    kal_int32 rsrq;
+}errc_mob_em_intra_info_mod3cell_struct;
+
+typedef struct _em_errc_intralte_interference_mod3_ind_struct{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_bool mod3_detect_status;
+	kal_uint8 neighbor_cell_num;
+    errc_mob_em_intra_info_mod3cell_struct serving_info;
+    errc_mob_em_intra_info_mod3cell_struct neighbor_info[MOB_EM_UPDATE_MAX_INTRA_CELL_MOD3_QUAN];
+}em_errc_intralte_interference_mod3_ind_struct;
+
+typedef struct _em_errc_srvcc_bsic_info_ind_struct{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint16 arfcn;
+    kal_uint8 bsic;
+}em_errc_srvcc_bsic_info_ind_struct;
+
+typedef struct _errc_mob_em_ir_geran_gcell_struct{
+    kal_bool valid; /*only used in sorting the em result*/
+    kal_int8 priority;
+    kal_bool band_ind;
+    kal_uint16 arfcn;
+    kal_uint8 bsic;
+    kal_int32 rssi;
+    kal_uint8 thresh_x_high;
+    kal_uint8 thresh_x_low;
+}errc_mob_em_ir_geran_gcell_struct;
+
+typedef struct _errc_mob_em_ir_utran_ucell_struct{
+    kal_bool valid;
+    kal_uint16 psc;
+    kal_int32 rscp;
+    kal_int32 ec_n0;
+}errc_mob_em_ir_utran_ucell_struct;
+
+typedef struct _errc_mob_em_ir_utran_freq_struct{
+    kal_bool valid;
+    kal_uint16 uarfcn;
+    kal_int8 priority;
+    kal_uint8 threshx_high_p;
+    kal_uint8 threshx_high_q;
+    kal_uint8 threshx_low_p;
+    kal_uint8 threshx_low_q;
+    kal_uint8 ucell_num;
+    errc_mob_em_ir_utran_ucell_struct ucell[MOB_EM_UPDATE_MAX_IR_UTRAN_CELL_QUAN];
+}errc_mob_em_ir_utran_freq_struct;
+
+typedef struct
+{
+    kal_uint16 pn;
+    kal_int16 phase;
+    kal_uint8 strength;
+}errc_mob_em_ir_c2k_cell_struct;
+
+typedef struct
+{
+   kal_bool valid;
+   kal_uint16 channel;
+   kal_bool is_search_win_size_valid;
+   kal_uint8 search_win_size;
+   kal_uint8 num_pn;
+   errc_mob_em_ir_c2k_cell_struct pn_list[MOB_EM_UPDATE_MAX_IR_C2K_CELL_QUAN];
+}errc_mob_em_ir_c2k_freq_struct;
+
+typedef struct
+{
+    kal_bool valid;
+    kal_uint8 band;
+    kal_int8 prio;
+    kal_uint8 threshx_high;
+    kal_uint8 threshx_low;
+    kal_uint8 freq_num;
+    errc_mob_em_ir_c2k_freq_struct freq[MOB_EM_UPDATE_MAX_IR_C2K_FREQ_QUAN];
+}errc_mob_em_ir_c2k_band_struct;
+
+typedef struct _em_errc_mob_meas_interrat_geran_info_ind_struct{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 total_gcell_num;
+    errc_mob_em_ir_geran_gcell_struct gcell[MOB_EM_UPDATE_MAX_IR_GERAN_CELL_QUAN];
+}em_errc_mob_meas_interrat_geran_info_ind_struct;
+
+typedef struct _em_errc_mob_meas_interrat_utran_info_ind_struct{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 freq_num;
+    errc_mob_em_ir_utran_freq_struct inter_freq[MOB_EM_UPDATE_MAX_IR_UTRAN_FREQ_QUAN];
+}em_errc_mob_meas_interrat_utran_info_ind_struct;
+
+typedef struct _em_errc_mob_meas_interrat_c2k_info_ind_struct{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 band_num;
+    errc_mob_em_ir_c2k_band_struct band_list[MOB_EM_UPDATE_MAX_IR_C2K_BAND_QUAN];
+}em_errc_mob_meas_interrat_c2k_info_ind_struct;
+
+
+typedef enum
+{
+    EM_ERRC_MOB_EVENT_TYPE_B_INVALID,
+    EM_ERRC_MOB_EVENT_TYPE_B_1,
+    EM_ERRC_MOB_EVENT_TYPE_B_2
+} MobEmInfoEventTypeB;
+
+typedef enum
+{
+    EM_ERRC_MOB_EVENT_TYPE_A_INVALID,
+    EM_ERRC_MOB_EVENT_TYPE_A_1,
+    EM_ERRC_MOB_EVENT_TYPE_A_2,   
+    EM_ERRC_MOB_EVENT_TYPE_A_3,
+    EM_ERRC_MOB_EVENT_TYPE_A_4,  
+    EM_ERRC_MOB_EVENT_TYPE_A_5,
+    EM_ERRC_MOB_EVENT_TYPE_A_6
+} MobEmInfoEventTypeA;
+
+
+typedef enum
+{
+    EM_ERRC_MOB_MEAS_QTY_INVALID,
+    EM_ERRC_MOB_MEAS_QTY_RSRP,
+    EM_ERRC_MOB_MEAS_QTY_RSRQ
+} MobEmMeasQty;
+
+typedef enum
+{
+    EM_ERRC_MOB_MEAS_QTY_FOR_OTHER_RAT_INVALID,
+    EM_ERRC_MOB_MEAS_QTY_GSM_RSSI,
+    EM_ERRC_MOB_MEAS_QTY_UTRA_RSCP,
+    EM_ERRC_MOB_MEAS_QTY_UTRA_ECN0
+} MobEmMeasQtyForOtherRAT;
+
+typedef struct {
+    kal_uint8   MeasId;
+    MobEmInfoEventTypeB   EventType;
+    MobEmMeasQty MeasQty;
+    MobEmMeasQtyForOtherRAT MeasQtyOtherRAT;
+    kal_uint8   fc_OtherSys;
+    kal_uint8   fc_OwnSys;
+    kal_int16   ThresholdOwnSystem;
+    kal_int16   ThresholdOtherSystem;
+    kal_uint8   Hystersis;
+    kal_uint16  TimeToTrigger;
+} event_B_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 num_event_info;
+    event_B_struct em_event_info[ERRC_EM_MAX_IRAT_MEAS_CONFIG_REPORT_NUM];
+} em_errc_mob_meas_config_info_ind_struct;
+
+typedef em_errc_mob_meas_config_info_ind_struct em_errc_mob_b2_meas_config_info_ind_struct;
+
+typedef struct {
+    kal_uint8   MeasId;
+    MobEmInfoEventTypeA   EventType;
+    MobEmMeasQty MeasQty;
+    kal_int16   Threshold1;
+    kal_int16   Threshold2; // placeholder for future enh for A5
+    kal_uint8   Hystersis;
+    kal_uint16  TimeToTrigger;
+} event_A_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 num_event_info;
+    event_A_struct em_event_info[ERRC_EM_MAX_A2_ONLY_MEAS_CONFIG_REPORT_NUM];
+} em_errc_mob_intrarat_meas_config_info_ind_struct;
+
+typedef struct {
+    kal_uint8   MeasId;
+    MobEmInfoEventTypeB   EventType;
+} em_errc_mob_report_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    em_errc_mob_report_struct em_report_info;
+}em_errc_mob_meas_report_info_ind_struct;
+
+
+typedef enum
+{
+    ERRC_FEAT_MFBI_PRIORITIZATION,
+    ERRC_FEAT_AC_BAR_SKIP_MMTEL_VOICE,
+    ERRC_FEAT_AC_BAR_SKIP_MMTEL_VIDEO,
+    ERRC_FEAT_AC_BAR_SKIP_SMS,
+    ERRC_FEAT_PLMN_SPECIFIC_AC_BAR,
+    ERRC_FEAT_PLMN_SPECIFIC_SSAC,
+    ERRC_FEAT_RRC_CONN_TEMP_FAIL_OFFSET,
+    ERRC_FEAT_INCMON_EUTRA,
+    ERRC_FEAT_INCMON_UTRA,
+    ERRC_FEAT_CELL_SPECIFIC_TTT,
+    ERRC_FEAT_FAST_RLF_REC_WITH_T312,
+    ERRC_FEAT_RSRQ_LOWER_VALUE_RANGE_EXT,
+    ERRC_FEAT_ENH_HARQ_TTI_BUND_FOR_FDD,
+    ERRC_FEAT_LOG_CH_SR_PROHIBIT_TIMER,
+    ERRC_FEAT_MOB_HIST_REPORTING,
+    ERRC_FEAT_SHORTER_MCH_SCHED_PERIOD,
+    ERRC_FEAT_IDC_ENH_FOR_UL_CA,
+    ERRC_FEAT_LOGGED_MDT,
+    ERRC_FEAT_IMMED_MDT,
+    ERRC_FEAT_EICIC_SF_PATTERN,
+    ERRC_FEAT_EICIC_DEDICATED_SIB1,
+    ERRC_FEAT_MBSFN_AREA_DETECTED,
+    ERRC_FEAT_UL_64QAM_DETECTED,
+    ERRC_FEAT_EAB_DETECTED,
+    ERRC_FEAT_DL_256QAM,
+    ERRC_FEAT_SON_ANR,
+    ERRC_FEAT_PINGPONG_DETECTED,
+    ERRC_FEAT_ADD_BLACKLISTED_CELL,
+    ERRC_FEAT_FOUR_LAYERS_MIMO_PCELL,
+    ERRC_FEAT_FOUR_LAYERS_MIMO_SCELL,
+    ERRC_FEAT_TM8_DETECTED,
+    ERRC_FEAT_TM9_DETECTED,
+    ERRC_FEAT_SRS_TX_ANT_SWITCH_DETECTED,
+    ERRC_FEAT_SRS_ENHANCEMENT_DETECTED,
+    ERRC_FEAT_DMRS_ENHANCEMENT_DETECTED,
+    ERRC_FEAT_EICIC_DETECTED,
+    ERRC_FEAT_FEICIC_DETECTED,
+    ERRC_FEAT_TRANS_MODE,
+    ERRC_FEAT_DL_LAYERS,
+    ERRC_FEAT_4G_BAND,
+    ERRC_FEAT_OOS_CAUSE,
+    ERRC_FEAT_LTE_INTER_FREQ_RESEL,
+    ERRC_FEAT_LTE_FDD_TDD_RESEL,
+    ERRC_FEAT_LTE_FDD_TDD_REDIRECT,
+    ERRC_FEAT_4G3_CSFB_REDIRECT,
+    ERRC_FEAT_4G2_CSFB_REDIRECT,
+    ERRC_FEAT_IMS_ECC_SUPPORT,
+    ERRC_FEAT_CONN_REL_TRIGGER_A2
+}em_errc_feat_enum;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_errc_feat_enum detected_feature;
+}em_errc_feature_detection_ind_struct;
+
+typedef enum
+{
+    EM_ERRC_LTE_RRC_MSG_CLASS_BCCH_BCH,
+    EM_ERRC_LTE_RRC_MSG_CLASS_BCCH_DL_SCH,
+    EM_ERRC_LTE_RRC_MSG_CLASS_MCCH,
+    EM_ERRC_LTE_RRC_MSG_CLASS_PCCH,
+    EM_ERRC_LTE_RRC_MSG_CLASS_DL_CCCH,
+    EM_ERRC_LTE_RRC_MSG_CLASS_DL_DCCH,
+    EM_ERRC_LTE_RRC_MSG_CLASS_UL_CCCH,
+    EM_ERRC_LTE_RRC_MSG_CLASS_UL_DCCH,
+    EM_ERRC_LTE_RRC_MSG_CLASS_END = 0x7fffffff //end tag force this enum 4 bytes, for alignment purpose. Don't remove
+} em_errc_msg_class_enum;
+
+typedef enum
+{
+    /* BCCH-BCH-Message */
+    EM_ERRC_LTE_RRC_BCCH_BCH_MSG_MASTER_INFO_BLK,
+    /* BCCH-DL-SCH-Message */
+    EM_ERRC_LTE_RRC_BCCH_DL_SCH_MSG_SYS_INFO,
+    EM_ERRC_LTE_RRC_BCCH_DL_SCH_MSG_SYS_INFO_BLK_TYPE1,
+    /* MCCH-Message */
+    EM_ERRC_LTE_RRC_MCCH_MSG_MBSFN_AREA_CFG,
+    EM_ERRC_LTE_RRC_MCCH_MSG_MBMS_COUNTING_REQ,
+    /* PCCH-Message */
+    EM_ERRC_LTE_RRC_PCCH_MSG_PAGING,
+    /* DL-CCCH-Message */
+    EM_ERRC_LTE_RRC_DL_CCCH_MSG_RRC_CONN_REEST,
+    EM_ERRC_LTE_RRC_DL_CCCH_MSG_RRC_CONN_REEST_REJ,
+    EM_ERRC_LTE_RRC_DL_CCCH_MSG_RRC_CONN_REJ,
+    EM_ERRC_LTE_RRC_DL_CCCH_MSG_RRC_CONN_SETUP,
+    /* DL-DCCH-Message */
+    EM_ERRC_LTE_RRC_DL_DCCH_MSG_CSFB_PARAM_RESP,
+    EM_ERRC_LTE_RRC_DL_DCCH_MSG_DL_INFO_TRANSFER,
+    EM_ERRC_LTE_RRC_DL_DCCH_MSG_HO_FROM_EUTRA_REQ,
+    EM_ERRC_LTE_RRC_DL_DCCH_MSG_MOB_FROM_EUTRA_CMD,
+    EM_ERRC_LTE_RRC_DL_DCCH_MSG_RRC_CONN_RECFG,
+    EM_ERRC_LTE_RRC_DL_DCCH_MSG_RRC_CONN_REL,
+    EM_ERRC_LTE_RRC_DL_DCCH_MSG_SECURE_MODE_CMD,
+    EM_ERRC_LTE_RRC_DL_DCCH_MSG_UE_CAP_ENQ,
+    EM_ERRC_LTE_RRC_DL_DCCH_MSG_CNTR_CHECK,
+    EM_ERRC_LTE_RRC_DL_DCCH_MSG_UEINFO_REQ,
+    EM_ERRC_LTE_RRC_DL_DCCH_MSG_LOGGED_MEAS_CFG,
+    EM_ERRC_LTE_RRC_DL_DCCH_MSG_RN_RECFG,
+    /* UL-CCCH-Message */
+    EM_ERRC_LTE_RRC_UL_CCCH_MSG_RRC_CONN_REEST_REQ,
+    EM_ERRC_LTE_RRC_UL_CCCH_MSG_RRC_CONN_REQ,
+    /* UL-DCCH-Message */
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_CSFB_PARAM_REQ,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_MEAS_REPORT,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_RRC_CONN_RECFG_CMP,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_RRC_CONN_REEST_CMP,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_RRC_CONN_SETUP_CMP,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_SECURE_MODE_CMP,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_SECURE_MODE_FAIL,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_UE_CAP_INFO,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_HO_PREP_TXR,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_INFO_TXR,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_CNTR_CHK_RESP,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_UEINFO_RESP,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_PROX_IND,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_RN_RECFG_CMP,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_MBMS_COUNTING_RESP,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_INTER_FREQ_RSTD_MEAS_IND,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_UEA_INFO,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_IDC_IND,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_MII,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_SCG_FAIL_INFO,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_SL_UEINFO,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_WLAN_CONN_STS_REPORT,
+    EM_ERRC_LTE_RRC_UL_DCCH_MSG_SCG_FAIL_INFO_NR,
+    EM_ERRC_LTE_RRC_MSG_TYPE_END = 0x7fffffff //end tag force this enum 4 bytes, for alignment purpose. Don't remove
+} em_errc_msg_type_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_errc_msg_class_enum msg_class;
+    em_errc_msg_type_enum msg_type;
+    kal_uint32 raw_data_len;
+    kal_uint8 raw_data[ERRC_MAX_EUTRA_RRC_MESSAGE_S_DATA_LEN];
+}em_errc_eutra_rrc_message_s_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_errc_msg_class_enum msg_class;
+    em_errc_msg_type_enum msg_type;
+    kal_uint32 raw_data_len;
+    kal_uint8 raw_data[ERRC_MAX_EUTRA_RRC_MESSAGE_M_DATA_LEN];
+}em_errc_eutra_rrc_message_m_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_errc_msg_class_enum msg_class;
+    em_errc_msg_type_enum msg_type;
+    kal_uint32 raw_data_len;
+    kal_uint8 raw_data[ERRC_MAX_EUTRA_RRC_MESSAGE_L_DATA_LEN];
+}em_errc_eutra_rrc_message_l_ind_struct;
+
+
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+}em_errc_abnormal_event_logging_test_ind_struct;
+
+/* MSG_ID_EM_LTE_SUPPORTED_BAND_INFO_IND */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint16   num_supported_band;
+    kal_uint16   supported_band[256];
+}em_lte_supported_band_info_ind_struct;
+
+typedef struct
+{
+    kal_uint32    earfcn;
+    kal_uint16    pci;
+    kal_uint32    cell_id;
+    kal_int32     rsrp;
+    kal_int32     rsrq;
+}em_errc_srvcc_cell_info_pcell_struct;
+
+typedef enum
+{
+    EM_ERRC_NOT_IN_SRVCC_DURATION                = 0,
+    EM_ERRC_SRVCC_FAIL_THRESHOLD_NOT_PASS        = 1,
+    EM_ERRC_SRVCC_BSIC_DECODE_FAIL               = 2,
+    EM_ERRC_SRVCC_FAIL_TTT_NOT_PASS              = 3,
+    EM_ERRC_SRVCC_FAIL_TTT_RECOUNT               = 4,
+    EM_ERRC_SRVCC_FAIL_MEAS_RPT_SEND_FAIL        = 5,
+    EM_ERRC_SRVCC_FAIL_MEAS_RPTE_NO_RESPONSE     = 6
+}em_errc_srvcc_fail_type_enum;
+
+typedef struct
+{
+    kal_uint16    psc;
+    kal_int32     rsrp;
+    kal_int32     ec_no;
+}em_errc_srvcc_cell_info_ucell_struct; 
+
+typedef struct
+{
+    kal_uint8                                meas_id;
+    em_errc_srvcc_fail_type_enum             cause;
+    kal_uint32                               uarfcn;
+    kal_uint8                                utran_cell_num;
+    em_errc_srvcc_cell_info_ucell_struct     utran_cell_list[8];
+}em_errc_srvcc_rpt_utran_struct;
+
+typedef struct
+{
+    kal_uint16    arfcn;
+    kal_bool      band_ind;
+    kal_uint8     bsic;
+    kal_int32     rssi;
+}em_errc_srvcc_cell_info_gcell_struct;
+
+typedef struct
+{
+    kal_uint8                               meas_id;
+    em_errc_srvcc_fail_type_enum            cause;
+    kal_uint8                               geran_cell_num;
+    em_errc_srvcc_cell_info_gcell_struct    geran_cell_list[8];
+}em_errc_srvcc_rpt_geran_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_errc_srvcc_cell_info_pcell_struct    serving_info;
+    kal_uint8                               utran_rpt_num;
+    em_errc_srvcc_rpt_utran_struct          utran_rpt_list[8];
+    kal_uint8                               geran_rpt_num;
+    em_errc_srvcc_rpt_geran_struct          geran_rpt_list[8];
+}em_errc_srvcc_cell_info_ind_struct;
+
+typedef enum
+{
+    EM_ERRC_SRVCC_FAIL_CAUSE_NONE                      = 0,
+    EM_ERRC_SRVCC_FAIL_CAUSE_FREQUENCY_NOT_IMPLEMENTED = 1,
+    EM_ERRC_SRVCC_FAIL_CAUSE_PHYSICAL_CHANNEL_FAILURE  = 2,
+    EM_ERRC_SRVCC_FAIL_CAUSE_PROTOCOL_ERROR            = 3,
+    EM_ERRC_SRVCC_FAIL_CAUSE_UNSUPPORTED_CONFIGURATION = 4,
+    EM_ERRC_SRVCC_FAIL_CAUSE_UNSPICIFIED_ERROR         = 5
+}em_errc_srvcc_fail_event_cause_enum;
+
+typedef enum
+{
+    EM_ERRC_SRVCC_PHY_FAIL_SUBCAUSE_NONE                  = 0,
+    EM_ERRC_SRVCC_PHY_FAIL_SUBCAUSE_TIME_ADV_OUT_OF_RANGE = 1,
+    EM_ERRC_SRVCC_PHY_FAIL_SUBCAUSE_N200_TIMEOUT          = 2,
+    EM_ERRC_SRVCC_PHY_FAIL_SUBCAUSE_T3124_TIMEOUT         = 3,
+    EM_ERRC_SRVCC_PHY_FAIL_SUBCAUSE_CONTENTION_RES_FAIL   = 4,
+    EM_ERRC_SRVCC_PHY_FAIL_SUBCAUSE_OTHER                 = 5
+}em_errc_srvcc_phy_fail_subcause_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_bool      gcell_exist;
+    kal_uint16    gcell_arfcn;
+    kal_bool      ucell_exist;
+    kal_uint32    ucell_uarfcn;
+    kal_uint16    ucell_psc;
+    em_errc_srvcc_cell_info_pcell_struct    serving_info;
+    em_errc_srvcc_fail_event_cause_enum     fail_cause;
+    em_errc_srvcc_phy_fail_subcause_enum    phy_fail_subcause;
+}em_errc_srvcc_ho_fail_event_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint32   oos_counter;
+} em_errc_oos_event_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    EARFCN earfcn;
+    kal_uint16 pci;
+} em_errc_cell_black_list_event_ind_struct;
+
+typedef enum
+{
+    EM_ERRC_ENASAS_EST_TYPE_ORIGINATING_SIGNALLING = 0,
+    EM_ERRC_ENASAS_EST_TYPE_ORIGINATING_CALLS,
+    EM_ERRC_ENASAS_EST_TYPE_TERMINATING_CALLS,
+    EM_ERRC_ENASAS_EST_TYPE_EMERGENCY_CALLS,
+    EM_ERRC_ENASAS_EST_TYPE_MO_CSFB,
+    EM_ERRC_ENASAS_EST_TYPE_MO_MMTEL_VOICE,
+    EM_ERRC_ENASAS_EST_TYPE_MO_MMTEL_VIDEO,
+    EM_ERRC_ENASAS_EST_TYPE_MO_SMS,
+    EM_ERRC_ENASAS_EST_TYPE_INVALID
+}em_errc_enasas_establishment_type_enum;
+
+typedef enum
+{
+    EM_ERRC_AC_BARRING_FOR_EMERGENCY = 0,
+    EM_ERRC_AC_BARRING_FOR_MO_SIGNALLING,
+    EM_ERRC_AC_BARRING_FOR_MO_DATA,
+    EM_ERRC_AC_BARRING_FOR_CSFB,
+    EM_ERRC_AC_BARRING_FOR_INVALID
+}em_errc_ac_bar_type_enum;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+  em_info_enum em_info;
+  em_errc_bar_cause_enum em_bar_cause;
+  kal_uint32 bar_time;                  //acbar, reject
+  kal_uint32 ext_wait_time;             //reject, release
+  kal_bool is_bar_time_valid;
+  kal_bool is_ext_wait_time_valid;
+  em_errc_enasas_establishment_type_enum est_type;
+  em_errc_ac_bar_type_enum ac_bar_type; 
+}em_errc_bar_info_ind_struct;
+ 
+typedef struct
+{
+  LOCAL_PARA_HDR
+  em_info_enum em_info;
+  em_errc_timer_enum tmr_type;              //T301, T311
+  kal_uint32 timer_length;                  //ms
+}em_errc_reest_fail_timer_info_ind_struct;
+
+typedef struct _errc_mob_em_bw_monitoring_info_struct
+{
+    kal_uint32  large_bw_cell_stayed_time; /*Time Unit: ms*/
+    kal_uint32  small_bw_cell_stayed_time; /*Time Unit: ms*/
+    kal_uint16  change_to_large_bw_cell_count;
+    kal_uint16  change_to_small_bw_cell_count;
+    kal_uint16  block_to_small_bw_cell_count;
+    kal_uint16  accelerate_to_large_bw_cell_count;
+}errc_mob_em_bw_monitoring_info_struct;
+
+typedef struct _em_errc_bw_monitoring_info_ind_struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum    em_info;
+    errc_mob_em_bw_monitoring_info_struct   CONN_BW_INFO;
+    errc_mob_em_bw_monitoring_info_struct   IDLE_BW_INFO;
+}em_errc_bw_monitoring_info_ind_struct;
+
+/* typedef enum
+{
+    EM_ERRC_CONN_FAIL_NONE         = 0,
+    EM_ERRC_CONN_FAIL_T300_TIMEOUT = 1,
+    EM_ERRC_CONN_FAIL_CONN_REJECT  = 2,
+    EM_ERRC_CONN_FAIL_EMM_REL      = 3
+    
+}em_errc_conn_fail_cause_enum;  */ /* Add if asked by Customer */
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+ 
+    //em_errc_conn_fail_cause_enum fail_cause;  /* Add if asked by Customer */
+    kal_uint32 conn_failure_count;
+} em_errc_connectfail_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint32 rrc_connect_time;
+} em_errc_connecttime_info_ind_struct;
+
+typedef enum 
+{ 
+    EM_ERRC_TRIG_REL_FAIL_A2_SENT_FAIL            = 0,          /*trigger release A2 MR send fail*/
+    EM_ERRC_TRIG_REL_FAIL_NW_RECONFIG             = 1,          /*trigger release A2 MR send success, but NW responds with reconfiguration msg*/   
+    EM_ERRC_TRIG_REL_SUCCESS_NW_REL               = 2,          /*trigger release A2 MR send suceess, and NW responds with conn release msg*/
+    EM_ERRC_TRIG_REL_SUCCESS_REEST_REJ            = 3,           /*MOB trigger early rel reest, and rcvd reest_rej from NW*/
+    EM_ERRC_TRIG_REL_FAIL_REEST_NO_RESPONDS       = 4,           /*MOB trigger early rel reest, but not rcvd any responds from NW, fail to sync state with NW*/
+    EM_ERRC_TRIG_REL_FAIL_REEST_SUCCESS           = 5,           /*MOB trigger early rel reest, but rcvd reest from NW, fail to enter idle state*/
+    EM_ERRC_TRIG_REL_FAIL_OTHER                   = 6            /*for other unexpected scenario, e.g. NW no responds to A2 or RLF when UE waiting NW side responds ...*/
+} em_errc_trig_rel_result_enum; 
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    em_info_enum	                            em_info;
+    
+    em_errc_trig_rel_result_enum                trigger_rel_result; 
+    EARFCN                                      earfcn; 
+    kal_uint16                                  pci;
+    kal_uint32                                  cell_id; 
+    kal_uint16                                  tac; 
+    em_errc_plmnid_struct                       plmn_id; 
+}em_errc_trig_rel_result_ind_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	em_info_enum	em_info;
+	em_sniffer_ind_type_enum	sniffer_ind_type;
+}em_errc_cel_sniffer_ind_struct;
+
+typedef enum
+{
+	/*his value is sync from ERRC-MOB for ERRC MIM_DRX_CYCLE */
+    ERRC_EM_DRX_CYCLE_INVALID = 0,
+    ERRC_EM_DRX_CYCLE_SF2 = 2,
+    ERRC_EM_DRX_CYCLE_SF5 = 5,
+    ERRC_EM_DRX_CYCLE_SF8 = 8 ,
+    ERRC_EM_DRX_CYCLE_SF10 = 10,
+    ERRC_EM_DRX_CYCLE_SF16 = 16,
+    ERRC_EM_DRX_CYCLE_SF20 = 20,
+    ERRC_EM_DRX_CYCLE_SF32 = 32,
+    ERRC_EM_DRX_CYCLE_SF40 = 40,
+    ERRC_EM_DRX_CYCLE_SF64 = 64,
+    ERRC_EM_DRX_CYCLE_SF80 = 80,
+    ERRC_EM_DRX_CYCLE_SF128 = 128,
+    ERRC_EM_DRX_CYCLE_SF160 = 160,
+
+    ERRC_EM_DRX_CYCLE_SF256 = 256,
+    ERRC_EM_DRX_CYCLE_SF320 = 320,
+    ERRC_EM_DRX_CYCLE_SF512 = 512,
+    ERRC_EM_DRX_CYCLE_SF640 = 640,
+    ERRC_EM_DRX_CYCLE_SF1024 = 1024,
+    ERRC_EM_DRX_CYCLE_SF1280 = 1280,
+    ERRC_EM_DRX_CYCLE_SF2048 = 2048,
+    ERRC_EM_DRX_CYCLE_SF2560 = 2560,
+
+    /* CHM IDC support start */
+    ERRC_EM_DRX_CYCLE_SF4    = 4,
+    ERRC_EM_DRX_CYCLE_SF60   = 60,
+    ERRC_EM_DRX_CYCLE_SF70   = 70
+    /* CHM IDC support end */	
+ }errc_em_drx_cycle_enum;
+
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    em_info_enum    em_info;
+
+    kal_uint16  tac;
+    kal_uint32  cid;
+    errc_em_drx_cycle_enum  cdrx;
+	
+    kal_uint16  data_inact_timer_exp_count;
+    kal_uint8   rrc_conn_rel_count; /* RRC release count for data inactive timer timeout: trigger_release fakeA2 & UE local_release*/
+    kal_uint8   local_rel_count; /* UE local_release count*/
+    kal_uint8   A2_trigger_rel_count; /* trigger_release fakeA2*/
+    kal_uint16  data_inact_timer_value; /*latest expired T3: Time Unit: sec (max value 999 sec)*/	
+    kal_uint16  user_inactive_time; /*T1: Time Unit: sec (max value 7200 sec)*/
+}em_errc_data_inact_timer_exp_info_ind_struct;
+
+/* MSG_ID_EM_ERRC_OOS_SEARCH_IND */
+typedef enum
+{
+    EM_ERRC_OOS_CAUSE_INVALID                    = 0,
+    EM_ERRC_OOS_CAUSE_SERVING_CELL_WEAK_SIGNAL   = 1,
+    EM_ERRC_OOS_CAUSE_MIB_SIB_FAIL               = 2,
+    EM_ERRC_OOS_CAUSE_CONNECTION_EST_REJECT      = 3,
+    EM_ERRC_OOS_CAUSE_CONNECTION_EST_T300_EXPIRY = 4,
+    EM_ERRC_OOS_CAUSE_INTRA_LTE_HO_FAIL          = 5,
+    EM_ERRC_OOS_CAUSE_INTER_RAT_HO_FAIL          = 6,
+    EM_ERRC_OOS_CAUSE_INTER_RAT_REDIRECT_FAIL    = 7,
+    EM_ERRC_OOS_CAUSE_PHY_RLF                    = 8,
+    EM_ERRC_OOS_CAUSE_MAC_ERROR                  = 9,
+    EM_ERRC_OOS_CAUSE_RLC_UL_DL_MAX_RETX         = 10,
+    EM_ERRC_OOS_CAUSE_PDCP_BUF_OVERFLOW          = 11,
+    EM_ERRC_OOS_CAUSE_RECONFIG_IE_ERROR          = 12,
+    EM_ERRC_OOS_CAUSE_INTEGRITY_CHECK_ERROR      = 13,
+}em_errc_oos_cause_type_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+	
+    em_errc_oos_cause_type_enum   oos_cause;
+}em_errc_oos_search_ind_struct;
+/********************* end of ERRC definition ****************************/
+
+#endif /* _EM_ERRC_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_esm_public_struct.h b/mcu/interface/service/em/em_esm_public_struct.h
new file mode 100644
index 0000000..3036d63
--- /dev/null
+++ b/mcu/interface/service/em/em_esm_public_struct.h
@@ -0,0 +1,290 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_esm_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_ESM_PUBLIC_STRUCT_H
+#define _EM_ESM_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+
+/********************* begin of ESM definition ****************************/
+
+typedef enum
+{
+    EM_ESM_SYSTEM_STATE_ATTACH_NONE,
+    EM_ESM_SYSTEM_STATE_ATTACH_INIT,
+    EM_ESM_SYSTEM_STATE_ATTACH_ING,
+    EM_ESM_SYSTEM_STATE_ATTACH_NORMAL,
+    EM_ESM_SYSTEM_STATE_ATTACH_NORMAL_TO_EMC,
+    EM_ESM_SYSTEM_STATE_ATTACH_EMERGENCY,
+    EM_ESM_SYSTEM_STATE_RAT_CHANGE,
+    EM_ESM_SYSTEM_STATE_RAT_2G3G,
+    EM_ESM_SYSTEM_MMDC_PS_SWITCH,
+    EM_ESM_SYSTEM_RAT_C2K
+} l4c_em_esm_system_state_enum;
+
+typedef enum
+{
+    EM_ESM_RAT_STATE_INACTIVE,
+    EM_ESM_RAT_STATE_4G,
+    EM_ESM_RAT_STATE_4G23_PENDING,
+    EM_ESM_RAT_STATE_4G23_CONTEXT_MAP,
+    EM_ESM_RAT_STATE_23G,
+    EM_ESM_RAT_STATE_23G4_PENDING,
+    EM_ESM_RAT_STATE_23G4_CONTEXT_MAP,
+    EM_ESM_RAT_STATE_4GC2K_PENDING,
+    EM_ESM_RAT_STATE_C2K4G_PENDING,
+    EM_ESM_RAT_STATE_C2K4G_ATTACHING,
+    EM_ESM_RAT_STATE_C2K
+} l4c_em_esm_rat_state_enum;
+
+typedef enum
+{
+    EM_ESM_CAUSE_NONE                          = 0x00,                     /* Cause not assigned                                   */
+    EM_ESM_OPERATOR_DETERMINED_BARRING         = 8   + EM_ESM_CAUSE_NONE,  /* Operator determined barring                          */
+    EM_ESM_INSUFFICIENT_RESOURCES              = 26  + EM_ESM_CAUSE_NONE,  /* Insufficient resources                               */
+    EM_ESM_UNKNOWN_OR_MISSING_APN              = 27  + EM_ESM_CAUSE_NONE,  /* Unknown or missing APN                               */
+    EM_ESM_UNKNOWN_PDN_TYPE                    = 28  + EM_ESM_CAUSE_NONE,  /* Unknown PDN type                                     */
+    EM_ESM_USER_AUTH_FAILED                    = 29  + EM_ESM_CAUSE_NONE,  /* User authentication failed                           */
+    EM_ESM_REQUEST_REJECTED_BY_SGW_OR_PDNGW    = 30  + EM_ESM_CAUSE_NONE,  /* Request rejected by Serving GW or PDN GW             */
+    EM_ESM_REQUEST_REJECTED_UNSPECIFIED        = 31  + EM_ESM_CAUSE_NONE,  /* Request rejected unspecified                         */
+    EM_ESM_SERVICE_OPT_NOT_SUPPORTED           = 32  + EM_ESM_CAUSE_NONE,  /* Service option not supported                         */
+    EM_ESM_REQ_SERVICE_NOT_SUBSCRIBED          = 33  + EM_ESM_CAUSE_NONE,  /* Requested service option not subscribed              */
+    EM_ESM_SERVICE_TEMP_OUT_OF_ORDER           = 34  + EM_ESM_CAUSE_NONE,  /* Service option temporarily out of order              */
+    EM_ESM_PTI_ALREADY_USED                    = 35  + EM_ESM_CAUSE_NONE,  /* PTI already in use                                   */
+    EM_ESM_REGULAR_DEACTIVATION                = 36  + EM_ESM_CAUSE_NONE,  /* Regular deactivation                                 */
+    EM_ESM_EPS_QOS_NOT_ACCEPTED                = 37  + EM_ESM_CAUSE_NONE,  /* EPS QoS not accepted                                 */
+    EM_ESM_NETWORK_FAILURE                     = 38  + EM_ESM_CAUSE_NONE,  /* Network failure                                      */
+    EM_ESM_REACTIVATION_REQUESTED              = 39  + EM_ESM_CAUSE_NONE,  /* Re-activation requitred                              */
+    EM_ESM_SEMANTIC_ERROR_IN_TFT               = 41  + EM_ESM_CAUSE_NONE,  /* Semantic error in the TFT operation                  */
+    EM_ESM_SYNTACTIC_ERROR_IN_TFT              = 42  + EM_ESM_CAUSE_NONE,  /* Syntactical error in the TFT operation               */
+    EM_ESM_INVALID_EPS_BEARER_IDENTITY         = 43  + EM_ESM_CAUSE_NONE,  /* Invalid EPS bearer identity                          */
+    EM_ESM_SEMANTIC_ERROR_IN_PACKET_FILTERS    = 44  + EM_ESM_CAUSE_NONE,  /* Semantic errors in packet filter(s)                  */
+    EM_ESM_SYNTACTIC_ERROR_IN_PACKET_FILTERS   = 45  + EM_ESM_CAUSE_NONE,  /* Syntactical errors in packet filter(s)               */
+    EM_ESM_EPSB_CTXT_WITHOUT_TFT_ACTIVATED     = 46  + EM_ESM_CAUSE_NONE,  /* EPS bearer context without TFT already activated     */
+    EM_ESM_PTI_MISMATCH                        = 47  + EM_ESM_CAUSE_NONE,  /* PTI mismatch                                         */
+    EM_ESM_LAST_PDN_DISC_NOT_ALLOWED           = 49  + EM_ESM_CAUSE_NONE,  /* Last PDN disconnection not allowed                   */
+    EM_ESM_PDN_TYPE_IPV4_ONLY_ALLOWED          = 50  + EM_ESM_CAUSE_NONE,  /* PDN type IPv4 only allowed                           */
+    EM_ESM_PDN_TYPE_IPV6_ONLY_ALLOWED          = 51  + EM_ESM_CAUSE_NONE,  /* PDN type IPv6 only allowed                           */
+    EM_ESM_SINGLE_ADDRESS_ONLY_ALLOWED         = 52  + EM_ESM_CAUSE_NONE,  /* Single address bearers only allowed                  */
+    EM_ESM_ESM_INFORMATION_NOT_RECEIVED        = 53  + EM_ESM_CAUSE_NONE,  /* ESM information not received                         */
+    EM_ESM_PDN_CONNENCTION_NOT_EXIST           = 54  + EM_ESM_CAUSE_NONE,  /* PDN connection does not exist                        */
+    EM_ESM_MULTIPLE_PDN_APN_NOT_ALLOWED        = 55  + EM_ESM_CAUSE_NONE,  /* Multiple PDN connections for a given APN not allowed */
+    EM_ESM_COLLISION_WITH_NW_INIT_REQUEST      = 56  + EM_ESM_CAUSE_NONE,  /* Collision with network initiated request             */
+    EM_ESM_UNSUPPORTED_QCI_VALUE               = 59  + EM_ESM_CAUSE_NONE,  /* Unsupported QCI value                                */
+    EM_ESM_MAXIMUM_NUM_OF_EPS_BEARERS_REACHED  = 65  + EM_ESM_CAUSE_NONE,  /* Maximum number of EPS bearers reached                */
+    EM_ESM_REQUESTED_APN_NOT_SUPPORTED_IN_CURRENT_RAT_AND_PLMN_COMBINATION = 66  + EM_ESM_CAUSE_NONE,  /* Requested APN not supported in current RAT and PLMN combination */
+    EM_ESM_INVALID_PTI_VALUE                   = 81  + EM_ESM_CAUSE_NONE,  /* Invalid PTI value                                    */
+    EM_ESM_SEMANTIC_INCORRECT_MSG              = 95  + EM_ESM_CAUSE_NONE,  /* Semantically incorrect message                       */
+    EM_ESM_INVALID_MANDATORY_IE                = 96  + EM_ESM_CAUSE_NONE,  /* Invalid mandatory information                        */
+    EM_ESM_MSG_TYPE_NON_EXISTENT               = 97  + EM_ESM_CAUSE_NONE,  /* Message type non-existent or not implemented         */
+    EM_ESM_MSG_TYPE_NOT_COMPATIBLE_STATE       = 98  + EM_ESM_CAUSE_NONE,  /* Message type not compatible with protocol state      */
+    EM_ESM_IE_NON_EXISTENT_NOT_IMPLEMENTED     = 99  + EM_ESM_CAUSE_NONE,  /* Information element non-existent or not implemented  */
+    EM_ESM_CONDITIONAL_IE_ERROR                = 100 + EM_ESM_CAUSE_NONE,  /* Conditional IE error                                 */
+    EM_ESM_MSG_NOT_COMPATIBLE_STATE            = 101 + EM_ESM_CAUSE_NONE,  /* Message not compatible with the protocol state       */
+    EM_ESM_PROTOCOL_ERROR_UNSPECIFIED          = 111 + EM_ESM_CAUSE_NONE,  /* Protocol error unspecified                           */
+    EM_ESM_APN_RESTRICT_VALUE_INCOMPATIBLE     = 112 + EM_ESM_CAUSE_NONE,  /* APN restriction value incompatible with active EPS bearer context */
+} l4c_em_esm_cause_enum;
+
+typedef enum
+{
+    EM_ESM_STATE_DISCONNECTED   = 0,
+    EM_ESM_STATE_CONNECTING     = 1,
+    EM_ESM_STATE_CONNECTED      = 2,
+} l4c_em_esm_state_enum;
+
+// For CMCC NW KPI event report
+typedef struct
+{
+	kal_uint8							ebi;
+	kal_bool						    em_esm_activate_default_eps_bearer_context_request_received;
+	kal_bool						    em_esm_activate_default_eps_bearer_context_accept_sent;
+	kal_bool							em_esm_activate_default_eps_bearer_context_reject_sent;
+	l4c_em_esm_cause_enum				reject_cause;
+} l4c_em_esm_activate_eps_bearer_context_report_struct;
+
+typedef struct
+{
+    l4c_em_esm_system_state_enum    em_esm_sys_state;
+    l4c_em_esm_rat_state_enum       em_esm_rat_state;
+
+    kal_uint8                       em_esm_active_pt_num;
+    kal_uint8                       em_esm_active_epsb_num;
+    kal_uint8                       em_esm_active_drb_num;
+
+    l4c_em_esm_cause_enum           em_esm_cause;
+    l4c_em_esm_state_enum           em_esm_state;
+
+	// For CMCC NW KPI event report
+	l4c_em_esm_activate_eps_bearer_context_report_struct em_esm_activate_eps_bearer_context_report;
+} l4c_em_esm_status_struct;
+
+typedef enum
+{
+    EM_ESM_PT_REQ_REASON_NULL,
+    EM_ESM_PT_REQ_REASON_REGISTER,
+    EM_ESM_PT_REQ_REASON_ADD_PDN_CONN,
+    EM_ESM_PT_REQ_REASON_ALLOC_BEARER_RSC,
+    EM_ESM_PT_REQ_REASON_MOD_BEARER_RSC,
+    EM_ESM_PT_REQ_REASON_DEACT_DED_BEARER,
+    EM_ESM_PT_REQ_REASON_RMV_PDN_CONN
+} l4c_em_esm_pt_req_reason_enum;
+
+typedef enum
+{
+    EM_ESM_PT_STATE_TERM,
+    EM_ESM_PT_STATE_INACTIVE,
+    EM_ESM_PT_STATE_WAIT_MM_RES,
+    EM_ESM_PT_STATE_PENDING,
+    EM_ESM_PT_STATE_WAIT_RESEND,
+    EM_ESM_PT_STATE_COMPLETE,
+    EM_ESM_PT_STATE_RESERVED,
+    EM_ESM_PT_STATE_WAIT_TERM
+} l4c_em_esm_pt_state_enum;
+
+typedef struct
+{
+    kal_bool                        is_active;
+    kal_uint8                       pti;
+
+    l4c_em_esm_pt_req_reason_enum   pt_req_reason;
+    l4c_em_esm_pt_state_enum        pt_state;
+
+    kal_uint8                       cid;
+    kal_uint8                       ebi;
+} l4c_em_esm_pt_struct;
+
+typedef enum
+{
+    EM_ESM_EPSBC_TYPE_INVALID,
+    EM_ESM_EPSBC_TYPE_DEFAULT_EPSB,
+    EM_ESM_EPSBC_TYPE_DEDICATED_EPSB
+} l4c_em_esm_epsbc_bearer_type_enum;
+
+#define EM_MAX_APN_LEN  100
+
+typedef struct
+{
+    kal_uint8   length;
+    kal_uint8   data[EM_MAX_APN_LEN];
+} em_apn_struct;
+
+typedef struct
+{
+    kal_bool                            is_active;
+    kal_uint8                           ebi;
+    l4c_em_esm_epsbc_bearer_type_enum   bearer_type;
+    kal_bool                            is_emergency_bearer;
+    nas_priority_config_enum            nas_priority_config;   // __MTC_SUPPORT__
+    eab_override_config_enum            eab_override_config;   // __MTC_SUPPORT__
+
+    kal_uint8                           linked_ebi;
+    kal_uint8                           qci;
+
+    ip_addr_struct                      ip_addr;
+    em_apn_struct                       apn;
+
+    kal_uint8                           pkt_flow_id;
+    kal_uint32                          qos_mbr_ul;             /* kbps */
+    kal_uint32                          qos_mbr_dl;             /* kbps */
+    kal_uint32                          qos_gbr_ul;             /* kbps */
+    kal_uint32                          qos_gbr_dl;             /* kbps */
+} l4c_em_esm_epsbc_struct;
+
+#define EM_L4C_ESM_MAX_PT_NUM           10
+#define EM_L4C_ESM_MAX_EPSB_NUM         11
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                        em_info;
+
+    l4c_em_esm_status_struct            esm_status;
+    l4c_em_esm_pt_struct                esm_pt[EM_L4C_ESM_MAX_PT_NUM];
+    l4c_em_esm_epsbc_struct             esm_epsbc[EM_L4C_ESM_MAX_EPSB_NUM];
+} em_esm_l4c_esm_info_ind_struct;
+
+/********************* end of ESM definition ****************************/
+
+
+#endif /* _EM_ESM_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_gas_public_struct.h b/mcu/interface/service/em/em_gas_public_struct.h
new file mode 100644
index 0000000..1a32ea9
--- /dev/null
+++ b/mcu/interface/service/em/em_gas_public_struct.h
@@ -0,0 +1,1324 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_gas_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_GAS_PUBLIC_STRUCT_H
+#define _EM_GAS_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+#include "em_as_common_public_struct.h"
+#include "em_nwsel_common_public_struct.h"
+
+
+
+/* RR structure */
+
+
+
+typedef struct
+{
+    kal_uint8   crh;   //CELL-RESELECT-HYSTERESIS
+    kal_uint8   ms_txpwr;   //  maximum TX power level an MS may use when accessing on a CCH
+    kal_uint8   rxlev_access_min;   //  minimum received signal level at the MS for which it is permitted to access the system
+    kal_uint8   acs;   
+    kal_uint8   neci; 
+} rr_em_cell_select_para_info_struct;
+
+typedef struct
+{
+    kal_uint8   pwrc;
+    kal_uint8   dtx_ind;   
+    kal_uint8   radioLinkTimeout;
+} rr_em_bcch_cell_options_para_info_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rr_em_cell_select_para_info_struct rr_em_cell_select_para_info;
+	rr_em_bcch_cell_options_para_info_struct rr_em_bcch_cell_options_para_info;
+} em_rrm_cell_select_para_info_ind_struct;
+
+typedef struct
+{
+    kal_uint8   channel_type;   //  channel type
+    kal_uint8   tn;   //    timeslot number
+    kal_uint8   tsc;   //   training sequence code
+    kal_uint8   hopping_flag;   //  hopping or not
+    kal_uint8   maio;   //  MAIO value
+    kal_uint8   hsn;   //   HSN value
+    kal_uint8   num_of_carriers;   //   number of carriers in the BA list(in the non-hopping case, this shall be set to 1)
+    kal_uint16  arfcn[64];   // ARFCN value in the MA
+    kal_bool     is_BCCH_arfcn_valid; /*the BCCH_arfcn is only valid
+                                  when receives H.O cmd in DEDI-state*/
+    kal_uint16 BCCH_arfcn;   // Target_BCCH carrier
+
+    /*ZY:2006-08-15 add cipher algo for EM */
+    kal_uint8   cipher_algo;  // ciphering value, OFF/A51/A52
+    kal_uint8 imeisv_digit[16]; /* To show IMEISV if sent in ciphering mode setting procedure */
+
+    kal_uint8 channel_mode;
+
+    /* brwang, 051024, [AMR engineering mode info.] */
+       #ifdef __AMR_SUPPORT__
+       kal_bool amr_valid; /* the AMR(TRUE) or not(FALSE) */
+       kal_uint8 mr_ver;   /* MultiRate speech VERsion : 001-amr verion 1*/
+       kal_bool nscb;      /* Noise Supression Control Bit : 0-noise supression is used */
+       kal_bool icmi;       /* Initial Codec Mode Indicator : 0-is defined bythe implicit rule */
+       kal_uint8 start_codec_mode; /* Start Codec Mode */
+       kal_uint8 acs;       /* AMR Codec Activate Set */
+       kal_uint8 threshold[3]; /* Threshold1/Threshold2/Threshold3 */
+       kal_uint8 hysteresis[3]; /* Hysteresis1/Hysteresis2/Hysteresis3 */
+       #endif
+} rr_em_channel_descr_info_struct;  //This shall be used in IDLE and DEDI state
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rr_em_channel_descr_info_struct rr_em_channel_descr_info;
+} em_rrm_channel_descr_info_ind_struct;
+
+typedef struct
+{
+    kal_uint8   mscr;   //  MSC release
+    kal_uint8   att;   //   att flag
+    kal_uint8   bs_ag_blks_res;   //    BS-AG-BLKS-RES
+    kal_uint8   ccch_conf;   // CCCH-CONF
+    kal_uint8   cbq2;   //  Cell Bar Qualify 2
+    kal_uint8   bs_pa_mfrms;   //   BS-PA-MFRMS
+    kal_uint8   t3212;   // T3212 timeout value
+} rr_em_ctrl_channel_descr_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rr_em_ctrl_channel_descr_info_struct rr_em_ctrl_channel_descr_info;
+} em_rrm_ctrl_channel_descr_info_ind_struct;
+
+typedef struct
+{
+    kal_uint8   max_retrans;   //   MAX Retrans value
+    kal_uint8   tx_integer;   //    TX integer
+    kal_uint8   cba;   //   cell bar for access
+    kal_uint8   re;   //    call reestablishment allowed
+    kal_uint8   acc_class[2];   //  acces control class
+    kal_bool    CB_supported;   // cell broadcast is supported
+} rr_em_rach_ctrl_para_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rr_em_rach_ctrl_para_info_struct rr_em_rach_ctrl_para_info;
+} em_rrm_rach_ctrl_para_info_ind_struct;
+
+typedef enum
+{
+    EM_MT_CALL_TYPE_MO    = 0,
+    EM_MT_CALL_TYPE_MT,
+    EM_MT_CALL_TYPE_EMERGENCY,
+    EM_MT_CALL_TYPE_INVALID
+} em_mt_call_type_enum;
+typedef struct
+{
+    kal_uint16  max_value;   // timeout value for the DSF or RLF
+    kal_int16   current_value;   // current value in the DSF or RLF calculation
+    kal_uint8   dtx_ind;    //DTX indicator
+    kal_uint8   dtx_used;   //DTX used or not
+    kal_bool    is_dsf;     //timeout value for the DSF or RLF
+    kal_uint16  serv_cell_arfcn;    // serving cell arfcn
+    em_mt_call_type_enum  call_type;    // MO/MT
+} rr_em_radio_link_counter_info_struct;  //This shall be used in IDLE and DEDI state
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rr_em_radio_link_counter_info_struct rr_em_radio_link_counter_info;
+} em_rrm_radio_link_counter_info_ind_struct;
+
+typedef struct
+{
+    kal_bool    is_valid;
+    kal_uint8   cs_report_type;
+    kal_bool    is_invalid_bsic_rp;
+    kal_uint8   cs_serv_band_rp;
+    kal_uint8   cs_multi_band_rp;
+    /* When cs_rp_threshold_850 is eqaul to 0xFF, it means never */
+    kal_uint8   cs_rp_threshold_850;
+    kal_uint8   cs_rp_offset_850;
+    /* When cs_rp_threshold_900 is eqaul to 0xFF, it means never */
+    kal_uint8   cs_rp_threshold_900;
+    kal_uint8   cs_rp_offset_900;
+    /* When cs_rp_threshold_1800 is eqaul to 0xFF, it means never */
+    kal_uint8   cs_rp_threshold_1800;
+    kal_uint8   cs_rp_offset_1800;
+    /* When cs_rp_threshold_1900 is eqaul to 0xFF, it means never */
+    kal_uint8   cs_rp_threshold_1900;
+    kal_uint8   cs_rp_offset_1900;
+} rr_em_cs_meas_param_struct;
+
+typedef struct
+{
+    kal_bool    is_valid;
+    kal_uint8   ps_report_type;
+    kal_bool    is_invalid_bsic_rp;
+    kal_uint8   ps_serv_band_rp;
+    kal_uint8   ps_multi_band_rp;
+    /* When ps_rp_threshold_850 is eqaul to 0xFF, it means never */
+    kal_uint8   ps_rp_threshold_850;
+    kal_uint8   ps_rp_offset_850;
+    /* When ps_rp_threshold_900 is eqaul to 0xFF, it means never */
+    kal_uint8   ps_rp_threshold_900;
+    kal_uint8   ps_rp_offset_900;
+    /* When ps_rp_threshold_1800 is eqaul to 0xFF, it means never */
+    kal_uint8   ps_rp_threshold_1800;
+    kal_uint8   ps_rp_offset_1800;
+    /* When ps_rp_threshold_1900 is eqaul to 0xFF, it means never */
+    kal_uint8   ps_rp_threshold_1900;
+    kal_uint8   ps_rp_offset_1900;
+} rr_em_ps_meas_param_struct;
+
+typedef struct
+{
+
+    kal_uint8            rr_state;                    /* NULL: 0, INACTIVE: 1, SELECTION: 2
+                                                       * IDLE: 3, ACCESS: 4. PKT_TRANSFER: 6
+                                                       * DEDICATED:6, RESELCTION: 7 */
+    kal_uint8            meas_mode;                   /* GSM: 0, GPRS_CCCH: 1, GPRS_PMO_CCCH: 2
+                                                       * GPRS_PCCCH = 3 */
+    kal_uint16           serving_arfcn;               /* serving cell ARFCN */
+    kal_uint8            serving_bsic;                /* serving cell BSIC */
+    kal_uint8            serving_current_band;
+    kal_uint8            serv_gprs_supported;         /* serving cell support GPRS or not */
+    kal_int16            serv_rla_in_quarter_dbm;     /* RSSI level for serving cell
+                                                       * 1. BCCH in IDLE-state
+                                                       * 2. TCH in DEDI-state
+                                                       * 3. PDTCH in TRANSFER-state */
+    kal_uint8            serv_rla_reported_value;     /* Reported value of RSSI level for serving cell */
+    kal_bool             is_serv_BCCH_rla_valid;      /* To indicate if the serv_BCCH RSSI is valid*/
+    kal_int16            serv_BCCH_rla_in_dedi_state; /*RSSI level for serving cell (BCCH) in DEDI-State */
+    kal_uint8            quality;                     /* serving cell -TCH measured quality */
+    kal_bool             gprs_pbcch_present;          /* To indicate if the current cell supports GPRS
+                                                       * PBCCH is present */
+    kal_bool             gprs_c31_c32_enable;         /* To indicate if the current mode is GPRS_PMO_MODE
+                                                       * or GPRS_PCCCH_MODE.
+                                                       */
+    kal_int16            c1_serv_cell;                /* C1 value for the serving cell */
+    kal_int16            c2_serv_cell;                /* if gprs_c31_c32_enable is false, this field is shown
+                                                       * as c2_value for serv_cell.
+                                                       * if gprs_c31_c32_enable is true, this field is shown
+                                                       * as c32_value for serv_cell */
+    kal_int16            c31_serv_cell;               /* if gprs_c31_c32_enable is false, this field is ignore
+                                                       * if gprs_c31_c32_enable is true, this field shall be
+                                                       * shown in based on report c31_value */
+    kal_uint8            num_of_carriers;             /* number of carriers in the BA list */
+    kal_uint16           nc_arfcn[32];                /* ARFCN value in the BA list (The list will be sorted
+                                                       * by the RSSI level */
+    kal_int16            rla_in_quarter_dbm[32];      /* rssi level for each carrier */
+    kal_uint8            rla_in_reported_value[32];   /* Reported value of RSSI level for each carrier. */
+    kal_uint8            nc_info_status[32];          /* Bit0 = 0: "nc_bsic","frame_offset","ebit_offset" is invalid
+                                                       * Bit0 = 1: "nc_bsic","frame_offset","ebit_offset" is valid
+                                                       * Bit1 = 0: "c1","c2" is invalid
+                                                       * Bit1 = 1: "c1","c2" is valid
+                                                       * Bit2 = 0: "gprs_status" is invalid
+                                                       * Bit2 = 1: "gprs_status" is valid */
+    kal_uint8            nc_bsic[32];                 /* neighbor cell BSIC */
+    kal_int32            frame_offset[32];            /* frame offset for each carrier */
+    kal_int32            ebit_offset[32];             /* ebit offset for each carrier */
+    kal_int16            c1[32];                      /* C1 value for the neighbor cell */
+    kal_int16            c2[32];                      /* if gprs_c31_c32_enable is false, this field is shown as
+                                                       * c2_value for nbr_cell
+                                                       * if gprs_c31_c32_enable is true, this field is shown as
+                                                       * c32_value for nbr_cell */
+    kal_int16            c31[32];                     /* C31 value for the neighbor cell */
+    kal_uint8            multiband_report;            /* MULTIBAND_REPORT value */
+    kal_uint8            timing_advance;              /* Timing advance, range is 0 - 63 */
+    kal_int16            tx_power_level;
+    kal_int16            serv_rla_full_value_in_quater_dbm;
+    kal_uint8            nco;
+    kal_uint8            rxqual_sub;                  /* rx quality (sub), range is 0 - 7 */
+    kal_uint8            rxqual_full;                 /* RX quality (full), range is 0 - 7 */
+    kal_int16            using_tx_power_in_dbm;       /* DL_DTX_AND_TX_POWER */
+#ifdef __AMR_SUPPORT__
+    kal_bool             amr_info_valid;
+    kal_uint8            cmr_cmc_cmiu_cmid;
+    kal_uint8            c_i;
+    kal_uint16           icm;
+    kal_uint16           acs;
+    kal_bool             dl_dtx_used;                 /* DL_DTX_AND_TX_POWER */
+    em_amr_mode_enum cmr;
+    em_amr_mode_enum cmc;
+    em_amr_mode_enum amr_ul_mode;
+    em_amr_mode_enum amr_dl_mode;
+#endif /* __AMR_SUPPORT__ */
+#ifdef __FWP_NC_LAI_INFO__
+    kal_uint8            num_of_nc_lai;               /* how many valid LAI info in nc_lai[] array */
+    rr_em_lai_info_struct nc_lai[6];                  /* store LAI and CID for at most 6 strongest neighbor cells */
+#endif /* __FWP_NC_LAI_INFO__ */
+    rr_em_cs_meas_param_struct cs_meas_param;
+    rr_em_ps_meas_param_struct ps_meas_param;
+    /*Shin, Amazon EM, nbr cell band, cellid, barred status report*/
+    kal_uint8       nc_band[32];
+    kal_uint16      nc_cellid[32];
+    kal_bool        nc_barred[32];
+    kal_bool        band_ind;
+} rr_em_measurement_report_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rr_em_measurement_report_info_struct rr_em_measurement_report_info;
+} em_rrm_measurement_report_info_ind_struct;
+
+/*ZY : 2007/07/25 : Add for Cell allocation list*/
+typedef struct
+{
+        kal_uint8   valid;
+        kal_uint8   number_of_channels;
+        kal_uint16 arfcn_list[64];
+} rr_em_ca_list_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rr_em_ca_list_info_struct rr_em_ca_list_info;
+} em_rrm_ca_list_info_ind_struct;
+
+typedef struct
+{
+    kal_uint8   msg_type;   /*receives msg type from network in Dedi-State
+                              0: Assignment Command
+                              1: Channel Release
+                              2: Additional Assignment
+                              3: Classmark Enquiry
+                              4: Ciphering Mode Command
+                              5: Configure Change Command
+                              6: Handover Command
+                              7: Frequency Redefinition
+                              8: Channel Mode Modify
+                              9: Cell Selection Indicator*/
+
+
+   kal_uint8 rr_cause;
+
+} rr_em_control_msg_info_struct;
+
+/* Katie 2013027: em revise */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rr_em_control_msg_info_struct rr_em_control_msg_info;
+
+} em_mac_control_msg_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rr_em_control_msg_info_struct rr_em_control_msg_info;
+} em_rrm_control_msg_info_ind_struct;
+
+/*Byron: 2006/08/06: Add for SI2q information*/
+typedef struct
+{
+    kal_bool    present;
+    kal_uint8   no_of_instance;
+    kal_bool    emr_report;
+    kal_bool    pemr_report;
+    kal_bool    umts_parameter_exist;
+} rr_em_si2q_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rr_em_si2q_info_struct rr_em_si2q_info;
+} em_rrm_si2q_info_ind_struct;
+
+/*Byron: 2006/08/06: Add for measurement information*/
+typedef struct
+{
+    kal_bool    present;
+    kal_uint8   no_of_instance;
+    kal_bool    emr_report;
+    kal_bool    umts_parameter_exist;
+} rr_em_mi_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rr_em_mi_info_struct rr_em_mi_info;
+} em_rrm_mi_info_ind_struct;
+
+/* James 2012/8/15: move up gprs info for EM UT */
+typedef struct
+{
+    kal_uint32 t3192;         // in msec
+    kal_uint32 t3168;         // in msec
+    kal_uint8  rp;            // radio priority
+    kal_uint8  gprs_support;  // GPRS channel request support(0 not support, 1 support, 2 support but not decode)
+    kal_uint8  egprs_support; // EGPRS channel request support(0 not support, 1 support)
+    kal_uint8  sgsn_r;        // PS domain is R99 or R98(0 R98, 1 R99)
+    kal_uint8  pfc_support;   // packet flow context support(0 not support, 1 support)
+    kal_uint8  epcr_support;  // EGPRS channel request support(0 not support, 1 support)
+    kal_uint8  bep_period;    // BEP period
+}rr_em_gprs_general_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rr_em_gprs_general_info_struct rr_em_gprs_general_info;
+} em_rrm_gprs_general_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rr_em_lai_info_struct rr_em_lai_info;
+} em_rrm_lai_info_ind_struct;
+typedef struct
+{
+    kal_bool    is_greater_than_85db;   /*serving cell power is greater than 85dbm lasts for 5s*/
+}rr_em_serv_cell_power_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rr_em_serv_cell_power_struct rr_em_serv_cell_power_status;
+}em_rrm_serv_cell_power_status_ind_struct;
+
+typedef struct
+{
+    kal_bool with_4g_neighbor;  /*SI contains 4g neigbor cell or not*/
+}rr_em_4g_neigbor_cell_status_sturct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rr_em_4g_neigbor_cell_status_sturct rr_em_4g_neighbor_status;
+}em_rrm_ir_4g_neighbor_cell_status_ind_struct;
+
+typedef struct
+{
+    kal_bool with_3g_neighbor;  /*SI contains 3g neigbor cell or not*/
+}rr_em_3g_neigbor_cell_status_sturct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rr_em_3g_neigbor_cell_status_sturct rr_em_3g_neighbor_status;
+}em_rrm_ir_3g_neighbor_cell_status_ind_struct;
+
+typedef enum
+{
+    EM_RRM_SUCCESS_RATE_KPI_IRAT_2G3_CR,
+    EM_RRM_SUCCESS_RATE_KPI_IRAT_2G3_CCO,
+    EM_RRM_SUCCESS_RATE_KPI_IRAT_2G3_HO,
+    EM_RRM_SUCCESS_RATE_KPI_IRAT_2G3_REDIR,
+    EM_RRM_SUCCESS_RATE_KPI_INTRA_2G_CR,
+    EM_RRM_SUCCESS_RATE_KPI_IRAT_2GL_CR,
+    EM_RRM_SUCCESS_RATE_KPI_IRAT_2GL_CCO,
+    EM_RRM_SUCCESS_RATE_KPI_IRAT_2GL_REDIR,
+
+    EM_RRM_SUCCESS_RATE_KPI_NUM
+}em_rrm_success_rate_kpi_proc_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_rrm_success_rate_kpi_proc_enum proc_id;
+    em_kpi_status_enum status;
+    kal_uint32  attempt;
+    kal_uint32  success;
+}em_rrm_success_rate_kpi_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_bool   is_t3126_exp;
+    kal_uint16 serv_cell_arfcn;    // serving cell arfcn
+}em_rrm_mt_t3126_timeout_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint16 serving_arfcn;
+    kal_uint8  serving_band;
+}em_rrm_cs_rlf_info_ind_struct;
+
+
+typedef struct
+{
+    kal_uint8            rr_state;                    /* NULL: 0, INACTIVE: 1, SELECTION: 2
+                                                       * IDLE: 3, ACCESS: 4. PKT_TRANSFER: 5
+                                                       * DEDICATED:6, RESELCTION: 7 */
+} rrm_em_rr_state_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rrm_em_rr_state_info_struct rrm_em_rr_state_info;
+} em_rrm_rr_state_info_ind_struct;
+
+typedef struct
+{
+    kal_uint16 arfcn;
+    kal_uint8  band;
+    /* 0 - GSM */
+    kal_uint8  rat;
+}rr_em_gas_search_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rr_em_gas_search_info_struct rr_em_gas_search_info;
+}em_rrm_gas_search_info_ind_struct;
+
+typedef struct
+{
+	kal_uint16	max_dsc_value;      /* Timeout value for the DSF */
+	kal_int16	current_dsc_value;  /* Current value in the DSF */
+	kal_uint16  serv_cell_arfcn;    /* Serving cell arfcn */
+	kal_uint8   serv_cell_band;     /* Serving cell band */
+} rr_em_downlink_signalling_counter_info_struct;
+
+/* This EM should be used in IDLE mode */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    rr_em_downlink_signalling_counter_info_struct rr_em_downlink_signalling_counter_info;
+}em_rrm_downlink_signalling_counter_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+}em_rrm_rach_fail_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+}em_rrm_n200_exp_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+}em_rrm_ho_fail_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint32 oos_counter;
+}em_rrm_oos_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   em_sniffer_ind_type_enum  sniffer_ind_type;
+} em_rrm_cell_sniffer_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+   em_as_oos_search_duration_enum  gas_oos_search_duration_status;
+} em_rrm_oos_search_duration_info_ind_struct;
+
+/**************************************************************************
+  * GSM MM - Engineer Mode
+  *
+  * Notes: Following structures are maintained by RR task
+  **************************************************************************/
+/***************************** Beging of RR MM EM Config  **************************/
+#define MAX_NR_RR_EM_IR_RESEL_STATUS 6
+#define MAX_NR_RR_EM_3G_MEAS_STATUS  6
+#define MAX_NR_RR_EM_4G_MEAS_STATUS  6
+#define MAX_NR_RR_EM_3G_MEAS_INFO    9
+#define MAX_NR_RR_EM_4G_MEAS_INFO    9
+
+#define INVALID_GSM_PRIORITY         0x2B
+#define THR_PRIO_SEARCH_ALWAYS       0x7F
+#define THR_GSM_LOW_ALWAYS           0xFF
+#define GSM_REPORT_THR_NEVER         0xFF
+
+#define INVALID_UMTS_QSRCH_C         0xFF
+#define INVALID_UMTS_MULTI_REPORT    0xFF
+#define INVALID_UMTS_FDD_QMIN_OFF    0xFF
+#define INVALID_UMTS_FDD_RSCPMIN     0x7F
+#define INVALID_UMTS_FDD_REP_THR_2   0xFF
+#define INVALID_UMTS_PRIORITY        0x2B
+#define INVALID_UMTS_THR_HIGH        0xFF
+#define INVALID_UMTS_THR_LOW         0xFF
+#define INVALID_UMTS_QRX_LEVMIN      0x7F
+#define UMTS_REPORT_THR_NEVER        0xFF
+#define UMTS_FDD_QOFFSET_ALWYAS      0x7F
+
+#define INVALID_LTE_QSRCH_C          0xFF
+#define INVALID_LTE_QSRCH_C_INIT     0xFF
+#define INVALID_LTE_MULTI_REPORT     0xFF
+#define INVALID_LTE_PRIORITY         0x2B
+#define INVALID_LTE_THR_HIGH         0xFF
+#define INVALID_LTE_THR_LOW          0xFF
+#define INVALID_LTE_QRX_LEVMIN       0x7FFF
+#define INVALID_LTE_THR_HIGH_Q       0x7F
+#define INVALID_LTE_THR_LOW_Q        0x7F
+#define INVALID_LTE_QMIN             0x7F
+#define INVALID_LTE_QQUALMIN         0x7F
+#define INVALID_LTE_RSRPMIN          0x7FFF
+#define LTE_REPORT_THR_NEVER         0xFF
+
+typedef enum {
+    RRM_EM_IR_MEAS_STOPPED                = 0x00,
+    RRM_EM_IR_FIXED_MEAS_START            = 0x01,
+    RRM_EM_IR_70S_PRIO_MEAS_START         = 0x02,
+    RRM_EM_IR_70S_PRIO_N_FIXED_MEAS_STRAT = 0x03,
+    RRM_EM_IR_25S_PRIO_MEAS_START         = 0x04,
+    RRM_EM_IR_25S_PRIO_N_FIXED_MEAS_START = 0x05
+} rrm_em_ir_meas_status_enum;
+
+typedef struct
+{
+    kal_bool          is_valid;
+    /* When geran_priority is equal to 0x2B, it means geran_priority is invalid. */
+    kal_int8          geran_priority;
+    /* When thresh_priority_search is eqaul to 0x7F, it measns always. */
+    kal_int8          thresh_priority_search;
+    /* When thresh_GSM_low is equal to 0xFF, it means always. */
+    kal_uint8         thresh_GSM_low;
+    /* When h_prio is equal to 0, it means h_prio is disabled. */
+    kal_uint8         h_prio;
+    kal_uint8         t_reselection;
+}rrm_em_ir_2g_parameter_struct;
+
+typedef struct
+{
+    kal_bool          is_valid;
+    /* The value of ir_source is the enumeration value
+     * SRC_INVALID = 0,
+     * SRC_SI      = 1,
+     * SRC_MI      = 2,
+     * SRC_PSI     = 3,
+     * SRC_PMO     = 4
+     */
+    kal_uint8         ir_source;
+    kal_uint8         qsearch_i;
+    /* When qsearch_c is eqaul to 0xFF, qsearch_c is invalid */
+    kal_uint8         qsearch_c;
+    kal_uint8         qsearch_c_initial;
+    kal_uint8         qsearch_p;
+    /* When fdd_qoffset is eqaul to 0x7F, it measns always. */
+    kal_int8          fdd_qoffset;
+    kal_int8          fdd_qmin;
+    /* When fdd_qmin_off is equal to 0xFF, fdd_qmin_off is invalid */
+    kal_uint8         fdd_qmin_off;
+    /* When fdd_rscpmin is equal to 0x7F, fdd_rscpmin is invalid */
+    kal_int8          fdd_rscpmin;
+    kal_uint8         fdd_rep_quant;
+    /* When fdd_multirat_reporting is eqaul to 0xFF, fdd_multirat_reporting is invalid */
+    kal_uint8         fdd_multirat_reporting;
+    kal_uint8         fdd_reporting_offset;
+    /* When fdd_reporting_threshold is eqaul to 0xFF, it means never */
+    kal_uint8         fdd_reporting_threshold;
+    /* When fdd__reporting_threshold is equal to 0xFF, fdd_reporting_threshold_2 is invalid */
+    kal_uint8         fdd_reporting_threshold_2;
+    kal_uint8         fdd_gprs_rep_quant;
+    /* When fdd_gprs_multirat_reporting is eqaul to 0xFF, fdd_gprs_multirat_reporting is invalid */
+    kal_uint8         fdd_gprs_multirat_reporting;
+    kal_uint8         fdd_gprs_reporting_offset;
+    /* When fdd_gprs_reporting_threshold is eqaul to 0xFF, it means never */
+    kal_uint8         fdd_gprs_reporting_threshold;
+    /* When fdd_gprs_reporting_threshold is equal to 0xFF, fdd_gprs_reporting_threshold_2 is invalid */
+    kal_uint8         fdd_gprs_reporting_threshold_2;
+}FDD_rrm_em_ir_3g_parameter_struct;
+
+typedef struct
+{
+    kal_bool          is_valid;
+    /* The value of ir_source is the enumeration value
+     * SRC_INVALID = 0,
+     * SRC_SI      = 1,
+     * SRC_MI      = 2,
+     * SRC_PSI     = 3,
+     * SRC_PMO     = 4
+     */
+    kal_uint8         ir_source;
+    kal_uint8         qsearch_i;
+    /* When qsearch_c is eqaul to 0xFF, qsearch_c is invalid */
+    kal_uint8         qsearch_c;
+    kal_uint8         qsearch_c_initial;
+    kal_uint8         qsearch_p;
+    kal_int8          tdd_qoffset;
+    /* When tdd_multirat_reporting is eqaul to 0xFF, tdd_multirat_reporting is invalid */
+    kal_uint8         tdd_multirat_reporting;
+    kal_uint8         tdd_reporting_offset;
+    /* When tdd_reporting_threshold is eqaul to 0xFF, it means never */
+    kal_uint8         tdd_reporting_threshold;
+    /* When tdd_gprs_multirat_reporting is eqaul to 0xFF, tdd_gprs_multirat_reporting is invalid */
+    kal_uint8         tdd_gprs_multirat_reporting;
+    kal_uint8         tdd_gprs_reporting_offset;
+    /* When tdd_gprs_reporting_threshold is eqaul to 0xFF, it means never */
+    kal_uint8         tdd_gprs_reporting_threshold;
+}TDD_rrm_em_ir_3g_parameter_struct;
+
+
+typedef struct
+{
+    kal_bool          is_valid;
+    /* The value of ir_source is the enumeration value
+     * LTE_PARA_INVALID = 0,
+     * LTE_PARA_FROM_SI2Q = 1,
+     * LTE_PARA_FROM_MI = 2,
+     * LTE_PARA_FROM_PMO = 3
+     */
+    kal_uint8         ir_source;
+    /* When qsearch_c_eutran_initial is eqaul to 0xFF, qsearch_c_eutran_initial is invalid */
+    kal_uint8         qsearch_c_eutran_initial;
+    /* When qsearch_c_eutran is eqaul to 0xFF, qsearch_c_eutran is invalid */
+    kal_uint8         qsearch_c_eutran;
+    kal_uint8         qsearch_p_eutran;
+    kal_uint8         eutran_rep_quant;
+    /* When eutran_multirat_reporting is eqaul to 0xFF, eutran_multirat_reporting is invalid */
+    kal_uint8         eutran_multirat_reporting;
+    /* When eutran_6bit_fdd_report_threshold is eqaul to 0xFF, it means never */
+    kal_uint8         eutran_6bit_fdd_report_threshold;
+    kal_uint8         eutran_6bit_fdd_report_threshold_2;
+    kal_uint8         eutran_6bit_fdd_report_offset;
+    /* When eutran_6bit_tdd_report_threshold is eqaul to 0xFF, it means never */
+    kal_uint8         eutran_6bit_tdd_report_threshold;
+    kal_uint8         eutran_6bit_tdd_report_threshold_2;
+    kal_uint8         eutran_6bit_tdd_report_offset;
+    kal_int16         eutran_3bit_fdd_meas_report_offset;
+    kal_uint8         eutran_3bit_fdd_report_threshold_2;
+    kal_uint8         eutran_3bit_fdd_report_offset;
+    kal_int16         eutran_3bit_tdd_meas_report_offset;
+    kal_uint8         eutran_3bit_tdd_report_threshold_2;
+    kal_uint8         eutran_3bit_tdd_report_offset;
+    kal_uint8         eutran_3bit_report_granularity;
+    kal_uint8         eutran_gprs_rep_quant;
+    /* When eutran_gprs_multirat_reporting is eqaul to 0xFF, eutran_gprs_multirat_reporting is invalid */
+    kal_uint8         eutran_gprs_multirat_reporting;
+    /* When eutran_gprs_6bit_fdd_report_threshold is eqaul to 0xFF, it means never */
+    kal_uint8         eutran_gprs_6bit_fdd_report_threshold;
+    kal_uint8         eutran_gprs_6bit_fdd_report_threshold_2;
+    kal_uint8         eutran_gprs_6bit_fdd_report_offset;
+    /* When eutran_gprs_6bit_tdd_report_threshold is eqaul to 0xFF, it means never */
+    kal_uint8         eutran_gprs_6bit_tdd_report_threshold;
+    kal_uint8         eutran_gprs_6bit_tdd_report_threshold_2;
+    kal_uint8         eutran_gprs_6bit_tdd_report_offset;
+} rrm_em_ir_4g_parameter_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rrm_em_ir_2g_parameter_struct ir_2g_parameter;
+    FDD_rrm_em_ir_3g_parameter_struct ir_3g_parameter;
+    rrm_em_ir_4g_parameter_struct ir_4g_parameter;
+} fdd_em_rrm_ir_parameter_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rrm_em_ir_2g_parameter_struct ir_2g_parameter;
+    TDD_rrm_em_ir_3g_parameter_struct ir_3g_parameter;
+    rrm_em_ir_4g_parameter_struct ir_4g_parameter;
+} tdd_em_rrm_ir_parameter_status_ind_struct;
+
+typedef struct
+{
+    kal_bool         is_valid;
+    /* The value of rat is the enumeration value
+     * UMTS = 0x01,
+     * LTE = 0x02
+     */
+    kal_uint8        rat;
+    /* The value of type is the enumeration value
+     * NORMAL = 0x00,
+     * CSG = 0x01,
+     * HYBRID = 0x02
+     */
+    kal_uint8        type;
+    /*freq changed to uint32, instead of EARFCN, since it will be used for (u/e)arfcn*/
+    kal_uint32       freq;
+    kal_uint16       phy_id;
+    kal_int16        strength;
+    kal_int16        quality;
+    kal_uint32       hit_duration;
+    /* The value of hit_criteria is the combination value.
+     * IR_RESEL_NO_CRITERIA_HIT = 0x00,
+     * IR_RESEL_RANKING_CRITERIA_HIT = 0x01,
+     * IR_RESEL_WCDMA_PREFER_HIT = 0x02,
+     * IR_RESEL_HIGH_PRIORITY_HIT = 0x10,
+     * IR_RESEL_LOW_PRIORITY_HIT  = 0x20,
+     * IR_RESEL_ANY_PRIORITY_HIT  = 0x40
+     */
+    kal_uint8        hit_critiria;
+}rrm_em_ir_reselect_status_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rrm_em_ir_reselect_status_struct ir_reselect_status[MAX_NR_RR_EM_IR_RESEL_STATUS];
+} em_rrm_ir_reselect_status_ind_struct;
+
+typedef struct
+{
+    kal_bool          is_valid;
+    /* The value of cell_type is the enumeration value
+     * NORMAL = 0x00,
+     * CSG = 0x01,
+     * HYBRID = 0x02
+     */
+    kal_uint8         cell_type;
+    kal_uint16        uarfcn;
+    kal_uint16        phy_id;
+    kal_int16         strength;
+    kal_int16         quailty;
+    kal_uint8         rep_value;
+    kal_uint8         non_rep_value;
+    /* The value of fail_type is the enumeration value:
+     * IR_INITIAL_VALUE   = 0x00,
+     * NEVER_ALLOWED      = 0x01,
+     * PLMN_ID_MISMATCHED = 0x02,
+     * LA_NOT_ALLOWED     = 0x03,
+     * CELL_BARRED        = 0x04,
+     * TEMP_FAILURE       = 0x05,
+     * CRITERIA3_NOT_SATISFIED = 0x06,
+     * TA_NOT_ALLOWED     = 0x07,
+     * CELL_BARRED_FREQ   = 0x08,
+     * CELL_BARRED_RESV_OPERATOR = 0x09,
+     * CELL_BARRED_RESV_OPERATOR_FREQ = 0x0A,
+     * CSG_NOT_ALLOWED = 0x0B
+     */
+    kal_uint8         fail_type;
+}rrm_em_ir_3g_neighbor_meas_status_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                             em_info;
+    rrm_em_ir_3g_neighbor_meas_status_struct ir_3g_neighbor_meas_status[MAX_NR_RR_EM_3G_MEAS_STATUS];
+} em_rrm_ir_3g_neighbor_meas_status_ind_struct;
+
+typedef struct
+{
+   kal_bool                     is_valid;
+   kal_uint16                   uarfcn;
+   kal_bool                     is_meas_ongoing;
+   /* When Bit 7 is 1 (i.e., meas_control_utran & 0x80 == 0x80), meas_control_utran
+    * is valid. Then Bit 1 is shown whether this UARFCN should be measured.
+    */
+   kal_uint8                    meas_control_utran;
+   /* When priority is equal to 0x2B, it means priority is invalid. */
+   kal_int8                     priority;
+   /* When thr_high is equal to 0xFF, it means thr_high is invalid. */
+   kal_uint8                    thr_high;
+   /* When thr_low is equal to 0xFF, it means thr_low is invalid. */
+   kal_uint8                    thr_low;
+   /* When qrx_lev_min is equal to 0x7F, it means qrx_level_min is invalid. */
+   kal_int8                     qrx_lev_min;
+} rrm_em_ir_3g_neighbor_meas_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                           em_info;
+    kal_uint8                              rrm_state;
+    /* The value of ir_resel_mode is the enumeration value
+     * IR_RESEL_MODE_RANKING = 0x00,
+     * IR_RESEL_MODE_PRIORITY = 0x01,
+     */
+    kal_uint8                              ir_resel_mode;
+    rrm_em_ir_meas_status_enum             rrm_em_ir_meas_status;
+    rrm_em_ir_3g_neighbor_meas_info_struct ir_3g_neighbor_meas_info[MAX_NR_RR_EM_3G_MEAS_INFO];
+} em_rrm_ir_3g_neighbor_meas_info_ind_struct;
+
+typedef struct
+{
+    kal_bool          is_valid;
+    /* The value of cell_type is the enumeration value
+     * NORMAL = 0x00,
+     * CSG = 0x01,
+     * HYBRID = 0x02
+     */
+    kal_uint8         cell_type;
+    EARFCN            earfcn;
+    kal_uint16        pci;
+    /* The value of band is the enumeration value
+     * INVALID = 0x00,
+     * FDD = 0x01,
+     * TDD = 0x02
+     */
+    kal_uint8         band_type;
+    kal_int16         rsrp;
+    kal_int16         rsrq;
+    kal_uint8         rep_value;
+    kal_uint8         non_rep_value;
+    /* The value of fail_type is the enumeration value:
+     * IR_INITIAL_VALUE   = 0x00,
+     * NEVER_ALLOWED      = 0x01,
+     * PLMN_ID_MISMATCHED = 0x02,
+     * LA_NOT_ALLOWED     = 0x03,
+     * CELL_BARRED        = 0x04,
+     * TEMP_FAILURE       = 0x05,
+     * CRITERIA3_NOT_SATISFIED = 0x06,
+     * TA_NOT_ALLOWED     = 0x07,
+     * CELL_BARRED_FREQ   = 0x08,
+     * CELL_BARRED_RESV_OPERATOR = 0x09,
+     * CELL_BARRED_RESV_OPERATOR_FREQ = 0x0A,
+     * CSG_NOT_ALLOWED = 0x0B
+     */
+    kal_uint8         fail_type;
+}rrm_em_ir_4g_neighbor_meas_status_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rrm_em_ir_4g_neighbor_meas_status_struct ir_4g_neighbor_meas_status[MAX_NR_RR_EM_4G_MEAS_STATUS];
+} em_rrm_ir_4g_neighbor_meas_status_ind_struct;
+
+typedef struct
+{
+   kal_bool                     is_valid;
+   EARFCN                       earfcn;
+   kal_bool                     is_meas_ongoing;
+   /* When Bit 7 is 1 (i.e., meas_control_eutran & 0x80 == 0x80), meas_control_eutran
+    * is valid. Then Bit 1 is shown whether this EARFCN should be measured.
+    */
+   kal_uint8                    meas_control_eutran;
+   /* When priority is equal to 0x2B, it means priority is invalid. */
+   kal_int8                     priority;
+   /* When thr_high is equal to 0xFF, it means thr_high is invalid. */
+   kal_uint8                    thr_high;
+   /* When thr_low is equal to 0xFF, it means thr_low is invalid. */
+   kal_uint8                    thr_low;
+   /* When qrx_lev_min is equal to 0x7FFF, it means qrx_level_min is invalid. */
+   kal_int16                    qrx_lev_min;
+   /* The value of fail_type is the enumeration value:
+    * CHECK_INVALID = 0x00, CHECK_RSRQ = 0x01, CHECK_RSRP = 0x02.
+    * (1)CHECK_INVALID: qmin, thr_high_q, thr_low_q, qqualmin, and rsrpmin are all invalid.
+    * (2)CHECK_RSRQ: qmin is valid,
+    *                thr_high_q, thr_low_q, qqualmin, and rsrpmin are all invalid
+    * (3)CHECK_RSRP: qmin is invalid,
+    *                thr_high_q, thr_low_q, qqualmin, and rsrpmin are all valid
+    */
+   kal_uint8                    lte_suitability_check;
+   /* When qmin is equal to 0x7F, it means qmin is invalid. */
+   kal_int8                     qmin;
+   /* When thr_high_q is equal to 0xFF, it thr_high_q qmin is invalid. */
+   kal_uint8                    thr_high_q;
+   /* When thr_low_q is equal to 0xFF, it thr_low_q qmin is invalid. */
+   kal_uint8                    thr_low_q;
+   /* When qqualmin is equal to 0x7F, it means qqualmin is invalid. */
+   kal_int8                     qqualmin;
+   /* When rsrpmin is equal to 0x7FFF, it means rsrpmin is invalid. */
+   kal_int16                    rsrpmin;
+} rrm_em_ir_4g_neighbor_meas_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                           em_info;
+    kal_uint8                              rrm_state;
+    /* The value of ir_resel_mode is the enumeration value
+     * IR_RESEL_MODE_RANKING = 0x00,
+     * IR_RESEL_MODE_PRIORITY = 0x01,
+     */
+    kal_uint8                              ir_resel_mode;
+    rrm_em_ir_meas_status_enum             rrm_em_ir_meas_status;
+    rrm_em_ir_4g_neighbor_meas_info_struct ir_4g_neighbor_meas_info[MAX_NR_RR_EM_4G_MEAS_INFO];
+} em_rrm_ir_4g_neighbor_meas_info_ind_struct;
+
+/***************************** End of RR DM EM Config  ****************************/
+
+
+/* The rr_em_tbf_status_struct is updated whenever TBF is established/reallocated or released. */
+typedef struct
+{
+    kal_uint8   tbf_mode;                // GPRS or EGPRS TBF mode
+
+    /* UL TBF info */
+    kal_uint8   ul_tbf_status;           // access/active/inactive
+    kal_uint8   ul_rel_cause;            // if applicable
+    kal_uint8   ul_ts_allocation;        // timeslot allocation
+    kal_uint8   ul_rlc_mode;             // RLC ACK / UNACK mode
+    kal_uint8   ul_mac_mode;             // Dynamic allocation / Extended dynamic allocation / Fixed allocation
+    /* new created fields */
+    kal_uint16  number_rlc_octect;       // RLC requested octect/byte number
+    kal_uint8   ul_tfi;
+    kal_uint8   ul_granularity;
+    kal_uint8   ul_usf;
+    kal_uint8   ul_tai;
+    kal_uint16  ul_tqi;
+    kal_uint16  ul_window_size;          // GPRS: 64, EGPRS 64 ~1024
+
+    /* DL TBF info */
+    kal_uint8   dl_tbf_status;           // active/inactive/release pending
+    kal_uint8   dl_rel_cause;            // if applicable
+    kal_uint8   dl_ts_allocation;        // Ttimeslot allocation
+    kal_uint8   dl_rlc_mode;             // RLC ACK / UNACK mode
+    kal_uint8   dl_mac_mode;             // Dynamic allocation / Extended dynamic allocation / Fixed allocation
+    /* new created fields */
+    kal_uint8   dl_tfi;
+    kal_uint8   dl_tai;
+    kal_uint16  dl_window_size;          // GPRS: 64, EGPRS 64 ~1024
+#ifdef __EGPRS_MODE__
+    kal_uint8   dl_out_of_memory;        // EGPRS IR out of memory indication
+#endif /* __EGPRS_MODE__ */
+
+    /* Hamann 20140819 : New EM features */
+    kal_uint8   mac_mode;                // MAC_IDLE, MAC_PKT_ACCESS, MAC_UL, MAC_DL, MAC_UL_DL, MAC_PS_HO, MAC_NUM_STATES
+    kal_uint8   num_dl_ts;               // number of 1s in dl_ts_allocation
+    kal_uint8   num_ul_ts;               // number of 1s in ul_ts_allocation
+
+    /*Hamann 20150206 : EM for TBF uplink establishment (TBFULE) */
+    kal_uint32 ul_tbf_establishment_count;
+    kal_uint8  ul_tbf_establishment_cause;  // be assigned one of value in enum mac_em_ul_tbf_establishment_cause, range from 1 to 54
+    kal_uint8  ul_tbf_establishment_type;   // be assigned one of value in enum mac_em_ul_tbf_establishment_type, range from 1 to 5
+    kal_uint8  ul_tbf_establishment_status; // be assigned one of value in enum mac_em_ul_tbf_establishment_status, range from 1 to 4
+}rr_em_tbf_status_struct;
+
+
+/* Katie 2013027: em revise */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rr_em_tbf_status_struct rr_em_tbf_status;
+
+} em_mac_tbf_info_ind_struct;
+
+/* The new rr_em_blk_info_struct is updated every N (configurable?) block period during TBF.
+    N should be adjusted to suitable/smooth display rate. */
+typedef struct
+{
+    /* UL TBF info */
+    kal_uint8  ul_coding_scheme;
+    kal_uint8  ul_cv;
+    kal_uint8  ul_tlli;
+    kal_uint16 ul_bsn1;
+#ifdef __EGPRS_MODE__
+    kal_uint16 ul_bsn2;
+    kal_uint8  ul_cps;
+    kal_uint8  ul_rsb;
+    kal_uint8  ul_spb;
+#endif /* __EGPRS_MODE__ */
+
+    /* DL TBF info */
+    kal_uint8  dl_c_value_in_rx_level;    /* for both GPRS/EGPRS C value (channel quality) */
+    kal_uint8  dl_rxqual;                 /* for GPRS RX QUAL (channel quality) */
+    kal_uint8  dl_sign_var;               /* for GPRS signal variance (channel quality) */
+    kal_uint8  dl_coding_scheme;
+    kal_uint8  dl_fbi;
+    kal_uint16 dl_bsn1;
+#ifdef __EGPRS_MODE__
+    kal_uint16 dl_bsn2;
+    kal_uint8  dl_cps;
+    kal_uint8  dl_gmsk_mean_bep_lev;      /* for EGPRS GMSK mean BEP level (channel quality). valid: 0 ~ 31. invalid: 255 */
+    kal_uint8  dl_8psk_mean_bep_lev;      /* for EGPRS 8PSK mean BEP level (channel quality) . valid: 0 ~ 31. invalid: 255 */
+    kal_uint8  dl_gmsk_cv_bep_lev;        /* for EGPRS GMSK cv BEP level (channel quality). valid: 0 ~ 7. invalid: 255 */
+    kal_uint8  dl_8psk_cv_bep_lev;        /* for EGPRS 8PSK cv BEP level (channel quality) . valid: 0 ~ 7. invalid: 255 */
+    kal_uint8  dl_tn_mean_bep_lev[8];     /* for EGPRS Timeslot Number mean BEP level (channel quality). valid: 0 ~ 31. invalid: 255 */
+#endif /* __EGPRS_MODE__ */
+    kal_uint8 dl_tn_interference_lev[8]; /* for GPRS/EGPRS Timeslot Number interference (channel quality). valid: 0 ~ 15. invalid: 255 */
+
+    /* Hamann 20140819 : New EM features */
+    kal_uint32 received_blocks_in_error;         // molecular of em_block_error_rate
+    kal_uint32 total_number_of_received_blocks;  // denominator of em_block_error_rate
+    kal_uint32 em_bit_error_rate;                // Bit Error Rate
+    kal_uint32 em_block_error_rate;              // Block Error Rate
+    kal_uint32 rlc_dl_rx;                        // number of total received RLC DL blocks
+    kal_uint32 rlc_ul_tx;                        // number of total transmitted RLC UL blocks
+    kal_uint32 rlc_ul_retx;                      // number of re-transmitted RLC UL blocks
+    kal_uint32 rlc_ul_retx_rate;                 // retransmission rate of RLC UL blocks
+    kal_uint32 rlc_instant_ul_throughput;        // instant throughput (bits/s) of UL TBF
+    kal_uint32 rlc_instant_dl_throughput;        // instant throughout (bits/s) of DL TBF
+    kal_uint32 coding_scheme_hist[13];           // the same as cs_history[] of rlc_em_info_struct
+    kal_uint32 num_blks_for_cs_stats;
+    kal_uint32 rlc_average_ul_throughput;        // average throughput (bits/s) of UL TBF
+    kal_uint32 rlc_average_dl_throughput;        // average throughput (bits/s) of DL TBF
+}rr_em_blk_info_struct;
+
+/* Katie 2013027: em revise */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rr_em_blk_info_struct rr_em_blk_info;
+
+} em_mac_blk_info_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_bool     tas_enable;
+    kal_uint8    serving_band;
+    kal_uint8    gsm_antenna; /* Current TX antenna */
+    kal_uint8    gsm_other_antenna; /* Prev TX antenna */
+    kal_int16    gsm_current_antenna_rxLevel; /* Current Tx antenna power */
+    kal_int16    gsm_other_antenna_rxLevel; /* Prev Tx antenna power */
+    kal_int32    gsm_current_average_snr;
+    kal_int32    gsm_other_average_snr;
+    kal_uint8    gsm_antenna_state; /* Current antenna state*/
+    kal_int16    gsm_div_antenna_rxLevel;/* Current Drx antenna power */
+    kal_int16    gsm_prev_div_antenna_rxLevel; /* Previous Drx antenna power */
+}em_gsm_tas_info_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+   kal_bool     rxd_enable;       /* by band */
+   kal_int16    serving_arfcn;
+   kal_uint8    serving_band;
+   kal_uint8    rxd_mode;        /* 0(Prx), 1(1rx de-sense), 2(N/A), 3(2Rx), 4(Drx) */
+   kal_int16    rxlev_prx;       /* dBm */
+   kal_int16    rxlev_drx;       /* dBm */
+   kal_int32    tsc_snr;
+   kal_int32    pre_snr;
+   kal_uint8    mod_type;
+}em_gsm_rxd_info_ind_struct;
+
+typedef enum
+{
+   RRM_DSF_OOS,
+   RRM_SI_READ_FAIL_OOS,
+   RRM_T3126_EXPIRY_OOS,
+   RRM_CBA_OOS,
+   RRM_C1_BELOW_0_OOS,
+   RRM_ATT_REJECT_OOS,
+   RRM_MISCELLANEOUS_OOS
+}rrm_em_oos_causes_enum;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+   rrm_em_oos_causes_enum rrm_oos_cause;
+}em_rrm_oos_search_ind_struct;
+
+typedef struct em_gsm_utas_info_ind_struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    /* Common Tab information */
+    kal_bool     utas_info_valid;
+    kal_bool     tas_enable;
+    kal_uint8    serving_band;
+    kal_uint8    gsm_antenna_state; /* Current antenna state*/
+    kal_int16    gsm_tx_antenna_rxLevel; /* Current Tx antenna power */
+    kal_int16    gsm_drx_antenna_rxLevel;/* Current Drx antenna power */
+    kal_int32    gsm_current_average_snr;
+
+    /* Detailed Tab information */
+    kal_uint8    gsm_tx_ant_index; /* Current TX antenna */
+    kal_uint8    available_ant_num; 
+    kal_uint8    gsm_available_ant[8];
+    kal_int16    gsm_antenna_rxLevel[8];
+    kal_int16    gsm_snr[8];
+    kal_int16    gsm_txpower[8];
+    kal_int16    gsm_txpowerfinal[8];
+    kal_int32    gsm_txpowerbackoff[8];
+}em_gsm_utas_info_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+   kal_bool is_gsm_idle;
+   kal_uint8 paging_cnt;
+   kal_uint8 paging_cycle;
+   kal_uint16 meas_duration_in_ms;
+}em_gsm_idle_mode_info_ind_struct;
+#endif /* _EM_GAS_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_gmss_public_struct.h b/mcu/interface/service/em/em_gmss_public_struct.h
new file mode 100644
index 0000000..7356dbe
--- /dev/null
+++ b/mcu/interface/service/em/em_gmss_public_struct.h
@@ -0,0 +1,93 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_gmss_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef _EM_GMSS_PUBLIC_STRUCT_H
+#define _EM_GMSS_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+
+typedef enum
+{
+    EM_GMSS_HVOLTE_MODE_DISABLED = 0,
+    EM_GMSS_HVOLTE_MODE_SRLTE,
+    EM_GMSS_HVOLTE_MODE_LTE_ONLY
+} em_gmss_hvolte_mode_enum;
+
+typedef enum
+{
+    EM_GMSS_HVOLTE_MODE_CHG_CAUSE_NONE = 0,
+    EM_GMSS_HVOLTE_MODE_CHG_CAUSE_IMS_REG_CHG,
+    EM_GMSS_HVOLTE_MODE_CHG_CAUSE_LTE_OOS
+} em_gmss_hvolte_mode_chg_cause_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    em_gmss_hvolte_mode_enum hvolte_mode;
+    em_gmss_hvolte_mode_chg_cause_enum  hvolte_mode_change_cause;
+    kal_bool is_silent_redial_start;
+    kal_bool is_after_silent_redial_return_lte_fail;
+} em_gmss_hvolte_info_ind_struct;
+
+#endif /* _EM_GMSS_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_imc_public_struct.h b/mcu/interface/service/em/em_imc_public_struct.h
new file mode 100644
index 0000000..b7f72e6
--- /dev/null
+++ b/mcu/interface/service/em/em_imc_public_struct.h
@@ -0,0 +1,620 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 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:
+ * ---------
+ *   em_imc_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_IMC_PUBLIC_STRUCT_H
+#define _EM_IMC_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+#include "ims_common_def.h"
+
+#define UINT32 	kal_uint32
+#define UINT16 	kal_uint16
+#define UINT8 	kal_uint8
+#define INT32 	kal_int32
+#define BOOL	kal_bool
+
+#define SIP_MSG_MAX_CALLID_LEN 20
+#define SIP_MSG_MAX_EM_CALLID_LEN 100
+#define SIP_MSG_MAX_TAG_LEN 15
+
+/********************* begin of IMC definition ****************************/
+
+typedef struct
+{
+    kal_uint8        src_ip[64];
+    kal_uint8        dst_ip[64];
+    kal_uint8        src_port[16];
+    kal_uint8        dst_port[16];
+    kal_uint8        spi[32];
+    kal_uint8        dir;          //0:in 1:out
+    kal_uint8        padding[3];
+} l4c_em_imc_ipsec_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+} em_imc_ipsec_info_flush_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    l4c_em_imc_ipsec_info_struct   ipsec_info[4];
+    kal_uint8                      index;
+    kal_uint8                      transport;          //0:udp 1:tcp
+    kal_uint8                      mode;               //0:Transport 1:Tunnel
+    kal_uint8                      protocol;           //0:AH 1:ESP
+    kal_uint8                      encry_algo;         /* VoLTE_Stack_IPSec_Encry_Algo_e */
+    kal_uint8                      integrity_algo;     /* enum VoLTE_Stack_IPSec_Integrity_Algo_e */
+    kal_uint8                      padding[2];
+    kal_uint8                      ck[256];
+    kal_uint8                      ik[256];
+} em_imc_ipsec_info_add_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8                      index;
+    kal_uint8                      padding[3];
+} em_imc_ipsec_info_delete_ind_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    BOOL        is_acct_id_valid;
+    UINT32      acct_id; 
+    
+    BOOL        is_psi_valid;
+    UINT8       psi[VOLTE_MAX_URI_LENGTH];
+
+    BOOL        is_mo_sms_num_valid;
+    UINT32      mo_sms_num[4];
+
+    BOOL        is_mo_cur_sms_valid;
+    UINT32      mo_cur_sms[4];
+
+    BOOL        is_mo_cont_type_valid;
+    UINT32      mo_cont_type[4]; 
+    
+    BOOL        is_mo_resp_to_nw_valid;
+    UINT32      mo_resp_to_nw[4]; 
+    
+    BOOL        is_mo_resp_from_nw_valid;
+    UINT32      mo_resp_from_nw[4]; 
+    
+    BOOL        is_mo_error_code_valid;
+    UINT32      mo_error_code[4]; 
+    
+    BOOL        is_mt_sms_num_valid;
+    UINT32      mt_sms_num[4];
+
+    BOOL        is_mt_cur_sms_valid;
+    UINT32      mt_cur_sms[4];
+
+    BOOL        is_mt_cont_type_valid;
+    UINT32      mt_cont_type[4];
+
+    BOOL        is_mt_resp_to_nw_valid;
+    UINT32      mt_resp_to_nw[4];
+
+    BOOL        is_mt_resp_from_nw_valid;
+    UINT32      mt_resp_from_nw[4];
+
+    BOOL        is_mt_error_code_valid;
+    UINT32      mt_error_code[4];
+
+    BOOL        is_sms_support_valid;
+    UINT8       sms_support;
+} em_imc_sms_info_ind_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    BOOL        is_acct_id_valid;
+    UINT32      acct_id;
+
+    BOOL        is_srvcc_start_valid;
+    UINT8       srvcc_start_timestamp[256];
+
+    BOOL        is_srvcc_end_valid;
+    UINT8       srvcc_end_timestamp[256];
+
+    BOOL        is_num_calls_valid;
+    UINT8       num_calls_transferred;
+
+    BOOL        is_srvcc_result_valid;
+    INT32       srvcc_result;
+} em_imc_srvcc_info_ind_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    BOOL        is_acct_id_valid;
+    UINT32      acct_id;
+
+    BOOL        is_confcall_id_valid;
+    UINT8       conf_call_id[SIP_MSG_MAX_CALLID_LEN];
+
+    BOOL        is_participants_num_valid;
+    UINT32      participants_num;
+
+    BOOL        is_sub_fromtag_valid;
+    UINT8       sub_from_tag[SIP_MSG_MAX_TAG_LEN];
+} em_imc_conf_info_ind_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    BOOL        is_call_id_valid;
+    UINT32      call_id;
+
+    BOOL        is_session_id_valid;
+    INT32       session_id;
+
+    BOOL        is_acct_id_valid;
+    UINT32      acct_id;
+
+    BOOL 		is_call_state_valid;
+    UINT16      call_state;
+
+    BOOL        is_mt_call_valid;
+    UINT8       is_mt_call;
+
+    BOOL        is_sip_callid_valid;
+    UINT8       sip_call_id[SIP_MSG_MAX_CALLID_LEN];
+
+    BOOL        is_call_type_valid;
+    INT32       call_type;
+
+    BOOL        is_session_type_valid;
+    INT32       session_type;
+
+    BOOL        is_phone_number_valid;
+    UINT8       phone_number[VOLTE_MAX_URI_LENGTH];
+
+    BOOL        is_failure_code_valid;
+    UINT32      failure_code;
+
+    BOOL        is_media_on_valid;
+    UINT32      media_on;
+
+    BOOL        is_session_expires_valid;
+    INT32       session_expires_time;
+
+    BOOL        is_keep_alive_valid;
+    INT32       in_keep_alive;
+
+    BOOL        is_video_action_valid;
+    INT32       video_action;
+
+    BOOL        is_camera_direction_valid;
+    UINT8       camera_direction;
+
+    BOOL        is_remote_videocap_valid;
+    UINT8       remote_video_cap;
+
+    BOOL        is_originating_uri_valid;
+    UINT8       originating_uri[VOLTE_MAX_URI_LENGTH];
+
+    BOOL        is_terminating_uri_valid;
+    UINT8       terminating_uri[VOLTE_MAX_URI_LENGTH];
+        
+    BOOL        is_net_type_valid;
+    UINT8       net_type;
+
+    BOOL        is_anonymous_emergency_valid;
+    UINT8       anonymous_emergency;
+    
+} em_imc_call_info_ind_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    BOOL        is_account_id_valid;
+    UINT32      account_id;
+	
+    BOOL        is_pdn_ps_cause_valid;
+    UINT32      pdn_ps_cause;
+
+    BOOL        is_pdn_ip_addr_valid;
+    UINT8       pdn_ip_addr[VOLTE_MAX_ADDRESS_LENGTH];
+
+    BOOL        is_pdn_ip_type_valid;
+    UINT32      pdn_ip_type;
+
+    BOOL        is_signal_ebi_valid;
+    UINT32      signal_ebi;
+
+    BOOL        is_signal_qci_valid;
+    UINT32      signal_qci;
+
+    BOOL        is_access_rat_valid;
+    UINT32      access_rat;
+} em_imc_bearer_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    BOOL        is_account_id_valid;
+    UINT32      account_id;
+
+    BOOL        is_pcscf_method_valid;
+    UINT32      pcscf_method;
+
+    BOOL        is_pcscf_ip_addr_valid;
+    UINT8       pcscf_ip_addr[VOLTE_MAX_ADDRESS_LENGTH];
+
+    BOOL        is_pcscf_ip_type_valid;
+    UINT32      pcscf_ip_type;
+} em_imc_pcscf_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    BOOL        is_account_id_valid;
+    UINT32      account_id;
+
+    BOOL        is_call_id_valid;
+    UINT32      call_id;
+
+    BOOL        is_voice_ebi_valid;
+    UINT32      voice_ebi;
+
+    BOOL        is_video_ebi_valid;
+    UINT32      video_ebi;
+} em_imc_media_info_ind_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    BOOL        is_id_valid;
+    UINT32      id;
+
+    BOOL        is_emergency_type_valid;
+    UINT32      emergency_type;
+    
+    BOOL        is_reg_state_valid;
+    UINT32      reg_state;
+
+    BOOL        is_private_uid_valid;
+    UINT8       private_uid[VOLTE_MAX_REG_UID_LENGTH];
+
+    BOOL        is_public_uid_valid;
+    UINT8       public_uid[VOLTE_MAX_REG_UID_LENGTH];
+
+    BOOL        is_associated_uri_valid;
+    UINT8       associated_uri[VOLTE_MAX_ASSOCIATED_URI];
+
+    BOOL        is_em_reg_timestamp_valid;
+    UINT8       em_reg_timestamp[VOLTE_MAX_TIME_STAMP_LENGTH];
+
+    BOOL        is_reg_expires_valid;
+    UINT32      reg_expires;
+
+    BOOL        is_ems_mode_valid;
+    UINT32      ems_mode;
+
+    BOOL        is_last_sip_cause_valid;
+    UINT32      last_sip_cause;
+
+    BOOL        is_att_dm_type_valid;
+    UINT32      att_dm_type;
+
+    BOOL        is_att_reg_type_valid;
+    UINT32      att_reg_type;
+
+    BOOL        is_att_direction_valid;
+    UINT32      att_direction;
+
+    BOOL        is_att_call_id_valid;
+    UINT8       att_call_id[SIP_MSG_MAX_EM_CALLID_LEN];
+
+    BOOL        is_att_request_uri_valid;
+    UINT8       att_request_uri[VOLTE_MAX_URI_LENGTH];
+
+    BOOL        is_att_to_valid;
+    UINT8       att_to[VOLTE_MAX_URI_LENGTH];
+
+    BOOL        is_att_reg_state_valid;
+    UINT32      att_reg_state;
+
+    BOOL        is_att_reg_result_valid;
+    UINT32      att_reg_result;
+} em_imc_reg_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    BOOL        is_acct_id_valid;
+    UINT32      acct_id;
+
+    BOOL        is_rat_type_valid;
+    UINT32      rat_type;
+
+    BOOL        is_abnormal_type_valid;
+    UINT32      abnormal_type;
+
+    BOOL        is_fail_state_valid;
+    UINT32      fail_state;
+
+    BOOL        is_slow_type_valid;
+    UINT32      slow_type;
+
+    BOOL        is_slow_timer_valid;
+    UINT32      slow_timer;
+
+    BOOL        is_dereg_cause_valid;
+    UINT32      dereg_cause;
+
+    BOOL        is_sip_cause_valid;
+    UINT32      sip_cause;
+
+    BOOL        is_emergency_type_valid;
+    UINT32      emergency_type;
+
+    BOOL        is_rereg_state_valid;
+    UINT32      rereg_state;
+
+    BOOL        is_clear_abnormal_valid;
+    UINT32      clear_abnormal;
+
+    BOOL        is_reg_fail_cause_valid;
+    UINT32      reg_fail_cause;
+
+    BOOL        is_report_type_valid;
+    UINT32      report_type;
+
+    BOOL        is_reg_fail_count_valid;
+    UINT32      reg_fail_count;
+
+    BOOL        is_pdn_fail_count_valid;
+    UINT32      pdn_fail_count;
+
+    BOOL        is_sip_fail_count_valid;
+    UINT32      sip_fail_count;
+
+    BOOL        is_dereg_count_valid;
+    UINT32      dereg_count;
+} em_imc_reg_abnormal_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    BOOL        is_call_id_valid;
+    UINT32      call_id;
+
+    BOOL        is_acct_id_valid;
+    UINT32      acct_id;
+
+    BOOL        is_reset_valid;
+    UINT8       is_reset;
+
+    BOOL        is_mt_call_valid;
+    UINT8       is_mt_call;
+
+    BOOL        is_precondition_valid;
+    UINT8       is_precondition;
+
+    BOOL        is_vops_valid;
+    UINT8       is_vops;
+
+    BOOL        is_call_type_valid;
+    INT32       call_type;
+    
+    BOOL        is_call_state_valid;
+    INT32       call_state;
+    
+    BOOL        is_failure_cause_valid;
+    INT32       failure_cause;
+    
+    BOOL        is_sip_cause_valid;
+    INT32       sip_cause;
+    
+    BOOL        is_net_type_valid;
+    INT32       net_type;
+    
+    BOOL        is_call_fail_cause_valid;
+    INT32       call_fail_cause;
+    
+    BOOL        is_sip_flow_valid;
+    UINT8       sip_flow[VOLTE_MAX_SIP_FLOW_LENGTH];
+} em_imc_call_drop_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    BOOL        is_acct_id_valid;
+    UINT8       acct_id;
+
+    BOOL        is_sip_direction_valid;
+    UINT8       sip_direction;
+
+    BOOL        is_sip_msg_type_valid;
+    UINT8       sip_msg_type;
+
+    BOOL        is_sip_method_valid;
+    UINT16      sip_method;
+
+    BOOL        is_sip_resp_code_valid;
+    UINT32      sip_resp_code;
+
+    BOOL        is_event_id_valid;
+    UINT32      event_id;
+
+    BOOL        is_failure_cause_valid;
+    UINT32      failure_cause;
+
+    BOOL        is_call_id_valid;
+    UINT8       call_id;
+} em_imc_ims_event_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    BOOL        is_call_id_valid;
+    UINT32      call_id;
+
+    BOOL        is_acct_id_valid;
+    UINT32      acct_id;
+
+    BOOL        is_urn_string_valid;
+    UINT8       urn_string[VOLTE_MAX_URI_LENGTH];
+
+    BOOL        is_diff_ue_urn_string_valid;
+    UINT8       diff_ue_urn_string[VOLTE_MAX_URI_LENGTH];
+
+    BOOL        is_diff_nw_urn_string_valid;
+    UINT8       diff_nw_urn_string[VOLTE_MAX_URI_LENGTH];
+
+} em_imc_call_380_drop_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    BOOL        is_acct_id_valid;
+    UINT32      acct_id;
+
+    BOOL        is_timer_name_valid;
+    UINT32      timer_name;
+
+    BOOL        is_timer_state_valid;
+    UINT32      timer_state;
+} em_imc_timer_info_ind_struct;
+/********************* end of IMC definition ****************************/
+
+
+#endif /* _EM_IMC_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_imcsms_public_struct.h b/mcu/interface/service/em/em_imcsms_public_struct.h
new file mode 100644
index 0000000..97b85d4
--- /dev/null
+++ b/mcu/interface/service/em/em_imcsms_public_struct.h
@@ -0,0 +1,89 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 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:
+ * ---------
+ *   em_imcsms_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * 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 _EM_IMCSMS_PUBLIC_STRUCT_H
+#define _EM_IMCSMS_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+} em_mt_sms_over_ims_info_ind_struct;
+
+
+#endif /* _EM_IMCSMS_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_imsm_public_struct.h b/mcu/interface/service/em/em_imsm_public_struct.h
new file mode 100644
index 0000000..ae0c342
--- /dev/null
+++ b/mcu/interface/service/em/em_imsm_public_struct.h
@@ -0,0 +1,77 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+#ifndef __EM_IMSM_PUBLIC_STRUCT_H__
+#define __EM_IMSM_PUBLIC_STRUCT_H__
+
+#include "em_public_struct.h"
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+	
+    kal_uint32  error_cause_is_valid;
+    kal_uint32  error_cause;
+
+    /* peer buff here to store UDP packet raw data */
+
+}em_ims_pdn_fail_cause_event_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+	
+    kal_uint32  error_apn_is_valid;
+    kal_uint8 error_apn[100];
+
+    /* peer buff here to store UDP packet raw data */
+
+}em_ims_pdn_fail_apn_event_ind_struct;
+
+typedef struct
+{
+LOCAL_PARA_HDR
+em_info_enum em_info;
+
+kal_uint32 nw_deact_ims_pdn_is_valid;
+kal_uint32 nw_deact_ims_pdn_count;
+
+/* peer buff here to store UDP packet raw data */
+
+}em_ims_nw_dact_ind_struct;
+
+#endif /* __EM_IMSM_PUBLIC_STRUCT_H__ */
\ No newline at end of file
diff --git a/mcu/interface/service/em/em_info.h b/mcu/interface/service/em/em_info.h
new file mode 100644
index 0000000..4f95556
--- /dev/null
+++ b/mcu/interface/service/em/em_info.h
@@ -0,0 +1,1899 @@
+/*****************************************************************************
+*  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) 2015
+*
+*  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:
+ * ---------
+ *   em_info.h
+ *
+ * Project:
+ * --------
+ *   UMOLY
+ *
+ * Description:
+ * ------------
+ *   This header file is provided for macro used. It will define the module which
+ * registers the EM service.
+ *
+ * Author:
+ * -A------
+ * Bart Liang
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+/*
+ *  Format: EM_INFO(EM_SRV,X,Y,X_BM,Y_BM,MSGID)
+ *
+ *      Description:
+ *          Regist your module ID with specific EM info num.
+ *          EM_SRV  : the em type defined in em_info_enum
+ *          X       : the module ID whom L4C shall send MSG_ID_L4CPS_EM_UPDATE_REQ to
+ *          Y       : receive MSG_ID_L4CPS_EM_UPDATE_REQ from L4C allong with X.
+ *                    L4C helps to broadcast to two modules at most. This design is due to some EM modules are
+ *                    separated into FDD and TDD modules in UBIN activity, but they still share the same EM type
+ *          X_BM    : the bitmask for X, to indicates the supported modules in multi-SIM porject.
+ *                    for example, if module X is extended to module (X+1) in dual SIM project, and both modules
+ *                    support EM_SRV independently, please use 0x02 in X_BM, and so on. If EM_SRV is only supported
+ *                    in one module X even in multi-SIM project, please just use 0x01.
+ *          Y_BM    : the same as X_BM but for Y
+ *          MSGID   : the inication message sent from EM module, which carries the EM information
+ *
+ *      Example:
+ *          EM_INFO(UEM_EM_BATTERY_INFO, MOD_UEM, MOD_NIL, MSG_ID_UEM_EM_BATTERY_INFO)
+ *              -> Notify MOD_UEM if UEM_EM_BATTERY_INFO service has changed.
+ *
+ *  1.  Expand in em_info_req_mod_tbl[]
+ *          EM_INFO(EM_SRV,X,Y,X_BM,Y_BM,MSGID) -> Mapping em_info: EM_SRV to mod_id: X & Y
+ *
+ *  2.  Expand in em_msgid.h
+ *          EM_INFO(EM_SRV,X,Y,X_BM,Y_BM,MSGID) -> MSGID
+ *
+ *      Description:
+ *          Define the MSGID in em_msgid.h
+ *
+ *  3.  Expand in msg_id_to_em_info_map
+ *          EM_INFO(EM_SRV,X,Y,X_BM,Y_BM,MSGID) -> MAPPED_MSGID = EM_SRV
+ *
+ *      Description:
+ *          Define the MAPPED_MSGID in msg_id_to_em_info_map and its value (=EM_SRV).
+ *
+ */
+
+#define ZERO_BITMASK  0
+#define SINGLE_BITMASK 0x01
+
+#if defined(__GEMINI__)
+#if (GEMINI_PLUS >= 4)
+#define GEMINI_BITMASK 0x0F
+#elif (GEMINI_PLUS >= 3)
+#define GEMINI_BITMASK 0x07
+#else
+#define GEMINI_BITMASK 0x03
+#endif
+#else
+#define GEMINI_BITMASK SINGLE_BITMASK
+#endif /* __GEMINI__ || __SGLTE__ */
+
+#ifdef __GEMINI_WCDMA__
+#if (GEMINI_PLUS_WCDMA >= 4)
+#define WCDMA_BITMASK 0x0F
+#elif (GEMINI_PLUS_WCDMA >= 3)
+#define WCDMA_BITMASK 0x07
+#else
+#define WCDMA_BITMASK 0x03
+#endif
+#else
+#define WCDMA_BITMASK SINGLE_BITMASK
+#endif /* __GEMINI_WCDMA__ */
+
+#ifdef __GEMINI_LTE__
+#if (GEMINI_PLUS_LTE >= 4)
+#define LTE_BITMASK 0x0F
+#elif (GEMINI_PLUS_LTE >= 3)
+#define LTE_BITMASK 0x07
+#else
+#define LTE_BITMASK 0x03
+#endif
+#else
+#define LTE_BITMASK SINGLE_BITMASK
+#endif /* __GEMINI_LTE__ */
+
+#if defined(__UMTS_TDD128_MODE__) || defined(__TDD_MODEM__) || defined(__TDD_2G_OP01__)
+#define EM_MOD_RRM_TDD  MOD_RRM_TDD
+#else
+#define EM_MOD_RRM_TDD  MOD_NIL
+#endif
+
+#ifdef __UMTS_TDD128_MODE__
+#define EM_MOD_URR_TDD  MOD_URR_TDD
+#define EM_MOD_CSR_TDD MOD_CSR_TDD
+#define EM_MOD_UL2_TDD MOD_UL2_TDD
+#else
+#define EM_MOD_URR_TDD  MOD_NIL
+#define EM_MOD_CSR_TDD MOD_NIL
+#define EM_MOD_UL2_TDD MOD_NIL
+#endif
+
+    /*RRM*/
+#if !defined(RR_NOT_PRESENT)
+EM_INFO(RR_EM_CELL_SELECT_PARA_INFO,    MOD_RRM_FDD, EM_MOD_RRM_TDD,   GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_CELL_SELECT_PARA_INFO_IND)
+EM_INFO(RR_EM_CHANNEL_DESCR_INFO,       MOD_RRM_FDD, EM_MOD_RRM_TDD,   GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_CHANNEL_DESCR_INFO_IND)
+EM_INFO(RR_EM_CTRL_CHANNEL_DESCR_INFO,  MOD_RRM_FDD, EM_MOD_RRM_TDD,   GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_CTRL_CHANNEL_DESCR_INFO_IND)
+EM_INFO(RR_EM_RACH_CTRL_PARA_INFO,      MOD_RRM_FDD, EM_MOD_RRM_TDD,   GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_RACH_CTRL_PARA_INFO_IND)
+EM_INFO(RR_EM_LAI_INFO,                 MOD_RRM_FDD, EM_MOD_RRM_TDD,   GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_LAI_INFO_IND)
+EM_INFO(RR_EM_RADIO_LINK_COUNTER_INFO,  MOD_RRM_FDD, EM_MOD_RRM_TDD,   GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_RADIO_LINK_COUNTER_INFO_IND)
+EM_INFO(RR_EM_MEASUREMENT_REPORT_INFO,  MOD_RRM_FDD, EM_MOD_RRM_TDD,   GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_MEASUREMENT_REPORT_INFO_IND)
+EM_INFO(RR_EM_CA_LIST_INFO,             MOD_RRM_FDD, EM_MOD_RRM_TDD,   GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_CA_LIST_INFO_IND)
+EM_INFO(RR_EM_CONTROL_MSG_INFO,         MOD_RRM_FDD, EM_MOD_RRM_TDD,   GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_CONTROL_MSG_INFO_IND)
+EM_INFO(RR_EM_CONTROL_MSG_INFO,         MOD_NIL,     MOD_NIL,       ZERO_BITMASK,   ZERO_BITMASK,   MSG_ID_EM_MAC_CONTROL_MSG_INFO_IND)
+EM_INFO(RR_EM_SI2Q_INFO_STRUCT_INFO,    MOD_RRM_FDD, EM_MOD_RRM_TDD,   GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_SI2Q_INFO_IND)
+EM_INFO(RR_EM_MI_INFO_STRUCT_INFO,      MOD_RRM_FDD, EM_MOD_RRM_TDD,   GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_MI_INFO_IND)
+EM_INFO(RR_EM_BLK_INFO,                 MOD_RRM_FDD, EM_MOD_RRM_TDD,   GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_MAC_BLK_INFO_IND)
+EM_INFO(RR_EM_TBF_INFO,                 MOD_RRM_FDD, EM_MOD_RRM_TDD,   GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_MAC_TBF_INFO_IND)
+EM_INFO(RR_EM_GPRS_GENERAL_INFO,        MOD_RRM_FDD, EM_MOD_RRM_TDD,   GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_GPRS_GENERAL_INFO_IND)
+#if defined(__UMTS_RAT__) || defined(__LTE_RAT__)
+EM_INFO(RRM_EM_FDD_IR_PARAMETER_STATUS_IND_STRUCT_INFO, MOD_RRM_FDD, MOD_NIL,       GEMINI_BITMASK, ZERO_BITMASK,   MSG_ID_FDD_EM_RRM_IR_PARAMETER_STATUS_IND)
+EM_INFO(RRM_EM_TDD_IR_PARAMETER_STATUS_IND_STRUCT_INFO, EM_MOD_RRM_TDD, MOD_NIL,       GEMINI_BITMASK, ZERO_BITMASK,   MSG_ID_TDD_EM_RRM_IR_PARAMETER_STATUS_IND)
+EM_INFO(RRM_EM_IR_RESELECT_STATUS_IND_STRUCT_INFO,      MOD_RRM_FDD, EM_MOD_RRM_TDD,   GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_IR_RESELECT_STATUS_IND)
+#endif /* defined(__UMTS_RAT__) || defined(__LTE_RAT__) */
+#ifdef __UMTS_RAT__
+EM_INFO(RRM_EM_IR_3G_NEIGHBOR_MEAS_STATUS_IND_STRUCT_INFO,  MOD_RRM_FDD, EM_MOD_RRM_TDD, GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_IR_3G_NEIGHBOR_MEAS_STATUS_IND)
+EM_INFO(RRM_EM_IR_3G_NEIGHBOR_MEAS_INFO_IND_STRUCT_INFO,    MOD_RRM_FDD, EM_MOD_RRM_TDD, GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_IR_3G_NEIGHBOR_MEAS_INFO_IND)
+#endif /* __UMTS_RAT__ */
+#ifdef __LTE_RAT__
+EM_INFO(RRM_EM_IR_4G_NEIGHBOR_MEAS_STATUS_IND_STRUCT_INFO,  MOD_RRM_FDD, EM_MOD_RRM_TDD, GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_IR_4G_NEIGHBOR_MEAS_STATUS_IND)
+EM_INFO(RRM_EM_IR_4G_NEIGHBOR_MEAS_INFO_IND_STRUCT_INFO,    MOD_RRM_FDD, EM_MOD_RRM_TDD, GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_IR_4G_NEIGHBOR_MEAS_INFO_IND)
+#endif /* __LTE_RAT__ */
+EM_INFO(RRM_EM_SERV_CELL_POWER_STATUS_IND_STRUCT_INFO,      EM_MOD_RRM_TDD, MOD_NIL,     GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_RRM_SERV_CELL_POWER_STATUS_IND)
+EM_INFO(RRM_EM_IR_3G_NEIGHBOR_CELL_STATUS_IND_STRUCT_INFO,  EM_MOD_RRM_TDD, MOD_NIL,     GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_RRM_IR_3G_NEIGHBOR_CELL_STATUS_IND)
+EM_INFO(RRM_EM_IR_4G_NEIGHBOR_CELL_STATUS_IND_STRUCT_INFO,  EM_MOD_RRM_TDD, MOD_NIL,     GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_RRM_IR_4G_NEIGHBOR_CELL_STATUS_IND)
+EM_INFO(RRM_EM_SUCCESS_RATE_KPI_INFO,                       MOD_RRM_FDD, EM_MOD_RRM_TDD, GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_SUCCESS_RATE_KPI_IND)
+EM_INFO(RRM_EM_MT_T3126_TIMEOUT_INFO,                       MOD_RRM_FDD, EM_MOD_RRM_TDD, GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_MT_T3126_TIMEOUT_IND)
+EM_INFO(RRM_EM_CS_RLF_INFO,                                 MOD_RRM_FDD, EM_MOD_RRM_TDD, GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_CS_RLF_INFO_IND)
+EM_INFO(RRM_EM_GAS_SEARCH_INFO,                             MOD_RRM_FDD, MOD_NIL,     GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_RRM_GAS_SEARCH_INFO_IND)
+EM_INFO(RRM_EM_RR_STATE_INFO,                               MOD_RRM_FDD, MOD_NIL,     GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_RRM_RR_STATE_INFO_IND)
+EM_INFO(RRM_EM_DOWNLINK_SIGNALLING_COUNTER_INFO,            MOD_RRM_FDD, EM_MOD_RRM_TDD, GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_DOWNLINK_SIGNALLING_COUNTER_INFO_IND)
+EM_INFO(RRM_EM_RACH_FAIL,                                   MOD_RRM_FDD, EM_MOD_RRM_TDD,     GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_RACH_FAIL_IND)
+EM_INFO(RRM_EM_N200_EXP,                                    MOD_RRM_FDD, EM_MOD_RRM_TDD,     GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_N200_EXP_IND)
+EM_INFO(RRM_EM_HO_FAIL,                                     MOD_RRM_FDD, EM_MOD_RRM_TDD,     GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_HO_FAIL_IND)
+EM_INFO(RRM_EM_OOS_IND,                                     MOD_RRM_FDD, MOD_NIL,     GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_RRM_OOS_IND)
+EM_INFO(RRM_EM_CELL_SNIFFER_IND,                            MOD_RRM_FDD, EM_MOD_RRM_TDD,     GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_CELL_SNIFFER_IND)
+EM_INFO(RRM_EM_OOS_SEARCH_IND,                              MOD_RRM_FDD, EM_MOD_RRM_TDD,	 GEMINI_BITMASK, GEMINI_BITMASK, MSG_ID_EM_RRM_OOS_SEARCH_IND)
+EM_INFO(RRM_EM_OOS_SEARCH_DURATION_INFO_IND,                MOD_RRM_FDD, MOD_NIL,     GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_RRM_OOS_SEARCH_DURATION_INFO_IND)
+#endif /* !defined(RR_NOT_PRESENT) */
+
+    /*CC*/
+#if !defined(CC_NOT_PRESENT)
+EM_INFO(CC_EM_CHANNEL_INFO, MOD_CC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_CC_CHANNEL_INFO_IND)
+EM_INFO(CC_EM_CALL_INFO,    MOD_CC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_CC_CALL_INFO_IND)
+EM_INFO(CC_EM_CALL_MT_SETUP_INFO,    MOD_CC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_CC_CALL_MT_SETUP_INFO_IND)
+
+#endif
+
+    /*MM*/
+#if !defined(MM_NOT_PRESENT)
+EM_INFO(MM_EM_INFO,              MOD_MM, MOD_NIL,    GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_MM_INFO_IND)
+EM_INFO(GMM_EM_INFO,             MOD_MM, MOD_NIL,    GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_GMM_INFO_IND)
+
+EM_INFO(MM_EM_MTC_TIMER_INFO,    MOD_MM, MOD_NIL,    GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_MM_MTC_TIMER_INFO_IND)
+EM_INFO(MM_EM_LU_INFO,           MOD_MM, MOD_NIL,    GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_MM_LU_INFO_IND)
+EM_INFO(MM_EM_RAU_INFO,          MOD_MM, MOD_NIL,    GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_GMM_RAU_INFO_IND)
+
+EM_INFO(MM_EM_MT_CSFB_INFO,      MOD_MM, MOD_NIL,    GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_MM_MT_CSFB_INFO_IND)
+EM_INFO(MM_EM_CSFB_STATUS,       MOD_MM, MOD_NIL,    GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_MM_CSFB_STATUS_IND)
+EM_INFO(MM_EM_REG_REJ_INFO,      MOD_MM, MOD_NIL,    GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_REG_REJ_INFO_IND)
+EM_INFO(MM_EM_AUTH_REJ_INFO,     MOD_MM, MOD_NIL,    GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_AUTH_REJ_INFO_IND)
+EM_INFO(MM_EM_AS_FAIL_INFO,      MOD_MM, MOD_NIL,    GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_AS_FAIL_INFO_IND)
+EM_INFO(MM_EM_MTCS_MTCSFB_STATUS,MOD_MM, MOD_NIL,	 GEMINI_BITMASK,	 ZERO_BITMASK, MSG_ID_EM_MM_MTCS_MTCSFB_STATUS_IND)
+EM_INFO(MM_EM_MM_GMM_PROC_REJ_INFO,MOD_MM, MOD_NIL,	 GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_MM_GMM_PROC_REJ_INFO_IND)
+EM_INFO(MM_EM_MOCS_MOCSFB_STATUS,MOD_MM, MOD_NIL,    GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_MM_MOCS_MOCSFB_STATUS_IND)
+EM_INFO(MM_EM_MM_CAUSE_INFO,	 MOD_MM, MOD_NIL,	 GEMINI_BITMASK,	 ZERO_BITMASK, MSG_ID_EM_MM_CAUSE_INFO_IND) 
+EM_INFO(MM_EM_MM_GMM_PAGING_INFO,	 MOD_MM, MOD_NIL,	 GEMINI_BITMASK,	 ZERO_BITMASK, MSG_ID_EM_MM_GMM_PAGING_INFO_IND) 
+
+#endif
+
+    /*NWSEL*/
+#if !defined(NWSEL_NOT_PRESENT)
+EM_INFO(MMRR_EM_PLMN_INFO_STRUCT_INFO,           MOD_NWSEL, MOD_NIL,     GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_NWSEL_PLMN_INFO_IND)
+EM_INFO(MMRR_EM_PLMN_LOSS_INFO_STRUCT_INFO,      MOD_NWSEL, MOD_NIL,     GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_NWSEL_PLMN_LOSS_INFO_IND)
+EM_INFO(MMRR_EM_PLMN_SEARCH_CNF_INFO_STRUCT_INFO,MOD_NWSEL, MOD_NIL,     GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_NWSEL_PLMN_SEARCH_CNF_INFO_IND)
+EM_INFO(NWSEL_EM_TIMER_INFO,                     MOD_NWSEL, MOD_NIL,     GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_NWSEL_TIMER_INFO_IND)
+EM_INFO(NWSEL_EM_PLMN_LIST_REQ_INFO,             MOD_NWSEL, MOD_NIL,     GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_NWSEL_PLMN_LIST_REQ_INFO_IND)
+EM_INFO(MMRR_EM_PLMN_LIST_CNF_STRUCT_INFO,       MOD_NWSEL, MOD_NIL,     GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_NWSEL_PLMN_LIST_CNF_INFO_IND)
+EM_INFO(NWSEL_EM_PLMN_SEARCH_REQ_INFO,           MOD_NWSEL, MOD_NIL,     GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_NWSEL_PLMN_SEARCH_REQ_INFO_IND)
+EM_INFO(NWSEL_EM_HPLMN_INFO_INFO,                MOD_NWSEL, MOD_NIL,     GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_NWSEL_HPLMN_INFO_IND)
+EM_INFO(NWSEL_EM_OPLMN_INFO_INFO,                MOD_NWSEL, MOD_NIL,     GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_NWSEL_OPLMN_INFO_IND)
+EM_INFO(NWSEL_EM_STATIC_APPLMN_INFO,             MOD_NWSEL, MOD_NIL,     GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_NWSEL_STATIC_APPLMN_INFO_IND)
+EM_INFO(NWSEL_EM_DYNAMIC_APPLMN_INFO,            MOD_NWSEL, MOD_NIL,     GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_NWSEL_DYNAMIC_APPLMN_INFO_IND)
+EM_INFO(NWSEL_EM_EUTRAN_DISABLE_INFO,            MOD_NWSEL, MOD_NIL,     GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_NWSEL_EUTRAN_DISABLE_INFO_IND)
+EM_INFO(NWSEL_EM_RECOVERY_SEARCH_INFO,           MOD_NWSEL, MOD_NIL,     GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_NWSEL_RECOVERY_SEARCH_INFO_IND)
+#endif
+
+    /*GMSS*/
+#if !defined(GMSS_NOT_PRESENT)
+EM_INFO(GMSS_EM_WORLD_PHONE_INFO, MOD_GMSS, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_GMSS_WORLD_PHONE_INFO_IND)
+EM_INFO(GMSS_EM_HVOLTE_INFO, MOD_GMSS, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_GMSS_HVOLTE_INFO_IND)
+#endif
+
+    /*UEM*/
+EM_INFO(UEM_EM_BATTERY_INFO, MOD_UEM, MOD_NIL,  SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_UEM_EM_BATTERY_INFO)  // No MGS ID
+
+#ifdef __PS_SERVICE__
+    /*LLC*/
+EM_INFO(LLC_EM_INFO, MOD_LLC, MOD_NIL,   GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_LLC_STATUS_IND)
+
+    /*SM*/
+EM_INFO(SM_EM_INFO, MOD_SM,  MOD_NIL,    GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_SM_NSAPI5_STATUS_IND)
+EM_INFO(SM_EM_INFO, MOD_NIL, MOD_NIL,    ZERO_BITMASK,   ZERO_BITMASK, MSG_ID_EM_SM_NSAPI6_STATUS_IND)
+EM_INFO(SM_EM_INFO, MOD_NIL, MOD_NIL,    ZERO_BITMASK,   ZERO_BITMASK, MSG_ID_EM_SM_NSAPI7_STATUS_IND)
+EM_INFO(SM_EM_INFO, MOD_NIL, MOD_NIL,    ZERO_BITMASK,   ZERO_BITMASK, MSG_ID_EM_SM_NSAPI8_STATUS_IND)
+EM_INFO(SM_EM_INFO, MOD_NIL, MOD_NIL,    ZERO_BITMASK,   ZERO_BITMASK, MSG_ID_EM_SM_NSAPI9_STATUS_IND)
+EM_INFO(SM_EM_INFO, MOD_NIL, MOD_NIL,    ZERO_BITMASK,   ZERO_BITMASK, MSG_ID_EM_SM_NSAPI10_STATUS_IND)
+EM_INFO(SM_EM_INFO, MOD_NIL, MOD_NIL,    ZERO_BITMASK,   ZERO_BITMASK, MSG_ID_EM_SM_NSAPI11_STATUS_IND)
+EM_INFO(SM_EM_INFO, MOD_NIL, MOD_NIL,    ZERO_BITMASK,   ZERO_BITMASK, MSG_ID_EM_SM_NSAPI12_STATUS_IND)
+EM_INFO(SM_EM_INFO, MOD_NIL, MOD_NIL,    ZERO_BITMASK,   ZERO_BITMASK, MSG_ID_EM_SM_NSAPI13_STATUS_IND)
+EM_INFO(SM_EM_INFO, MOD_NIL, MOD_NIL,    ZERO_BITMASK,   ZERO_BITMASK, MSG_ID_EM_SM_NSAPI14_STATUS_IND)
+EM_INFO(SM_EM_INFO, MOD_NIL, MOD_NIL,    ZERO_BITMASK,   ZERO_BITMASK, MSG_ID_EM_SM_NSAPI15_STATUS_IND)
+
+    /* GL1 */
+#if defined(__MD93__)
+EM_INFO( GL1_EM_TAS_INFO, MOD_L1, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_GSM_TAS_INFO_IND )
+#elif (defined(__MD95__) || defined(__MD97__))
+EM_INFO( GL1_EM_TAS_INFO, MOD_L1, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_GSM_UTAS_INFO_IND )
+#endif
+
+#ifdef __2G_RX_DIVERSITY_PATH_SUPPORT__
+EM_INFO( GL1_EM_RXD_INFO, MOD_L1, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_GSM_RXD_INFO_IND )
+#endif
+EM_INFO( GL1_EM_IDLE_MODE_INFO, MOD_L1, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_GSM_IDLE_MODE_INFO_IND)
+
+    /*TCM*/
+EM_INFO(EM_TCM_INFO_IND, MOD_TCM, MOD_NIL,   GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_TCM_INFO_IND)
+#endif
+
+EM_INFO(EM_SIM_MONITOR_EVENT_INFO, MOD_SIM, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_SIM_MONITOR_EVENT_INFO_IND)
+
+
+#ifdef __UMTS_RAT__ //For MAUI, MONZA2G exclude 3G
+    /*URR*/
+EM_INFO(FDD_EM_URR_3G_GENERAL_STATUS_IND,           MOD_URR_FDD, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK,     MSG_ID_FDD_EM_URR_3G_GENERAL_STATUS_IND)
+EM_INFO(EM_SIBE_3G_SIB_IND_STRUCT_INFO,             MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,     SINGLE_BITMASK, MSG_ID_EM_SIBE_SIB_STATUS_IND)
+EM_INFO(FDD_EM_CSCE_SERV_CELL_IND_STRUCT_INFO,      MOD_URR_FDD, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK,     MSG_ID_FDD_EM_CSCE_SERV_CELL_S_STATUS_IND)
+EM_INFO(FDD_EM_CSCE_NEIGH_CELL_IND_STRUCT_INFO,     MOD_URR_FDD, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK,     MSG_ID_FDD_EM_CSCE_NEIGH_CELL_S_STATUS_IND)
+EM_INFO(FDD_EM_CSCE_R_STATUS_IND_STRUCT_INFO,       MOD_URR_FDD, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK,     MSG_ID_FDD_EM_CSCE_CELL_R_STATUS_IND)
+EM_INFO(FDD_EM_CSCE_H_STATUS_IND_STRUCT_INFO,       MOD_URR_FDD, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK,     MSG_ID_FDD_EM_CSCE_CELL_H_STATUS_IND)
+EM_INFO(FDD_EM_CSCE_APBCR_STATUS_IND_STRUCT_INFO,   MOD_URR_FDD, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK,     MSG_ID_FDD_EM_CSCE_APBCR_STATUS_IND)
+EM_INFO(FDD_EM_CSCE_MEAS_RULE_STATUS_IND_STRUCT_INFO,MOD_URR_FDD, MOD_NIL,  WCDMA_BITMASK,     ZERO_BITMASK,    MSG_ID_FDD_EM_CSCE_MEAS_RULE_STATUS_IND)
+EM_INFO(FDD_EM_CSCE_MULTIPLE_PLMN_IND_STRUCT_INFO,  MOD_URR_FDD, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK,     MSG_ID_FDD_EM_CSCE_MULTIPLE_PLMN_IND)
+EM_INFO(EM_FDD_MEME_INFO_DCH_UMTS_CELL_INFO,        MOD_URR_FDD, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK,     MSG_ID_FDD_EM_MEME_DCH_UMTS_CELL_INFO_IND)
+EM_INFO(EM_FDD_MEME_INFO_DCH_GSM_CELL_INFO,         MOD_URR_FDD, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK,     MSG_ID_FDD_EM_MEME_DCH_GSM_CELL_INFO_IND)
+EM_INFO(EM_FDD_MEME_INFO_DCH_LTE_CELL_INFO,         MOD_URR_FDD, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK,     MSG_ID_FDD_EM_MEME_DCH_LTE_CELL_INFO_IND)
+EM_INFO(EM_FDD_MEME_INFO_DCH_H_SERVING_CELL_INFO,   MOD_URR_FDD, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK,     MSG_ID_FDD_EM_MEME_DCH_H_SERVING_CELL_INFO_IND)
+EM_INFO(EM_FDD_MEME_INFO_DCH_3G_BLER_INFO,          MOD_URR_FDD, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK,     MSG_ID_FDD_EM_MEME_DCH_BLER_INFO_IND)
+EM_INFO(EM_FDD_MEME_INFO_FACH_LTE_CELL_INFO,        MOD_URR_FDD, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK,     MSG_ID_FDD_EM_MEME_FACH_LTE_CELL_INFO_IND)
+EM_INFO(EM_FDD_MEME_INFO_EVENT_TYPE_3_PARAMETER_INFO, MOD_URR_FDD, MOD_NIL,     WCDMA_BITMASK,     ZERO_BITMASK,     MSG_ID_FDD_EM_MEME_EVENT_TYPE_3_PARAMETER_INFO_IND)
+EM_INFO(EM_FDD_MEME_INFO_REPORT_INFO,               MOD_URR_FDD, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK,     MSG_ID_FDD_EM_MEME_REPORT_INFO_IND)
+EM_INFO(EM_FDD_CSCE_SEARCH_DURATION_INFO_IND,     MOD_URR_FDD, MOD_NIL,    WCDMA_BITMASK,      SINGLE_BITMASK, MSG_ID_EM_FDD_CSCE_EM_SEARCH_DURATION_INFO_IND)
+EM_INFO(URR_EM_CELL_SNIFFER_IND,                    MOD_URR_FDD, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK,     MSG_ID_EM_URR_CELL_SNIFFER_IND)
+EM_INFO(EM_RRCE_NW_PEER_MSG_INFO,  MOD_URR_FDD, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK,     MSG_ID_EM_RRCE_NW_PEER_MSG_INFO_IND)
+EM_INFO(EM_RRCE_TGPS_STATUS_IND,                    MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,     SINGLE_BITMASK, MSG_ID_EM_RRCE_TGPS_STATUS_IND)
+EM_INFO(EM_SLCE_SRNCID_STATUS_IND,                  MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,     SINGLE_BITMASK, MSG_ID_EM_SLCE_SRNCID_STATUS_IND)
+EM_INFO(EM_RRCE_3G_SECURITY_CONFIGURATION_INFO_IND, MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,     SINGLE_BITMASK, MSG_ID_EM_RRCE_3G_SECURITY_CONFIGURATION_STATUS_IND)
+EM_INFO(EM_UAS_3G_TDD128_HANDOVER_SEQUENCE_IND,     MOD_URR_FDD, EM_MOD_URR_TDD,   SINGLE_BITMASK,     SINGLE_BITMASK, MSG_ID_EM_UAS_3G_TDD128_HANDOVER_SEQUENCE_IND)
+EM_INFO(EM_RRCE_3G4_REDIR_EVENT,                    MOD_URR_FDD, EM_MOD_URR_TDD,   SINGLE_BITMASK,     SINGLE_BITMASK, MSG_ID_EM_RRCE_3G4_REDIR_EVENT_IND)  // No MGS ID
+EM_INFO(EM_RRCE_KPI_STATUS_IND,                     MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,     SINGLE_BITMASK, MSG_ID_EM_RRCE_KPI_STATUS_IND)
+EM_INFO(EM_SLCE_PS_DATA_RATE_STATUS_IND,            MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,     SINGLE_BITMASK, MSG_ID_EM_SLCE_PS_DATA_RATE_STATUS_IND)
+EM_INFO(EM_SLCE_UE_DTX_DRX_INFO_IND,                MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,     SINGLE_BITMASK, MSG_ID_EM_SLCE_UE_DTX_DRX_INFO_IND)
+EM_INFO(EM_RRCE_CN_DRX_CYCLE_LEN_IND,               MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,     SINGLE_BITMASK, MSG_ID_EM_RRCE_CN_DRX_CYCLE_LEN_IND)
+EM_INFO(EM_RRCE_UTRAN_DRX_CYCLE_LEN_IND,            MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,     SINGLE_BITMASK, MSG_ID_EM_RRCE_UTRAN_DRX_CYCLE_LEN_IND)
+EM_INFO(EM_RRCE_DCH_STATE_CONFIGURATION_STATUS_IND, MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,     SINGLE_BITMASK, MSG_ID_EM_RRCE_DCH_STATE_CONFIGURATION_STATUS_IND)
+EM_INFO(EM_RRCE_FACH_STATE_CONFIGURATION_STATUS_IND,MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,     SINGLE_BITMASK, MSG_ID_EM_RRCE_FACH_STATE_CONFIGURATION_STATUS_IND)
+EM_INFO(EM_RRCE_CS_OVER_HSPA_STATUS_IND,            MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,     SINGLE_BITMASK, MSG_ID_EM_RRCE_CS_OVER_HSPA_STATUS_IND)
+EM_INFO(EM_RRCE_HSPA_CONFIG_IND,                    MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,     SINGLE_BITMASK, MSG_ID_EM_RRCE_HSPA_CONFIG_IND) /* MOLY00100048, Jack Chu, HSPA configuration in 3G dedicated */
+EM_INFO(EM_RRCE_FD_CONFIGURATION_STATUS_IND,        MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,     SINGLE_BITMASK, MSG_ID_EM_RRCE_FD_CONFIGURATION_STATUS_IND)
+/* __ALPS02506878_SUPPORT__ */
+EM_INFO(EM_RRCE_RLF_IND, 						 		 MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,		SINGLE_BITMASK, MSG_ID_EM_RRCE_RLF_IND)
+EM_INFO(EM_RRCE_3G_CELL_UARFCN_DL_UL_INFO_IND,  	MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,	   SINGLE_BITMASK, MSG_ID_EM_RRCE_3G_CELL_UARFCN_DL_UL_INFO_IND)
+EM_INFO(EM_RRCE_RACH_FAIL_IND, 						MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,		SINGLE_BITMASK, MSG_ID_EM_RRCE_RACH_FAIL_IND)
+EM_INFO(EM_RRCE_MO_RLF_IND, 						MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,		SINGLE_BITMASK, MSG_ID_EM_RRCE_MO_RLF_IND)
+EM_INFO(EM_RRCE_3G3_HO_FAIL_IND, 					MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,		SINGLE_BITMASK, MSG_ID_EM_RRCE_3G3_HO_FAIL_IND)
+EM_INFO(EM_RRCE_3G2_HO_FAIL_IND, 					MOD_URR_FDD, EM_MOD_URR_TDD,   WCDMA_BITMASK,		SINGLE_BITMASK, MSG_ID_EM_RRCE_3G2_HO_FAIL_IND)
+EM_INFO(TDD_EM_URR_3G_GENERAL_STATUS_IND,           EM_MOD_URR_TDD, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_TDD_EM_URR_3G_GENERAL_STATUS_IND)
+EM_INFO(TDD_EM_RRCE_CONN_STATUS_IND,           EM_MOD_URR_TDD, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_TDD_EM_RRCE_CONN_STATUS_IND)
+EM_INFO(TDD_EM_CSCE_SERV_CELL_IND_STRUCT_INFO,      EM_MOD_URR_TDD, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_TDD_EM_CSCE_SERV_CELL_S_STATUS_IND)
+EM_INFO(TDD_EM_CSCE_NEIGH_CELL_IND_STRUCT_INFO,        EM_MOD_URR_TDD, MOD_NIL,    SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_TDD_EM_CSCE_NEIGH_CELL_S_STATUS_IND)
+EM_INFO(TDD_EM_CSCE_R_STATUS_IND_STRUCT_INFO,       EM_MOD_URR_TDD, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_TDD_EM_CSCE_CELL_R_STATUS_IND)
+EM_INFO(TDD_EM_CSCE_H_STATUS_IND_STRUCT_INFO,       EM_MOD_URR_TDD, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_TDD_EM_CSCE_CELL_H_STATUS_IND)
+EM_INFO(TDD_EM_CSCE_APBCR_STATUS_IND_STRUCT_INFO,      EM_MOD_URR_TDD, MOD_NIL,    SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_TDD_EM_CSCE_APBCR_STATUS_IND)
+EM_INFO(TDD_EM_CSCE_MEAS_RULE_STATUS_IND_STRUCT_INFO,  EM_MOD_URR_TDD, MOD_NIL,    SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_TDD_EM_CSCE_MEAS_RULE_STATUS_IND)
+EM_INFO(TDD_EM_CSCE_MULTIPLE_PLMN_IND_STRUCT_INFO,     EM_MOD_URR_TDD, MOD_NIL,    SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_TDD_EM_CSCE_MULTIPLE_PLMN_IND)
+EM_INFO(EM_TDD_MEME_INFO_DCH_UMTS_CELL_INFO,        EM_MOD_URR_TDD, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_TDD_EM_MEME_DCH_UMTS_CELL_INFO_IND)
+EM_INFO(EM_TDD_MEME_INFO_DCH_GSM_CELL_INFO,         EM_MOD_URR_TDD, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_TDD_EM_MEME_DCH_GSM_CELL_INFO_IND)
+EM_INFO(EM_TDD_MEME_INFO_DCH_LTE_CELL_INFO,         EM_MOD_URR_TDD, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_TDD_EM_MEME_DCH_LTE_CELL_INFO_IND)
+EM_INFO(EM_TDD_MEME_INFO_EVENT_TYPE_1_PARAMETER_STRUCT_INFO, EM_MOD_URR_TDD, MOD_NIL,  SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_TDD_EM_MEME_EVENT_TYPE_1_PARAMETER_INFO_IND)
+EM_INFO(EM_TDD_MEME_INFO_EVENT_TYPE_2_PARAMETER_STRUCT_INFO, EM_MOD_URR_TDD, MOD_NIL,  SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_TDD_EM_MEME_EVENT_TYPE_2_PARAMETER_INFO_IND)
+EM_INFO(EM_TDD_MEME_INFO_EVENT_TYPE_3_PARAMETER_STRUCT_INFO, EM_MOD_URR_TDD, MOD_NIL,  SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_TDD_EM_MEME_EVENT_TYPE_3_PARAMETER_INFO_IND)
+//EM_INFO(EM_TDD_MEME_INFO_DCH_3G_BLER_INFO,          EM_MOD_URR_TDD, MOD_NIL, MSG_ID_EM_TDD_MEME_INFO_DCH_3G_BLER_INFO)  // No MGS ID, remove
+EM_INFO(EM_TDD_MEME_INFO_GSM_CELL_INFO,             EM_MOD_URR_TDD, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_TDD_EM_MEME_GSM_NCELL_INFO_IND)   // for CMCC FT Tool
+EM_INFO(EM_TDD_MEME_INFO_LTE_CELL_INFO,             EM_MOD_URR_TDD, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_TDD_EM_MEME_LTE_NCELL_INFO_IND)   // for CMCC FT Tool
+EM_INFO(EM_TDD_MEME_INFO_REPORT_INFO,             EM_MOD_URR_TDD, MOD_NIL,     SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_TDD_EM_MEME_REPORT_INFO_IND)
+
+    /* USIME */
+EM_INFO(USIME_EM_INFO_CAPABILITY,               MOD_URR_FDD, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK,     MSG_ID_FDD_EM_USIME_CAPABILITY_INFO_IND)
+
+    /*CSR*/
+EM_INFO(EM_CSR_STATUS_IND, MOD_CSR_FDD, EM_MOD_CSR_TDD, WCDMA_BITMASK, SINGLE_BITMASK, MSG_ID_EM_CSR_STATUS_IND)
+
+
+    /*UL1*/
+EM_INFO(UL1_EM_HS_DSCH_CONFIGURATION_INFO,  MOD_UL1, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_EM_UL1_HS_DSCH_CONFIG_IND)
+EM_INFO(UL1_EM_EDCH_CONFIGURATION_INFO,     MOD_UL1, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_EM_UL1_EDCH_CONFIG_IND)
+EM_INFO(UL1_EM_CPC_CONFIGURATION_INFO,      MOD_UL1, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_EM_UL1_CPC_CONFIG_IND)
+EM_INFO(UL1_EM_SECONDARY_HS_CONFIGURATION_STATUS_INFO, MOD_UL1, MOD_NIL,    SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_EM_UL1_SEC_HS_DSCH_CONFIG_IND)
+EM_INFO(UL1_EM_PRIMARY_HS_DSCH_BLER_INFO,   MOD_UL1, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_EM_UL1_PRI_HS_DSCH_BLER_IND)
+EM_INFO(UL1_EM_SECONDARY_HS_DSCH_BLER_INFO, MOD_UL1, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_EM_UL1_SEC_HS_DSCH_BLER_IND)
+EM_INFO(UL1_EM_EDCH_ACK_RATE_INFO,          MOD_UL1, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_EM_UL1_EDCH_ACK_RATE_IND)
+EM_INFO(UL1_EM_PRX_DRX_MEASUREMENT_INFO,    MOD_UL1, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_EM_UL1_PRX_DRX_MEASUREMENT_IND)
+EM_INFO(UL1_EM_HSPA_INFO_GROUP,             MOD_UL1, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_EM_UL1_HSPA_INFO_GROUP_IND)
+EM_INFO(UL1_EM_TAS_INFO,                    MOD_UL1, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_EM_UL1_TAS_INFO_IND)
+EM_INFO(UL1_EM_RADIO_LINK_SYNC_STATUS,      MOD_UL1, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK, MSG_ID_EM_UL1_RADIO_LINK_SYNC_STATUS_IND)
+EM_INFO(UL1_EM_UL1_RXD_STATUS,              MOD_UL1, MOD_NIL,   WCDMA_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_EM_UL1_RXD_STATUS_IND)
+EM_INFO(UL1_EM_UL1_RAS_INFO,                MOD_UL1, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_EM_UL1_RAS_INFO_IND)
+EM_INFO(UL1_EM_UL1_UTAS_INFO,               MOD_UL1, MOD_NIL,   WCDMA_BITMASK,      ZERO_BITMASK, MSG_ID_FDD_EM_UL1_UTAS_INFO_IND)
+EM_INFO(UL1_EM_RFPD_AVG_INFO,               MOD_UL1, MOD_NIL,   WCDMA_BITMASK,      ZERO_BITMASK, MSG_ID_FDD_EM_UL1_RFPD_AVG_INFO_IND)
+EM_INFO(UL1_EM_UL1_PAGING_RX_DONE,          MOD_UL1, MOD_NIL,   WCDMA_BITMASK,      ZERO_BITMASK, MSG_ID_FDD_EM_UL1_PAGING_RX_DONE_IND)
+EM_INFO(UL1_EM_UL1_MEAS_DURATION_INFO,      MOD_UL1, MOD_NIL,   WCDMA_BITMASK,      ZERO_BITMASK, MSG_ID_FDD_EM_UL1_MEAS_DURATION_INFO_IND)
+EM_INFO(UL1_EM_FS_UARFCN_INFO,              MOD_UL1, MOD_NIL,   WCDMA_BITMASK,      ZERO_BITMASK, MSG_ID_EM_UL1_FREQ_RAT_INFO_DURING_SEARCH_IND)
+EM_INFO(UL1_EM_FS_BAND_INFO,                MOD_UL1, MOD_NIL,   WCDMA_BITMASK,      ZERO_BITMASK, MSG_ID_EM_UL1_BAND_RAT_INFO_DURING_SEARCH_IND)
+
+    /*UL2*/
+EM_INFO(UL2_EM_WCDMA_RLC_STATS_STRUCT_INFO, MOD_URLC_FDD, MOD_NIL,  WCDMA_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_EM_URLC_STATUS_IND)  // No MGS ID
+EM_INFO(UL2_EM_URLC_LAYER_TPUT_INFO,        MOD_URLC_FDD, MOD_NIL,  WCDMA_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_EM_URLC_LAYER_TPUT_IND)  // No MGS ID
+EM_INFO(UL2_EM_URLC_ATT_RLC_STATISTICS_INFO,        MOD_URLC_FDD, MOD_NIL,  WCDMA_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_EM_URLC_ATT_RLC_STATISTICS_IND)  // No MGS ID
+EM_INFO(UL2_EM_URLC_ATT_RLC_RESET_INFO,             MOD_URLC_FDD, MOD_NIL,  WCDMA_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_EM_URLC_ATT_RLC_RESET_IND)  // No MGS ID
+
+EM_INFO(UL2_EM_ADM_POOL_STATUS_IND_STRUCT_INFO,     EM_MOD_UL2_TDD, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_UL2_ADM_POOL_STATUS_IND)
+EM_INFO(UL2_EM_PS_DATA_RATE_STATUS_IND_STRUCT_INFO, EM_MOD_UL2_TDD, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_UL2_PS_DATA_RATE_STATUS_IND)
+EM_INFO(UL2_EM_HSDSCH_RECONFIG_STATUS_IND_STRUCT_INFO, EM_MOD_UL2_TDD, MOD_NIL,    SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_UL2_HSDSCH_RECONFIG_STATUS_IND)
+EM_INFO(UL2_EM_URLC_EVENT_STATUS_IND_STRUCT_INFO,   EM_MOD_UL2_TDD, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_UL2_URLC_EVENT_STATUS_IND)
+EM_INFO(UL2_EM_3G_BLER_IND_STRUCT_INFO,             EM_MOD_UL2_TDD, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_UL2_3G_BLER_IND)
+EM_INFO(UL2_EM_HSUPA_SI_IND_STRUCT_INFO,            EM_MOD_UL2_TDD, MOD_NIL,   SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_UL2_HSUPA_SI_IND)
+EM_INFO(UL2_EM_UMAC_PCH_CRC_ERR_INFO,			EM_MOD_UL2_TDD, MOD_NIL,	SINGLE_BITMASK, 	ZERO_BITMASK, MSG_ID_TDD_EM_UL2_PCH_CRC_IND)
+
+    /* UMAC */
+EM_INFO(UL2_EM_UMAC_PCH_INFO,                   MOD_UMAC_FDD, MOD_NIL,  WCDMA_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_EM_UMAC_INFO_PCH_IND)
+EM_INFO(UL2_EM_UMAC_DCH_INFO,                   MOD_UMAC_FDD, MOD_NIL,  WCDMA_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_UMAC_EM_INFO_DCH_IND)
+EM_INFO(UL2_EM_UMAC_EDCH_INFO,                  MOD_UMAC_FDD, MOD_NIL,  WCDMA_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_EM_UMAC_INFO_EDCH_IND)
+EM_INFO(UL2_EM_UMAC_HSDSCH_INFO,                MOD_UMAC_FDD, MOD_NIL,  WCDMA_BITMASK,     ZERO_BITMASK, MSG_ID_FDD_EM_UMAC_INFO_HSDSCH_IND)
+EM_INFO(UL2_EM_UMAC_LCHID_TRCH_MAPPING_INFO,    MOD_UMAC_FDD, MOD_NIL,  SINGLE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_UMAC_LCHID_TRCH_MAPPING_INFO_IND)
+#endif
+
+#ifdef __LTE_RAT__
+    /*ERRC*/
+EM_INFO(ERRC_EM_MOB_MEAS_INTRARAT_INFO,         MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_MOB_MEAS_INTRARAT_INFO_IND)
+EM_INFO(ERRC_EM_MOB_MEAS_INTERRAT_UTRAN_INFO,   MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_MOB_MEAS_INTERRAT_UTRAN_INFO_IND)
+EM_INFO(ERRC_EM_MOB_MEAS_INTERRAT_GERAN_INFO,   MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_MOB_MEAS_INTERRAT_GERAN_INFO_IND)
+EM_INFO(ERRC_EM_MOB_MEAS_INTERRAT_C2K_INFO,     MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_MOB_MEAS_INTERRAT_C2K_INFO_IND)
+EM_INFO(ERRC_EM_AUTOS_CSG_INFO,                 MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_AUTOS_CSG_INFO_IND)
+EM_INFO(ERRC_EM_CARRS_EVENT_IND,                MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_CARRS_EVENT_IND)
+EM_INFO(ERRC_EM_SIB_EVENT_IND,                  MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_SIB_EVENT_IND)
+EM_INFO(ERRC_EM_MOB_EVENT_IND,                  MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_MOB_EVENT_IND)
+EM_INFO(ERRC_EM_SEC_PARAM,                      MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_SEC_PARAM_IND)
+EM_INFO(ERRC_EM_REEST_INFO,                     MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_REEST_INFO_IND)
+EM_INFO(ERRC_EM_RECONF_INFO,                    MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_RECONF_INFO_IND)
+EM_INFO(ERRC_EM_RCM_SIM_STS_INFO,               MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_RCM_SIM_STS_INFO_IND)
+EM_INFO(ERRC_EM_SYS_SIB_RX_STS_INFO,            MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_SYS_SIB_RX_STS_INFO_IND)
+EM_INFO(ERRC_EM_ERRC_STATE_IND,                 MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_STATE_IND)
+EM_INFO(ERRC_EM_OVER_PROC_DELAY_WARNING,        MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_OVER_PROC_DELAY_WARNING_IND)
+EM_INFO(ERRC_EM_LTE_SUPPORTED_BAND_INFO,        MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_LTE_SUPPORTED_BAND_INFO_IND)
+EM_INFO(ERRC_EM_ERRC_KPI_INFO,                  MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_SUCCESS_RATE_KPI_IND)
+EM_INFO(ERRC_EM_SERV_IR_NEIGHBOR_INFO,          MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_SERV_IR_NEIGHBOR_INFO_IND)
+EM_INFO(ERRC_EM_IR_REDIR_EVENT,                 MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_IR_REDIR_EVENT_IND)
+EM_INFO(ERRC_EM_IRAT_MEAS_CFG,                  MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_IRAT_MEAS_CFG_IND)
+EM_INFO(ERRC_EM_CONN_INFO,                      MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_CONN_INFO_IND)
+EM_INFO(ERRC_EM_MOB_MEAS_CONFIG_INFO_IND,       MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_MOB_MEAS_CONFIG_INFO_IND)
+EM_INFO(ERRC_EM_MOB_MEAS_REPORT_INFO_IND,       MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_MOB_MEAS_REPORT_INFO_IND)
+EM_INFO(ERRC_EM_LTE_RRC_STATE_IND,              MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_LTE_RRC_STATE_IND)
+EM_INFO(ERRC_EM_SERVING_INFO,                   MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_SERVING_INFO_IND)
+EM_INFO(ERRC_EM_RLF_EVENT,                      MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_RLF_EVENT_IND)
+EM_INFO(ERRC_EM_TIMER_EXPIRY_EVENT,             MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_TIMER_EXPIRY_EVENT_IND)
+EM_INFO(ERRC_EM_PAGING_FAIL,                    MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_PAGING_FAIL_IND)
+EM_INFO(ERRC_EM_FEATURE_DETECTION,              MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_FEATURE_DETECTION_IND)
+EM_INFO(ERRC_EM_HO_EVENT,                       MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_HO_EVENT_IND)
+EM_INFO(ERRC_EM_MFROM_INFO,                     MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_MFROM_INFO_IND)
+EM_INFO(ERRC_EM_SRVCC_BSIC_INFO,                MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_SRVCC_BSIC_INFO_IND)
+EM_INFO(ERRC_EM_CA_INFO,                        MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_CA_INFO_IND)
+EM_INFO(ERRC_EM_ERRC_SYS_MIB_SIB_READEVENT_INFO,   MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_SYS_MIB_SIB_READEVENT_INFO_IND)
+EM_INFO(ERRC_EM_EUTRA_RRC_MESSAGE_S,            MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_EUTRA_RRC_MESSAGE_S_IND)
+EM_INFO(ERRC_EM_EUTRA_RRC_MESSAGE_M,            MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_EUTRA_RRC_MESSAGE_M_IND)
+EM_INFO(ERRC_EM_EUTRA_RRC_MESSAGE_L,            MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_EUTRA_RRC_MESSAGE_L_IND)
+EM_INFO(ERRC_EM_SEARCHING_STATE,                MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_SEARCHING_STATE_IND)
+EM_INFO(ERRC_EM_REEST_BY_L2,                    MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_REEST_BY_L2_IND)
+EM_INFO(ERRC_EM_SRVCC_CELL_INFO,                MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_SRVCC_CELL_INFO_IND)
+EM_INFO(ERRC_EM_SRVCC_HO_FAIL_EVENT,            MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_SRVCC_HO_FAIL_EVENT_IND)
+EM_INFO(ERRC_EM_OOS_EVENT,                      MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_OOS_EVENT_IND)
+EM_INFO(ERRC_EM_CELL_BLACK_LIST_EVENT,          MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_CELL_BLACK_LIST_EVENT_IND)
+EM_INFO(ERRC_EM_EL1_CONFIG_INFO,                MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_EL1_CONFIG_INFO_IND)
+EM_INFO(ERRC_EM_CONNECTTIME_EVENT,              MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_CONNECTTIME_INFO_IND)
+EM_INFO(ERRC_EM_CONNECTFAIL_EVENT,              MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_CONNECTFAIL_INFO_IND)
+EM_INFO(ERRC_EM_INTRALTE_INTERFERENCE_MOD3,     MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_INTRALTE_INTERFERENCE_MOD3_IND)
+EM_INFO(ERRC_EM_BAR_INFO,                    MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_BAR_INFO_IND)
+EM_INFO(ERRC_EM_HO_FAIL_EVENT,               MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_HO_FAIL_EVENT_IND)
+EM_INFO(ERRC_EM_REEST_UL_MAX_RLF_INFO,       MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_REEST_UL_MAX_RLF_INFO_IND)
+EM_INFO(ERRC_EM_REEST_FAIL_TIMER_INFO_IND,   MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_REEST_FAIL_TIMER_INFO_IND)
+EM_INFO(ERRC_EM_BW_MONITORING_INFO,             MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_BW_MONITORING_INFO_IND)
+EM_INFO(ERRC_EM_TRIG_REL_RESULT_IND,          MOD_ERRC, MOD_NIL,   LTE_BITMASK,    ZERO_BITMASK, MSG_ID_EM_ERRC_TRIG_REL_RESULT_IND)
+EM_INFO(ERRC_EM_CEL_SNIFFER_IND,				MOD_ERRC, MOD_NIL,	LTE_BITMASK,	 ZERO_BITMASK, MSG_ID_EM_ERRC_CEL_SNIFFER_IND)
+EM_INFO(ERRC_EM_DATA_INACT_TIMER_EXP_INFO,             MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_DATA_INACT_TIMER_EXP_INFO_IND)
+EM_INFO(ERRC_EM_MOB_INTRARAT_MEAS_CONFIG_INFO_IND,	MOD_ERRC, MOD_NIL,	LTE_BITMASK,	 ZERO_BITMASK, MSG_ID_EM_ERRC_MOB_INTRARAT_MEAS_CONFIG_INFO_IND)
+EM_INFO(ERRC_EM_MOB_B2_MEAS_CONFIG_INFO_IND,	MOD_ERRC, MOD_NIL,	LTE_BITMASK,	 ZERO_BITMASK, MSG_ID_EM_ERRC_MOB_B2_MEAS_CONFIG_INFO_IND)
+EM_INFO(ERRC_EM_OOS_SEARCH_IND,                 MOD_ERRC, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ERRC_OOS_SEARCH_IND)
+
+
+    /*EL2EM*/
+EM_INFO(EM_EL2_OV_STATUS,         MOD_EL2EM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EL2_OV_STATUS_IND)
+EM_INFO(EM_EL2_PUB_STATUS,        MOD_EL2EM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EL2_PUB_STATUS_IND)
+EM_INFO(EM_EL2_FEATURE_DETECTION, MOD_EL2EM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EL2_FEATURE_DETECTION_IND)
+EM_INFO(EM_EMAC_RACH_TRIGGER,     MOD_EL2EM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMAC_RACH_TRIGGER_IND)
+EM_INFO(EM_EMAC_RACH_FINISH,      MOD_EL2EM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMAC_RACH_FINISH_IND)
+EM_INFO(EM_EMAC_MSG2_REPORT,      MOD_EL2EM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMAC_MSG2_REPORT_IND)
+EM_INFO(EM_EMAC_MSG4_REPORT,      MOD_EL2EM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMAC_MSG4_REPORT_IND)
+EM_INFO(EM_EMAC_OV_STATUS_500,    MOD_EL2EM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMAC_OV_STATUS_500_IND)
+EM_INFO(EM_EMAC_TIMER_EXPIRE,     MOD_EL2EM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMAC_TIMER_EXPIRE_IND)
+EM_INFO(EM_EMAC_CONFIG_REPORT,    MOD_EL2EM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMAC_CONFIG_REPORT_IND)
+EM_INFO(EM_EMAC_RACH_SUCCESS,     MOD_EL2EM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMAC_RACH_SUCCESS_IND)
+EM_INFO(EM_EMAC_RACH_FAILURE,     MOD_EL2EM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMAC_RACH_FAILURE_IND)
+EM_INFO(EM_EMAC_EMBMS_REPORT,     MOD_EL2EM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMAC_EMBMS_REPORT_IND)
+EM_INFO(EM_EMAC_DL_TBS_REPORT,    MOD_EL2EM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMAC_DL_TBS_REPORT_IND)
+EM_INFO(EM_EPDCP_DATA_INACTV_IND, MOD_EL2EM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EPDCP_DATA_INACTV_IND)
+EM_INFO(EM_EPDCP_TMOUT_DISC,      MOD_EL2EM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EPDCP_TMOUT_DISC_IND)
+EM_INFO(EM_EPDCP_OOB_DISC,        MOD_EL2EM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EPDCP_OOB_DISC_IND)
+EM_INFO(EM_EMAC_NO_SLEEP,         MOD_EL2EM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMAC_NO_SLEEP_IND)
+
+
+    /*EL1*/
+EM_INFO(EM_EL1_OV_STATUS,         MOD_EL1,   MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EL1_OV_STATUS_IND)
+EM_INFO(EM_EL1_B3B39_INFO,        MOD_EL1,   MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_B3B39_OV_STATUS_IND)
+
+    /*EL1TX*/
+EM_INFO(EM_EL1_INFO,            MOD_EL1, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_IND)
+
+    /*EL1 MDMI*/
+EM_INFO(EM_EL1_STATUS_CSR_RPT_INFO, 	   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_CSR_RPT_IND)
+EM_INFO(EM_EL1_STATUS_SRV_MEAS_RPT_INFO,   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_SRV_MEAS_RPT_IND)
+EM_INFO(EM_EL1_STATUS_PBCH_RPT_INFO,	   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_PBCH_RPT_IND)
+EM_INFO(EM_EL1_STATUS_PCFICH_RPT_INFO,	   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_PCFICH_RPT_IND)
+EM_INFO(EM_EL1_STATUS_PDCCH_RPT_INFO,	   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_PDCCH_RPT_IND)
+EM_INFO(EM_EL1_STATUS_PDSCH_RPT_INFO,	   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_PDSCH_RPT_IND)
+EM_INFO(EM_EL1_STATUS_PHICH_RPT_INFO,	   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_PHICH_RPT_IND)
+EM_INFO(EM_EL1_STATUS_PMCH_RPT_INFO,	   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_PMCH_RPT_IND)
+EM_INFO(EM_EL1_STATUS_DCI_RPT_INFO, 	   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_DCI_RPT_IND)
+EM_INFO(EM_EL1_STATUS_PUCCH_RPT_INFO,	   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_PUCCH_RPT_IND)
+EM_INFO(EM_EL1_STATUS_PUCCH_CSI_RPT_INFO,  MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_PUCCH_CSI_RPT_IND)
+EM_INFO(EM_EL1_STATUS_PUSCH_RPT_INFO,	   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_PUSCH_RPT_IND)
+EM_INFO(EM_EL1_STATUS_PUSCH_CSI_RPT_INFO,  MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_PUSCH_CSI_RPT_IND)
+EM_INFO(EM_EL1_STATUS_SRS_RPT_INFO, 	   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_SRS_RPT_IND)
+EM_INFO(EM_EL1_STATUS_CELLTIME_RPT_INFO,   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_CELLTIME_RPT_IND)
+EM_INFO(EM_EL1_STATUS_SR_CFG_INFO,		   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_SR_CFG_IND)
+EM_INFO(EM_EL1_STATUS_PRACH_INFO,		   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_PRACH_IND)
+EM_INFO(EM_EL1_STATUS_RACH_INFO,		   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_RACH_IND)
+EM_INFO(EM_EL1_STATUS_PCH_INFO, 		   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_PCH_IND)
+EM_INFO(EM_EL1_STATUS_TA_INFO,			   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_TA_IND)
+EM_INFO(EM_EL1_STATUS_PHR_INFO, 		   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_PHR_IND)
+EM_INFO(EM_EL1_STATUS_DL_TPUT_INFO, 	   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_DL_TPUT_IND)
+EM_INFO(EM_EL1_STATUS_UL_TPUT_INFO, 	   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_UL_TPUT_IND)
+EM_INFO(EM_EL1_STATUS_PDSCH_INFO,          MOD_EL1, MOD_NIL,   LTE_BITMASK,    ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_PDSCH_IND)
+EM_INFO(EM_EL1_DR_STATUS_INFO, 			   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_DR_STATUS_IND)
+
+	/*EL1 CIQ*/
+EM_INFO(EM_EL1_CIQ_RLF_STATUS_INFO, 	   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_CIQ_RLF_STATUS_IND)
+EM_INFO(EM_EL1_CIQ_PUSCH_INFO,			   MOD_EL1, MOD_NIL,   LTE_BITMASK,	   ZERO_BITMASK, MSG_ID_EM_EL1_CIQ_PUSCH_IND)
+EM_INFO(EM_EL1_STATUS_CSR_INFO,            MOD_EL1, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EL1_STATUS_CSR_IND)
+    /*EMM*/
+EM_INFO(EMM_EM_SEC_INFO,        MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_SEC_INFO_IND)
+EM_INFO(EMM_EM_PLMNSEL_INFO,    MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_PLMNSEL_INFO_IND)
+EM_INFO(EMM_EM_CONN_INFO,       MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_CONN_INFO_IND)
+EM_INFO(EMM_EM_NASMSG_INFO,     MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_NASMSG_INFO_IND)
+EM_INFO(EMM_EM_CALL_INFO,       MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_CALL_INFO_IND)
+EM_INFO(EMM_EM_REG_ATTACH_INFO, MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_REG_ATTACH_INFO_IND)
+EM_INFO(EMM_EM_REG_DETACH_INFO, MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_REG_DETACH_INFO_IND)
+EM_INFO(EMM_EM_REG_TAU_INFO,    MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_REG_TAU_INFO_IND)
+EM_INFO(EMM_EM_REG_COMMON_INFO, MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_REG_COMMON_INFO_IND)
+EM_INFO(EMM_EM_SV_INFO,         MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_SV_INFO_IND)
+EM_INFO(EMM_EM_RATBAND_INFO,    MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_RATBAND_INFO_IND)
+EM_INFO(EMM_EM_TIMERSRV_INFO,   MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_TIMERMNG_INFO_IND)
+EM_INFO(EMM_EM_USIMSRV_INFO,    MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_USIMSRV_INFO_IND)
+EM_INFO(EMM_EM_NVMSRV_INFO,     MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_NVMSRV_INFO_IND)
+EM_INFO(EMM_L4C_EMM_INFO,       MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_L4C_EMM_INFO_IND)  //report when em_src is RMMI
+EM_INFO(EMM_L4C_LAI_CHANGE_INFO,MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_L4C_LAI_CHANGE_INFO_IND)  //report when em_src is RMMI
+EM_INFO(EMM_L4C_CALL_INFO,      MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_L4C_CALL_INFO_IND)
+EM_INFO(EMM_EM_REG_EVENT_INFO,  MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_REG_EVENT_INFO_IND)
+EM_INFO(EMM_EM_TIMERSRV_TIMER_START_INFO,  MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_TIMERMNG_TIMER_START_INFO_IND)
+EM_INFO(EMM_EM_EMM_STATE_INFO,  MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_STATE_INFO_IND)
+EM_INFO(EMM_EM_SEC_EVENT_INFO,  MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_SEC_EVENT_INFO_IND)
+EM_INFO(EMM_L4C_CSFB_INFO,      MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_L4C_CSFB_INFO_IND)  //report when em_src is RMMI
+EM_INFO(EMM_EM_CALL_EVENT_INFO, MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_CALL_EVENT_INFO_IND)
+EM_INFO(EMM_EM_EMM_CAUSE_INFO,  MOD_EMM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_EMM_CAUSE_INFO_IND) 
+
+    /*ESM*/
+EM_INFO(ESM_ESM_INFO,           MOD_ESM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ESM_ESM_INFO_IND)
+EM_INFO(ESM_L4C_ESM_INFO,       MOD_ESM, MOD_NIL,   LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_ESM_L4C_ESM_INFO_IND)  // No MGS ID
+#endif
+
+#ifdef __UMTS_TDD128_MODE__
+EM_INFO(TDD_EM_L1_TAS_INFO, MOD_TL1, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_TDD_L1_TAS_INFO_IND)
+#endif
+
+    /*UPCM*/
+EM_INFO(EM_QBM_STATUS,          MOD_UPCM, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_QBM_STATUS_IND)
+EM_INFO(EM_UPCM_STATUS,         MOD_UPCM, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_UPCM_STATUS_IND)
+EM_INFO(EM_UPCM_PS_TPUT_INFO,   MOD_UPCM, MOD_NIL,  LTE_BITMASK,     ZERO_BITMASK, MSG_ID_EM_UPCM_PS_TPUT_INFO_IND)
+
+    /*RAC*/
+EM_INFO(RAC_EM_INFO,     MOD_RAC, MOD_NIL,   GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_RAC_INFO_IND)
+EM_INFO(EM_ABNORMAL_EVENT_RAC_NO_SERVICE,     MOD_RAC, MOD_NIL,   GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_RAC_ABNORMAL_EVENT_NO_SERVICE_IND)
+EM_INFO(RAC_EM_NETWORK_TYPE_INFO,     MOD_RAC, MOD_NIL,   GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_RAC_NETWORK_TYPE_INFO_IND)
+EM_INFO(RAC_EM_REG_STATE_INFO,     MOD_RAC, MOD_NIL,   GEMINI_BITMASK,     ZERO_BITMASK, MSG_ID_EM_RAC_REG_STATE_INFO_IND)
+
+    /*IPCORE*/
+EM_INFO(IPC_EM_UL_THROTTLE_STATUS, MOD_IPCORE, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_IPC_UL_THROTTLE_STATUS_IND)
+
+    /*RATCM*/
+EM_INFO(RATCM_EM_23G_RAT_CHANGE_IND, MOD_RATCM, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_RATCM_23G_RAT_CHANGE_IND)  // No MGS ID
+
+
+    /*For msg mapping*/
+EM_INFO(ERRC_EM_ERRC_CONFIG_INFO, MOD_NIL, MOD_NIL, ZERO_BITMASK, ZERO_BITMASK, MSG_ID_EM_ERRC_CONFIG_INFO_IND)
+
+    /* VDM */
+EM_INFO(EM_VDM_CALL_INFO_IND, MOD_VDM, MOD_NIL, LTE_BITMASK, ZERO_BITMASK, MSG_ID_EM_VDM_CALL_INFO_IND)
+
+EM_INFO(EM_VDM_SSAC_INFO_IND, MOD_VDM, MOD_NIL, LTE_BITMASK, ZERO_BITMASK, MSG_ID_EM_VDM_SSAC_INFO_IND)
+
+#ifndef __MULTIPLE_IMS_SUPPORT__
+#ifdef __IMS_SUPPORT__
+    /* Call Information */
+EM_INFO(EM_CALL_INFO_IND, MOD_IMC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_CALL_INFO_IND)
+    /* SIP Information */
+EM_INFO(EM_IMC_SIP_INFO_IND, MOD_IMC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_SIP_INFO_IND)
+
+    /* IMS EM Information*/
+EM_INFO(IMC_EM_IMC_INFO_IND, MOD_IMC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_IMC_INFO_IND)
+EM_INFO(IMC_EM_BEARER_INFO_IND, MOD_IMC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_BEARER_INFO_IND)
+EM_INFO(IMC_EM_REG_INFO_IND, MOD_IMC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_REG_INFO_IND)
+EM_INFO(IMC_EM_SMS_INFO_IND, MOD_IMC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_SMS_INFO_IND)
+EM_INFO(IMC_EM_CALL_INFO_IND, MOD_IMC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_CALL_INFO_IND)
+EM_INFO(IMC_EM_CONF_INFO_IND, MOD_IMC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_CONF_INFO_IND)
+EM_INFO(IMC_EM_SRVCC_INFO_IND, MOD_IMC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_SRVCC_INFO_IND)
+EM_INFO(IMC_EM_PCSCF_INFO_IND, MOD_IMC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_PCSCF_INFO_IND)
+EM_INFO(IMC_EM_MEDIA_INFO_IND, MOD_IMC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_MEDIA_INFO_IND)
+EM_INFO(IMC_EM_REG_ABNORMAL_IND, MOD_IMC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_REG_ABNORMAL_IND)
+EM_INFO(IMC_EM_CALL_DROP_IND, MOD_IMC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_CALL_DROP_IND)
+EM_INFO(IMC_EM_IMS_EVENT_INFO_IND, MOD_IMC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_IMS_EVENT_INFO_IND)
+EM_INFO(IMC_EM_CALL_380_DROP_IND, MOD_IMC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_CALL_380_DROP_IND)
+EM_INFO(IMC_EM_TIMER_INFO_IND, MOD_IMC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_TIMER_INFO_IND)
+
+    /* IMC */
+EM_INFO(IMC_EM_IPSEC_INFO_IND, MOD_IMC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_IPSEC_INFO_FLUSH_IND)
+EM_INFO(IMC_EM_IPSEC_INFO_IND, MOD_IMC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_IPSEC_INFO_ADD_IND)
+EM_INFO(IMC_EM_IPSEC_INFO_IND, MOD_IMC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_IPSEC_INFO_DELETE_IND)
+#endif /* __IMS_SUPPORT__ */
+#else
+#ifdef __IMS_SUPPORT__
+    /* Call Information */
+EM_INFO(EM_CALL_INFO_IND, MOD_IMC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_CALL_INFO_IND)
+    /* SIP Information */
+EM_INFO(EM_IMC_SIP_INFO_IND, MOD_IMC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_SIP_INFO_IND)
+
+    /* IMS EM Information*/
+EM_INFO(IMC_EM_IMC_INFO_IND, MOD_IMC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_IMC_INFO_IND)
+EM_INFO(IMC_EM_BEARER_INFO_IND, MOD_IMC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_BEARER_INFO_IND)
+EM_INFO(IMC_EM_REG_INFO_IND, MOD_IMC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_REG_INFO_IND)
+EM_INFO(IMC_EM_SMS_INFO_IND, MOD_IMC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_SMS_INFO_IND)
+EM_INFO(IMC_EM_CALL_INFO_IND, MOD_IMC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_CALL_INFO_IND)
+EM_INFO(IMC_EM_CONF_INFO_IND, MOD_IMC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_CONF_INFO_IND)
+EM_INFO(IMC_EM_SRVCC_INFO_IND, MOD_IMC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_SRVCC_INFO_IND)
+EM_INFO(IMC_EM_PCSCF_INFO_IND, MOD_IMC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_PCSCF_INFO_IND)
+EM_INFO(IMC_EM_MEDIA_INFO_IND, MOD_IMC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_MEDIA_INFO_IND)
+EM_INFO(IMC_EM_REG_ABNORMAL_IND, MOD_IMC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_REG_ABNORMAL_IND)
+EM_INFO(IMC_EM_CALL_DROP_IND, MOD_IMC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_CALL_DROP_IND)
+EM_INFO(IMC_EM_IMS_EVENT_INFO_IND, MOD_IMC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_IMS_EVENT_INFO_IND)
+EM_INFO(IMC_EM_CALL_380_DROP_IND, MOD_IMC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_CALL_380_DROP_IND)
+EM_INFO(IMC_EM_TIMER_INFO_IND, MOD_IMC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_TIMER_INFO_IND)
+
+    /* IMC */
+EM_INFO(IMC_EM_IPSEC_INFO_IND, MOD_IMC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_IPSEC_INFO_FLUSH_IND)
+EM_INFO(IMC_EM_IPSEC_INFO_IND, MOD_IMC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_IPSEC_INFO_ADD_IND)
+EM_INFO(IMC_EM_IPSEC_INFO_IND, MOD_IMC, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMC_IPSEC_INFO_DELETE_IND)
+#endif /* __IMS_SUPPORT__ */
+#endif /* __MULTIPLE_IMS_SUPPORT__ */
+
+
+    /* LTECSR */
+#ifdef __IMS_SUPPORT__
+EM_INFO(LTECSR_EM_RTP_CODEC,                    MOD_LTECSR, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LTECSR_RTP_CODEC_IND)
+EM_INFO(LTECSR_EM_RTP_PACKET_LOSS,              MOD_LTECSR, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LTECSR_RTP_PACKET_LOSS_IND)
+EM_INFO(LTECSR_EM_RTP_ONE_WAY_DELAY,            MOD_LTECSR, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LTECSR_RTP_ONE_WAY_DELAY_IND)
+EM_INFO(LTECSR_EM_RTP_JITTER,                   MOD_LTECSR, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LTECSR_RTP_JITTER_IND)
+EM_INFO(LTECSR_EM_RTP_JITTER_BUFFER_DELAY,      MOD_LTECSR, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LTECSR_RTP_JITTER_BUFFER_DELAY_IND)
+EM_INFO(LTECSR_EM_RTP_OTA_MSG,                  MOD_LTECSR, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LTECSR_RTP_OTA_MSG_IND)
+EM_INFO(LTECSR_EM_SESSION_STAT,                 MOD_LTECSR, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LTECSR_SESSION_STAT_IND)
+EM_INFO(LTECSR_EM_XMIT_PKT,                     MOD_LTECSR, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LTECSR_XMIT_PKT_IND)
+EM_INFO(LTECSR_EM_RECV_PKT,                     MOD_LTECSR, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LTECSR_RECV_PKT_IND)
+EM_INFO(LTECSR_EM_XMIT_STAT,                    MOD_LTECSR, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LTECSR_XMIT_STAT_IND)
+EM_INFO(LTECSR_EM_RECV_STAT,                    MOD_LTECSR, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LTECSR_RECV_STAT_IND)
+EM_INFO(LTECSR_EM_RTP_INFO,                     MOD_LTECSR, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LTECSR_RTP_INFO_IND)
+EM_INFO(LTECSR_EM_RTCP_INFO,                    MOD_LTECSR, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LTECSR_RTCP_INFO_IND)
+EM_INFO(LTECSR_EM_RTP_EVENT,                    MOD_LTECSR, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LTECSR_RTP_EVENT_IND)
+EM_INFO(LTECSR_EM_RTP_PERIODIC_RPT,             MOD_LTECSR, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LTECSR_RTP_PERIODIC_RPT_IND)
+EM_INFO(LTECSR_EM_RTP_PERIODIC_RPT_CUSTOMER,    MOD_LTECSR, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LTECSR_RTP_PERIODIC_RPT_CUSTOMER_IND)
+#endif
+
+EM_INFO(LPP_EM_MSG_STATUS_STATISTICS, MOD_LPP, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LPP_MSG_STATUS_STATISTICS_IND)
+EM_INFO(LPP_EM_MSG_INFO, MOD_LPP, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LPP_MSG_INFO_IND)
+
+#ifdef __IMSM_TASK_ENABLE__
+EM_INFO(EM_IMSM_IMS_PDN_FAIL_CAUSE,              MOD_IMSM, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMS_PDN_FAIL_CAUSE_EVENT_IND)
+EM_INFO(EM_IMSM_IMS_PDN_APN,              MOD_IMSM, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMS_PDN_APN_EVENT_IND)
+EM_INFO(EM_IMSM_IMS_NW_DEACT, MOD_IMSM, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_IMS_NW_DEACT_IND)
+#endif
+
+EM_INFO(MMRF_EM_MIPI_HW_INFO, MOD_MMRF, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_MMRF_MIPI_HW_INFO_IND)
+    /* L4C */
+EM_INFO(EM_L4C_RAT_CHANGE_IND, MOD_NIL, MOD_NIL, ZERO_BITMASK, ZERO_BITMASK, MSG_ID_EM_L4C_RAT_CHANGE_IND)
+
+EM_INFO(EM_SPEECH_INFO_SPH_CODEC, MOD_MED, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_SPEECH_INFO_SPH_CODEC_IND)
+EM_INFO(EM_SPEECH_INFO_VOICE_QUALITY_EVENT, MOD_MED, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_SPEECH_INFO_VOICE_QUALITY_EVENT_IND)
+
+EM_INFO(EM_L4C_MD_EVENT_INFO, MOD_L4C, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_L4C_MD_EVENT_IND)
+
+    /* L4C */
+EM_INFO(EM_L4C_MDMI_RAT_INFO_IND, MOD_NIL, MOD_NIL, ZERO_BITMASK, ZERO_BITMASK, MSG_ID_EM_L4C_MDMI_RAT_INFO_IND)
+
+    /* L4C */
+EM_INFO(EM_L4C_ECSQ_IND, MOD_NIL, MOD_NIL, ZERO_BITMASK, ZERO_BITMASK, MSG_ID_EM_L4C_ECSQ_IND)
+
+EM_INFO(EM_L4APS_CID_MAPPING_INFO, MOD_L4APS, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_L4APS_CID_MAPPING_INFO_IND)
+
+#ifdef __CDMA2000_RAT__
+
+    /* C2K EVDO L1 */
+EM_INFO(EM_EVL1_GENERAL_INFO, MOD_CL1TST, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL1_GENERAL_INFO_IND)
+EM_INFO(EM_EVL1_TXAGC_POWER_INFO, MOD_CL1TST, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL1_TXAGC_POWER_INFO_IND)
+EM_INFO(EM_EVL1_CELL_SWITCH_INFO, MOD_CL1TST, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL1_CELL_SWITCH_INFO_IND)
+EM_INFO(EM_EVL1_RXAGC_INFO, MOD_CL1TST, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL1_RXAGC_INFO_IND)
+EM_INFO(EM_EVL1_AFC_INFO, MOD_CL1TST, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL1_AFC_INFO_IND)
+EM_INFO(EM_EVL1_MBP_SECTOR_INFO, MOD_CL1TST, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL1_MBP_SECTOR_INFO_IND)
+EM_INFO(EM_EVL1_FMP_FINGER_INFO, MOD_CL1TST, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL1_FMP_FINGER_INFO_IND)
+EM_INFO(EM_EVL1_TIMING_TRACK_STATUS, MOD_CL1TST, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL1_TIMING_TRACK_STATUS_IND)
+EM_INFO(EM_EVL1_SCH_STATUS, MOD_CL1TST, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL1_SCH_STATUS_IND)
+EM_INFO(EM_EVL1_ACC_DATA_RATE_INFO, MOD_CL1TST, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL1_ACC_DATA_RATE_INFO_IND)
+EM_INFO(EM_EVL1_TRAFFIC_RRI_VALUE_INFO, MOD_CL1TST, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL1_TRAFFIC_RRI_VALUE_INFO_IND)
+EM_INFO(EM_EVL1_FMP_SECTOR_INFO, MOD_CL1TST, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL1_FMP_SECTOR_INFO_IND)
+EM_INFO(EM_EVL1_SCH_PILOT_UPDATE_INFO, MOD_CL1TST, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL1_SCH_PILOT_UPDATE_INFO_IND)
+EM_INFO(EM_EVL1_SCH_RESULT_INFO, MOD_CL1TST, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL1_SCH_RESULT_INFO_IND)
+EM_INFO(EM_EVL1_RFPD_INFO, MOD_CL1TST, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL1_RFPD_INFO_IND)
+
+    /* C2K 1xRTT L1 */
+EM_INFO(EM_XL1_TX_PATH_INFO, MOD_L1D_MDM, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL1_TX_PATH_INFO_IND)
+EM_INFO(EM_XL1_TX_AGC_INFO, MOD_L1D_MDM, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL1_TX_AGC_INFO_IND)
+EM_INFO(EM_XL1_AFC_INFO, MOD_L1D_MDM, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL1_AFC_INFO_IND)
+EM_INFO(EM_XL1_STATUS_INFO, MOD_L1D_MDM, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL1_STATUS_INFO_IND)
+EM_INFO(EM_XL1_MEAS_INFO, MOD_L1D_MDM, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL1_MEAS_INFO_IND)
+EM_INFO(EM_XL1_MAIN_RXAGC_INFO, MOD_L1D_MDM, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL1_MAIN_RXAGC_INFO_IND)
+EM_INFO(EM_XL1_DIV_RXAGC_INFO, MOD_L1D_MDM, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL1_DIV_RXAGC_INFO_IND)
+EM_INFO(EM_XL1_RAKE_INFO, MOD_L1D_MDM, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL1_RAKE_INFO_IND)
+EM_INFO(EM_XL1_CRC_INFO, MOD_L1D_MDM, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL1_CRC_INFO_IND)
+EM_INFO(EM_XL1_MMAFC_INIT_FOE_INFO, MOD_L1D_MDM, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL1_MMAFC_INIT_FOE_INFO_IND)
+EM_INFO(EM_XL1_TAS_INFO, MOD_L1D_MDM, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL1_TAS_INFO_IND)
+EM_INFO(EM_XL1_TIMING_LOOP_INFO, MOD_L1D_MDM, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL1_TIMING_LOOP_INFO_IND)
+EM_INFO(EM_XL1_UTAS_INFO, MOD_L1D_MDM, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL1_UTAS_INFO_IND)
+EM_INFO(EM_XL1_RFPD_INFO, MOD_L1D_MDM, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL1_RFPD_INFO_IND)
+
+    /* C2K HSC */
+EM_INFO(EM_C2K_RTBA_CHANNEL_STATUS_INFO, MOD_CHSC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_RTBA_CHANNEL_STATUS_INFO_IND)
+EM_INFO(EM_C2K_DO_SPAGE_STATE_INFO, MOD_CHSC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_DO_SPAGE_STATE_INFO_IND)
+EM_INFO(EM_C2K_HSC_MPA_STATUS_INFO, MOD_CHSC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_HSC_MPA_STATUS_INFO_IND)
+EM_INFO(EM_C2K_LL1A_STATE_MODE_INFO, MOD_CHSC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_LL1A_STATE_MODE_INFO_IND)
+EM_INFO(EM_C2K_LL1A_STANDBY_GAP_INFO, MOD_CHSC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_LL1A_STANDBY_GAP_INFO_IND)
+EM_INFO(EM_C2K_LL1A_ACTIVE_GAP_INFO, MOD_CHSC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_LL1A_ACTIVE_GAP_INFO_IND)
+
+    /* C2K 1xRTT L3 */
+EM_INFO(EM_XL3_CP_STATUS, MOD_CPSW, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL3_CP_STATUS_IND)
+EM_INFO(EM_XL3_SLOTTED_MODE_INFO, MOD_CPSW, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL3_SLOTTED_MODE_INFO_IND)
+EM_INFO(EM_1XRTT_CALL_EVENTS, MOD_CPSW, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_1XRTT_CALL_EVENTS_IND)
+EM_INFO(EM_C2K_RSVAS_INFO, MOD_CPSW, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_RSVAS_INFO_IND)
+EM_INFO(EM_XL3_CP_EVENTS, MOD_CPSW, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL3_CP_EVENTS_IND)
+EM_INFO(EM_XL3_PAGING_INFO, MOD_CPSW, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL3_PAGING_INFO_IND)
+EM_INFO(EM_XL3_SET_INFO, MOD_CPSW, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL3_SET_INFO_IND)
+EM_INFO(EM_XL3_SYSTEM_SEARCH_INFO, MOD_CPSW, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL3_SYSTEM_SEARCH_INFO_IND)
+EM_INFO(EM_XL3_CALL_FAIL_REASON, MOD_CPSW, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL3_CALL_FAIL_REASON_IND)
+
+    /* C2K EVDO L3 */
+EM_INFO(EM_EVL3_STATE, MOD_EVCLC, MOD_NIL, SINGLE_BITMASK, SINGLE_BITMASK, MSG_ID_EM_EVL3_STATE_IND)
+EM_INFO(EM_EVL3_SERVING_CELL_INFO, MOD_EVCLC, MOD_NIL, SINGLE_BITMASK, SINGLE_BITMASK,MSG_ID_EM_EVL3_SERVING_CELL_INFO_IND)
+EM_INFO(EM_EVL3_SLOTTED_MODE_INFO, MOD_EVCLC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK,MSG_ID_EM_EVL3_SLOTTED_MODE_INFO_IND)
+EM_INFO(EM_EVL3_ACCESS_PROCEDURE_INFO, MOD_EVCLC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK,MSG_ID_EM_EVL3_ACCESS_PROCEDURE_INFO_IND)
+EM_INFO(EM_EVL3_CP_EVENTS, MOD_EVCLC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL3_CP_EVENTS_IND)
+EM_INFO(EM_EVL3_SYSTEM_SEARCH_INFO, MOD_EVCLC, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL3_SYSTEM_SEARCH_INFO_IND)
+
+    /* C2K EVDO L2 */
+EM_INFO(EM_EVL2_FWD_CHANNEL_INFO, MOD_EVFCP, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL2_FWD_CHANNEL_INFO_IND)
+EM_INFO(EM_EVL2_REV_TRAFFIC_INFO, MOD_EVRCP, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL2_REV_TRAFFIC_INFO_IND)
+EM_INFO(EM_EVL2_ACCESS_STATE_INFO, MOD_EVRCP, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL2_ACCESS_STATE_INFO_IND)
+EM_INFO(EM_EVL2_RTM3_T2P_INFO, MOD_EVRCP, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_EVL2_RTM3_T2P_INFO_IND)
+
+    /* C2K 1xRTT L2 */
+EM_INFO(EM_XL2_REV_STATE, MOD_LMD, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL2_REV_STATE_IND)
+EM_INFO(EM_XL2_ACH_PROBE_INFO, MOD_CPSW, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL2_ACH_PROBE_INFO_IND)
+EM_INFO(EM_XL2_VOICE_RATE_INFO, MOD_LMD, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL2_VOICE_RATE_INFO_IND)
+EM_INFO(EM_XL2_RLP_INFO, MOD_XRLP, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL2_RLP_INFO_IND)
+EM_INFO(EM_XL2_PS_RATE_INFO, MOD_LMD, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XL2_PS_RATE_INFO_IND)
+EM_INFO(EM_XL2_SCH_ASSIGNED_RATE, MOD_LMD, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK,MSG_ID_EM_XL2_SCH_ASSIGNED_RATE_IND)
+
+
+    /* C2K HLP */
+EM_INFO(EM_C2K_HLP_TIMER_STATUS, MOD_CHLP, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_HLP_TIMER_STATUS_IND)
+EM_INFO(EM_C2K_HLP_CAM_STATE, MOD_CHLP, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_HLP_CAM_STATE_IND)
+EM_INFO(EM_C2K_HLP_NSPE_STATE, MOD_CHLP, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_HLP_NSPE_STATE_IND)
+EM_INFO(EM_C2K_HLP_PDN_STATUS, MOD_CHLP, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_HLP_PDN_STATUS_IND)
+EM_INFO(EM_C2K_HLP_PPPHA_STATUS, MOD_CHLP, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_HLP_PPPHA_STATUS_IND)
+EM_INFO(EM_C2K_HLP_PPP_STATUS, MOD_CHLP, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_HLP_PPP_STATUS_IND)
+EM_INFO(EM_C2K_HLP_RM_BUFQ_INFO, MOD_CHLP, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_HLP_RM_BUFQ_INFO_IND)
+EM_INFO(EM_C2K_HLP_UM_BUFQ_INFO, MOD_CHLP, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_HLP_UM_BUFQ_INFO_IND)
+EM_INFO(EM_C2K_HLP_PACKET_INFO, MOD_CHLP, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_HLP_PACKET_INFO_IND)
+EM_INFO(EM_C2K_HLP_ABNORMAL_EVENT_INFO, MOD_CHLP, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_HLP_ABNORMAL_EVENT_INFO_IND)
+
+/* C2K L4(CVAL) */
+EM_INFO(EM_C2K_L4_RTT_RADIO_INFO, MOD_CVAL, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_L4_RTT_RADIO_INFO_IND)
+EM_INFO(EM_C2K_L4_RTT_INFO, MOD_CVAL, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_L4_RTT_INFO_IND)
+EM_INFO(EM_C2K_L4_RTT_SCH_INFO, MOD_CVAL, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_L4_RTT_SCH_INFO_IND)
+EM_INFO(EM_C2K_L4_RTT_STAT_INFO, MOD_CVAL, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_L4_RTT_STAT_INFO_IND)
+EM_INFO(EM_C2K_L4_RTT_SERVING_NEIGHBR_SET_INFO, MOD_CVAL, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_L4_RTT_SERVING_NEIGHBR_SET_INFO_IND)
+EM_INFO(EM_C2K_L4_EVDO_SERVING_INFO, MOD_CVAL, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_L4_EVDO_SERVING_INFO_IND)
+EM_INFO(EM_C2K_L4_EVDO_ACTIVE_SET_INFO, MOD_CVAL, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_L4_EVDO_ACTIVE_SET_INFO_IND)
+EM_INFO(EM_C2K_L4_EVDO_CAND_SET_INFO, MOD_CVAL, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_L4_EVDO_CAND_SET_INFO_IND)
+EM_INFO(EM_C2K_L4_EVDO_NGHDR_SET_INFO, MOD_CVAL, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_L4_EVDO_NGHDR_SET_INFO_IND)
+EM_INFO(EM_C2K_L4_EVDO_FL_INFO, MOD_CVAL, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_L4_EVDO_FL_INFO_IND)
+EM_INFO(EM_C2K_L4_EVDO_RL_INFO, MOD_CVAL, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_L4_EVDO_RL_INFO_IND)
+EM_INFO(EM_C2K_L4_EVDO_STATE_INFO, MOD_CVAL, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_L4_EVDO_STATE_INFO_IND)
+EM_INFO(EM_C2K_L4_SPRINT_XRTT_INFO, MOD_CVAL, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_L4_SPRINT_XRTT_INFO_IND)
+EM_INFO(EM_C2K_L4_SPRINT_EVDO_INFO, MOD_CVAL, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_L4_SPRINT_EVDO_INFO_IND)
+EM_INFO(EM_C2K_XCAL_OTA_FDSCH_INFO, MOD_CVAL, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_XCAL_OTA_FDSCH_INFO_IND)
+EM_INFO(EM_C2K_XCAL_OTA_RDSCH_INFO, MOD_CVAL, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_XCAL_OTA_RDSCH_INFO_IND)
+EM_INFO(EM_C2K_XCAL_OTA_EVENT_INFO, MOD_CVAL, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_XCAL_OTA_EVENT_INFO_IND)
+EM_INFO(EM_C2K_RAT_CHANGE_INFO, MOD_CVAL, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_RAT_CHANGE_INFO_IND)
+EM_INFO(EM_C2K_L4_STATE_INFO, MOD_CVAL, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_C2K_L4_STATE_INFO_IND)
+#endif
+
+EM_INFO(EM_LBS_GPS_OPEN_STATISTIC, MOD_LBS, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LBS_GPS_OPEN_STATISTIC_IND)
+EM_INFO(EM_LBS_LR_STATISTIC, MOD_LBS, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LBS_LR_STATISTIC_IND)
+EM_INFO(EM_LBS_AP_SETTING, MOD_LBS, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_LBS_AP_SETTING_IND)
+
+/* MMRF */
+EM_INFO(EM_MMRF_CDDC_INFO, MOD_MMRF_XL1TST, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_MMRF_CDDC_INFO_IND)
+
+/* EM DDM*/
+EM_INFO(EM_DDM_W2LHO_EVENT_INFO, MOD_D2RM, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_DDM_W2LHO_EVENT_IND)
+EM_INFO(EM_DDM_L2WHO_EVENT_INFO, MOD_D2RM, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_DDM_L2WHO_EVENT_IND)
+EM_INFO(EM_DDM_DEACT_FAIL_INFO, MOD_DDM, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_DDM_DEACT_FAIL_INFO_IND)
+EM_INFO(EM_DDM_IA_FAIL_INFO, MOD_DDM, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_DDM_IA_FAIL_INFO_IND)
+EM_INFO(EM_DDM_IP_INFO, MOD_D2CM, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_DDM_IP_INFO_IND)
+EM_INFO(EM_DDM_LAST_ERROR_CODE_INFO, MOD_D2RM, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_DDM_LAST_ERROR_CODE_INFO_IND)
+
+/* MCF */
+#ifdef __MCF_SUPPORT__
+EM_INFO(MCF_EM_OTA_FILE_INFO, MOD_MCF, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_MCF_OTA_FILE_INFO_IND)
+#endif
+
+/* SMS */
+EM_INFO( EM_MT_SMS_OVER_SGS_INFO, MOD_SMS, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_MT_SMS_OVER_SGS_INFO_IND)
+EM_INFO( EM_SMS_INFO, MOD_SMS, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_SMS_INFO_IND)
+
+/* IMCSMS */
+#ifdef __IMS_SUPPORT__
+EM_INFO( EM_MT_SMS_OVER_IMS_INFO, MOD_IMCSMS, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_MT_SMS_OVER_IMS_INFO_IND)
+#endif
+
+/* SIM */
+EM_INFO(EM_SIM_APDU_INFO, MOD_SIM, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_SIM_APDU_INFO_IND)
+EM_INFO(EM_SIM_ERROR_INFO, MOD_SIM, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_SIM_ERROR_INFO_IND)
+
+/* NL1 */
+#ifdef __MD97__
+EM_INFO(EM_NL1_SYNC_INFO, MOD_NL1_ICD, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_NL1_SYNC_STATUS_IND)
+#endif
+
+/* SBP */
+EM_INFO(EM_L4BSBP_DSBP_INFO, MOD_L4BSBP, MOD_NIL, GEMINI_BITMASK, ZERO_BITMASK, MSG_ID_EM_L4BSBP_DSBP_INFO_IND)
+
+/* XCAP */
+#ifdef __XCAP_SUPPORT__
+EM_INFO(EM_XCAP_INFO_IND, MOD_XCAP, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_XCAP_INFO_IND)
+#endif
+
+/* OSTD */
+EM_INFO(EM_OSTD_WORK_INFO, MOD_ISR_OSTD_WAKEUP, MOD_NIL, SINGLE_BITMASK, ZERO_BITMASK, MSG_ID_EM_OSTD_WORK_INFO_IND)
+
diff --git a/mcu/interface/service/em/em_info_enum.h b/mcu/interface/service/em/em_info_enum.h
new file mode 100644
index 0000000..beb4b8b
--- /dev/null
+++ b/mcu/interface/service/em/em_info_enum.h
@@ -0,0 +1,838 @@
+   /* RR */
+   /* Begin of RR EM INFO Request enum */
+   RR_EM_CELL_SELECT_PARA_INFO = 0, RR_EM_INFO_BEGIN = RR_EM_CELL_SELECT_PARA_INFO,
+   RR_EM_CHANNEL_DESCR_INFO = 1,
+   RR_EM_CTRL_CHANNEL_DESCR_INFO = 2,
+   RR_EM_RACH_CTRL_PARA_INFO = 3,
+   RR_EM_LAI_INFO = 4,
+   RR_EM_RADIO_LINK_COUNTER_INFO = 5,
+   RR_EM_MEASUREMENT_REPORT_INFO = 6,
+   /* ZY : Temp solution : Cell allocation list*/
+   RR_EM_CA_LIST_INFO = 7,
+   /* RR new structure */
+   RR_EM_CONTROL_MSG_INFO = 8,
+   RR_EM_SI2Q_INFO_STRUCT_INFO = 9,
+   RR_EM_MI_INFO_STRUCT_INFO = 10,
+   RR_EM_BLK_INFO = 11,
+   RR_EM_TBF_INFO = 12,
+   RR_EM_GPRS_GENERAL_INFO = 13,
+   /* GAS MM EM INFO */
+   RRM_EM_FDD_IR_PARAMETER_STATUS_IND_STRUCT_INFO = 14,
+   RRM_EM_IR_RESELECT_STATUS_IND_STRUCT_INFO = 15,
+   RRM_EM_IR_3G_NEIGHBOR_MEAS_STATUS_IND_STRUCT_INFO = 16,
+   RRM_EM_IR_3G_NEIGHBOR_MEAS_INFO_IND_STRUCT_INFO = 17,
+   RRM_EM_IR_4G_NEIGHBOR_MEAS_STATUS_IND_STRUCT_INFO = 18,
+   RRM_EM_IR_4G_NEIGHBOR_MEAS_INFO_IND_STRUCT_INFO = 19,
+   RRM_EM_SERV_CELL_POWER_STATUS_IND_STRUCT_INFO = 20,
+   RRM_EM_IR_3G_NEIGHBOR_CELL_STATUS_IND_STRUCT_INFO = 21,
+   RRM_EM_IR_4G_NEIGHBOR_CELL_STATUS_IND_STRUCT_INFO = 22,
+   RRM_EM_TDD_IR_PARAMETER_STATUS_IND_STRUCT_INFO = 23,
+   RRM_EM_SUCCESS_RATE_KPI_INFO = 24,
+   RRM_EM_MT_T3126_TIMEOUT_INFO = 25,
+   RRM_EM_CS_RLF_INFO = 26,
+   RRM_EM_RR_STATE_INFO = 27,
+   RRM_EM_GAS_SEARCH_INFO = 28,
+   RRM_EM_DOWNLINK_SIGNALLING_COUNTER_INFO = 29,
+   RRM_EM_RACH_FAIL = 30,
+   RRM_EM_N200_EXP = 31,
+   RRM_EM_HO_FAIL = 32,
+   RRM_EM_OOS_IND = 33,
+   RRM_EM_CELL_SNIFFER_IND = 34,
+   RRM_EM_OOS_SEARCH_IND = 35,
+   RRM_EM_OOS_SEARCH_DURATION_INFO_IND = 36,   
+   RR_EM_INFO_END = RR_EM_INFO_BEGIN + 49,
+
+   /*End of RR EM INFO Request enum*/
+
+   /* CC */
+   CC_EM_CHANNEL_INFO = 50,
+   CC_EM_CALL_INFO = 51,
+
+   /* SS */
+   SS_EM_INFO = 52,
+
+   /* MM */
+   MM_EM_INFO = 53,
+   /*EM ehancement for RR new structure*/
+   MMRR_EM_PLMN_INFO_STRUCT_INFO = 54,
+
+   /* UEM */
+   UEM_EM_BATTERY_INFO = 55,
+
+   /* gprs em begins */
+   GMM_EM_INFO = 56,
+//   TCM_EM_EXT_PDP_INFO,
+//   TCM_EM_INT_PDP_INFO,
+//   TCM_EM_CONTEXT_INFO, //new
+//   SNDCP_EM_INFO,
+   LLC_EM_INFO = 57,
+   /* PPP , removed because of no use*/
+   //PPP_EM_INFO,
+   SM_EM_INFO = 58,
+   EM_TCM_INFO_IND = 59,
+
+   MMRR_EM_PLMN_LIST_REQ_STRUCT_INFO = 60,
+   MMRR_EM_PLMN_LIST_CNF_STRUCT_INFO = 61,
+   MMRR_EM_PLMN_SEARCH_REQ_STRUCT_INFO = 62,
+   MMRR_EM_PLMN_SEARCH_CNF_STRUCT_INFO = 63,
+   MMRR_EM_HPLMN_LIST_INFO = 64,
+   MMRR_EM_OPLMN_LIST_INFO = 65,
+   MMRR_EM_STATIC_APPLMN_LIST_INFO = 66,
+   MMRR_EM_DYNAMIC_APPLMN_LIST_INFO = 67,
+
+    /* VT EM Display, 2007/11/30 */
+    /* VT owner comments VT EM enum is not needed in WR8 */
+    //VT_EM_CALL_STATE_INFO = 50, VT_EM_BEGIN = VT_EM_CALL_STATE_INFO,/* vt_em_call_state_choice */
+    //VT_EM_MASTER_SLAVE_STATUS_INFO,     /* vt_em_master_slave_status_choice */
+    //VT_EM_RETRANSMISSION_PROTOCOL_INFO, /* vt_em_retransmission_protocol_choice */
+    //VT_EM_INCOMING_AUDIO_CHANNEL_INFO,  /* vt_em_audio_channel_info_struct */
+    //VT_EM_OUTGOING_AUDIO_CHANNEL_INFO,  /* vt_em_audio_channel_info_struct */
+    //VT_EM_INCOMING_VIDEO_CHANNEL_INFO,  /* vt_em_video_channel_info_struct */
+    //VT_EM_OUTGOING_VIDEO_CHANNEL_INFO,  /* vt_em_video_channel_info_struct */
+    //VT_EM_ADM_MEM_MAX_USED_INFO,        /* kal_uint32 */
+    //VT_EM_STATISTIC_INFO,               /* vt_em_statistic_info_struct */
+    //VT_EM_ROUND_TRIP_DELAY_INFO,        /* kal_uint32 */
+    //VT_EM_INCOMING_XSRP_INFO,           /* vt_em_incoming_xSRP */
+    //VT_EM_OUTGOING_XSRP_INFO,           /* vt_em_outgoing_xSRP */
+	//VT_EM_END = VT_EM_OUTGOING_XSRP_INFO,
+
+   /**
+    * Gibran 20061228
+    * UAS MEME/CSCE measuremnt and cell status structure
+    */
+   MMRR_EM_PLMN_LOSS_INFO_STRUCT_INFO = 68,
+   MMRR_EM_PLMN_SEARCH_CNF_INFO_STRUCT_INFO = 69,
+   /* URR common Range 1, from enum 70 to 169.
+      it's used for both FDD and TDD */
+   FDD_EM_URR_3G_GENERAL_STATUS_IND = 70, URR_EM_INFO_BEGIN = FDD_EM_URR_3G_GENERAL_STATUS_IND,
+   /* Put 1st XXX_STATUS_IND_STRUCT_INFO in front of XXX_EM_INFO_BEGIN
+      in order to show enum_name in XXX_STATUS_IND_STRUCT_INFO not in XXX_EM_INFO_BEGIN. */
+
+   EM_SIBE_3G_SIB_IND_STRUCT_INFO = 71,
+   TDD_EM_URR_3G_GENERAL_STATUS_IND = 72,
+   FDD_EM_CSCE_SERV_CELL_IND_STRUCT_INFO = 75,
+   FDD_EM_CSCE_NEIGH_CELL_IND_STRUCT_INFO = 76,
+   FDD_EM_CSCE_R_STATUS_IND_STRUCT_INFO = 77,
+   FDD_EM_CSCE_H_STATUS_IND_STRUCT_INFO = 78,
+   FDD_EM_CSCE_APBCR_STATUS_IND_STRUCT_INFO = 79,
+   FDD_EM_CSCE_MEAS_RULE_STATUS_IND_STRUCT_INFO = 80,
+   FDD_EM_CSCE_MULTIPLE_PLMN_IND_STRUCT_INFO = 81,
+   TDD_EM_CSCE_SERV_CELL_IND_STRUCT_INFO = 82,
+   TDD_EM_CSCE_NEIGH_CELL_IND_STRUCT_INFO = 83,
+   TDD_EM_CSCE_R_STATUS_IND_STRUCT_INFO = 84,
+   TDD_EM_CSCE_H_STATUS_IND_STRUCT_INFO = 85,
+   TDD_EM_CSCE_APBCR_STATUS_IND_STRUCT_INFO = 86,
+   TDD_EM_CSCE_MEAS_RULE_STATUS_IND_STRUCT_INFO = 87,
+   TDD_EM_CSCE_MULTIPLE_PLMN_IND_STRUCT_INFO = 88,
+
+    /*SIM*/
+   EM_SIM_MONITOR_EVENT_INFO = 89,
+
+   EM_TDD_MEME_INFO_DCH_UMTS_CELL_INFO = 90, TDD_MEME_EM_INFO_BEGIN = EM_TDD_MEME_INFO_DCH_UMTS_CELL_INFO,
+   EM_TDD_MEME_INFO_DCH_GSM_CELL_INFO = 91,
+   EM_TDD_MEME_INFO_DCH_LTE_CELL_INFO = 92,
+   EM_TDD_MEME_INFO_EVENT_TYPE_1_PARAMETER_STRUCT_INFO = 93,
+   EM_TDD_MEME_INFO_EVENT_TYPE_2_PARAMETER_STRUCT_INFO = 94,
+   EM_TDD_MEME_INFO_EVENT_TYPE_3_PARAMETER_STRUCT_INFO =95,
+//   EM_MEME_INFO_EVENT_TYPE_4_PARAMETER_STRUCT_INFO,
+//   EM_MEME_INFO_EVENT_TYPE_5_PARAMETER_STRUCT_INFO,
+//   EM_MEME_INFO_EVENT_TYPE_6_PARAMETER_STRUCT_INFO,
+//   EM_MEME_INFO_DCH_H_SERVING_CELL_INFO,
+//   EM_TDD_MEME_INFO_DCH_3G_BLER_INFO = 96,
+   EM_TDD_MEME_INFO_GSM_CELL_INFO =97, //for CMCC FT Tool
+   EM_TDD_MEME_INFO_LTE_CELL_INFO =98, //for CMCC FT Tool
+//   EM_MEME_INFO_FACH_LTE_CELL_INFO = 100,
+   EM_TDD_MEME_INFO_REPORT_INFO = 99,
+   TDD_MEME_EM_INFO_END = TDD_MEME_EM_INFO_BEGIN + 15,
+
+   /* Call Information */
+   EM_CALL_INFO_IND = 106,
+
+   /* SIP Information */
+   EM_IMC_SIP_INFO_IND = 107,
+
+   MMRF_EM_MIPI_HW_INFO = 108,
+
+   EM_RRCE_TGPS_STATUS_IND= 110,
+   EM_SLCE_SRNCID_STATUS_IND= 111,
+
+   /* WO: 112 ~ 129 */
+   EM_WO_INFO_BEGIN = 112,
+   EM_WO_IKE_SRCPORT_INFO = EM_WO_INFO_BEGIN,
+   EM_WO_IKE_NATT_SRCPORT_INFO = 113,
+   EM_WO_IKE_DECRYPT_INFO_ADD = 114,
+   EM_WO_IKE_DECRYPT_INFO_DEL = 115,
+   EM_WO_ESP_DECRYPT_INFO_ADD = 116,
+   EM_WO_ESP_DECRYPT_INFO_DEL = 117,
+   EM_WO_DPD_INTERVAL_INFO = 118,
+   EM_WO_INFO_END = EM_WO_INFO_BEGIN + 17,
+
+   EM_UAS_3G_TDD128_HANDOVER_SEQUENCE_IND = 130,
+
+   EM_RRCE_3G4_REDIR_EVENT = 131,
+   EM_RRCE_KPI_STATUS_IND = 132,
+   TDD_EM_RRCE_CONN_STATUS_IND = 133,
+
+   /* SIM */
+   EM_SIM_ERROR_INFO = 134,
+   EM_SIM_APDU_INFO = 135,
+   EM_SLCE_UE_DTX_DRX_INFO_IND = 136,
+   EM_RRCE_CN_DRX_CYCLE_LEN_IND = 137,
+   EM_RRCE_UTRAN_DRX_CYCLE_LEN_IND = 138,
+   EM_SLCE_PS_DATA_RATE_STATUS_IND = 140,
+   
+   /*IMSM: 141 ~ 145*/
+   EM_IMSM_INFO_BEGIN = 141,
+   EM_IMSM_IMS_PDN_FAIL_CAUSE = EM_IMSM_INFO_BEGIN,
+   EM_IMSM_IMS_PDN_APN = 142,   
+   EM_IMSM_IMS_NW_DEACT = 144,
+   EM_IMSM_INFO_END = EM_IMSM_INFO_BEGIN + 4, /* 145 */
+   EM_OSTD_WORK_INFO = 146,
+
+   EM_RRCE_NW_PEER_MSG_INFO = 150,
+   EM_RRCE_RACH_FAIL_IND = 151,
+   EM_RRCE_MO_RLF_IND = 152,
+   EM_RRCE_3G3_HO_FAIL_IND = 153,
+   EM_RRCE_3G2_HO_FAIL_IND = 154,
+   EM_RRCE_DCH_STATE_CONFIGURATION_STATUS_IND = 155,
+   EM_RRCE_FACH_STATE_CONFIGURATION_STATUS_IND = 156,
+   EM_RRCE_CS_OVER_HSPA_STATUS_IND = 157,
+   EM_RRCE_3G_SECURITY_CONFIGURATION_INFO_IND = 158,
+   EM_RRCE_FD_CONFIGURATION_STATUS_IND = 159,
+   EM_RRCE_HSPA_CONFIG_IND = 160,   /* MOLY00100048, Jack Chu,  EM_RRCE_HSPA_CONFIG_IND == 160 */
+   EM_RRCE_RLF_IND = 161,  /* __ALPS02506878_SUPPORT__ */
+   EM_RRCE_3G_CELL_UARFCN_DL_UL_INFO_IND = 162,
+   URR_EM_INFO_END = EM_RRCE_3G_CELL_UARFCN_DL_UL_INFO_IND,
+
+   /* LBS: 163 ~ 169 */
+   EM_LBS_BEGIN = 163,
+   EM_LBS_GPS_OPEN_STATISTIC = EM_LBS_BEGIN,
+   EM_LBS_LR_STATISTIC = 164,
+   EM_LBS_AP_SETTING = 165,
+   EM_LBS_END = 169,
+
+   /* __UL1_EM_MODE__ */
+   UL1_EM_HS_DSCH_CONFIGURATION_INFO = 170, UL1_EM_INFO_BEGIN = UL1_EM_HS_DSCH_CONFIGURATION_INFO,
+   UL1_EM_EDCH_CONFIGURATION_INFO = 171,
+   UL1_EM_CPC_CONFIGURATION_INFO = 172,
+   UL1_EM_SECONDARY_HS_CONFIGURATION_STATUS_INFO = 173,
+   UL1_EM_PRIMARY_HS_DSCH_BLER_INFO = 174,
+   UL1_EM_SECONDARY_HS_DSCH_BLER_INFO = 175,
+   UL1_EM_EDCH_ACK_RATE_INFO = 176,   UL1_EM_INFO_END = UL1_EM_EDCH_ACK_RATE_INFO,  /* for backward compatibility */
+   UL1_EM_PRX_DRX_MEASUREMENT_INFO = 177,
+   /* HSDSCH info group  */
+   UL1_EM_HSPA_INFO_GROUP = 178,
+   UL1_EM_TAS_INFO = 179,
+   UL1_EM_RADIO_LINK_SYNC_STATUS = 180,
+   UL1_EM_UL1_RXD_STATUS = 181,
+   UL1_EM_UL1_RAS_INFO = 182,
+   UL1_EM_RFPD_INFO = 183,
+   UL1_EM_FS_UARFCN_INFO = 184,
+
+
+   /* __UL2_EM_MODE__ */
+   UL2_EM_ADM_POOL_STATUS_IND_STRUCT_INFO = 185, UL2_EM_INFO_BEGIN = UL2_EM_ADM_POOL_STATUS_IND_STRUCT_INFO,
+   UL2_EM_PS_DATA_RATE_STATUS_IND_STRUCT_INFO = 186,
+   UL2_EM_HSDSCH_RECONFIG_STATUS_IND_STRUCT_INFO = 187,
+   UL2_EM_URLC_EVENT_STATUS_IND_STRUCT_INFO = 188,
+   UL2_EM_3G_BLER_IND_STRUCT_INFO = 189,
+   UL2_EM_WCDMA_RLC_STATS_STRUCT_INFO = 190,
+   UL2_EM_URLC_LAYER_TPUT_INFO = 191,
+   /* UMAC new EM Arch */
+   /***HSUPA SI***/
+   UL2_EM_HSUPA_SI_IND_STRUCT_INFO = 192,
+   /***HSUPA SI***/
+
+   /* UMAC EM 2015 */
+   UL2_EM_UMAC_DCH_INFO = 193,
+   UL2_EM_UMAC_EDCH_INFO = 194,
+   UL2_EM_UMAC_HSDSCH_INFO = 195,
+   UL2_EM_URLC_ATT_RLC_STATISTICS_INFO = 196,
+   UL2_EM_URLC_ATT_RLC_RESET_INFO = 197,
+   UL2_EM_UMAC_PCH_CRC_ERR_INFO = 198,
+   UL2_EM_UMAC_PCH_INFO = 199,
+   UL2_EM_UMAC_LCHID_TRCH_MAPPING_INFO = 200,
+   UL2_EM_INFO_END = UL2_EM_UMAC_LCHID_TRCH_MAPPING_INFO,
+
+  /*================UL1====================*/
+   UL1_EM_UL1_UTAS_INFO = 201,  EM_UL1_INFO_BEGIN = UL1_EM_UL1_UTAS_INFO,
+   UL1_EM_RFPD_AVG_INFO = 202,
+   UL1_EM_UL1_PAGING_RX_DONE = 203,
+   UL1_EM_UL1_MEAS_DURATION_INFO = 204,
+   UL1_EM_FS_BAND_INFO = 205,
+   EM_UL1_INFO_END  =  EM_UL1_INFO_BEGIN +8 , //1044 reserve for ul1
+
+   /*ERRC_EM_MODE, here is the start of errc em info definition*/
+   ERRC_EM_MOB_MEAS_INTRARAT_INFO = 210, ERRC_EM_INFO_BEGIN = ERRC_EM_MOB_MEAS_INTRARAT_INFO,
+   ERRC_EM_MOB_MEAS_INTERRAT_UTRAN_INFO = 211,
+   ERRC_EM_MOB_MEAS_INTERRAT_GERAN_INFO = 212,
+   ERRC_EM_AUTOS_CSG_INFO = 213,
+   ERRC_EM_CARRS_EVENT_IND = 214,
+   ERRC_EM_SIB_EVENT_IND = 215,
+   ERRC_EM_MOB_EVENT_IND = 216,
+   ERRC_EM_SEC_PARAM = 217,
+   ERRC_EM_REEST_INFO = 218,
+   ERRC_EM_RECONF_INFO = 219,
+   ERRC_EM_RCM_SIM_STS_INFO = 220,
+   ERRC_EM_SYS_SIB_RX_STS_INFO = 221,
+   ERRC_EM_ERRC_STATE_IND = 222,
+   ERRC_EM_OVER_PROC_DELAY_WARNING = 223,
+   ERRC_EM_LTE_SUPPORTED_BAND_INFO = 224,
+   ERRC_EM_ERRC_KPI_INFO = 225,
+   ERRC_EM_ERRC_CONFIG_INFO = 226,
+
+   ERRC_EM_CONN_INFO = 227,
+
+   ERRC_EM_INFO_END = ERRC_EM_CONN_INFO,
+
+   /* __ESM_EM_MODE__ */
+   ESM_ESM_INFO = 228,
+   ESM_L4C_ESM_INFO = 229,
+
+   /* __EMM_EM_MODE__*/
+   EMM_EM_SEC_INFO = 230, EMM_EM_INFO_BEGIN = EMM_EM_SEC_INFO,
+   EMM_EM_PLMNSEL_INFO = 231,
+   EMM_EM_CONN_INFO = 232,
+   EMM_EM_NASMSG_INFO = 233,
+   EMM_EM_CALL_INFO = 234,
+   EMM_EM_REG_ATTACH_INFO = 235,
+   EMM_EM_REG_DETACH_INFO = 236,
+   EMM_EM_REG_TAU_INFO = 237,
+   EMM_EM_REG_COMMON_INFO = 238,
+   EMM_EM_SV_INFO = 239,
+   EMM_EM_RATBAND_INFO = 240,
+   EMM_EM_TIMERSRV_INFO = 241,
+   EMM_EM_USIMSRV_INFO = 242,
+   EMM_EM_NVMSRV_INFO = 243,
+   EMM_EM_INFO_END = EMM_EM_NVMSRV_INFO,
+
+   EMM_L4C_EMM_INFO = 244,
+
+   EM_EL2_OV_STATUS = 245,
+   EM_EL1_OV_STATUS = 246,
+   EM_QBM_STATUS = 247,
+   EM_UPCM_STATUS = 248,
+
+   /* EL1 */
+   EM_EL1_INFO = 249,
+
+   EM_CSR_STATUS_IND = 250,
+
+   RAC_EM_INFO = 251,
+
+   /* EL2 public status */
+   EM_EL2_PUB_STATUS = 252,
+
+   EMM_L4C_LAI_CHANGE_INFO = 253,
+
+   /*RATCM*/
+   RATCM_EM_23G_RAT_CHANGE_IND = 254, RATCM_EM_INFO_BEGIN = RATCM_EM_23G_RAT_CHANGE_IND,
+
+   EM_EL1_B3B39_INFO = 255,
+
+   RATCM_EM_INFO_END = RATCM_EM_INFO_BEGIN + 20,
+
+   /* L4C */
+   EM_L4C_RAT_CHANGE_IND = 275,
+
+   /* EMAC RACH */
+   EM_EMAC_RACH_TRIGGER = 276,
+   EM_EMAC_RACH_FINISH = 277,
+   EM_EMAC_MSG2_REPORT = 278,
+   EM_EMAC_MSG4_REPORT = 279,
+
+   /* EMAC 500MS */
+   EM_EMAC_OV_STATUS_500 = 280,
+
+   /* EMAC TIMER EXPIRE */
+   EM_EMAC_TIMER_EXPIRE = 281,
+
+   EM_L4C_MDMI_RAT_INFO_IND = 282,
+
+   /* EMAC CONFIG REPORT */
+   EM_EMAC_CONFIG_REPORT = 283,
+
+   /* MD EVENT INFO */
+   EM_L4C_MD_EVENT_INFO = 284,
+
+  /*EMAC RACH for Innowireless EM*/
+   EM_EMAC_RACH_SUCCESS = 285,
+   EM_EMAC_RACH_FAILURE = 286,
+
+   /* EMAC EMBMS */
+   EM_EMAC_EMBMS_REPORT = 287,
+
+   /* EMAC DL TBS REPORT */
+   EM_EMAC_DL_TBS_REPORT = 288,
+
+   /* EMM CSFB status */
+   EMM_L4C_CSFB_INFO = 289,
+
+   /* EL1 CIQ for ATT*/
+   EM_EL1_CIQ_RLF_STATUS_INFO        = 290, EM_EL1_CIQ_INFO_BEGIN = EM_EL1_CIQ_RLF_STATUS_INFO,
+   EM_EL1_CIQ_PUSCH_INFO             = 291,
+   EM_EL1_CIQ_INFO_END               = EM_EL1_CIQ_INFO_BEGIN + 10,
+
+   /* L4C EM to report ECSQ params */
+   EM_L4C_ECSQ_IND = 301,
+
+   /*SMS EM to indicate MT SMS is received over  LTE/IMS domain*/
+   EM_MT_SMS_OVER_SGS_INFO = 302,
+   EM_MT_SMS_OVER_IMS_INFO = 303,
+
+   /* MCF */
+   MCF_EM_OTA_FILE_INFO = 304,
+
+   EM_L4BSBP_DSBP_INFO = 305,
+   
+   MM_EM_MOCS_MOCSFB_STATUS = 306,
+
+   /* MM/GMM */
+   MM_EM_MM_GMM_PROC_REJ_INFO = 307,
+
+   /*MM*/
+   MM_EM_MM_CAUSE_INFO = 308,
+
+   /* L4C */
+   EM_L4C_CA_INFO_IND = 309,
+
+   /*SMS EM to indicate MO SMS is sent over  LTE/IMS domain*/
+   EM_MO_SMS_OVER_IMS_INFO = 310,
+
+   /* RAC EM to report REG state */
+   RAC_EM_REG_STATE_INFO = 311,
+	
+	/* As UL2 space is exhausted */
+   UL2_EM_UMAC_RACH_FAILURE_INFO = 312,
+
+     /*MM*/
+   MM_EM_MM_GMM_PAGING_INFO = 313,
+
+   	/*SMS EM */
+   EM_SMS_INFO = 314,
+
+   EM_L4APS_CID_MAPPING_INFO = 315,
+
+   /* IPCORE */
+   IPC_EM_UL_THROTTLE_STATUS = 326,
+
+   /*ERRC_EM_MODE, here is the start of errc em info definition of Range 2*/
+   ERRC_EM_SERV_IR_NEIGHBOR_INFO = 327, ERRC_EM_INFO_BEGIN_R2 = ERRC_EM_SERV_IR_NEIGHBOR_INFO,
+   ERRC_EM_IR_REDIR_EVENT = 328,
+   ERRC_EM_IRAT_MEAS_CFG = 329,
+   ERRC_EM_MOB_MEAS_CONFIG_INFO_IND = 330,
+   ERRC_EM_MOB_MEAS_REPORT_INFO_IND = 331,
+   ERRC_EM_MOB_MEAS_INTERRAT_C2K_INFO = 332,
+   ERRC_EM_LTE_RRC_STATE_IND = 333,
+   ERRC_EM_SERVING_INFO = 334,
+   ERRC_EM_PAGING_FAIL = 335,
+   ERRC_EM_RLF_EVENT = 336,
+   ERRC_EM_TIMER_EXPIRY_EVENT = 337,
+   ERRC_EM_HO_EVENT = 338,
+   ERRC_EM_ERRC_SYS_MIB_SIB_READEVENT_INFO = 339,
+   ERRC_EM_SRVCC_BSIC_INFO = 340,
+   ERRC_EM_MFROM_INFO = 341,
+   ERRC_EM_FEATURE_DETECTION = 342,
+   ERRC_EM_SEARCHING_STATE = 343,
+   ERRC_EM_CA_INFO = 344,
+   ERRC_EM_EUTRA_RRC_MESSAGE_S = 345,
+   ERRC_EM_EUTRA_RRC_MESSAGE_M = 346,
+   ERRC_EM_EUTRA_RRC_MESSAGE_L = 347,
+   ERRC_EM_LTE_BAND_TIME = 348,
+   ERRC_EM_REEST_BY_L2 = 349,
+   ERRC_EM_EL1_CONFIG_INFO = 350,
+   ERRC_EM_SRVCC_CELL_INFO = 351,
+   ERRC_EM_SRVCC_HO_FAIL_EVENT =352,
+   ERRC_EM_OOS_EVENT = 353,
+   ERRC_EM_CELL_BLACK_LIST_EVENT = 354,
+   ERRC_EM_INTRALTE_INTERFERENCE_MOD3 =355,
+   ERRC_EM_BAR_INFO = 356,
+   ERRC_EM_HO_FAIL_EVENT = 357,
+   ERRC_EM_INFO_END_R2 = ERRC_EM_HO_FAIL_EVENT,
+   ERRC_EM_INFO_END_RESERVED_R2 = ERRC_EM_INFO_BEGIN_R2 + 30,
+
+   /* UPCM */
+   EM_UPCM_PS_TPUT_INFO = 358,
+
+   MM_EM_MTC_TIMER_INFO = 359,
+   MM_EM_LU_INFO = 360,
+   MM_EM_RAU_INFO = 361,
+
+   /* USIME capability */
+   USIME_EM_INFO_CAPABILITY = 362, USIME_EM_INFO_BEGIN = USIME_EM_INFO_CAPABILITY,
+   USIME_EM_INFO_END = USIME_EM_INFO_BEGIN + 30,
+
+   MM_EM_MT_CSFB_INFO = 393,
+   MM_EM_REG_REJ_INFO = 394,        // LU, Attach, RAU reject info
+   MM_EM_AUTH_REJ_INFO = 395,       // Auth reject info for MM/GMM
+   MM_EM_AS_FAIL_INFO = 396,    	// AS fail info during REG proc
+
+   /* EL2 feature detection */
+   EM_EL2_FEATURE_DETECTION = 397,
+
+   MM_EM_CSFB_STATUS = 398,         // CSFB START /SUCCESSFUL /FAIL
+   MM_EM_MTCS_MTCSFB_STATUS = 399,  //MTCS MT CSFB FAILURES
+   
+   /*ERRC_EM_MODE, here is the start of errc em info definition of Range 3*/
+   ERRC_EM_REEST_UL_MAX_RLF_INFO = 400, ERRC_EM_INFO_BEGIN_R3 = ERRC_EM_REEST_UL_MAX_RLF_INFO,
+   ERRC_EM_REEST_FAIL_TIMER_INFO_IND = 401,
+   ERRC_EM_BW_MONITORING_INFO = 402,
+   ERRC_EM_TRIG_REL_RESULT_IND = 403,
+   ERRC_EM_DATA_INACT_TIMER_EXP_INFO = 404,
+   ERRC_EM_CEL_SNIFFER_IND = 405,
+   ERRC_EM_CONNECTTIME_EVENT = 406,
+   ERRC_EM_CONNECTFAIL_EVENT = 407,
+   ERRC_EM_MOB_INTRARAT_MEAS_CONFIG_INFO_IND = 408,
+   ERRC_EM_MOB_B2_MEAS_CONFIG_INFO_IND = 409,
+   ERRC_EM_CA_STATUS = 410,
+   ERRC_EM_OOS_SEARCH_IND = 412,
+   ERRC_EM_INFO_END_R3 = ERRC_EM_OOS_SEARCH_IND,
+   ERRC_EM_INFO_END_RESERVED_R3 = ERRC_EM_INFO_BEGIN_R3 + 29,
+
+   /* FDD URR common Range 2, the range should be 430 ~ 599 */
+   /* FDD CSCE Range 2 */
+   URR_EM_CELL_SNIFFER_IND = 430, FDD_CSCE_EM_INFO_BEGIN_R2 = URR_EM_CELL_SNIFFER_IND, FDD_URR_EM_INFO_BEGIN_R2 = URR_EM_CELL_SNIFFER_IND,
+   EM_FDD_CSCE_SEARCH_DURATION_INFO_IND = 431,
+   FDD_CSCE_EM_INFO_END_R2 = 449,
+   /* FDD RRCE Range 2 */
+   FDD_RRCE_EM_INFO_BEGIN_R2 = 450,
+   FDD_RRCE_EM_INFO_END_R2 = 499,
+   /* FDD MEME Range 2 */
+   EM_FDD_MEME_INFO_DCH_UMTS_CELL_INFO = 500, FDD_MEME_EM_INFO_BEGIN_R2 = EM_FDD_MEME_INFO_DCH_UMTS_CELL_INFO,
+   EM_FDD_MEME_INFO_DCH_GSM_CELL_INFO = 501,
+   EM_FDD_MEME_INFO_DCH_LTE_CELL_INFO = 502,
+   EM_FDD_MEME_INFO_DCH_H_SERVING_CELL_INFO = 503,
+   EM_FDD_MEME_INFO_DCH_3G_BLER_INFO = 504,
+   EM_FDD_MEME_INFO_FACH_LTE_CELL_INFO = 505,
+   EM_FDD_MEME_INFO_EVENT_TYPE_3_PARAMETER_INFO = 506,        // For NVIOT EM MeasCtrl E3x
+   EM_FDD_MEME_INFO_REPORT_INFO = 507,                        // For NVIOT EM MEasRpt E3x
+   FDD_MEME_EM_INFO_END_R2 = 549,
+
+   /* FDD SLCE Range 2 */
+   FDD_SLCE_EM_INFO_BEGIN_R2 = 550,
+   FDD_SLCE_EM_INFO_END_R2 = 559,
+
+   /* FDD SIBE Range 2 */
+   FDD_SIBE_EM_INFO_BEGIN_R2 = 560,
+   FDD_SIBE_EM_INFO_END_R2 = 569,
+
+   /* for other FDD URR modules, 569 ~ 599 */
+
+   FDD_URR_EM_INFO_END_R2 = 599,
+
+
+   /* VDM */
+   EM_VDM_CALL_INFO_IND = 600,
+   EM_VDM_SSAC_INFO_IND = 601,
+
+   /* IMC */
+   IMC_EM_IPSEC_INFO_IND = 602, IMC_EM_INFO_BEGIN = IMC_EM_IPSEC_INFO_IND,
+   IMC_EM_IMC_INFO_IND = 603,
+   IMC_EM_BEARER_INFO_IND = 604,
+   IMC_EM_REG_INFO_IND = 605,
+   IMC_EM_SMS_INFO_IND = 606,
+   IMC_EM_CALL_INFO_IND = 607,
+   IMC_EM_CONF_INFO_IND = 608,
+   IMC_EM_SRVCC_INFO_IND = 609,
+   IMC_EM_PCSCF_INFO_IND = 610,
+   IMC_EM_MEDIA_INFO_IND = 611,
+   IMC_EM_REG_ABNORMAL_IND = 612,
+   IMC_EM_CALL_DROP_IND = 613,
+   IMC_EM_CALL_380_DROP_IND = 614,
+   IMC_EM_IMS_EVENT_INFO_IND = 615,
+   IMC_EM_TIMER_INFO_IND = 616,
+   IMC_EM_INFO_END = IMC_EM_INFO_BEGIN + 20,
+
+   /* __EMM_EM_MODE__ Range 2, the range should be 625 ~ 629*/
+   EMM_EM_REG_EVENT_INFO = 625, EMM_EM_INFO_RANGE_2_BEGIN = EMM_EM_REG_EVENT_INFO,
+   EMM_EM_TIMER_EXPIRY_INFO = 626,
+   EMM_EM_EMM_STATE_INFO = 627,
+   EMM_EM_SEC_EVENT_INFO = 628,
+   EMM_EM_TIMERSRV_TIMER_START_INFO = 629,
+   EMM_EM_INFO_RANGE_2_END = EMM_EM_TIMERSRV_TIMER_START_INFO,
+
+   EM_SPEECH_INFO_SPH_CODEC = 630,  EM_SPEECH_INFO_BEGIN = EM_SPEECH_INFO_SPH_CODEC,
+   EM_SPEECH_INFO_VOICE_QUALITY_EVENT,
+   EM_SPEECH_INFO_END = 649,
+
+   /* NWSEL */
+   NWSEL_EM_TIMER_INFO = 650,
+   NWSEL_EM_INFO_BEGIN = NWSEL_EM_TIMER_INFO,
+   NWSEL_EM_PLMN_LIST_REQ_INFO = 651,
+   NWSEL_EM_PLMN_LIST_CNF_INFO = 652,
+   NWSEL_EM_PLMN_SEARCH_REQ_INFO = 653,
+   NWSEL_EM_HPLMN_INFO_INFO = 654,
+   NWSEL_EM_OPLMN_INFO_INFO = 655,
+   NWSEL_EM_STATIC_APPLMN_INFO = 656,
+   NWSEL_EM_DYNAMIC_APPLMN_INFO = 657,
+   NWSEL_EM_EUTRAN_DISABLE_INFO = 658,
+   NWSEL_EM_RECOVERY_SEARCH_INFO = 659,
+   NWSEL_EM_INFO_END = NWSEL_EM_INFO_BEGIN+30,
+
+   /* Abnormal event for smart logging phase2 */
+   /* Naming format: EM_ABNORMAL_EVENT_(MOD)_(NAME) */
+   EM_ABNORMAL_EVENT_RAC_NO_SERVICE = 681,
+
+   /* LTECSR */
+   LTECSR_EM_RTP_CODEC = 682,
+   LTECSR_EM_RTP_PACKET_LOSS = 683,
+   LTECSR_EM_RTP_ONE_WAY_DELAY = 684,
+   LTECSR_EM_RTP_JITTER = 685,
+   LTECSR_EM_RTP_JITTER_BUFFER_DELAY = 686,
+   LTECSR_EM_RTP_OTA_MSG = 687,
+   LTECSR_EM_SESSION_STAT = 688,
+   LTECSR_EM_XMIT_PKT = 689,
+   LTECSR_EM_RECV_PKT = 690,
+   LTECSR_EM_XMIT_STAT = 691,
+   LTECSR_EM_RECV_STAT = 692,
+   LTECSR_EM_RTP_INFO = 693,
+   LTECSR_EM_RTCP_INFO = 694,
+   LTECSR_EM_RTP_EVENT = 695,
+
+   /* LPP 696 ~699 */
+   LPP_EM_MSG_STATUS_STATISTICS = 696,
+   LPP_EM_MSG_INFO = 697,
+   LPP_EM_INFO_END = 699,
+   
+   /* TDD URR common Range 2, the range should be 700 ~ 899
+      before put TDD URR EM enum below, please make sure relative function already consider the enum range,
+      e.g. TDD_RRC_HandleEmUpdateReq() should cover enum 700 ~ 899. */
+   TDD_URR_EM_INFO_BEGIN_R2 = 700,
+   TDD_URR_EM_INFO_END_R2 = 749,
+
+   /* C2K: 750 ~ 899 */
+   EM_C2K_INFO_BEGIN = 750,
+
+   /* C2K EVDO L1 750~769 */
+   EM_EVL1_INFO_BEGIN = EM_C2K_INFO_BEGIN,
+   EM_EVL1_GENERAL_INFO = EM_EVL1_INFO_BEGIN,
+   EM_EVL1_TXAGC_POWER_INFO = 751,
+   EM_EVL1_CELL_SWITCH_INFO = 752,
+   EM_EVL1_RXAGC_INFO = 753,
+   EM_EVL1_AFC_INFO = 754,
+   EM_EVL1_MBP_SECTOR_INFO = 755,
+   EM_EVL1_FMP_FINGER_INFO = 756,
+   EM_EVL1_TIMING_TRACK_STATUS = 757,
+   EM_EVL1_SCH_STATUS = 758,
+   EM_EVL1_ACC_DATA_RATE_INFO = 759,
+   EM_EVL1_TRAFFIC_RRI_VALUE_INFO = 760,
+   EM_EVL1_FMP_SECTOR_INFO = 761,
+   EM_EVL1_SCH_PILOT_UPDATE_INFO = 762,
+   EM_EVL1_SCH_RESULT_INFO = 763,
+   EM_EVL1_RFPD_INFO = 764,
+   EM_EVL1_INFO_END = EM_EVL1_INFO_BEGIN + 19,
+
+   /* XL1: 770 ~ 789 */
+   EM_XL1_INFO_BEGIN = 770,
+   EM_XL1_STATUS_INFO = EM_XL1_INFO_BEGIN,
+   EM_XL1_MEAS_INFO = 771,
+   EM_XL1_MAIN_RXAGC_INFO = 772,
+   EM_XL1_DIV_RXAGC_INFO = 773,
+   EM_XL1_RAKE_INFO = 774,
+   EM_XL1_CRC_INFO = 775,
+   EM_XL1_TX_PATH_INFO = 776,
+   EM_XL1_TX_AGC_INFO = 777,
+   EM_XL1_AFC_INFO = 778,
+   EM_XL1_MMAFC_INIT_FOE_INFO = 779,
+   EM_XL1_TAS_INFO = 780,
+   EM_XL1_TIMING_LOOP_INFO = 781,
+   EM_XL1_UTAS_INFO = 782,
+   EM_XL1_RFPD_INFO = 783,
+   EM_XL1_INFO_END = EM_XL1_INFO_BEGIN + 19,
+
+   /* HSC: 790 ~ 809 */
+   EM_C2K_HSC_INFO_BEGIN = 790,
+   EM_C2K_RTBA_CHANNEL_STATUS_INFO = EM_C2K_HSC_INFO_BEGIN,
+   EM_C2K_DO_SPAGE_STATE_INFO = 791,
+   EM_C2K_HSC_MPA_STATUS_INFO = 792,
+   EM_C2K_LL1A_STATE_MODE_INFO = 793,
+   EM_C2K_LL1A_STANDBY_GAP_INFO = 794,
+   EM_C2K_LL1A_ACTIVE_GAP_INFO = 795,
+   EM_C2K_HSC_INFO_END = EM_C2K_HSC_INFO_BEGIN + 19,
+
+   /* XL3: 810 ~ 824 */
+   EM_XL3_INFO_BEGIN = 810,
+   EM_XL3_CP_STATUS = EM_XL3_INFO_BEGIN,
+   EM_XL3_SLOTTED_MODE_INFO = 811,
+   EM_XL3_CP_EVENTS = 812,
+   EM_1XRTT_CALL_EVENTS = 813,
+   EM_C2K_RSVAS_INFO = 814,
+   EM_XL3_PAGING_INFO = 815,
+   EM_XL3_SET_INFO = 816,
+   EM_XL3_SYSTEM_SEARCH_INFO = 817,
+   EM_XL3_CALL_FAIL_REASON = 818,
+   EM_XL3_INFO_END = EM_XL3_INFO_BEGIN + 14,
+
+   /* EVL3: 825 ~ 839 */
+   EM_EVL3_INFO_BEGIN = 825,
+   EM_EVL3_STATE = EM_EVL3_INFO_BEGIN,
+   EM_EVL3_SERVING_CELL_INFO = 826,
+   EM_EVL3_SLOTTED_MODE_INFO = 827,
+   EM_EVL3_ACCESS_PROCEDURE_INFO = 828,
+   EM_EVL3_CP_EVENTS = 829,
+   EM_EVL3_SYSTEM_SEARCH_INFO = 830,
+   EM_EVL3_INFO_END = EM_EVL3_INFO_BEGIN + 14,
+
+   /* EVL2: 840~849 */
+   EM_EVL2_INFO_BEGIN = 840,
+   EM_EVL2_FWD_CHANNEL_INFO = EM_EVL2_INFO_BEGIN,
+   EM_EVL2_REV_TRAFFIC_INFO = 841,
+   EM_EVL2_ACCESS_STATE_INFO = 842,
+   EM_EVL2_RTM3_T2P_INFO = 843,
+   EM_EVL2_INFO_END = EM_EVL2_INFO_BEGIN + 9,
+
+   /* XL2 :850~859*/
+   EM_XL2_INFO_BEGIN = 850,
+   EM_XL2_REV_STATE  = EM_XL2_INFO_BEGIN,
+   EM_XL2_ACH_PROBE_INFO = 851,
+   EM_XL2_VOICE_RATE_INFO = 852,
+   EM_XL2_RLP_INFO = 853,
+   EM_XL2_PS_RATE_INFO = 854,
+   EM_XL2_SCH_ASSIGNED_RATE = 855,
+   EM_XL2_INFO_END = EM_XL2_INFO_BEGIN + 9,
+
+   /* C2K HLP: 860 ~ 879*/
+   EM_C2K_HLP_INFO_BEGIN = 860,
+   EM_C2K_HLP_TIMER_STATUS = EM_C2K_HLP_INFO_BEGIN,
+   EM_C2K_HLP_CAM_STATE = 861,
+   EM_C2K_HLP_NSPE_STATE = 862,
+   EM_C2K_HLP_PDN_STATUS = 863,
+   EM_C2K_HLP_PPPHA_STATUS = 864,
+   EM_C2K_HLP_PPP_STATUS = 865,
+   EM_C2K_HLP_RM_BUFQ_INFO = 866,
+   EM_C2K_HLP_UM_BUFQ_INFO = 867,
+   EM_C2K_HLP_PACKET_INFO = 868,
+   EM_C2K_HLP_ABNORMAL_EVENT_INFO = 869,
+   EM_C2K_HLP_INFO_END = EM_C2K_HLP_INFO_BEGIN + 19,
+
+   /* C2K_L4(CVAL): 880 ~ 899 */
+   EM_C2K_L4_INFO_BEGIN = 880,
+   EM_C2K_L4_RTT_RADIO_INFO = EM_C2K_L4_INFO_BEGIN,
+   EM_C2K_L4_RTT_INFO = 881,
+   EM_C2K_L4_RTT_SCH_INFO = 882,
+   EM_C2K_L4_RTT_STAT_INFO = 883,
+   EM_C2K_L4_RTT_SERVING_NEIGHBR_SET_INFO = 884,
+   EM_C2K_L4_EVDO_SERVING_INFO = 885,
+   EM_C2K_L4_EVDO_ACTIVE_SET_INFO = 886,
+   EM_C2K_L4_EVDO_CAND_SET_INFO = 887,
+   EM_C2K_L4_EVDO_NGHDR_SET_INFO = 888,
+   EM_C2K_L4_EVDO_FL_INFO = 889,
+   EM_C2K_L4_EVDO_RL_INFO = 890,
+   EM_C2K_L4_EVDO_STATE_INFO = 891,
+   EM_C2K_L4_SPRINT_XRTT_INFO = 892,
+   EM_C2K_L4_SPRINT_EVDO_INFO = 893,
+   EM_C2K_L4_SMS_OTA_FDSCH_INFO = 894,
+   EM_C2K_L4_SMS_OTA_RDSCH_INFO = 895,
+   EM_C2K_L4_XCAL_OTA_EVENT_INFO = 896,
+   EM_C2K_RAT_CHANGE_INFO = 897,
+   EM_C2K_L4_STATE_INFO = 898,
+   EM_C2K_L4_INFO_END = 899,
+   EM_C2K_INFO_END = EM_C2K_L4_INFO_END,
+
+   /* GMSS: 900 ~ 919 */
+   GMSS_EM_INFO_BEGIN = 900,
+   GMSS_EM_WORLD_PHONE_INFO = GMSS_EM_INFO_BEGIN,
+   GMSS_EM_HVOLTE_INFO = 901,
+   GMSS_EM_INFO_END = GMSS_EM_WORLD_PHONE_INFO+19,
+
+   /* EL1 MDMI for VzW*/
+   EM_EL1_STATUS_CSR_RPT_INFO        = 921, EM_EL1_MDMI_INFO_BEGIN = EM_EL1_STATUS_CSR_RPT_INFO,
+   EM_EL1_STATUS_SRV_MEAS_RPT_INFO   = 922,
+   EM_EL1_STATUS_PBCH_RPT_INFO       = 923,
+   EM_EL1_STATUS_PCFICH_RPT_INFO     = 924,
+   EM_EL1_STATUS_PDCCH_RPT_INFO      = 925,
+   EM_EL1_STATUS_PDSCH_RPT_INFO      = 926,
+   EM_EL1_STATUS_PHICH_RPT_INFO      = 927,
+   EM_EL1_STATUS_PMCH_RPT_INFO       = 928,
+   EM_EL1_STATUS_DCI_RPT_INFO        = 929,
+   EM_EL1_STATUS_PUCCH_RPT_INFO      = 930,
+   EM_EL1_STATUS_PUCCH_CSI_RPT_INFO  = 931,
+   EM_EL1_STATUS_PUSCH_RPT_INFO      = 932,
+   EM_EL1_STATUS_PUSCH_CSI_RPT_INFO  = 933,
+   EM_EL1_STATUS_SRS_RPT_INFO        = 934,
+   EM_EL1_STATUS_CELLTIME_RPT_INFO   = 935,
+   EM_EL1_STATUS_SR_CFG_INFO         = 936,
+   EM_EL1_STATUS_PRACH_INFO          = 937,
+   EM_EL1_STATUS_RACH_INFO           = 938,
+   EM_EL1_STATUS_PCH_INFO            = 939,
+   EM_EL1_STATUS_TA_INFO             = 940,
+   EM_EL1_STATUS_PHR_INFO            = 941,
+   EM_EL1_STATUS_DL_TPUT_INFO        = 942,
+   EM_EL1_STATUS_UL_TPUT_INFO        = 943,
+   EM_EL1_STATUS_CSR_INFO            = 944,
+
+   /* NL1 */
+   EM_NL1_SYNC_INFO            = 945,
+
+   EM_EL1_MDMI_INFO_END              = EM_EL1_MDMI_INFO_BEGIN + 25,
+
+   /* EPDCP */
+   EM_EPDCP_DATA_INACTV_IND = 947,
+   EM_EPDCP_TMOUT_DISC      = 948,
+   EM_EPDCP_OOB_DISC        = 949,
+
+   /* GL1: 950 ~ 959 */
+   GL1_EM_TAS_INFO = 950,
+   GL1_EM_RXD_INFO = 951,
+   GL1_EM_IDLE_MODE_INFO = 952,
+
+   /* TDD L1 */
+   TDD_EM_L1_TAS_INFO = 960, TDD_EM_L1_INFO_BEGIN = TDD_EM_L1_TAS_INFO,
+   TDD_EM_L1_INFO_END = TDD_EM_L1_TAS_INFO + 4,
+
+   EMM_L4C_REJECT_INFO = 965,
+   EMM_L4C_TIMER_INFO = 966,
+   EMM_L4C_CALL_INFO = 967,
+   EMM_EM_CALL_EVENT_INFO = 968,
+   EMM_EM_EMM_CAUSE_INFO = 969,
+
+   /*EL1*/
+   EM_EL1_STATUS_PDSCH_INFO = 970,
+
+   RAC_EM_NETWORK_TYPE_INFO = 971,
+
+   /* ERLC */
+   EM_ERLC_DATA_STALL = 972,
+
+   /* XCAP */
+   EM_XCAP_INFO_IND = 973,
+
+   /* EMAC */
+   EM_EMAC_NO_SLEEP = 974, 
+
+   /* LTECSR Range 2, the range should be 975 ~ 979 */
+   LTECSR_EM_RTP_PERIODIC_RPT = 975,
+   LTECSR_EM_RTP_PERIODIC_RPT_CUSTOMER = 976,
+   
+   CC_EM_CALL_MT_SETUP_INFO = 977,
+   
+      /* EL1*/
+   EM_EL1_DR_STATUS_INFO = 978,
+
+/*================C2K_XCAL start====================*/
+  /* C2K XCAL related EMs, maximum 30 EMs supported. */
+  EM_C2K_XCAL_INFO_BEGIN = 980,
+  EM_C2K_XCAL_OTA_EVENT_INFO = EM_C2K_XCAL_INFO_BEGIN,
+  EM_C2K_XCAL_OTA_FDSCH_INFO = 981,
+  EM_C2K_XCAL_OTA_RDSCH_INFO = 982,
+  /* New C2K EMs should be added before  EM_C2K_XCAL_INFO_LAST, */
+  EM_C2K_XCAL_INFO_LAST = EM_C2K_XCAL_OTA_RDSCH_INFO,
+  EM_C2K_XCAL_INFO_END = EM_C2K_XCAL_INFO_BEGIN + 29,
+  /*================C2K_XCAL end====================*/
+
+   EM_MMRF_INFO_BEGIN = 1010,
+   EM_MMRF_CDDC_INFO = EM_MMRF_INFO_BEGIN,
+   EM_MMRF_INFO_END = EM_MMRF_INFO_BEGIN + 5,
+
+   /* D2/DDM */
+   EM_DDM_INFO_BEGIN = 1016,
+   EM_DDM_W2LHO_EVENT_INFO = EM_DDM_INFO_BEGIN,
+   EM_DDM_L2WHO_EVENT_INFO = 1017,
+   EM_DDM_DEACT_FAIL_INFO = 1018,
+   EM_DDM_IA_FAIL_INFO = 1019,
+   EM_DDM_IP_INFO = 1020,
+   EM_DDM_LAST_ERROR_CODE_INFO = 1021,
+   EM_DDM_DDS_INFO = 1022,
+   EM_DDM_INFO_END = EM_DDM_INFO_BEGIN + 7, /* 1023 */
+   
+   
\ No newline at end of file
diff --git a/mcu/interface/service/em/em_l1_public_struct.h b/mcu/interface/service/em/em_l1_public_struct.h
new file mode 100644
index 0000000..5e30f0c
--- /dev/null
+++ b/mcu/interface/service/em/em_l1_public_struct.h
@@ -0,0 +1,172 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+ /*******************************************************************************
+ * Filename:
+ * ---------
+ *   em_l1_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_L1_PUBLIC_STRUCT_H
+#define _EM_L1_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+#include "mml1_mipi_public.h"
+
+
+/********************* begin of TDD L1 definition ****************************/
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum  em_info;
+    kal_uint16    force_tx_en;
+    kal_uint16    force_ant_state;
+    kal_uint16    cur_ant_state;
+    kal_int16     ant0_rscp;
+    kal_int16     ant0_rssi;
+    kal_int16     ant0_sinr;
+    kal_int16     ant1_rscp;
+    kal_int16     ant1_rssi;
+    kal_int16     ant1_sinr;
+    kal_int16     tx_pwr;
+    kal_int16     ant2_rscp;
+    kal_int16     ant2_rssi;
+    kal_int16     ant2_sinr;
+    kal_uint16    tas_enable_info;
+    kal_uint16    current_serving_band;
+	kal_int16     reserve;
+	kal_uint16    cur_ant_index;
+	kal_uint16    B34_available_ant_num;
+	kal_uint16    B34_available_ant[8];
+	kal_uint16    B39_available_ant_num;
+	kal_uint16    reserve1;
+	kal_uint16    B39_available_ant[8];
+	kal_int16     ant_rscp[8];
+	kal_int16     ant_sinr[8];
+    kal_int16     tx_power[8];
+	kal_int16     ant_rssi[8];
+	kal_int32     B34_ant_bitmap[8][4];
+	kal_int32     B39_ant_bitmap[8][4];  
+} em_tdd_l1_tas_info_ind_struct;
+
+/********************* end of TDD L1 definition ****************************/
+
+#if defined(__TC10__)
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_bool     is_abnormal;
+    kal_uint16   usid[MML1_MIPI_MAX_HW_CHECK_REPORT_NUM];
+    kal_uint16   pid[MML1_MIPI_MAX_HW_CHECK_REPORT_NUM];
+    kal_uint16   mid[MML1_MIPI_MAX_HW_CHECK_REPORT_NUM];
+    kal_uint16   pcb_info[MML1_MIPI_MAX_HW_CHECK_REPORT_NUM];
+}em_mmrf_mipi_hw_info_ind_struct;
+#else
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_bool     is_abnormal;
+    kal_uint16   usid[10];
+    kal_uint16   pid[10];
+    kal_uint16   mid[10];
+}em_mmrf_mipi_hw_info_ind_struct;
+#endif
+
+#endif /* _EM_L1_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_l4_common_public_struct.h b/mcu/interface/service/em/em_l4_common_public_struct.h
new file mode 100644
index 0000000..35e75bf
--- /dev/null
+++ b/mcu/interface/service/em/em_l4_common_public_struct.h
@@ -0,0 +1,1018 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_l4_common_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_L4_COMMON_PUBLIC_STRUCT_H
+#define _EM_L4_COMMON_PUBLIC_STRUCT_H
+
+#include "l4c_common_enum_public.h"
+
+#ifdef __RF_SCAN_FOR_DESENSE_TEST__
+#include "global_type.h"
+#endif
+
+/*add a macro for size of the configure variable value */
+#define MCF_VARIABLE_VALUE_MAX_LENGTH   512
+
+#define EXTENDED_LCE_MAX_THRESHOLD 20   // add a macro for size maintenance
+
+typedef enum {
+    SET_RX_PATH  = 0,
+    READ_RX_PATH = 1
+} rx_path_cmd_type;
+
+//***** Common for UAS and UL2  ******//
+typedef struct {
+    kal_uint8 TrCHId;
+    kal_uint32 TotalCRC;
+    kal_uint32 BadCRC;
+} trch_bler_struct;
+
+
+
+//***** Common for L4 and UL1  ******//
+typedef enum
+{
+   TX_ANTENNA_STATE_0,
+   TX_ANTENNA_STATE_1,
+   TX_ANTENNA_STATE_2,
+   TX_ANTENNA_STATE_3,
+   TX_ANTENNA_STATE_4,
+   TX_ANTENNA_STATE_5,
+   TX_ANTENNA_STATE_6,
+   TX_ANTENNA_STATE_7,
+   TX_ANTENNA_STATE_8,
+   TX_ANTENNA_STATE_9,
+   TX_ANTENNA_STATE_10,
+   TX_ANTENNA_STATE_11,
+   TX_ANTENNA_STATE_12,
+   TX_ANTENNA_STATE_13,
+   TX_ANTENNA_STATE_14,
+   TX_ANTENNA_STATE_15,
+   TX_ANTENNA_STATE_16,
+   TX_ANTENNA_STATE_17,
+   TX_ANTENNA_STATE_18,
+   TX_ANTENNA_STATE_19,
+   TX_ANTENNA_STATE_20,
+   TX_ANTENNA_STATE_21,
+   TX_ANTENNA_STATE_22,
+   TX_ANTENNA_STATE_23,
+   TX_ANTENNA_STATE_NUM,
+   TX_ANTENNA_INVALID = 0xFF
+
+} force_tx_ant_state_enum;
+
+typedef enum _force_tx_ant_cmd_type_e
+{
+   SET_FORCE_TX_ANT  = 0,               /* mode = 0,1 */
+   READ_FORCE_TX_ANT = 1,               /* mode = 2 */
+   DISABLE_FORCE_TX_ANT_BY_BAND = 2,    /* mode = 3 */
+   ENABLE_FORCE_TX_ANT_BY_BAND = 3,     /* mode = 4 */
+   READ_FORCE_TX_ANT_BY_BAND = 4,       /* mode = 5 */
+
+   INVALID_FORCE_TX_ANT = 0xFF
+} force_tx_ant_cmd_type_e;
+
+typedef enum
+{
+    LCM_NO_PROTECT_PRIO                  = 0,
+    LCM_GL1_STANDBY_PRIO                 = 5,
+    LCM_C2KEVDOL3_STANDBY_PRIO           = 10,
+    LCM_C2KRTTL3_STANDBY_PRIO            = 15,
+    LCM_UL1_STANDBY_PRIO                 = 20,
+    LCM_NL1_STANDBY_PRIO                 = 25,
+    LCM_EL1_STANDBY_PRIO                 = 30,
+    LCM_GL1_ACTIVE_PRIO                  = 35,
+    LCM_C2KEVDOL3_ACTIVE_PRIO            = 40,
+    LCM_C2KRTTL3_ACTIVE_PRIO             = 45,
+    LCM_UL1_ACTIVE_PRIO                  = 50,
+    LCM_NL1_ACTIVE_PRIO                  = 55,
+    LCM_EL1_ACTIVE_PRIO                  = 60,
+} lcm_hopping_priority_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    lcm_hopping_priority_enum hopping_priority;
+    kal_uint32 mipiBitmap;
+} l4cgl1_lcm_hopping_ind_struct,
+  l4cul1_lcm_hopping_ind_struct,
+  l4crttl3_lcm_hopping_ind_struct,
+  l4cevdol3_lcm_hopping_ind_struct,
+  l4cel1_lcm_hopping_ind_struct,
+  l4cnl1_lcm_hopping_ind_struct;
+
+typedef struct _l4cul1_force_tx_ant_req_struct
+{
+   LOCAL_PARA_HDR
+   force_tx_ant_cmd_type_e cmd_type;
+   kal_bool enable_force_tx_ant;
+
+   /* only valid when cmd_type = SET_FORCE_TX_ANT, ENABLE_FORCE_TX_ANT_BY_BAND */
+   force_tx_ant_state_enum force_tx_ant_state; 
+
+   /* valid: 0 - 255, L1 needs to cast this integer to internal band enum */
+   kal_uint8 band;
+
+   /* TRUE: write nvram, FALSE: not write nvram, only valid when cmd_type=SET_FORCE_TX_ANT */
+   kal_bool nvram_write;
+} l4cl1_force_tx_ant_req_struct,
+  l4cul1_force_tx_ant_req_struct,
+  l4ctl1_force_tx_ant_req_struct,
+  l4cel1_force_tx_ant_req_struct,
+  l4cnl1_force_tx_ant_req_struct,
+  l4c_c2k_cl1_force_tx_ant_req_struct;
+
+typedef struct _l4cul1_force_tx_ant_cnf_struct
+{
+   LOCAL_PARA_HDR
+   force_tx_ant_cmd_type_e cmd_type;
+   kal_bool result;
+   kal_bool enable_force_tx_ant;
+   force_tx_ant_state_enum force_tx_ant_state;
+
+} l4cl1_force_tx_ant_cnf_struct,
+  l4cul1_force_tx_ant_cnf_struct,
+  l4ctl1_force_tx_ant_cnf_struct,
+  l4cel1_force_tx_ant_cnf_struct,
+  l4cnl1_force_tx_ant_cnf_struct,
+  l4c_c2k_cl1_force_tx_ant_cnf_struct;
+
+typedef struct _l4cmmrf_ap_rfidx_update_req_struct
+{
+   LOCAL_PARA_HDR
+   kal_uint8 src_id;
+   kal_uint16 feature_idx;      /* feature index:  valid from 0 */
+   kal_int16 scen_idx;          /* scenario index: valid from 0, -1 means disable feature_idx */
+} l4cmmrf_ap_rfidx_update_req_struct,
+  l4cul1_ap_rfidx_update_req_struct,
+  l4cel1_ap_rfidx_update_req_struct,
+  l4c_c2k_cl1_ap_rfidx_update_req_struct,
+  l4cnl1_ap_rfidx_update_req_struct;
+
+typedef struct _l4cmmrf_ap_rfidx_update_cnf_struct
+{
+   LOCAL_PARA_HDR
+   kal_uint8 src_id;
+   kal_bool success;   /* KAL_TRUE: SUCCESS, KAL_FALSE: FAIL */
+} l4cmmrf_ap_rfidx_update_cnf_struct,
+  l4cul1_ap_rfidx_update_cnf_struct,
+  l4cel1_ap_rfidx_update_cnf_struct,
+  l4c_c2k_cl1_ap_rfidx_update_cnf_struct,
+  l4cnl1_ap_rfidx_update_cnf_struct;
+
+typedef struct _l4cl1_txrx_active_time_req_struct
+{
+   LOCAL_PARA_HDR
+   kal_uint8 src_id;
+
+} l4cl1_txrx_active_time_req_struct,
+  l4cul1_txrx_active_time_req_struct,
+  l4ctl1_txrx_active_time_req_struct,
+  l4cel1_txrx_active_time_req_struct;
+
+typedef struct _l4cl1_txrx_active_time_cnf_struct
+{
+   LOCAL_PARA_HDR
+   kal_uint8     src_id;        // just piggyback the src_id sent by l4cel1_txrx_active_time_req_struct from L4C.
+   kal_uint32    tx_mode_time_ms[NUM_TX_POWER_LEVELS];
+   kal_uint32    rx_mode_time_ms;
+   kal_uint32    txrx_mode_union_time_ms;
+
+} l4cl1_txrx_active_time_cnf_struct,
+  l4cul1_txrx_active_time_cnf_struct,
+  l4ctl1_txrx_active_time_cnf_struct,
+  l4cel1_txrx_active_time_cnf_struct;
+
+typedef struct _l4cul1_apinfo_update_req_struct
+{
+   LOCAL_PARA_HDR
+   kal_uint8 receiver_status;       /* 0: other output devices
+                                     * 1: earpiece */
+   kal_uint8 screen_rotation;       /* 0: portrait (0 ?45 degrees, 180 ?45 degrees)
+                                     * 1: landscape (90 ?45 degrees, 270 ?45 degrees) */
+   kal_uint8 psensor_info;          /* 0: far
+                                     * 1 => near */
+   kal_uint8 voice_call_status;     /*  0 => IDLE
+                                     * 1 => RINGING, OFFHOOK */
+} l4cl1_apinfo_update_req_struct,
+  l4cul1_apinfo_update_req_struct,
+  l4ctl1_apinfo_update_req_struct,
+  l4cel1_apinfo_update_req_struct;
+
+typedef enum {
+    UL1_RX_MAIN_ONLY = 0,
+    UL1_RX_RXD_ONLY  = 1,
+    UL1_RX_BOTH      = 2,
+    UL1_RX_OFF       = 3   // Resume default
+} ul1_rx_path_set_enum;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    ul1_rx_path_set_enum rx_path;
+    kal_bool nvram_write;  // This flag is used to indicate whether need to save the setting in NVRAM or not
+    rx_path_cmd_type cmd_type;
+}l4cul1_set_rx_path_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_bool  result;
+    rx_path_cmd_type cmd_type;
+    ul1_rx_path_set_enum  rx_path;
+}l4cul1_set_rx_path_cnf_struct;
+
+typedef enum
+{
+    L1_SET_PCL_VALUE      = 0,
+    L1_SET_MAX_PCL_VALUE  = 1,
+    L1_READ_PCL_VALUE     = 2,
+    L1_INVALID_PCL_VALUE  // Max supported
+} l1_force_pcl_cmd_type_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  src_id;
+	l1_force_pcl_cmd_type_enum cmd_type;
+	kal_int8                   pcl_value; /* Valid Range -1 to 31*/
+	kal_uint8                  gsm_band; /* Valid Range 1 to 4*/
+} l4cl1_gsm_em_tx_pwr_ctrl_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  src_id;
+	kal_bool                   result;
+	l1_force_pcl_cmd_type_enum cmd_type;
+	kal_int8                   pcl_value; /* Valid Range -1 to 31*/
+	kal_uint8                  gsm_band; /* Valid Range 1 to 4*/
+	kal_uint8                  mod_type;  /* 0-1 */
+	kal_int16                  apc_dac;   /* Valid Range -1 to 1023*/
+} l4cl1_gsm_em_tx_pwr_ctrl_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8     src_id;
+	kal_int16    max_tx_power_offset; /* Valid Range 0 to 1023*/
+    kal_uint8     band; /* Valid only for GSM. For other RATs set to 0 and should be ignored*/
+} l4cl1_set_max_tx_power_req_struct,
+  l4cel1_set_max_tx_power_req_struct,
+  l4cul1_set_max_tx_power_req_struct,
+  l4ctl1_set_max_tx_power_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8     src_id;
+	kal_bool      result;
+} l4cl1_set_max_tx_power_cnf_struct,
+  l4cel1_set_max_tx_power_cnf_struct,
+  l4cul1_set_max_tx_power_cnf_struct,
+  l4ctl1_set_max_tx_power_cnf_struct;
+#ifdef __TX_PWR_EXTENSION__
+#define MAX_TX_POWER_INFO_NUM 10
+#define MAX_TX_POWER_REPORT_VALUE 48
+typedef struct{
+  kal_uint8 band; /* Range 0~99 for FR1 */
+  kal_int16 power_value;  /* Range: 0~29*8, unit 1/8 */
+}max_tx_pwr_info;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+  kal_uint8       src_id;
+  kal_uint8       num;  /* Maximum 10 */
+  max_tx_pwr_info powr_info[MAX_TX_POWER_INFO_NUM];
+    kal_uint8       nvram_write;  /* 0:Clear, 1:Write, 0xFF:USE Locally */
+} l4l1_set_excl_max_tx_power_req_struct,
+  l4cel1_set_excl_max_tx_power_req_struct,
+  l4cul1_set_excl_max_tx_power_req_struct,
+  l4cnl1_set_excl_max_tx_power_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+  kal_uint8     src_id;
+  kal_bool      result;
+} l4cel1_set_excl_max_tx_power_cnf_struct,
+  l4cul1_set_excl_max_tx_power_cnf_struct,
+  l4cnl1_set_excl_max_tx_power_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+  kal_uint8     src_id;
+} l4cel1_get_excl_max_tx_power_req_struct,
+  l4cul1_get_excl_max_tx_power_req_struct,
+  l4cnl1_get_excl_max_tx_power_req_struct;
+
+
+
+typedef struct{
+  LOCAL_PARA_HDR
+  kal_uint8       src_id;
+  kal_uint8       num;  /* Maximum 10 */
+  max_tx_pwr_info powr_info[MAX_TX_POWER_REPORT_VALUE]; /* L1 Report Unit 1/8*/
+} l4cel1_get_excl_max_tx_power_cnf_struct,
+  l4cul1_get_excl_max_tx_power_cnf_struct,
+  l4cnl1_get_excl_max_tx_power_cnf_struct;
+#endif
+
+typedef enum {
+    L1_RX_MAIN_ONLY = 0,
+    L1_RX_RXD_ONLY  = 1,
+    L1_RX_BOTH      = 2,
+    L1_RX_OFF       = 3   // Resume default
+} l1_rx_path_set_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    l1_rx_path_set_enum rx_path;
+    kal_bool nvram_write;  // This flag is used to indicate whether need to save the setting in NVRAM or not
+    rx_path_cmd_type cmd_type;
+}l4cl1_set_rx_path_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_bool  result;
+    rx_path_cmd_type cmd_type;
+    l1_rx_path_set_enum  rx_path;
+}l4cl1_set_rx_path_cnf_struct;
+
+#ifdef __RF_SCAN_FOR_DESENSE_TEST__
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  src_id;
+    kal_uint8                  band;
+    kal_uint16                 arfcn;
+    kal_bool                   tx_on_flag;
+    kal_bool                   rxd_en;
+    kal_int8                   tx_power;
+    kal_uint8                  repeat_times;
+    kal_int16                  rxm_gain;
+    kal_int16                  rxd_gain;
+} l4cl1_em_rf_scan_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  src_id;
+    kal_bool                   result;
+} l4cl1_em_rf_scan_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  src_id;
+    kal_uint8                  band;
+    kal_uint16                 dl_uarfcn;
+	kal_bool                   tx_on_flag;
+	kal_int8                   tx_power;
+	kal_uint8                  repeat_times;
+} l4cul1_em_rf_scan_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  src_id;
+    kal_bool                   result;
+} l4cul1_em_rf_scan_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  src_id;
+    kal_uint8                  band;
+    kal_uint16                 arfcn;
+	kal_bool                   tx_on_flag;
+	kal_int8                   tx_power;
+	kal_uint8                  repeat_times;
+} l4ctl1_em_rf_scan_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  src_id;
+    kal_bool                   result;
+} l4ctl1_em_rf_scan_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  src_id;
+    kal_uint16                 band;
+    EARFCN                     dl_earfcn;
+    kal_uint8                  dl_bw;
+    kal_bool                   tx_on_flag;
+    kal_uint8                  ul_bw;
+    kal_uint8                  vrb_start;
+    kal_uint8                  vrb_len;
+    kal_int16                  tx_power;
+    kal_uint8                  repeat_times;
+    kal_bool                   tas_en;    
+    kal_uint8                  ant_state;
+} l4cel1_em_rf_scan_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  src_id;
+    kal_bool                   result;
+    kal_uint16                 error_cause;   
+} l4cel1_em_rf_scan_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  src_id;
+	kal_uint8                  rat_type; /*rat_type obtained from AT+ERFSCAN: 4:1xRTT, 5: EVDO */
+    kal_uint8                  band;
+    kal_uint16                 arfcn;
+	kal_bool                   tx_on_flag;
+	kal_int8                   tx_power;
+	kal_uint8                  repeat_times;
+} l4c_c2k_cl1_em_rf_scan_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  src_id;
+    kal_bool                   result;
+} l4c_c2k_cl1_em_rf_scan_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_int32                  main_rssi;
+    kal_int32                  div_rssi;
+} l4c_val_c2k_rf_scan_ind_struct;
+#endif /*__RF_SCAN_FOR_DESENSE_TEST__*/
+
+typedef enum {
+	L4C_MCF_CONFIG_SET_OTA_AND_OPOTA_FILE_PATH           = 0,
+	L4C_MCF_CONFIG_SET_OTA_FILE_PATH                     = 1,
+	L4C_MCF_CONFIG_SET_OPOTA_FILE_PATH                   = 2,
+	L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE = 3,
+	L4C_MCF_CONFIG_GET_APPLIED_FILE_PATH                 = 4,
+	L4C_MCF_CONFIG_DUMP_LID_DATA                         = 5,
+	L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN     = 6,
+	L4C_MCF_CONFIG_UPDATE_OPOTA_FILE                     = 7,
+	L4C_MCF_CONFIG_INI_OPERATION                         = 8,
+	L4C_MCF_CONFIG_LID_VARIABLE_OPERATION                = 9,
+    L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION              = 10,
+#ifdef __MCF_COMBINE_FILE_SUPPORT__
+    L4C_MCF_CONFIG_ASSIGN_COMBINED_PATH                  = 11,
+#endif /* __MCF_COMBINE_FILE_SUPPORT__ */
+	L4C_MCF_CONFIG_MAX
+} l4c_mcf_config_op_enum;
+
+typedef enum {
+	L4C_MCF_CONFIG_TYPE_DEFAULT_BIN         = 0,
+	L4C_MCF_CONFIG_TYPE_CARRIER_BIN         = 1,
+	L4C_MCF_CONFIG_TYPE_GENERAL_CARRIER_BIN = 2,
+	L4C_MCF_CONFIG_TYPE_MAX
+} l4c_mcf_config_type_enum;
+
+typedef enum {
+	L4C_MCF_PATH_TYPE_OTA              = 0,
+	L4C_MCF_PATH_TYPE_RUNTIME          = 1,
+	L4C_MCF_PATH_TYPE_MAX
+} l4c_mcf_path_type_enum;
+
+typedef enum {
+	L4C_MCF_CONFIG_ACT_NO_READ_INI     = 0,
+	L4C_MCF_CONFIG_ACT_READ_INI        = 1,
+	L4C_MCF_CONFIG_ACT_MAX
+} l4c_mcf_config_act_enum;
+
+typedef enum {
+	L4C_MCF_CONFIG_MODE_READ           = 0,
+	L4C_MCF_CONFIG_MODE_WRITE          = 1,
+	L4C_MCF_CONFIG_MODE_MAX
+} l4c_mcf_config_mode_enum;
+
+typedef enum {
+    L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA    = 0,
+    L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OPOTA  = 1,
+#ifdef __MCF_COMBINE_FILE_SUPPORT__
+    L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA   = 2,
+    L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA = 3,
+#endif /* __MCF_COMBINE_FILE_SUPPORT__ */
+    L4C_MCF_CONFIG_LID_VARIABLE_ACT_MAX
+} l4c_mcf_config_lid_variable_act_enum;
+
+typedef enum{
+    L4C_MCF_QUERY_VARIABLE_FORM_PATH            = 0,
+    L4C_MCF_QUERY_VARIABLE_FORM_GID             = 1,
+    L4C_MCF_QUERY_VARIABLE_FORM_MAX
+} l4c_mcf_query_variable_form_enum ;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8                  src_id;
+	l4c_mcf_config_op_enum     op;
+	kal_uint8                  ps_id;
+	l4c_mcf_config_type_enum   config_type;
+	l4c_mcf_path_type_enum     path_type;
+	kal_uint8                  trigger_dsbp;
+#ifdef __MCF_COMBINE_FILE_SUPPORT__
+	kal_uint8                  reset;
+	kal_uint8                  reserved;
+#else
+    kal_uint8                  reserved[2];
+#endif /*__MCF_COMBINE_FILE_SUPPORT__*/
+	kal_uint8                  config1[128];
+	kal_uint8                  config2[128];
+	kal_uint8                  config3[128];
+	kal_uint8                  config4[128];
+} l4c_mcf_set_config_req_struct;
+
+#ifdef __MCF_COMBINE_FILE_SUPPORT__ 
+typedef l4c_mcf_set_config_req_struct l4c_mcf_assign_combined_file_path_req_struct;
+#endif /* __MCF_COMBINE_FILE_SUPPORT__ */
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8                  src_id;
+	l4c_mcf_config_op_enum     op;
+	kal_bool                   result;
+	kal_uint8                  reserved;
+	kal_uint32                 mcf_result;
+	kal_uint32                 dsbp_result;
+} l4c_mcf_set_config_cnf_struct;
+#ifdef __MCF_COMBINE_FILE_SUPPORT__
+typedef l4c_mcf_set_config_cnf_struct l4c_mcf_assign_combined_file_path_cnf_struct;
+#endif /* __MCF_COMBINE_FILE_SUPPORT__ */
+
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8                  src_id;
+	l4c_mcf_config_op_enum     op;
+	kal_uint8                  ps_id;
+	l4c_mcf_config_type_enum   config_type;
+} l4c_mcf_get_config_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8                  src_id;
+	kal_bool                   result;
+	l4c_mcf_config_type_enum   config_type;
+	l4c_mcf_path_type_enum     path_type;
+	kal_uint8                  config1[128];
+} l4c_mcf_get_config_cnf_struct;
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  src_id;
+    l4c_mcf_config_op_enum     op;
+    kal_uint16                 lid[32];
+    kal_uint32                 lid_cnt;
+} l4c_mcf_dump_data_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8                  src_id;
+	l4c_mcf_config_op_enum     op;
+	kal_uint32                 result;
+} l4c_mcf_dump_data_cnf_struct;
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8                  src_id;
+	l4c_mcf_config_op_enum     op;
+	kal_uint8                  ps_id;
+	l4c_mcf_config_act_enum    action;
+} l4c_mcf_update_ota_file_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8                  src_id;
+	l4c_mcf_config_op_enum     op;
+	kal_uint32                 mcf_result;
+} l4c_mcf_update_ota_file_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8                  src_id;
+	l4c_mcf_config_op_enum     op;
+	kal_uint8                  ps_id;
+	l4c_mcf_config_mode_enum   mode;
+	kal_uint8                  item[32];
+	kal_uint8                  value[64];
+} l4c_mcf_config_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8                  src_id;
+	l4c_mcf_config_op_enum     op;
+	kal_uint32                 mcf_result;
+	kal_uint8                  item[32];
+	kal_uint8                  value[64];
+} l4c_mcf_config_cnf_struct;
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8                            src_id;
+	l4c_mcf_config_op_enum               op;
+	kal_uint8                            ps_id;
+	l4c_mcf_config_lid_variable_act_enum action;
+	kal_uint16                           lid_num;
+	kal_uint16                           rec_id;
+	kal_uint8                            tag_name[256];
+	kal_uint8                            len;
+} l4c_mcf_config_lid_variable_operation_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8                            src_id;
+	l4c_mcf_config_op_enum               op;
+	l4c_mcf_config_lid_variable_act_enum action;
+	kal_uint32                           mcf_result;
+	kal_uint8                            len;
+	kal_uint8                            value[512];
+} l4c_mcf_config_lid_variable_operation_cnf_struct;
+
+typedef struct{    LOCAL_PARA_HDR
+	kal_uint8                            src_id; 
+	l4c_mcf_config_op_enum               op;
+	kal_uint8                            ps_id; 
+	l4c_mcf_query_variable_form_enum     format;
+	l4c_mcf_config_lid_variable_act_enum action;
+	kal_uint32                           num;
+	kal_uint8                            config[256];
+	kal_uint8                            len;
+	kal_uint16                           rec_id;
+#ifdef __MCF_COMBINE_FILE_SUPPORT__
+    kal_uint8                            value[MCF_VARIABLE_VALUE_MAX_LENGTH];
+#endif /* __MCF_COMBINE_FILE_SUPPORT__ */
+} l4c_mcf_variable_value_operation_req_struct;
+
+typedef struct{    LOCAL_PARA_HDR
+	kal_uint8                            src_id; 
+	l4c_mcf_config_op_enum               op;
+	l4c_mcf_query_variable_form_enum     format; 
+	l4c_mcf_config_lid_variable_act_enum action;
+	kal_uint32                           mcf_result; 
+	kal_uint8                            len;
+	kal_uint8                            value[MCF_VARIABLE_VALUE_MAX_LENGTH]; 
+} l4c_mcf_variable_value_operation_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  sim_index; //Valid Input : 0-1
+    kal_bool                   monitoring_req;
+} l4cgl1_get_ant_info_req_struct,
+  l4cul1_get_ant_info_req_struct,
+  l4ctl1_get_ant_info_req_struct,
+  l4cel1_get_ant_info_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  sim_index; //Valid Input : 0-1
+    kal_uint8                  antenna_index; //Valid Values: 0,1,2,255
+} l4cgl1_get_ant_info_cnf_struct,
+  l4cul1_get_ant_info_cnf_struct,
+  l4ctl1_get_ant_info_cnf_struct,
+  l4cgl1_get_ant_info_ind_struct,
+  l4cul1_get_ant_info_ind_struct,
+  l4ctl1_get_ant_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  sim_index; //Valid Input : 0-1
+    kal_uint8                  antenna_index[3]; //Valid Values: 0,1,2,255
+} l4cel1_get_ant_info_cnf_struct,
+  l4cel1_get_ant_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 mode;
+    kal_uint8 num_of_ul_threshold_valid;
+    kal_uint8 num_of_dl_threshold_valid;
+    kal_uint16 hyst_mills;
+    kal_uint16 ul_hyst_kbps;
+    kal_uint16 dl_hyst_kbps;
+    kal_uint32 ul_threshold[EXTENDED_LCE_MAX_THRESHOLD];
+    kal_uint32 dl_threshold[EXTENDED_LCE_MAX_THRESHOLD];
+} l4c_nl1_extended_lce_report_req_struct,
+  l4c_el1_extended_lce_report_req_struct,
+  l4c_ul1_extended_lce_report_req_struct,
+  l4c_umac_extended_lce_report_req_struct,
+  l4c_mac_extended_lce_report_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 is_ul_valid;
+    kal_uint8 is_dl_valid;
+    kal_uint32 ul_kbps;
+    kal_uint32 dl_kbps;
+} l4c_ul1_extended_lce_report_ind_struct,
+  l4c_umac_extended_lce_report_ind_struct,
+  l4c_mac_extended_lce_report_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 is_ul_valid;
+    kal_uint8 is_dl_valid;
+    kal_uint32 ul_kbps;
+    kal_uint32 dl_kbps;
+    kal_bool  is_nsa;
+} l4c_nl1_extended_lce_report_ind_struct,
+  l4c_el1_extended_lce_report_ind_struct;
+
+
+typedef enum {
+    L1_READ_TX_POWER = 0,
+    L1_TST_CMD_END  
+} l1_tstcmd_type_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  src_id;
+    l1_tstcmd_type_enum        cmd_type;
+} l4cl1_em_tst_control_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  src_id;
+    kal_bool                   result;
+} l4cl1_em_tst_control_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_int16                   tx_power;  // retrieved TX power
+} l4cl1_em_tx_report_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  event; /* 0 - TX Power Low indication, 1 - TX PowerHigh indication*/
+} l4c_mmrf_tx_power_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_int16 modem_temperature;
+} l4cnl1_get_rf_temperature_cnf_struct,
+  l4cxl1_get_rf_temperature_cnf_struct;
+
+#endif /* _EM_L4_COMMON_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_l4_public_struct.h b/mcu/interface/service/em/em_l4_public_struct.h
new file mode 100644
index 0000000..cfdb114
--- /dev/null
+++ b/mcu/interface/service/em/em_l4_public_struct.h
@@ -0,0 +1,914 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_l4_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_L4_PUBLIC_STRUCT_H
+#define _EM_L4_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+#include "em_l4_common_public_struct.h"
+#include "l4crac_enums.h"
+
+#define UL1_RX_PATH_BASE 10
+#define L1_RX_PATH_BASE  20
+
+/* EL1 RX PATH set command*/
+
+typedef enum {
+    BOTH_RX_PATH = 0,
+    RX_PATH_0    = 1,
+    RX_PATH_1    = 2,
+    RE_DIRECT    = 0xFF
+} rx_path_setting_enum;
+
+#if defined (__TC10__)
+typedef enum
+{
+    MMRF_TEMP_TEMPERATURE,
+    MMRF_TEMP_ADC,
+    MMRF_TEMP_MAX
+}MMRF_TEMPERATURE_MODE_VARIABLE;
+#endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_bool nvram_write;  //This flag is used to indicate whether EL1 need to write Rx path setting to NVRAM when receiving set Rx path command
+    rx_path_cmd_type cmd_type;
+    rx_path_setting_enum rx_path;
+}l4cel1_set_rx_path_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    rx_path_cmd_type cmd_type;
+    kal_bool rx_path_set_result; //only used for Rx path command set
+                                                  //1:success, 0:failed
+    rx_path_setting_enum rx_path; //only used for Rx path command read
+}l4cel1_set_rx_path_cnf_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 band;
+    EARFCN    dl_earfcn;
+}l4cel1_rx_rssi_verify_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_int32 rssi0_edBm;
+    kal_int32 rssi1_edBm;
+    kal_int32 rssi2_edBm;
+    kal_int32 rssi3_edBm;    
+}l4cel1_rx_rssi_verify_ind_struct;
+
+/* EL1 RF TEMPURATURE */
+typedef struct
+{
+    LOCAL_PARA_HDR
+}l4cel1_get_rf_temperature_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_int16 rf_temperature; /* range : -40 ~ 140, 0x8000 means invalid value */
+}l4cel1_get_rf_temperature_cnf_struct;
+
+/* EL1 MONITOR RF TEMPERATURE */
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_bool on;                    /* KAL_TRUE :  Turn on monitor rf temperature*/
+                                    /* KAL_FALSE : Turn off monitor rf temperature*/
+    kal_int16 threshold ;           /* Range : -40 ~ 140 */
+    kal_int16 monitor_period;       /*unit : 1ms*/
+}l4cel1_monitor_rf_temperature_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+}l4cel1_monitor_rf_temperature_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_int16 curr_temperature;  /* current temperature when it is over threshold*/
+    kal_int16 threshold ;        /* Range : -40 ~ 140 */
+}l4cel1_monitor_rf_temperature_ind_struct;
+
+/* EL1 TX POWER */
+typedef struct
+{
+    LOCAL_PARA_HDR
+}l4cel1_get_tx_power_req_struct;
+
+#ifdef __TX_PWR_EXTENSION__	
+typedef struct{
+	kal_uint8 band;
+	kal_int8  tx_power;
+	kal_uint8 phy_idx;
+}tx_power_info;
+#endif
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_int8 tx_power; /* tx power : -50, -127 : invalid */
+#ifdef __TX_PWR_EXTENSION__	
+    tx_power_info tx_power_ant[2];/*reporting tx power per antenna*/
+#endif	
+}l4cel1_get_tx_power_cnf_struct,l4cul1_get_tx_power_cnf_struct;
+
+#if defined (__TC10__)
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8 src_id;
+    MMRF_TEMPERATURE_MODE_VARIABLE mode;
+}l4cmmrf_temperature_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8 src_id;
+    MMRF_TEMPERATURE_MODE_VARIABLE mode;                  // Piggy back 
+    kal_uint16 temperature;
+    kal_uint16 adc_value;
+}l4cmmrf_temperature_cnf_struct;
+#endif
+
+/* For TSTL4C_EM_START_REQ, TSTL4C_EM_STOP_REQ */
+typedef struct
+{
+   LOCAL_PARA_HDR
+   module_type mod_id;
+   request_info_type    info_request;
+} tstl4c_em_start_req_struct;
+
+typedef tstl4c_em_start_req_struct tstl4c_em_stop_req_struct;
+
+#if 0 /* TCM EM mode deprecated @ 2013.04 */
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* 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
+
+
+/* Poying: 20101210. Remove for EM_MODE. */
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+
+/* TCM EM Mode */
+typedef enum
+{
+    LOG_EM_MODE_TCM_PDP_INACTIVE,
+    LOG_EM_MODE_TCM_PDP_ACTIVE_PENDING,
+    LOG_EM_MODE_TCM_PDP_ACTIVE,
+    LOG_EM_MODE_TCM_PDP_INACTIVE_PENDING,
+    LOG_EM_MODE_TCM_PDP_ALLOCATED,
+    LOG_EM_MODE_TCM_PDP_CONTEXT_ENUM_TOTAL
+} tcm_em_mode_pdp_context_enum;
+
+typedef enum
+{
+    LOG_EM_MODE_TCM_PRIMARY_CONTEXT,
+    LOG_EM_MODE_TCM_SECONDARY_CONTEXT,
+    LOG_EM_MODE_TCM_UNKNOWN_CONTEXT
+} tcm_em_mode_pdp_context_type_enum;
+
+typedef enum
+{
+    LOG_EM_MODE_TCM_MS_INITIATED = 0,
+    LOG_EM_MODE_TCM_NW_INITIATED = 1
+} tcm_em_mode_initiated_enum;
+
+typedef enum
+{
+    LOG_EM_MODE_TCM_IPV4_ADDR_TYPE      = 0X21,
+    LOG_EM_MODE_TCM_IPV6_ADDR_TYPE      = 0X57,
+    LOG_EM_MODE_TCM_IPV4V6_ADDR_TYPE    = 0X8D,
+    LOG_EM_MODE_TCM_PPP_ADDR_TYPE       = 0X01,
+    LOG_EM_MODE_TCM_OSP_IHOSS_ADDR_TYPE = 0X02,
+    LOG_EM_MODE_TCM_NULL_PDP_ADDR_TYPE  = 0X03  /* This is added incase if no pdpaddrtype is
+                                  * specified */
+} tcm_em_mode_pdp_addr_type_enum;
+
+typedef struct
+{
+    /* Requested Qos */
+    kal_uint8 delay_class; // possible value are Decimal 1, 2, 3, 4
+    kal_uint8 reliability_class; // possible value are Decimal 1, 2, 3, 4, 5
+    kal_uint8 peak_throughput; // possible value are Decimal 1~9
+    kal_uint8 precedence_class; // possible value are Decimal 1, 2, 3, 4
+    kal_uint8 mean_throughput; // possible value are Decimal 1~18
+    kal_uint8 traffic_class; // possible value are Decimal 1, 2, 3, 4
+    kal_uint8 delivery_order; // possible value are Decimal 1, 2
+    kal_uint8 delivery_of_err_sdu; // possible value are Decimal 1, 2, 3
+    kal_uint8 max_sdu_size; // max SDU size according to 24.008 Table 10.5.156 encoding
+    kal_uint8 max_bitrate_up_lnk; // possible value are Decimal 1~254
+    kal_uint8 max_bitrate_down_lnk;  // possible value are Decimal 1~254
+    kal_uint8 residual_bit_err_rate; // possible value are Decimal 1~9
+    kal_uint8 sdu_err_ratio; // possible value are Decimal 1~7
+    kal_uint8 transfer_delay; // possible value are Decimal 1~62
+    kal_uint8 traffic_hndl_priority; // possible value are Decimal 1, 2, 3
+    kal_uint8 guarntd_bit_rate_up_lnk; // possible value are Decimal 1~254
+    kal_uint8 guarntd_bit_rate_down_lnk;  // possible value are Decimal 1~254
+    kal_uint8 signalling_indication;
+    kal_uint8 source_statistics_descriptor;
+    kal_uint8 ext_max_bitrate_down_lnk;
+    kal_uint8 ext_guarntd_bit_rate_down_lnk;
+    kal_uint8 ext_max_bitrate_up_lnk;
+    kal_uint8 ext_guarntd_bit_rate_up_lnk;
+    kal_uint8 ext2_max_bitrate_down_lnk;
+    kal_uint8 ext2_guarntd_bit_rate_down_lnk;
+    kal_uint8 ext2_max_bitrate_up_lnk;
+    kal_uint8 ext2_guarntd_bit_rate_up_lnk;
+
+    kal_uint8 human_readable_delay_class; // delay_class_enum
+    kal_uint8 human_readable_reliability_class; // sm_readable_reliability_class_enum
+    kal_uint8 human_readable_peak_throughput; // sm_readable_peak_throughput_class_enum
+    kal_uint8 human_readable_precedence_class; // sm_readable_precedence_class_enum
+    kal_uint8 human_readable_mean_throughput; // sm_readable_mean_throughput_enum
+    kal_uint8 human_readable_traffic_class; // sm_readable_traffic_class_enum
+    kal_uint8 human_readable_delivery_order; // sm_readable_delivery_order_enum
+    kal_uint8 human_readable_delivery_of_err_sdu; // sm_readable_delivery_of_err_sdu_enum
+    kal_uint16 human_readable_max_sdu_size;
+    kal_uint32 human_readable_max_bitrate_up_lnk;
+    kal_uint32 human_readable_max_bitrate_down_lnk;
+    kal_uint8 human_readable_residual_bit_err_rate; // sm_readable_residual_bit_error_rate_enum
+    kal_uint8 human_readable_sdu_err_ratio; // sm_readable_sdu_err_ratio_enum
+    kal_uint16 human_readable_transfer_delay;
+    kal_uint8 human_readable_traffic_hndl_priority; // sm_readable_traffic_hndl_priority_enum
+    kal_uint32 human_readable_guarntd_bit_rate_up_lnk;
+    kal_uint32 human_readable_guarntd_bit_rate_down_lnk;
+    kal_uint8 human_readable_signalling_indication; // sm_readable_signaling_indication_enum
+    kal_uint8 human_readable_source_statistics_descriptor; // sm_readable_source_statistics_descriptor_enum
+
+} tcm_em_qos_struct;
+
+typedef struct
+{
+    kal_uint8   context_id;
+    kal_uint8   qci;
+    kal_uint8   max_bitrate_up_lnk;
+    kal_uint8   max_bitrate_down_lnk;
+    kal_uint8   ext_max_bitrate_up_lnk;
+    kal_uint8   ext_max_bitrate_down_lnk;
+    kal_uint8   ext2_max_bitrate_up_lnk;
+    kal_uint8   ext2_max_bitrate_down_lnk;
+
+    kal_uint8   guarntd_bit_rate_up_lnk;
+    kal_uint8   guarntd_bit_rate_down_lnk;
+    kal_uint8   ext_guarntd_bit_rate_up_lnk;
+    kal_uint8   ext_guarntd_bit_rate_down_lnk;
+    kal_uint8   ext2_guarntd_bit_rate_up_lnk;
+    kal_uint8   ext2_guarntd_bit_rate_down_lnk;
+
+    kal_uint32  human_readable_max_bitrate_up_lnk;
+    kal_uint32  human_readable_max_bitrate_down_lnk;
+    kal_uint32  human_readable_guarntd_bit_rate_up_lnk;
+    kal_uint32  human_readable_guarntd_bit_rate_down_lnk;
+
+} tcm_em_eps_qos_struct;
+
+
+typedef struct
+{
+
+   kal_uint8   cid;
+   kal_uint8   ap_cid;
+   kal_uint8   nsapi; // NSAPI
+   kal_uint8   psi;
+
+   tcm_em_mode_pdp_context_enum   pdp_context_status;
+   tcm_em_mode_pdp_context_type_enum context_type;
+
+   tcm_em_mode_initiated_enum   initiated_by;
+   tcm_em_mode_initiated_enum   termination_initiated_by;
+
+   tcm_em_mode_pdp_addr_type_enum   user_defined_pdp_type;
+   tcm_em_mode_pdp_addr_type_enum   nw_applied_pdp_type;
+
+   kal_uint8 user_defined_pdp_addr[IPV4V6_ADDR_LEN] ;
+   kal_uint8 nw_applied_pdp_addr[IPV4V6_ADDR_LEN] ;
+
+   kal_bool dns_present;
+   kal_uint8 dns[MAX_PDP_ADDR_LEN];
+   kal_bool dns2_present;
+   kal_uint8 dns2[MAX_PDP_ADDR_LEN];
+
+   kal_bool ipv6_dns1_present;
+   kal_uint8 ipv6_dns1[IPV6_ADDR_LEN];
+   kal_bool ipv6_dns2_present;
+   kal_uint8 ipv6_dns2[IPV6_ADDR_LEN];
+
+   kal_uint8 user_defined_apn_len;
+   kal_uint8 user_defined_apn[MAX_APN_LEN];
+
+   kal_uint8 nw_applied_apn_len;
+   kal_uint8 nw_applied_apn[MAX_APN_LEN];
+
+   kal_uint8 primary_context_id;
+   kal_uint8 primary_ap_context_id;
+   ps_cause_enum cause;
+
+   //kal_uint16 sdu_size; // Max SDU size in Bytes
+
+   //kal_uint8   apn[100];
+
+   tcm_em_qos_struct em_requested_qos;
+   tcm_em_qos_struct em_negotiated_qos;
+
+   tcm_em_eps_qos_struct em_eps_req_qos;
+   tcm_em_eps_qos_struct em_eps_neg_qos;
+
+   kal_uint32   dl_apn_ambr;
+   kal_uint32   ul_apn_ambr;
+
+   kal_uint8    sapi;
+
+} tcm_em_cid_info_struct;
+
+typedef struct{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+   tcm_em_cid_info_struct pdp;
+} em_tcm_info_ind_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+}l4cvt_em_display_ind_struct;   /* MSG: VT to L4C */
+/************************** VT EM Definition End  *****************************/
+
+
+
+
+typedef struct
+{
+    kal_uint8 group_id;                  /* Group ID */
+    unsigned char group_name[MAX_LEN_OF_NW_GROUP_NAME];
+
+    module_type  mod_id;                 /* Mod ID */
+
+    kal_uint32 event_id;                 /* Evnet ID */
+    unsigned char event_name[MAX_LEN_OF_NW_EVENT_NAME];
+
+    kal_uint16 ring_tone_id;             /* Ring Tone ID */
+} em_network_event_struct;
+
+extern em_network_event_struct em_network_event_tbl[];
+
+extern kal_uint32 em_get_total_mod(void);
+
+extern kal_uint32 em_get_total_info_req(void);
+
+extern kal_uint32 em_nw_get_total_event(void);
+
+typedef enum
+{
+    RAC_EM_NO_SERVICE,
+    RAC_EM_LIMITED_SERVICE,
+    RAC_EM_GSM,
+    RAC_EM_UMTS_FDD,
+    RAC_EM_UMTS_TDD,
+    RAC_EM_LTE_FDD,
+    RAC_EM_LTE_TDD,
+    RAC_EM_NR
+} rac_em_active_rat_info_enum;
+
+typedef enum
+{
+    RAC_EM_MDMI_NO_SERVICE,
+    RAC_EM_MDMI_GSM,
+    RAC_EM_MDMI_UMTS,
+    RAC_EM_MDMI_LTE,
+    RAC_EM_MDMI_CDMA,
+    RAC_EM_MDMI_WIFI,
+    RAC_EM_MDMI_DEFAULT = 0xff
+} rac_em_mdmi_rat_info_enum;
+
+typedef enum
+{
+    L4_EM_EVENT_RAT_CHANGE = 0x01,    //bitmask
+    L4_EM_EVENT_MDMI_RAT_INFO = 0x02,
+    L4_EM_EVENT_ECSQ = 0x04
+} l4c_em_event_enum;
+
+typedef enum
+{
+    RAC_EM_INFO_EVENT,
+    RAC_EM_ABNORMAL_NO_SERVICE,
+    RAC_EM_NETWORK_TYPE_INFO_EVENT, // For TMOUS_2018Q4_GID-MTRREQ-458357
+    RAC_EM_REG_STATE_INFO_EVENT,
+    RAC_EM_EVENT_MAX
+} rac_em_event_enum;
+
+typedef enum {
+    RAC_EM_SOURCE_NONE = 0,
+    RAC_EM_SOURCE_ELT = 1,
+    RAC_EM_SOURCE_RMMI = 2,
+    RAC_EM_SOURCE_ELT_RMMI = RAC_EM_SOURCE_ELT | RAC_EM_SOURCE_RMMI,
+} rac_em_source_enum;
+
+typedef enum {
+    RAC_EM_NETWORK_TYPE_SEARCHING = 0,
+    RAC_EM_NETWORK_TYPE_LTE = 1,
+    RAC_EM_NETWORK_TYPE_UMTS = 2,
+    RAC_EM_NETWORK_TYPE_EDGE = 3,
+    RAC_EM_NETWORK_TYPE_GPRS = 4,
+    RAC_EM_NETWORK_TYPE_INVALID = -2
+} rac_em_network_type_enum; // For TMOUS_2018Q4_GID-MTRREQ-458357
+
+typedef enum
+{
+    RAC_EM_HOME,
+    RAC_EM_HOME_EQUIV,
+    RAC_EM_ROAMING
+} rac_em_plmn_state_enum;
+
+typedef enum
+{
+    RAC_EM_ATT_NO_SERVICE,
+    RAC_EM_ATT_EMERGENCY,
+    RAC_EM_ATT_SEARCHING,
+    RAC_EM_ATT_GSM,
+    RAC_EM_ATT_UMTS,
+    RAC_EM_ATT_LTE,
+    RAC_EM_ATT_NR,
+    RAC_EM_ATT_HOME,
+    RAC_EM_ATT_EQHOME,
+    RAC_EM_ATT_ROAMING,
+    RAC_EM_ATT_OFF,
+    RAC_EM_ATT_NONE,
+    RAC_EM_ATT_UNKNOWN = 0xff
+} rac_em_att_service_state_enum;
+
+typedef struct {
+    kal_uint8 mcc2;
+    kal_uint8 mcc1;
+    kal_uint8 mnc3;
+    kal_uint8 mcc3;
+    kal_uint8 mnc2;
+    kal_uint8 mnc1;
+} em_plmn_id_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                        em_info;
+    ue_mode_enum                        ue_mode;
+    kal_bool                            is_sms_over_ip;
+    ue_usage_setting_enum               ue_usage_setting;
+    l4_voice_domain_preference_enum     eutran_vdp;
+    rac_em_active_rat_info_enum         active_rat_info;
+    rac_em_att_service_state_enum       att_radio_service_state;
+    rac_em_att_service_state_enum       att_nw_service_state;
+    kal_bool                            is_sib2_endc_support;
+    kal_bool                            is_endc_scg_connected;
+    reg_state_enum                      gsm_state;
+    reg_state_enum                      gprs_state;
+    // For CHR
+    em_plmn_id_struct                   plmn_id;
+    kal_uint8                           la_code[2];
+    kal_uint8                           ra_code;
+    kal_uint8                           ta_code[3];
+    kal_uint64                          cell_id;
+    rat_enum                            rat;
+    // CHR end
+    kal_bool                            is_rf_on;
+    rac_em_active_rat_info_enum         current_optimized_rat; //rat after optimize, may different from active_rat_info
+    kal_bool                            is_deep_sleep_mode;
+    rac_em_sim_state_info_enum          sim_state;
+} em_rac_info_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum            em_info;
+
+   kal_uint8               irat_type;   /* 0x05: autonomous cell reselection procedure */
+                                        /* 0x06: used by NAS to trigger search procedure */
+   kal_uint8               source_rat;  /* 0/1/2 -2G/3G/4G/TBD */
+   kal_uint8               target_rat;  /* 0/1/2 -2G/3G/4G/TBD */
+} em_l4c_rat_change_ind_struct;
+
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum            em_info;
+} em_rac_abnormal_event_no_service_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum                em_info;
+   rac_em_network_type_enum    network_type_info;
+} em_rac_network_type_info_ind_struct;
+
+typedef struct 
+{ 
+   LOCAL_PARA_HDR
+   em_info_enum                em_info;
+   reg_state_enum              gsm_state;
+   reg_state_enum              gprs_state;
+} em_rac_reg_state_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 mdmi_rat_info;
+} em_l4c_mdmi_rat_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_char event[MAX_MD_EVENT_STRLEN];
+} em_l4c_md_event_ind_struct;
+
+
+/* UEM structure */
+typedef struct
+{
+    kal_int32   adc_value;  //battery ADC value
+    kal_uint8   battery_level;  //battery level
+    kal_uint8   battery_status; //battery status: battery_status_enum
+} uem_em_battery_info;
+
+
+/* Max : 20130415 Remove for EM_MODE. */
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+/**************************************************************************
+  * Video Telephony (3G324M) - Engineer Mode
+  *
+  * Notes: Following structures are maintained by VT task
+  * Meggie: 2007/10/05:  Add VT EM related structures
+  **************************************************************************/
+/***************************** VT EM Config  ********************************/
+typedef enum{
+    VT_EM_DATA_TYPE_INVALID = -1,
+    VT_EM_DATA_TYPE_AUDIO = 0,
+    VT_EM_DATA_TYPE_VIDEO
+}vt_em_channel_data_type;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    vt_em_config_struct em_config;
+}l4c_vt_em_set_config_req_struct;   /* MSG: MSG_ID_L4C_VT_EM_SET_CONFIG_REQ */
+
+typedef struct{
+    LOCAL_PARA_HDR
+    vt_em_config_struct em_config;
+}l4c_vt_em_get_config_cnf_struct;   /* MSG: MSG_ID_L4C_VT_EM_GET_CONFIG_CNF */
+
+
+/********************* begin of MMRF MIPI/BPI feature definition ***********/
+typedef enum
+{
+   RMMI_MMRF_MIPI = 0,
+   RMMI_MMRF_BPI  = 1
+}em_mmrf_type_enum;
+
+
+typedef enum
+{
+   MMRF_GET = 0,
+   MMRF_SET = 1
+}em_mmrf_action_enum;
+
+typedef enum
+{
+   MMRF_ACTION_SUCCESS   = 0,
+
+   MMRF_MIPI_PORT_INVALID = 1
+}em_mmrf_error_code_enum;
+
+/* ---------------*\
+|* MMRF_SET_GET_MIPI *|
+\* ----------------------------- */
+typedef enum
+{
+   MMRF_MIPI_RW         = 0x0000,
+   MMRF_MIPI_EXTRW_1BYE = 0x0001
+}em_mmrf_mipi_rw_type_enum;
+
+typedef struct
+{
+   kal_uint8                  port;
+   em_mmrf_mipi_rw_type_enum  rw_type;
+   kal_uint8                  usid;
+   kal_uint16                 addr;
+   kal_uint32                 data;
+}em_mmrf_mipi_ctrl_param_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                       src_id;
+    em_mmrf_action_enum             action;
+    em_mmrf_mipi_ctrl_param_struct  mipi_ctrl;
+}l4cmmrf_em_mipi_action_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                src_id;
+    em_mmrf_action_enum      action;
+    kal_uint32               data;
+    em_mmrf_error_code_enum  result;
+}l4cmmrf_em_mipi_action_cnf_struct;
+
+
+/* ---------------*\
+|* MMRF_SET_GET_BPI *|
+\* ---------------------------- */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                src_id;
+    em_mmrf_action_enum      action;
+    kal_uint32               data1;
+    kal_uint32               data2;
+}l4cmmrf_em_bpi_action_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                src_id;
+    em_mmrf_action_enum      action;
+    kal_uint32               data1;
+    kal_uint32               data2;
+    em_mmrf_error_code_enum  result;
+}l4cmmrf_em_bpi_action_cnf_struct;
+/********************* end of MMRF MIPI/BPI feature definition *************/
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum            em_info;
+
+   kal_uint8               sig1;
+   kal_uint8               sig2;
+   kal_uint8               ber;
+   kal_int32               rssi_in_qdbm;
+   kal_int32               rscp_in_qdbm;
+   kal_int32               ecn0_in_qdbm;
+   kal_int32               rsrq_in_qdbm;
+   kal_int32               rsrp_in_qdbm;
+   kal_int16               rs_snr_in_qdb;
+   kal_int16               serv_band;
+   rat_enum            rat;
+} em_l4c_ecsq_ind_struct;
+
+
+
+typedef enum
+{
+    EM_L4APS_CID_STATUS_INACTIVE,
+    EM_L4APS_CID_STATUS_ACTIVE,
+} em_l4aps_cid_status_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR   
+    em_info_enum            em_info;
+
+    em_l4aps_cid_status_enum status;
+    kal_uint16 ap_cid;
+    kal_uint16 d2_cid;
+    kal_uint16 ps_cid;
+    kal_uint8 qfi;
+    
+} em_l4aps_cid_mapping_info_ind_struct;
+
+
+
+#endif /* _EM_L4_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_lbs_public_struct.h b/mcu/interface/service/em/em_lbs_public_struct.h
new file mode 100644
index 0000000..11f7b32
--- /dev/null
+++ b/mcu/interface/service/em/em_lbs_public_struct.h
@@ -0,0 +1,144 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+ /*******************************************************************************
+ * Filename:
+ * ---------
+ *   em_lbs_public_struct.h
+ *
+ * Project:
+ * --------
+ *   UMOLYA
+ *
+ * Description:
+ * ------------
+ *   LBS and AGPS related engineer mode public structures
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+#ifndef __EM_LBS_PUBLIC_STRUCT_H__
+#define __EM_LBS_PUBLIC_STRUCT_H__
+
+#include "em_public_struct.h"
+
+
+/* For EM_LBS_GPS_OPEN_STATISTIC */
+typedef enum{
+    EM_LBS_GPS_STATE_NULL,
+    EM_LBS_GPS_STATE_WAIT_OPEN_CNF,
+    EM_LBS_GPS_STATE_OPENED,
+    EM_LBS_GPS_STATE_WAIT_CLOSE_CNF,
+    EM_LBS_GPS_STATE_CLOSED,
+    EM_LBS_GPS_STATE_SIZE
+} em_lbs_gps_state_enum;
+
+typedef enum
+{
+    EM_LBS_GPS_OPEN_IND_NILR,
+    EM_LBS_GPS_OPEN_IND_MTLR,
+    EM_LBS_GPS_OPEN_IND_MOLR,
+    EM_LBS_GPS_OPEN_IND_QUERY,
+    EM_LBS_GPS_OPEN_IND_MLR,
+    EM_LBS_GPS_OPEN_IND_SIZE
+} em_lbs_gps_open_type_enum;
+
+typedef enum
+{
+    EM_LBS_MLR_SRC_EMPTY = 0x00,
+    EM_LBS_MLR_SRC_DHL = 0x01,
+    EM_LBS_MLR_SRC_WFC = 0x02,
+    EM_LBS_MLR_SRC_MDT = 0x04,
+    EM_LBS_MLR_SRC_SIZE = 3
+} em_lbs_mlr_src_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                em_info;
+    em_lbs_gps_state_enum       cur_gps_state;
+    em_lbs_gps_open_type_enum   cur_open_ind;
+    em_lbs_mlr_src_enum         cur_mlr_src;
+    kal_uint8                   open_ind_count_size;
+    kal_uint32                  open_ind_count[EM_LBS_GPS_STATE_SIZE];
+    kal_uint8                   mlr_src_count_size;
+    kal_uint32                  mlr_src_count[EM_LBS_MLR_SRC_SIZE];
+} em_lbs_gps_open_statistic_ind_struct;
+
+/* For EM_LBS_LR_STATISTIC */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum     em_info;
+    kal_uint32       ni_lr_success;
+    kal_uint32       ni_lr_fail;
+    kal_uint32       mo_lr_success;
+    kal_uint32       mo_lr_fail;
+    kal_uint32       mt_lr_success;
+    kal_uint32       mt_lr_fail;
+} em_lbs_lr_statistic_ind_struct;
+
+/* For EM_LBS_AP_SETTING */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum     em_info;
+    /* Data part is same as agps_md_sim_info_req */
+    kal_uint8        cp_gsm_disabled;
+    kal_uint8        cp_umts_disabled;
+    kal_uint8        cp_lte_disabled;
+    kal_uint8        cp_lppe_enable;
+    kal_uint8        lppe_network_location_disable;
+    kal_uint8        reject_non911_nilr_enable;
+    kal_uint8        battery_percentage;
+    kal_uint8        cp_nr_disabled;
+} em_lbs_ap_setting_ind_struct;
+#endif /* __EM_LBS_PUBLIC_STRUCT_H__ */
+
diff --git a/mcu/interface/service/em/em_llc_public_struct.h b/mcu/interface/service/em/em_llc_public_struct.h
new file mode 100644
index 0000000..64f4f96
--- /dev/null
+++ b/mcu/interface/service/em/em_llc_public_struct.h
@@ -0,0 +1,104 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_llc_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef _EM_LLC_PUBLIC_STRUCT_H
+#define _EM_LLC_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+
+
+typedef struct
+{
+    kal_uint8   sapi_id;
+    kal_uint16  n201_ui;
+    kal_uint16  n201_i;
+    kal_uint16  kU;
+    kal_uint16  kD;
+    kal_uint32  num_fcs_error;
+} llc_sapi_info_struct ;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum        em_info;
+    llc_sapi_info_struct  sapi_info[2];
+    kal_uint8                cipher_algo;
+} em_llc_status_ind_struct;
+
+
+#endif /* _EM_LLC_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_lpp_public_struct.h b/mcu/interface/service/em/em_lpp_public_struct.h
new file mode 100644
index 0000000..463aefb
--- /dev/null
+++ b/mcu/interface/service/em/em_lpp_public_struct.h
@@ -0,0 +1,109 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_lpp_public_struct.h
+ *
+ * Project:
+ * --------
+ *   UMOLYA
+ *
+ * Description:
+ * ------------
+ *   LPP and AGPS related engineer mode public structures
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+#ifndef __EM_LPP_PUBLIC_STRUCT_H__
+#define __EM_LPP_PUBLIC_STRUCT_H__
+
+#include "em_public_struct.h"
+
+
+/* For EM_LPP_MSG_TYPE_ENUM */
+typedef enum
+{
+    EM_LPP_MSG_TYPE_REQUEST_CAPABILITIES = 0,
+    EM_LPP_MSG_TYPE_PROVIDE_CAPABILITIES,
+    EM_LPP_MSG_TYPE_PROVIDE_ASSISTANCE_DATA,
+    EM_LPP_MSG_TYPE_REQUEST_LOCATION_INFORMATION,
+    EM_LPP_MSG_TYPE_PROVIDE_LOCATION_INFORMATION,
+    EM_LPP_MSG_TYPE_REQUEST_ASSISTANCE_DATA,
+    EM_LPP_MSG_TYPE_ACKNOWLEDGE  /* not an message type for lpp internal process purpose */
+} em_lpp_msg_type_enum;
+
+
+/* For EM_LPP_MSG_STATUS_STATISTIC */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum     em_info;
+    kal_uint32            numRequest;
+    kal_uint32            numRequestLocationInfoAndAck;
+    kal_uint32            numRequestLocationInfo;
+    kal_uint32            numProvide;
+    kal_uint32            numProvideLocationInfoAndAck;
+    kal_uint32            numProvideLocationInfo;
+} em_lpp_msg_status_statistics_ind_struct;
+
+/* For EM_LPP_MSG_INFO */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum     em_info;
+    em_lpp_msg_type_enum   lppType;
+    kal_uint32      totalMessageLength;
+    kal_uint8        internalMessageId;
+    kal_uint8        rawMessagePDUId;
+    kal_uint32      rawMessagePDULength;
+    kal_uint8        rawMessagePDU[3000];
+} em_lpp_msg_info_ind_struct;
+
+#endif /* __EM_LPP_PUBLIC_STRUCT_H__ */
+
diff --git a/mcu/interface/service/em/em_ltecsr_public_struct.h b/mcu/interface/service/em/em_ltecsr_public_struct.h
new file mode 100644
index 0000000..5338c19
--- /dev/null
+++ b/mcu/interface/service/em/em_ltecsr_public_struct.h
@@ -0,0 +1,364 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_ltecsr_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_LTECSR_PUBLIC_STRUCT_H
+#define _EM_LTECSR_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+
+
+/********************* begin of LTECSR definition ****************************/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint32 ssrc;
+    kal_uint8 codec_type;
+    kal_uint8 codec_rate;
+
+}em_ltecsr_rtp_codec_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint32 ssrc;
+    kal_uint16 pkt_loss_count;
+
+}em_ltecsr_rtp_packet_loss_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint32 ssrc;
+    kal_uint16 delay;
+
+}em_ltecsr_rtp_one_way_delay_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint32 ssrc;
+    kal_uint16 jitter;
+
+}em_ltecsr_rtp_jitter_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint32 ssrc;
+    kal_uint16 rtp_sn;
+    kal_uint16 jitter_buffer_delay;
+
+}em_ltecsr_rtp_jitter_buffer_delay_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint8 dir;
+    kal_uint16 payload_len;     // it is the [IP|UDP|RTP] header len
+    kal_uint16 total_len;
+    kal_uint32 md_ts;           // unit: 64 us, for AP to sync timestamp (XCAL requirement)
+
+    /* payload is put in peer buff */
+
+}em_ltecsr_rtp_ota_msg_ind_struct;
+
+
+/* ATT CIQ part */
+#define EM_LTECSR_MAX_MEDIA_STAT_NUM 8
+
+typedef struct
+{
+    kal_uint16  wPort;
+    kal_uint8   ucMediaType;
+    kal_uint8   ucFormat;
+    kal_uint32  dwDuration;
+    kal_uint32  dwPacketsRcvd;
+    kal_uint32  dwPacketsDrop;
+    kal_uint32  dwPacketsLate;
+
+    kal_uint32  dwExSmallMuteGapCnt;
+    kal_uint32  dwSmallMuteGapCnt;
+    kal_uint32  dwMediumMuteGapCnt;
+    kal_uint32  dwLargeMuteGapCnt;
+}iq_rtp_stats_t;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint16      wNumMediaTracks;
+    iq_rtp_stats_t  tMediaStats[EM_LTECSR_MAX_MEDIA_STAT_NUM]; // MAX media num in a session
+}em_ltecsr_session_stat_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint16  wByteCount;
+    kal_uint16  wDstPort;
+    kal_uint8   ucFlags;
+    kal_uint8   ucPayloadType;
+    kal_uint16  wSequenceNum;
+    kal_uint32  dwTimestamp;
+    kal_uint32  dwSourceId;
+}em_ltecsr_xmit_pkt_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint16  wByteCount;
+    kal_uint16  wDstPort;
+    kal_uint8   ucPktStatus;
+    kal_uint8   ucFlags;
+    kal_uint8   ucPayloadType;
+    kal_uint16  wSequenceNum;
+    kal_uint32  dwTimestamp;
+    kal_uint32  dwSourceId;
+}em_ltecsr_recv_pkt_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint32  dwSsrc;
+    kal_uint32  dwDuration;
+    kal_uint32  dwPktCount;
+    kal_uint32  dwByteCount;
+    kal_uint16  wDstPort;
+    kal_uint16  wMeanJitter;
+    kal_uint8   ucMediaType;
+    kal_uint8   ucIpVersion;
+    kal_uint8   strIpDstAddr[16];   // IPv6
+}em_ltecsr_xmit_stat_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint32  dwSsrc;
+    kal_uint32  dwDuration;
+    kal_uint32  dwPktCount;
+    kal_uint32  dwPktLoss;
+    kal_uint32  dwByteCount;
+    kal_uint16  wDstPort;
+    kal_uint16  wMeanJitter;
+    kal_uint16  wMaxJitter;
+    kal_uint16  wMaxDelta;
+    kal_uint16  wCumAvgPktSize;
+    kal_uint8   ucMediaType;
+    kal_uint8   ucIpVersion;
+    kal_uint8   strIpSrcAddr[16];   // IPv6
+}em_ltecsr_recv_stat_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint64  sys_time;
+    kal_uint8   dir;
+    kal_uint8   rat;
+    kal_uint8   ip_ver;
+    kal_uint8   src_ip[16];
+    kal_uint8   dst_ip[16];
+    kal_uint16  src_port;
+    kal_uint16  dst_port;
+    kal_uint8   audio_codec;
+    kal_uint16  jitter;
+    kal_uint8   cmr;
+    kal_uint8   frame_num;
+
+    /* peer buff here to store UDP packet raw data */
+
+}em_ltecsr_rtp_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint64  sys_time;
+    kal_uint8   dir;
+    kal_uint8   rat;
+    kal_uint8   ip_ver;
+    kal_uint8   src_ip[16];
+    kal_uint8   dst_ip[16];
+    kal_uint16  src_port;
+    kal_uint16  dst_port;
+
+    /* peer buff here to store UDP packet raw data */
+
+}em_ltecsr_rtcp_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint8   event;     // ltecsr_em_rtp_event_enum
+    kal_uint16  rtp_src_port;
+    kal_uint16  rtp_dst_port;
+
+}em_ltecsr_rtp_event_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint16  period;             // unit: ms
+    kal_uint16  pkt_loss_rate;      // unit: %
+    kal_int32   jitter;             // unit: ms
+    kal_uint32  round_trip_delay;   // unit: ms
+
+}em_ltecsr_rtp_periodic_rpt_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint16  period;             // unit: ms
+    kal_uint16  pkt_loss_rate;      // unit: %
+    kal_int32   jitter;             // unit: ms
+    kal_uint32  round_trip_delay;   // unit: ms
+
+}em_ltecsr_rtp_periodic_rpt_customer_ind_struct;
+
+
+/********************* end of LTECSR definition ****************************/
+
+
+#endif /* _EM_LTECSR_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_mcf_public_struct.h b/mcu/interface/service/em/em_mcf_public_struct.h
new file mode 100644
index 0000000..c21ec2f
--- /dev/null
+++ b/mcu/interface/service/em/em_mcf_public_struct.h
@@ -0,0 +1,111 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 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:
+ * ---------
+ *   em_mcf_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * 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 _EM_MCF_PUBLIC_STRUCT_H
+#define _EM_MCF_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+#include "em_l4_common_public_struct.h"
+
+#define EM_MCF_FILE_MAX_NAME_LEN 128
+
+/* MCF trigger type */
+typedef enum {
+    EM_MCF_TRIGGER_TYPE_BY_AP = 0,
+    EM_MCF_TRIGGER_TYPE_BY_BOOT_UP,
+    EM_MCF_TRIGGER_TYPE_BY_SIM,
+    EM_MCF_TRIGGER_TYPE_MAX,
+} em_mcf_trigger_type_enum;
+
+/* For MSG_ID_EM_MCF_OTA_FILE_INFO_IND */
+typedef struct
+{
+    em_mcf_trigger_type_enum trigger_type;
+    l4c_mcf_config_type_enum config_type;
+    kal_uint32 result;
+    kal_uint32 start_time;
+    kal_uint32 end_time;
+    l4c_mcf_path_type_enum path_type;
+    kal_char file_name[EM_MCF_FILE_MAX_NAME_LEN];
+    kal_uint8 ps_id;
+    kal_uint8 reserved[3];
+} em_mcf_read_ota_file_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    em_mcf_read_ota_file_info_struct read_file_info;
+} em_mcf_ota_file_info_ind_struct;
+
+#endif /* _EM_MCF_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_mm_public_struct.h b/mcu/interface/service/em/em_mm_public_struct.h
new file mode 100644
index 0000000..4e76eb8
--- /dev/null
+++ b/mcu/interface/service/em/em_mm_public_struct.h
@@ -0,0 +1,886 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_mm_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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.
+*
+********************************************************************************/
+#include "mm_mmi_enums.h"
+#include "l3_inc_enums.h"
+
+#ifndef _EM_MM_PUBLIC_STRUCT_H
+#define _EM_MM_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+#include "l3_inc_local.h"
+
+
+/* MM Enum */
+
+typedef enum {
+    ACCESS_CLASS_NOT_BARRED      = 0,
+    ACCESS_CLASS_EMERGENCY_ONLY  = 1,
+    ACCESS_CLASS_ALL_BARRED      = 2,
+    ACCESS_CLASS_NOT_AVAILABLE   = 3
+} access_class_level_enum;
+
+
+typedef enum {
+    PPAC_FOR_NONE_DOMAIN = 0,
+    PPAC_FOR_CS_DOMAIN = 1,
+    PPAC_FOR_PS_DOMAIN = 2,
+    PPAC_FOR_CS_PS_DOMAIN = 3,
+    PPAC_NOT_AVAILABLE = 4
+} ppac_domain_enum;
+
+
+typedef enum
+{
+    EM_MM_AS_FAIL,
+    EM_GMM_AS_FAIL
+}em_as_fail_type_enum;
+
+
+typedef enum
+{
+    EM_MM_LR_NONE = 0,
+    EM_MM_LR_ONGOING,
+    EM_MM_LR_SUCCESS,
+    EM_MM_LR_SUCCESS_PS_ONLY,
+    EM_MM_LR_FAILURE,
+    EM_MM_LR_END
+}em_mm_lr_status_enum;
+
+typedef enum
+{
+    EM_MM_NONE = 0,
+    EM_MM_REJECTED_BY_NW, //getting rejected by NW
+    EM_MM_TIMER_TIME_OUT, //Guard timer timeout
+    EM_MM_LOW_LAYER_FAILURE,//low layer failure
+    EM_MM_ABORT,//procedure is abort
+    EM_MM_AUTH_FAILURE,
+    EM_MM_AUTH_REJECTED_BY_NW,
+    EM_MM_END
+}em_lr_failure_cause_enum;
+
+typedef enum
+{
+    EM_CSFB_NONE    = 0,
+    EM_CSFB_START   = 1,
+    EM_CSFB_SUCCESS = 2,
+    EM_CSFB_FAIL    = 3
+} em_csfb_status_enum;
+
+
+typedef enum 
+{
+     EM_MM_CSFB_NONE  = 0,
+     EM_MM_CSFB_MO    = 1, 
+     EM_MM_CSFB_MT    = 2 
+} em_mm_csfb_type_enum; 
+
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_bool is_mt_csfb_lu_needed;
+    kal_bool is_t3240_exp;
+}em_mm_mt_csfb_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    em_csfb_status_enum csfb_status;
+	em_mm_csfb_type_enum csfb_type;
+}em_mm_csfb_status_ind_struct;
+
+typedef enum
+{
+    EM_REG_TYPE_LU,
+    EM_REG_TYPE_ATTACH,
+    EM_REG_TYPE_RAU
+}em_reg_type_enum;
+
+typedef enum
+{
+    EM_MM_AUTH_REJ,
+    EM_GMM_AUTH_REJ
+}em_auth_rej_type_enum;
+
+typedef enum
+{
+    EM_MM_GMM_PROC_NONE = 0,
+    EM_MM_CM_SERVICE_REJECT,
+    EM_MM_GMM_SERVICE_REJECT,
+    EM_MM_NW_TO_MS_DETACH_REQUEST
+}em_mm_gmm_proc_enum;
+
+/* GMM Service reject info */
+typedef struct
+{
+    mm_cause_enum gmm_service_rej_cause;	
+}em_gmm_service_rej_info_struct;
+
+/* CM Service reject info */
+typedef struct
+{
+    mm_cause_enum cm_service_rej_cause;	
+}em_cm_service_rej_info_struct;
+
+/* NW to MS GMM detach request */
+typedef struct
+{
+	nw_to_ms_detach_type_enum nw_to_ms_detach_type;
+	mm_cause_enum nw_to_ms_detach_cause;	
+}em_nw_to_ms_detach_request_info_struct;
+
+typedef union
+{
+	em_gmm_service_rej_info_struct gmm_service_reject;
+    em_cm_service_rej_info_struct cm_service_reject;
+	em_nw_to_ms_detach_request_info_struct nw_to_ms_detach_request;
+}em_mm_gmm_proc_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rat_enum current_rat;
+	em_mm_gmm_proc_enum mm_gmm_proc;
+    em_mm_gmm_proc_info_struct mm_gmm_proc_info;
+}em_mm_gmm_proc_rej_info_ind_struct;
+
+typedef enum 
+{ 
+    EM_MM_MTCSFB_NONE    = 0, 
+    EM_MM_MTCSFB_START   = 1, 
+    EM_MM_MTCSFB_SUCCESS = 2, 
+    EM_MM_MTCSFB_FAIL    = 3, 
+    EM_MM_MTCSFB_FAIL_PAGING_GUARD_TIMER_EXPIRED = 4, 
+    EM_MM_MTCSFB_FAIL_T3240_TIMEOUT = 5, 
+    EM_MM_MTCSFB_FAIL_AUTH_FAIL = 6, 
+    EM_MM_MTCSFB_FAIL_CONN_EST_FAIL = 7, 
+    EM_MM_MTCSFB_FAIL_LAU_REJECT = 8, 
+    EM_MM_MTCSFB_FAIL_RRC_REL_IND_RECEIVED = 9, 
+    EM_MM_MTCSFB_LAU_ACCEPT = 10, 
+    EM_MM_MTCSFB_FAIL_PLMN_LOSS_IND_RECEIVED = 11, 
+    EM_MM_MTCSFB_FAIL_SIM_ERROR_IND_RECEIVED = 12, 
+    EM_MM_MTCSFB_PAGING_RESPONSE_SENT = 13,   
+    EM_MM_MTCSFB_PAGING_BLOCKED_BY_ACCESS_BARRED = 14 
+} em_mt_csfb_status_enum; 
+ 
+typedef enum 
+{ 
+    EM_MM_MT_CS_NONE, 
+    EM_MM_MT_CS_SUCCESS, 
+    EM_MM_RR_REL_IND_RECEIVED , 
+    EM_MM_MT_CS_FAIL_LU_ABNORMAL, 
+    EM_MM_T3240_TIMEOUT, 
+    EM_MM_PAGING_RESPONSE_SENT, 
+    EM_MM_PAGING_BLOCKED_BY_ACCESS_BARRED, 
+    EM_MM_AUTH_REJECT, 
+    EM_MM_AUTH_FAIL, 
+    EM_MM_PLMN_LOSS_IND_RECEIVED, 
+    EM_MM_SIM_ERROR_IND_RECEIVED, 
+    EM_MM_CONN_EST_FAIL    
+} em_mm_mt_cs_status; 
+
+typedef enum 
+{ 
+    EM_MM_MOCSFB_NONE    = 0, 
+    EM_MM_MOCSFB_START   = 1, 
+    EM_MM_MOCSFB_SUCCESS = 2, 
+    EM_MM_MOCSFB_FAIL    = 3, 
+    EM_MM_MOCSFB_CM_SERV_REJECT = 4,
+    EM_MM_MOCSFB_FAIL_T3240_TIMEOUT = 5, 
+    EM_MM_MOCSFB_FAIL_AUTH_FAIL = 6, 
+    EM_MM_MOCSFB_FAIL_CONN_EST_FAIL = 7, 
+    EM_MM_MOCSFB_FAIL_LAU_REJECT = 8, 
+    EM_MM_MOCSFB_FAIL_RRC_REL_IND_RECEIVED = 9, 
+    EM_MM_MOCSFB_LAU_ACCEPT = 10, 
+    EM_MM_MOCSFB_FAIL_PLMN_LOSS_IND_RECEIVED = 11, 
+    EM_MM_MOCSFB_FAIL_SIM_ERROR_IND_RECEIVED = 12, 
+    EM_MM_MOCSFB_ACCESS_CLASS_BARRED = 13,
+    EM_MM_MOCSFB_FAIL_T3230_TIMEOUT = 14,
+} em_mo_csfb_status_enum;
+
+typedef enum
+{ 
+    EM_MM_MO_CS_NONE, 
+    EM_MM_MO_CS_SUCCESS,
+    EM_MM_MO_RR_REL_IND_RECEIVED , 
+    EM_MM_MO_CS_FAIL_LU_ABNORMAL, 
+    EM_MM_MO_T3240_TIMEOUT, 
+    EM_MM_MO_AUTH_REJECT, 
+    EM_MM_MO_AUTH_FAIL, 
+    EM_MM_MO_PLMN_LOSS_IND_RECEIVED, 
+    EM_MM_MO_SIM_ERROR_IND_RECEIVED, 
+    EM_MM_MO_CONN_EST_FAIL,
+    EM_MM_MO_CM_SERV_REJECT,
+    EM_MM_MO_ACCESS_CLASS_BARRED,
+    EM_MM_MO_T3230_TIMEOUT,
+} em_mm_mo_cs_status; 
+ 
+ typedef enum 
+ { 
+     EM_MM_MT_CS_CALL    = 0, 
+     EM_MM_MT_CSFB_CALL  = 1, 
+     EM_MM_MO_CS_CALL    = 2, 
+     EM_MM_MO_CSFB_CALL  = 3, 
+     EM_MM_CALL_NONE  = 4 
+ } mm_cs_call_type_enum; 
+
+
+ 
+ typedef enum {
+	 EM_MM_STATE_BEGIN = 0, 	/* MM state begin value */
+  /* On Power-on, MM starts with NULL State */
+	 EM_MM_NULL_STATE = EM_MM_STATE_BEGIN,
+	 EM_MM_LOCATION_UPDATING_INITIATED,
+	 EM_MM_WAIT_FOR_OUTGOING_MM_CONN,
+	 EM_MM_CONN_ACTIVE,
+	 EM_MM_IMSI_DETACH_INITIATED,
+	 EM_MM_PROCESS_CM_SERVICE_PROMPT,
+	 EM_MM_WAIT_FOR_NETWORK_COMMAND,
+	 EM_MM_LOCATION_UPDATE_REJECTED,
+	 EM_MM_WAIT_FOR_RR_CONN_LU,
+	 EM_MM_WAIT_FOR_RR_CONN_MM_CONN,
+	 EM_MM_WAIT_FOR_RR_CONN_IMSI_DETACH,
+	 EM_MM_WAIT_FOR_RR_CONN_PAGING, //11
+	 EM_MM_WAIT_FOR_REESTABLISH,
+  /* Main State MM IDLE and its Sub states are combined as follows */
+	 EM_MM_IDLE_NORMAL_SERVICE,
+	 EM_MM_IDLE_ATTEMPTING_TO_UPDATE,
+	 EM_MM_IDLE_LIMITED_SERVICE,
+	 EM_MM_IDLE_NO_IMSI,
+	 EM_MM_IDLE_NO_CELL_AVAILABLE,
+	 EM_MM_IDLE_LOCATION_UPDATE_NEEDED,
+	 EM_MM_IDLE_PLMN_SEARCH,
+	 EM_MM_IDLE_PLMN_SEARCH_NORMAL_SERVICE, //20
+	 EM_MM_WAIT_FOR_ADDITIONAL_OUTGOING_MM_CONN,
+	 EM_MM_LOCATION_UPDATING_PENDING, /* for combined procedure  */
+	 EM_MM_IMSI_DETACH_PENDING, 			 /* for combined procedure */
+	 EM_MM_RR_CONN_REL_NOT_ALLOWED, //24 /*for AGPS*/
+	 EM_MM_IDLE_ECALL_INACTIVE, //25, for __ECALL_SUPPORT__
+	 EM_MM_IDLE_RECVING_GRP_CALL_NS, /* not used now */
+	 EM_MM_IDLE_RECVING_GRP_CALL_LS, /* not used now */
+	 EM_MM_CONN_ACTIVE_GRP_XMIT_MODE, /* not used now */
+	 EM_MM_WAIT_FOR_RR_CONN_GRP_XMIT_MODE, /* not used now */
+	 EM_MM_TOT_STATE		  /* Total number of MM states */
+ }em_mm_state_enum;
+ 
+ 
+ typedef enum
+ {
+	 EM_GMM_STATE_BEGIN = 0,	 /* GMM state begin value */
+	 /* On Power-on, GMM starts with NULL State */
+	 EM_GMM_NULL_STATE = EM_GMM_STATE_BEGIN,
+ 
+	 /* Main State Deregistered and its Sub states are combined as
+	  * follows */
+	 EM_GMM_DEREG_NORMAL_SERVICE_STATE,
+	 EM_GMM_DEREG_SUSPEND_STATE,
+	 EM_GMM_DEREG_LTD_SERVICE_STATE,
+	 EM_GMM_DEREG_ATTACH_NEEDED_STATE,
+	 EM_GMM_DEREG_ATTEMPT_TO_ATTACH_STATE,
+	 EM_GMM_DEREG_NO_IMSI_STATE,
+	 EM_GMM_DEREG_NO_CELL_STATE,
+	 EM_GMM_DEREG_PLMN_SEARCH_STATE,
+ 
+	 /* Once Attach-Req Message is sent, GMM moves to REG_INIT_STATE */
+	 EM_GMM_REG_INIT_STATE,
+ 
+	 /* Main State Registered and its Sub states are combined as
+	  * follows */
+	 EM_GMM_REG_NORMAL_SERVICE_STATE,
+	 EM_GMM_REG_SUSPEND_STATE,
+	 EM_GMM_REG_UPDATE_NEEDED_STATE,
+	 EM_GMM_REG_ATTEMPT_TO_UPDATE_STATE,
+	 EM_GMM_REG_ATTEMPT_TO_UPDATE_MM_STATE,
+	 EM_GMM_REG_NO_CELL_STATE,
+	 EM_GMM_REG_LTD_SERVICE_STATE,
+ 
+	 /* Whenever Detach is Started, GMM moves to DEREG_INIT State */
+	 EM_GMM_DEREG_INIT_STATE,
+ 
+	 /* When RAU Starts, GMM moves to RAU_INIT State */
+	 EM_GMM_RAU_INIT_STATE, /* Temp fix */
+	 EM_GMM_REG_IMSI_DETACH_INIT_STATE,
+	 EM_GMM_SERVICE_REQ_INIT_STATE,
+	 EM_GMM_REG_PLMN_SEARCH_STATE, /* Not defined in Standards, used for
+								   manual PLM selection */
+	 EM_GMM_TOT_STATE		   /* Total number of GMM states */
+ }em_gmm_state_enum;
+ 
+ 
+ 
+ typedef enum
+ {
+	 EM_MM_IMSI_TYPE = 1,
+	 EM_MM_IMEI_TYPE = 2,
+	 EM_MM_IMEISV_TYPE = 3,
+	 EM_MM_TMSI_TYPE = 4,
+	 EM_MM_PTMSI_TYPE = 4,
+	 EM_MM_NONE_TYPE = 5,
+	 EM_MM_MASK_TYPE = 0x7
+ }em_mm_identity_type_enum;
+ 
+ typedef enum
+ {
+	 EM_MM_REG_PROC_STATUS_NA = 0,
+	 EM_MM_REG_PROC_STATUS_ACCEPT = 1,
+	 EM_MM_REG_PROC_STATUS_REJ = 2
+ }em_mm_reg_proc_status_enum;
+ 
+ typedef enum
+ {
+	 EM_MM_SERV_CAP_NA = 0,
+	 EM_MM_SERV_CAP_CS_ONLY = 1,
+	 EM_MM_SERV_CAP_PS_ONLY = 2,
+	 EM_MM_SERV_CAP_CS_PS = 3
+ }em_mm_cell_serv_cap_enum;
+ 
+ typedef enum
+ {
+	  EM_GMM_GPRS_DETACHED = 0,
+	  EM_GMM_GPRS_ATTACHED = 1
+ }em_gmm_gprs_attach_status_enum; /* mtk00938: AT&T CDR-PER-191 GPRS Attach Status */
+ 
+ typedef enum
+ {
+	 EM_GMM_REG_PROC_STATUS_NA = 0,
+	 EM_GMM_REG_PROC_STATUS_ACCEPT = 1,
+	 EM_GMM_REG_PROC_STATUS_REJ = 2
+ }em_gmm_reg_proc_status_enum;
+ 
+ 
+ typedef enum
+ {
+	 EM_PS_PROC_STATUS_NA = 0x00,
+	 EM_SRV_STATUS_SIG_NA = 0x40,
+	 EM_SRV_STATUS_DATA_NA,
+	 EM_SRV_STATUS_PAGING_NA,
+	 EM_SRV_STATUS_SECMMODE_ACCEPTED,
+	 EM_SRV_STATUS_ACCEPTED,
+	 EM_SRV_STATUS_REJ,
+	 EM_SRV_STATUS_TIMEOUT,
+	 EM_SRV_STATUS_NA,
+	 EM_UE_GPRS_DETACH = 0x80,
+	 EM_UE_GPRS_DETACH_PWRDOWN,
+	 EM_UE_DETACH_ACC,
+	 EM_NW_DETACH = 0xC0,
+	 EM_NW_DETACH_REATTACH_REQ,
+	 EM_NW_DETACH_REATTACH_NOT_REQ,
+	 EM_NW_DETACH_IMSI_DETACH
+ }em_gmm_serv_rej_detach_status_enum;
+
+typedef  mm_cs_call_type_enum em_mm_mt_call_type_enum; 
+typedef  mm_cs_call_type_enum em_mm_mo_call_type_enum; 
+ 
+typedef struct 
+{ 
+    LOCAL_PARA_HDR 
+    em_info_enum em_info; 
+    em_mt_csfb_status_enum mt_csfb_status; 
+    em_mm_mt_call_type_enum mm_mt_call_type; 
+    kal_uint8 mm_state; 
+    kal_uint8 mm_cause; 
+    em_mm_mt_cs_status mm_mt_cs_status; 
+    kal_uint8 reserved_for_padding;  
+    kal_uint8 reserved_for_padding1; 
+    kal_uint8 reserved_for_padding2; 
+}em_mm_mtcs_mtcsfb_status_ind_struct;  
+
+typedef struct 
+{ 
+    LOCAL_PARA_HDR 
+    em_info_enum em_info; 
+    em_mo_csfb_status_enum mo_csfb_status; 
+    em_mm_mo_call_type_enum mm_mo_call_type; 
+    kal_uint8 mm_state; 
+    kal_uint8 mm_cause; 
+    em_mm_mo_cs_status mm_mo_cs_status; 
+    kal_uint8 reserved_for_padding;  
+    kal_uint8 reserved_for_padding1; 
+    kal_uint8 reserved_for_padding2; 
+}em_mm_mocs_mocsfb_status_ind_struct; 
+typedef enum
+{
+    EM_MM_DOMAIN_NONE = 0,
+    EM_MM_CS_DOMAIN,
+    EM_MM_PS_DOMAIN,
+    EM_MM_CS_PS_DOMAIN
+} em_mm_reject_domain_enum;
+
+typedef enum
+{
+    EM_MM_CAUSE_SOURCE_OTHER =0,
+    EM_MM_CAUSE_SOURCE_LU_REJECT =1,
+    EM_MM_CAUSE_SOURCE_CMSERVICE_REJECT =2,
+    EM_MM_CAUSE_SOURCE_ABORT=3,
+    EM_MM_CAUSE_SOURCE_ATTACH_REJECT =4,
+    EM_MM_CAUSE_SOURCE_COMBINED_ATTACH_NON_GPRS =5,
+    EM_MM_CAUSE_SOURCE_RAU_REJECT =6,
+    EM_MM_CAUSE_SOURCE_COMBINED_RAU_NON_GPRS =7,
+    EM_MM_CAUSE_SOURCE_SERVICE_REJECT=8,
+    EM_MM_CAUSE_SOURCE_NW_DETACH=9,
+}em_mm_cause_source_enum;
+
+typedef enum {
+    EM_MM_CAUSE_NONE                     =     0x00,
+    EM_MM_IMSI_UNKNOWN_IN_HLR            =     0x02,
+    EM_MM_ILLEGAL_MS                     =     0x03,
+    EM_MM_IMSI_UNKNOWN_IN_VLR            =     0x04,
+    EM_MM_IMEI_NOT_ACCEPTED              =     0x05,
+    EM_MM_ILLEGAL_ME                     =     0x06,
+    EM_MM_GPRS_NOT_ALLOWED               =     0x07,
+    EM_MM_GPRS_NON_GPRS_NOT_ALLOWED      =     0x08,
+    EM_MM_MS_ID_NOT_DERIVED_BY_NW        =     0x09,
+    EM_MM_IMPLICIT_DETACH                =     0x0a,
+    EM_MM_PLMN_NOT_ALLOWED               =     0x0b,
+    EM_MM_LOCATION_AREA_NOT_ALLOWED      =     0x0c,
+    EM_MM_ROAMING_AREA_NOT_ALLOWED       =     0x0d,
+    EM_MM_GPRS_NOT_ALLOWED_IN_PLMN       =     0x0e,
+    EM_MM_NO_SUITABLE_CELLS_IN_LA        =     0x0f,
+    EM_MM_MSC_TEMP_NOT_REACHABLE         =     0x10,
+    EM_MM_NETWORK_FAILURE                =     0x11,
+    EM_MM_CS_DOMAIN_NOT_AVAILABLE        =     0X12,  /* LTE specific */
+    EM_MM_ESM_FAILURE                    =     0x13,  /* LTE specific */
+    EM_MM_MAC_FAILURE                    =     0x14,
+    EM_MM_SYNC_FAILURE                   =     0x15,
+    EM_MM_CONGESTION                     =     0x16,
+    EM_MM_GSM_AUTHEN_UNACCEPTABLE        =     0x17,
+    EM_MM_SECURITY_REJECTED_UNSPECIFIED  =     0x18,  /* LTE specific */
+    EM_MM_NOT_AUTHORIZED_FOR_THIS_CSG    =     0x19,
+    EM_MM_NON_EPS_AUTHEN_UNACCEPTABLE    =     0x1a,  /* LTE specific */
+    EM_MM_SERV_OPTION_NOT_SUPPORTED      =     0x20,
+    EM_MM_REQ_SERV_OPTION_NOT_SUBSCRIBED =     0x21,
+    EM_MM_SERV_OPTION_TEMP_OUT_OF_ORDER  =     0x22,
+    EM_MM_REQ_SERV_OPTION_NOT_AUTH_IN_PLMN  =  0x23,
+    EM_MM_CALL_CANNOT_BE_IDENTIFIED      =     0x26,
+    EM_MM_CS_DOMAIN_TEMP_NOT_AVAILABLE   =     0x27,  /* LTE specific */
+    EM_MM_NO_PDP_CONTEXT_ACTIVATED       =     0x28,
+    EM_MM_SEVERE_NETWORK_FAILURE         =     0x2A,  /* LTE specific */
+
+    EM_MM_RETRY_UPON_ENTRY_INTO_NEWCELL_MIN =  0x30,  /* 30..3f */
+    EM_MM_RETRY_UPON_ENTRY_INTO_NEWCELL_MAX =  0x3f,
+
+    EM_MM_SEMANTICALLY_INCORRECT_MSG        =  0x5f,
+    EM_MM_INVALID_MM_MAND_INFO              =  0x60,
+    EM_MM_MSG_TYPE_NON_EXISTENT             =  0x61,
+    EM_MM_MSG_TYPE_NOT_IMPLEMENTED          =  0x61,
+    EM_MM_MSG_TYPE_INCOMPAT_WITH_PROTO_STATE = 0x62,
+    EM_MM_IE_NOT_IMPLEMENTED                 = 0x63,
+    EM_MM_CONDITIONAL_MM_IE_ERROR            = 0x64,
+    EM_MM_MSG_NOT_COMPAT_WITH_PROTO_STATE    = 0x65,  /* 65..6f */
+    EM_MM_PROTO_ERROR_UNSPECIFIED            = 0x6f,
+    /* Incase if any more standard cause values are to be added then
+     * the cause having the greatest value should be placed just before
+     * the internal cause values.
+     */
+    /* The following cause are internal to Tcm and Gmm */
+    EM_MM_FORBIDDEN_PLMN = 0x70,
+    EM_MM_MODEM_INTERNAL_CAUSE_START =  EM_MM_FORBIDDEN_PLMN, /* 0x70 */
+    EM_MM_ACCESS_CLASS_BARRED,
+    EM_MM_NO_COVERAGE,
+    EM_MM_GPRS_SERV_NOT_ALLOWED,
+    EM_MM_TIMER_EXPIRY,
+    EM_MM_SIM_INSERTED,
+    EM_MM_SIM_REMOVED,
+    EM_MM_SIM_ABSENT,
+    EM_MM_SIM_INVALID_FOR_PS,
+    EM_MM_SIM_INVALID_FOR_CS,
+    EM_MM_SIM_INVALID_FOR_CS_AND_PS,
+    EM_MM_LOW_LAYER_FAIL,
+    EM_MM_MM_CONN_IN_PROGRESS, /* 0x7c */
+    EM_MM_MM_NOT_UPDATED,
+    EM_MM_RR_CONN_ESTAB_FAILURE,
+    EM_MM_RRC_CONN_ABORT, /* 0x7f */
+    EM_MM_MM_CONN_FAILURE, /* 0x80 */
+    EM_MM_MM_EMERGENCY_NOT_ALLOWED,
+    EM_MM_NO_GPRS_COVERAGE,
+    EM_MM_MM_ABNORMAL_LU,
+    EM_MM_MM_ABNORMAL_LU_LESS_THEN_4_TIMES,
+    /* 24.008 CR# 1791 Start */
+    EM_MM_MM_ABNORMAL_LU_CONGESSION_CONTROL,
+    /* 24.008 CR# 1791 End */
+    EM_MM_MM_DO_NOT_NEED_PLMN_SEARCH,
+    EM_MM_MM_SAME_LAI_IMSI_ATTACHING, //erica tier one
+    EM_MM_MM_RECOVERY_SEARCH, //mtk02475
+    EM_MM_SEARCH_FINISHED,
+    EM_MM_MM_WAIT_FOR_RELEASE, 
+    EM_MM_MM_REJ_CUZ_RR_IN_SUSPEND_MODE, /* for ATTACH_REJ *///0x8a
+    EM_MM_MM_IDLE_OOS_IND,
+    EM_MM_GPRS_IN_LIMITED_SERVICE, /* 0x8c */
+    EM_MM_MM_AUTH_FAIL,
+    EM_MM_GMM_T3346_RUNNING,
+    EM_MM_MM_ABNORMAL_LU_LESS_THEN_4_TIMES_AFR_NEEDED, /* ALPS01811710: When LU Abnormal during CSFB happened, notify RAC special cause to hide the LU abnormal from UI. */
+    EM_MM_SIM_INVALID_FOR_LTE_BECAUSE_NON_USIM_INSERTED,
+    EM_MM_MM_ABNORMAL_LU_REJ17_MANUAL_MODE,
+    EM_MM_GMM_IN_VIRTUAL_MODE,
+    EM_MM_NWSEL_IVSR_START,
+    EM_CAUSE_ENUM_END = EM_MM_NWSEL_IVSR_START
+}em_mm_cause_enum;
+
+typedef enum {
+    EM_MM_NORMAL_LU = 0x00,
+    EM_MM_PERIODIC_LU = 0x01,
+    EM_MM_IMSI_ATTACH_LU = 0x02,
+    EM_MM_NONE_ATTEMPTED
+} em_mm_update_type_enum;
+
+typedef enum
+{
+    EM_GMM_ATTACH_TYPE_GPRS_ATTACH    = 1,
+    EM_GMM_ATTACH_TYPE_COMBINED_ATTACH    = 3,
+    EM_GMM_ATTACH_TYPE_EMERGENCY_ATTACH    = 4,
+
+    EM_GMM_GPRS_ATTACH_ONLY = 1,
+    EM_GPRS_ATTACH_WHILE_IMSI_ATTACH = 2,
+    EM_COMBINED_ATTACH = 3,
+    EM_GMM_ATTACH_TYPE_INVALID = 5
+}em_gmm_attach_type_enum;
+
+typedef enum
+{
+    EM_GMM_UPDATE_TYPE_RAU    = 0,
+    EM_GMM_UPDATE_TYPE_COMBINED_RAU,
+    EM_GMM_UPDATE_TYPE_COMBINED_RAU_IMSI_ATTACH,
+    EM_GMM_UPDATE_TYPE_PERIODIC_RAU,
+    EM_GMM_UPDATE_TYPE_INVALID,
+
+    EM_RAU_UPDATE = 0,
+    EM_COMBINED_RAU_LAU = 1,
+    EM_COMBINED_RAU_LAU_WITH_IMSI = 2,
+    EM_PERIODIC_RAU_UPDATE = 3
+}em_gmm_update_type_enum;
+
+typedef enum
+{
+    EM_GMM_SERVICE_SIGNALLING = 0,
+    EM_GMM_SERVICE_DATA,
+    EM_GMM_SERVICE_PAGING_RSP
+}em_gmm_service_type_enum;
+
+
+typedef enum
+{
+     EM_REATTACH_REQD = 1,  /* 10.5.5.5, TS 24.008 */
+     EM_REATTACH_NOT_REQD,
+     EM_IMSI_DETACH_N_TO_MS
+}em_nw_to_ms_detach_type_enum;
+
+typedef union
+{
+    em_mm_update_type_enum lu_type;
+    em_gmm_attach_type_enum attach_type;
+	em_gmm_update_type_enum rau_type;
+	em_gmm_service_type_enum service_type;
+	em_nw_to_ms_detach_type_enum nw_to_ms_detach_type;
+}em_reject_type_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum	em_info;
+    em_mm_cause_source_enum event;
+	em_reject_type_struct event_reject_type;
+    em_mm_cause_enum original_mm_cause;
+    em_mm_cause_enum converted_mm_cause;
+    kal_bool is_ps_sim_valid;
+    kal_bool is_cs_sim_valid;
+    em_mm_reject_domain_enum reject_domain;
+}em_mm_cause_info_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8   t3212_val;  //T3212 timer value
+    att_flag_enum   att_flag;   //ATT flag
+    mm_cause_enum   mm_cause;   //MM Reject cause, if any
+    em_mm_state_enum   mm_state;   //MM State
+    kal_uint8   mcc[3]; //MCC
+    kal_uint8   mnc[3]; //MNC
+    kal_uint8   loc[2]; //registered LAC
+    kal_uint8   rac;     //registered RAC
+    kal_uint8   tmsi[4];    //TMSI, if valid
+    kal_bool is_t3212_running;
+    kal_uint16  t3212_timer_value;
+    kal_uint16  t3212_passed_time;
+    kal_uint8 common_access_class; //for Access Class ?V Common, value defined in access_class_level_enum
+    kal_uint8 cs_access_class; //for Access Class ?V CS Domain, value defined in access_class_level_enum
+    kal_uint8 ps_access_class; //for Access Class ?V PS Domain, value defined in access_class_level_enum
+    ppac_domain_enum paging_for_ppac; //for PPAC - Paging, value defined in ppac_domain_enum
+    ppac_domain_enum lr_for_ppac; //for PPAC - Registration, value defined in ppac_domain_enum
+    access_class_level_enum lr_access_class; //for PPAC - Registration access class, value defined in access_class_level_enum
+    em_mm_identity_type_enum lu_req_mobile_identity; //mobile identity used in last location update request
+//#if defined(__WISDOM_EM__) || defined(__ADVANCED_EM__)
+    kal_uint8 imsi[9];
+    gsm_update_status_enum gsm_update_status;
+    rat_enum current_rat;
+//#endif
+    kal_bool cell_support_cs;
+    kal_uint8 mm_lu_reject_cause;
+    kal_uint8 lu_reject_mccmnc[3];
+    em_mm_reg_proc_status_enum mm_lu_status;
+    em_mm_cell_serv_cap_enum cell_service_capab;
+    kal_uint32 lu_rej_count;
+    kal_uint32 num_of_lu_in_current_plmn;
+	kal_uint8 lu_attempt_counter;
+} em_mm_info_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint16  ready_timer; //Ready timer value in SECONDS.
+    kal_uint16  rau_timer;   //Periodical Routing Area Updating timer value in minute
+    gmm_ms_state_enum	ms_state;    //MS_NULL_STATE = 0,
+                             //    MS_READY_STATE,
+                             //    MS_STANDBY_STATE,
+                             //    MS_FORCED_TO_STANDBY_STATE
+    kal_bool is_rau_timer_running;
+    kal_uint16  rau_timer_passed_time; //in minute   
+    em_mm_identity_type_enum attach_req_mobile_identity; //mobile identity used in last gprs attach request
+    kal_uint8 ptmsi[4]; /* P-TMSI */
+    mm_cause_enum attach_rej_cause; /* Attach Reject Cause, mm_cause_enum */
+    mm_cause_enum rau_rej_cause; /* RAU Reject Cause, mm_cause_enum */
+    gprs_update_status_enum gprs_update_status; /* gprs_update_status_enum */
+    kal_uint8 cipher_algo; /* Cipher algorithm */
+    gmm_attach_type_enum attach_type;/* GPRS Attach Type */
+    em_gmm_state_enum gmm_state; /* GMM state, gmm_state_enum */
+    em_gmm_gprs_attach_status_enum gprs_attach_status; /* GPRS_DETACHED = 0, GPRS_ATTACHED = 1 */
+    kal_bool     tlli_valid;
+    kal_uint32   tlli;
+    kal_bool cell_support_ps;
+    em_gmm_reg_proc_status_enum gmm_attach_status;
+    kal_uint8 attach_rej_mccmnc[3];
+    em_gmm_reg_proc_status_enum gmm_rau_status;
+    kal_uint8 rau_reject_mccmnc[3];
+    em_gmm_serv_rej_detach_status_enum serv_rej_detach_status;
+    mm_cause_enum serv_rej_detach_cause;
+    kal_uint8 serv_rej_detach_mccmnc[3];
+    network_mode_enum network_op_mode;
+    kal_uint32 attach_rej_count;
+    kal_uint32 rau_rej_count;
+    kal_uint32 ps_no_service_count;
+	kal_uint8 gprs_attach_attempt_counter;
+    kal_uint8 gprs_rau_attempt_counter;
+}em_gmm_info_ind_struct;
+
+typedef enum
+{
+    EM_MM_PAGING_IND_NONE = 0,
+    EM_MM_PAGING_IND_CS_CALL = 1
+} em_mm_gmm_paging_info_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rat_enum current_rat;
+    em_mm_gmm_paging_info_enum mm_gmm_paging_info; 
+} em_mm_gmm_paging_info_ind_struct;
+
+/* EM related */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint16   lu_attempt_num; //increase when LU is sent out
+    kal_uint16   lu_success_num; //increase when LU success
+    kal_uint16   lu_failure_num; //increase when LU failure    
+    em_mm_update_type_enum lu_type;
+    em_mm_lr_status_enum lu_status;
+    em_lr_failure_cause_enum lu_failure_cause;
+	rat_enum current_rat;
+}em_mm_lu_info_ind_struct;
+
+/* EM related */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint16   rau_attempt_num; //increase when RAU is sent out
+    kal_uint16   rau_success_num; //increase when RAU success
+    kal_uint16   rau_failure_num; //increase when RAU failure    
+    gmm_update_type_enum rau_type;
+    em_mm_lr_status_enum rau_reg_status;
+    em_lr_failure_cause_enum rau_failure_cause;
+}em_gmm_rau_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_bool is_t3246_active;
+    kal_uint16 t3246_value;    
+}em_mm_mtc_timer_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rat_enum    current_rat;
+
+    /* LU reject info */
+    em_mm_update_type_enum lu_type;
+    mm_cause_enum   lu_rej_cause;
+
+    /* GPRS attach reject info */
+    gmm_attach_type_enum attach_type;
+    mm_cause_enum attach_rej_cause;
+
+    /* RAU reject info */
+    gmm_update_type_enum rau_type;
+    mm_cause_enum rau_rej_cause;
+}em_reg_rej_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rat_enum current_rat;
+    em_auth_rej_type_enum auth_rej_type;
+}em_auth_rej_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    rat_enum current_rat;
+    em_as_fail_type_enum as_fail_type;
+}em_as_fail_info_ind_struct;
+
+
+
+#endif /* _EM_MM_PUBLIC_STRUCT_H */ 
+
diff --git a/mcu/interface/service/em/em_mmrf_public_struct.h b/mcu/interface/service/em/em_mmrf_public_struct.h
new file mode 100644
index 0000000..7b82102
--- /dev/null
+++ b/mcu/interface/service/em/em_mmrf_public_struct.h
@@ -0,0 +1,79 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_mmrf_public_struct.h
+ *
+ * Project:
+ * --------
+ *   Gen93
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures for MMRF module.
+ *
+ * Author:
+ * -------
+ *   
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *----------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ *----------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __EM_MMRF_PUBLIC_STRUCT_H__
+#define __EM_MMRF_PUBLIC_STRUCT_H__
+
+#include "em_struct.h"
+#include "em_msgid.h"
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    em_info;
+    kal_char                        cddc_info[512];     
+} em_mmrf_cddc_info_ind_struct;
+
+#endif
diff --git a/mcu/interface/service/em/em_mtf_public_struct.h b/mcu/interface/service/em/em_mtf_public_struct.h
new file mode 100644
index 0000000..7d875f1
--- /dev/null
+++ b/mcu/interface/service/em/em_mtf_public_struct.h
@@ -0,0 +1,91 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_mtf_public_struct.h
+ *
+ * Project:
+ * --------
+ *  
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef _em_mtf_public_struct_H
+#define _em_mtf_public_struct_H
+
+#include "em_public_struct.h"
+
+
+/* For DHLL4C_EM_UPDATE_REQ */
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_status_enum  info_request[NUM_OF_EM_INFO];
+} mtfl4c_em_update_req_struct;
+
+
+#endif /* _em_mtf_public_struct_H */
+
diff --git a/mcu/interface/service/em/em_nl1_public_struct.h b/mcu/interface/service/em/em_nl1_public_struct.h
new file mode 100644
index 0000000..099bb10
--- /dev/null
+++ b/mcu/interface/service/em/em_nl1_public_struct.h
@@ -0,0 +1,103 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_nl1_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef _EM_NL1_PUBLIC_STRUCT_H
+#define _EM_NL1_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+
+
+/* NL1 */
+
+//Maximum RX Antenna Carrier count
+#define CSIF_N_DL_ANT_CNT      (4)
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum            em_info;
+    kal_uint8               md_index;
+    kal_uint8               sd_index[CSIF_N_DL_ANT_CNT];
+    kal_uint8               foe_index;
+} em_nl1_sync_status_ind_struct;
+
+#endif /* _EM_NL1_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_nwsel_common_public_struct.h b/mcu/interface/service/em/em_nwsel_common_public_struct.h
new file mode 100644
index 0000000..253916f
--- /dev/null
+++ b/mcu/interface/service/em/em_nwsel_common_public_struct.h
@@ -0,0 +1,93 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_nwsel_common_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef _EM_NWSEL_COMMON_PUBLIC_STRUCT_H
+#define _EM_NWSEL_COMMON_PUBLIC_STRUCT_H
+
+//***** Common for NWSEL and EMM  ******//
+typedef struct
+{
+    kal_uint8 mcc1;
+    kal_uint8 mcc2;
+    kal_uint8 mcc3;
+    kal_uint8 mnc1;
+    kal_uint8 mnc2;
+    kal_uint8 mnc3;
+} plmn_struct;
+
+#endif /* _EM_NWSEL_COMMON_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_nwsel_public_struct.h b/mcu/interface/service/em/em_nwsel_public_struct.h
new file mode 100644
index 0000000..eb3f474
--- /dev/null
+++ b/mcu/interface/service/em/em_nwsel_public_struct.h
@@ -0,0 +1,397 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_nwsel_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_NWSEL_PUBLIC_STRUCT_H
+#define _EM_NWSEL_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+#include "em_nwsel_common_public_struct.h"
+
+#include "kal_public_defs.h"
+
+#define MMRR_MAX_NUM_PRIORITY_PLMNS  20
+#define MMRR_MAX_NUM_AVAILABLE_PLMNS 20
+
+#define MMRR_PLMN_INFO_LOW_QUALITY_PLMN    1
+#define MMRR_PLMN_INFO_HIGH_QUALITY_PLMN   0
+#define MMRR_PLMN_INFO_QUALITY_PLMN_OFFSET 7
+
+#define MMRR_PLMN_INFO_RAT_LTE             2
+#define MMRR_PLMN_INFO_RAT_UMTS            1
+#define MMRR_PLMN_INFO_RAT_GSM             0
+#define MMRR_PLMN_INFO_RAT_OFFSET          3
+
+#define MMRR_PLMN_INFO_OTHER_PLMN          4
+#define MMRR_PLMN_INFO_OPLMN               3
+#define MMRR_PLMN_INFO_UPLMN               2
+#define MMRR_PLMN_INFO_PLMNSEL             1
+#define MMRR_PLMN_INFO_HPLMN               0
+
+#define MMRR_MAX_NUM_HPLMN_RAT_DATA          16
+#define MMRR_MAX_NUM_OPLMN_RAT_DATA          200
+#define MMRR_MAX_NUM_STATIC_APPLMN_RAT_DATA  384
+#define MMRR_MAX_NUM_DYNAMIC_APPLMM_RAT_DATA 96
+
+typedef enum {
+    EM_CELL_TYPE_SUITABLE       = 0,
+    EM_CELL_TYPE_ACCEPTABLE     = 1,
+    EM_CELL_TYPE_CAMPED_NOT_ALLOWED = 2,
+    EM_CELL_TYPE_NOT_APPLICABLE = 3
+} em_as_cell_type_enum;
+
+typedef struct
+{
+    kal_uint8 mcc1;
+    kal_uint8 mcc2;
+    kal_uint8 mcc3;
+    kal_uint8 mnc1;
+    kal_uint8 mnc2;
+    kal_uint8 mnc3;
+    em_as_cell_type_enum cell_type;
+} em_multi_plmn_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 is_higher_pri_plmn_srch; /* indicate that if the higher priority PLMN search is performing */
+    kal_uint8 hp_timeout_timer; /* higher priority PLMN search timer (6 mins per unit) */
+    kal_uint8 hp_count_down_timer; /* higher priority PLMN search count down timer (6 mins per unit) */
+    kal_uint8 rplmn[6]; /* RPLMN */
+    kal_uint8 eq_plmn[5][6]; /* 1~5 equivalent PLMNs (6 digits for each PLMN ID) */
+    kal_uint8 forbid_plmn[4][6]; /* 1~4 forbidden PLMNs (6 digits for each PLMN ID) */
+    kal_uint8 mnc_length;
+    /* Gibran 20090525: Added for Network Sharing multiple PLMN and DSAC */
+    /* #define MAX_NUM_MULTI_PLMN    6 */
+    kal_uint8 multi_plmn_count;
+    em_multi_plmn_struct multi_plmn_id[6];
+    kal_uint32 min_hplmn_search_period;
+    kal_uint8 hplmn[6];
+    kal_uint8 previous_rplmn[6];
+    kal_uint8 requested_plmn[6];
+    kal_uint8 plmn_sel_mode;
+} em_nwsel_plmn_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 rplmn[6];
+    kal_uint8 plmn_sel_mode;
+    kal_uint8 loss_rat;
+} em_nwsel_plmn_loss_info_ind_struct;  //add for auto test tool
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 result;
+    kal_uint8 plmn_sel_mode;
+    kal_uint8 search_rat;
+} em_nwsel_plmn_search_cnf_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    /* TS 24.301 subclause 4.5
+     * As an implementation option, the UE may start a timer for enabling E-UTRA  when the UE's attach attempt
+     * counter or tracking area updating attempt counter reaches 5 and the UE disables E-UTRA capability for cases
+     * described in subclauses 5.5.1.3.4.3, 5.5.1.3.6, 5.5.3.3.4.3 and 5.5.3.3.6.
+     */
+    kal_uint32 eutran_disable_timer_value; /* seconds */
+
+    /* TS 23.122 subclause 3.1
+     * If MS that has disabled its E-UTRA capability re-enables it when PLMN selection is performed, then the MS
+     * should, for duration of timer TD, memorize the PLMNs where E-UTRA capability was disabled as PLMNs where voice
+     * service was not possible.
+     */
+    kal_uint32 eutran_disable_td_timer_value; /* seconds */
+
+    /* Clear Codes Data requirement - Telcel (Mexico)
+     * Clear codes 23 & 33: ESM reject cause #29 and #33 happens 3 times, then disable EUTRAN for 2hrs.
+     * After 2 hrs, enable EUTRAN and search 4G.
+     */
+    kal_uint32 eutran_disable_esm_timer_value; /* seconds */
+
+    /* In FT experience, UE will be rejected with cause #15 in 4G if 23G only SIM is used.
+     * In the end, even UE can't camp on 4G cell, AS may measure LTE cell frequently
+     * and fail the power consumption test. For power saving purpose, if UE is rejected with #15
+     * in HPLMN, disable EUTRAN in HPLMN for 12hr
+     *
+     * For CHT 3G only SIM card, UE may also be reject with cause #13 in 4G.
+     */
+    kal_uint32 eutran_disable_for_rej_in_hplmn_timer_value; /* seconds */
+
+    /* When UE loss coverage or in limited service state
+     * UE will start recovery timer and perform plmn search after timer expiry
+     */
+    kal_uint32 recovery_timer_value; /* seconds */
+
+    /* When UE registers to VPLMN, UE will start high priority plmn search timer.
+     * UE will attempt to perform plmn search for higher priority plmn after timer expiry
+     */
+    kal_uint32 high_prio_search_timer_value; /* seconds */
+
+    /* Reset abnormal LAI list after timer expiry */
+    kal_uint32 retry_abnormal_lai_timer_value; /* seconds */
+
+    /* Reset abnormal RAI list after timer expiry */
+    kal_uint32 retry_abnormal_rai_timer_value; /* seconds */
+
+    /* MTC t3245 timer */
+    kal_uint32 t3245_timer_value; /* seconds */
+} em_nwsel_timer_info_ind_struct;
+typedef enum
+{
+    EM_EUTRAN_NOT_DISABLE,
+    EM_NO_USIM,
+    EM_SIM_INVALID_FOR_PS,
+    EM_NO_PS_ATTACH_REQ,
+    EM_CS_NOT_AVAILABLE,
+    EM_REJ_AS_GPRS_FPLMN,
+    EM_REJ_AS_16_17_22,
+    EM_REJ_AS_18,
+    EM_REJ_AS_13_15,
+    EM_REJ_AS_ESM_FPLMN,
+    EM_REJ_CS_ABNORMAL,
+    EM_REJ_PS_ABNORMAL,
+    EM_CSFB_UNAVAILABLE,
+    EM_NO_IMS_SUPPORT,
+    EM_NO_IMS_AND_CSFB_SUPPORT,
+    EM_IMS_UNREGISTERED,
+    EM_IMS_UNREGISTERED_PS_ABNORMAL,
+    EM_CUSTOM_DISABLED_PLMN,
+    EM_REJ_AS_42,
+}em_nwsel_eutran_disable_cause;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    plmn_struct plmn_id;
+    em_nwsel_eutran_disable_cause cause;
+} em_nwsel_eutran_disable_info_ind_struct;
+
+
+typedef enum {
+    BACKGROUND_ATUO_LIST = 0,
+    BACKGROUND_MANUAL_LIST = 1
+} background_list_type;
+
+typedef struct
+{
+    kal_uint8 plmn_id[3];
+    kal_uint8 rat;
+}nwsel_em_pplmn_rat_struct;
+
+typedef struct
+{
+    kal_uint8 plmn_id[3];
+    kal_uint8 plmn_details;  /* b8, Signal Quality: 0-Signal HIGH, 1-Signal LOW
+                                b5-b4, RAT: 00-GSM, 01-UMTS.
+                                b3-b1, PLMN Category: 000-HPLMN, 001-PREFERRED PLMN, 010-USER Preferred PLMN,
+                                                      011-OPERATOR Preferred PLMN, 100-OTHER PLMN */
+    kal_uint8 signal_strength;
+}nwsel_em_detail_plmn_info_struct;
+
+typedef struct
+{
+    kal_uint32       time_scan_start;
+    kal_uint32       time_scan_end;
+    kal_uint16       band_ind;
+    kal_uint16       dl_arfcn;   //For GSM, dl_arfcn should be 0xFFFF.
+    kal_uint16       ul_arfcn;   //For GSM, ul_arfcn should be 0xFFFF.
+    kal_uint16       gsm_bsic;   //For UMTS/LTE, gsm_bsic should be 0xFFFF.
+    kal_uint16       gsm_arfcn;  //For UMTS/LTE, gsm_arfcn should be 0xFFFF.
+}nwsel_em_detail_plmn_freq_struct;
+
+typedef enum
+{
+    EM_NWSEL_RECOVERY_SEARCH_TYPE_NORMAL,
+    EM_NWSEL_RECOVERY_SEARCH_TYPE_INACTIVE,
+}em_nwsel_recovery_search_type_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 network_selection_mode; /* 0-Auto,1-Manual,2-Limited */
+    kal_uint8 rat;
+    background_list_type service_search;
+    kal_uint16 num_pplmns;
+    nwsel_em_pplmn_rat_struct pplmns[MMRR_MAX_NUM_PRIORITY_PLMNS];  /* Amazon Software Reqirements Specification request 20 pplmn/rat combinations */
+} em_nwsel_plmn_list_req_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 network_selection_mode;
+    kal_bool  search_complete;
+    background_list_type service_search;
+    kal_uint8 num_available_plmns;
+    nwsel_em_detail_plmn_info_struct info[MMRR_MAX_NUM_AVAILABLE_PLMNS];
+    nwsel_em_detail_plmn_freq_struct info_freq[MMRR_MAX_NUM_AVAILABLE_PLMNS];
+    kal_uint32 curr_sys_tick;
+    wall_clock curr_wall_clock;    
+} em_nwsel_plmn_list_cnf_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 network_selection_mode;
+    nwsel_em_pplmn_rat_struct requested_plmn;
+} em_nwsel_plmn_search_req_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_bool result;
+    kal_uint8 num_available_plmns;
+    nwsel_em_detail_plmn_info_struct info[MMRR_MAX_NUM_AVAILABLE_PLMNS];
+} em_nwsel_plmn_search_cnf_info_type2_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint16 num_of_plmn;
+    nwsel_em_pplmn_rat_struct plmn_rat_info[MMRR_MAX_NUM_HPLMN_RAT_DATA];
+} em_nwsel_hplmn_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint16 num_of_plmn;
+    nwsel_em_pplmn_rat_struct plmn_rat_info[MMRR_MAX_NUM_OPLMN_RAT_DATA];
+} em_nwsel_oplmn_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint16 num_of_plmn;
+    nwsel_em_pplmn_rat_struct plmn_rat_info[MMRR_MAX_NUM_STATIC_APPLMN_RAT_DATA];
+} em_nwsel_static_applmn_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint16 num_of_plmn;
+    nwsel_em_pplmn_rat_struct plmn_rat_info[MMRR_MAX_NUM_DYNAMIC_APPLMM_RAT_DATA];
+} em_nwsel_dynamic_applmn_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_bool is_screen_on_req_trigger; /* For rude wakeup feature */
+    kal_bool is_during_inactive_mode;
+    em_nwsel_recovery_search_type_enum recovery_search_type;
+} em_nwsel_recovery_search_info_ind_struct;
+
+#endif /* _EM_NWSEL_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_ostd_public_struct.h b/mcu/interface/service/em/em_ostd_public_struct.h
new file mode 100644
index 0000000..3f4eeb5
--- /dev/null
+++ b/mcu/interface/service/em/em_ostd_public_struct.h
@@ -0,0 +1,103 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_ostd_public_struct.h
+ *
+ * Project:
+ * --------
+ *   VMOLY
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * 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 __EM_OSTD_PUBLIC_STRUCT_H__
+#define __EM_OSTD_PUBLIC_STRUCT_H__
+
+
+#include "em_public_struct.h"
+
+typedef struct
+{
+   kal_uint64 work_time;
+   kal_uint32 wakeup_cnt;
+   kal_uint32 slp_cnt;
+} ostd_work_info;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+   ostd_work_info md_sys;
+   ostd_work_info ostd;
+   ostd_work_info gsm;
+   ostd_work_info wcdma;
+   ostd_work_info tdscdma;
+   ostd_work_info c2k_1x;
+   ostd_work_info c2k_do;
+   ostd_work_info lte;
+   ostd_work_info nr;
+} em_ostd_work_info_ind_struct;
+
+#endif /* __EM_OSTD_PUBLIC_STRUCT_H__ */
+
diff --git a/mcu/interface/service/em/em_public_struct.h b/mcu/interface/service/em/em_public_struct.h
new file mode 100644
index 0000000..c594dda
--- /dev/null
+++ b/mcu/interface/service/em/em_public_struct.h
@@ -0,0 +1,1631 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+#ifndef _EM_PUBLIC_STRUCT_H
+#define _EM_PUBLIC_STRUCT_H
+
+#include "ps_public_struct.h"
+#include "kal_general_types.h"
+#include "kal_public_defs.h" //MSBB change #include "stack_config.h"
+#include "ps_em_enum.h"
+#include "ps_public_enum.h"
+#include "global_type.h"
+#include "l4c_common_enum_public.h"
+
+#define MAX_MD_EVENT_STRLEN 50
+typedef kal_uint32 request_info_type;
+
+#define EM_MOD_NIL          0xFFFFFFFF
+#define EM_MOD_TOTAL        10
+#define EM_MARK_MOD_GEMINI      0x80000000
+#define EM_UNMARK_MOD_GEMINI    0x7FFFFFFF
+
+typedef enum
+{
+   /*
+    * MP branches: please add "EM type id" in em_info_enum.h.
+    * Please remember to modify MD_COMMON\EM\em_info_enum.h for main TRUNK ex: LR11/LR12/UMOLY/UMOLYA
+    */
+   #include "em_info_enum.h"
+   NUM_OF_EM_INFO,
+   INVALID_EM_INFO = 0x7fffffff //end tag force this enum 4 bytes, for alignment purpose. Don't remove
+   /*
+    * MP branches: please add "EM type id" in em_info_enum.h.
+    * Please remember to modify MD_COMMON\EM\em_info_enum.h for main TRUNK ex: LR11/LR12/UMOLY/UMOLYA
+    */
+} em_info_enum;
+
+/**************************************************************************
+  * common structure/enumeration
+  **************************************************************************/
+
+//mtk01616_080622: for L4A code gen (Do NOT remove)
+#define EM_INFO_REQ_NUM NUM_OF_EM_INFO
+
+/* local parameter structures */
+
+/* To identify the status of info_request */
+typedef enum
+{
+    EM_OFF = 0,
+    EM_ON  = 1,
+    EM_NC  = 2 /* No change */
+} em_info_status_enum;
+
+
+/*****************************************************************************
+   Below enum is used as a tag for ELT tool to recognize EM view version.
+   Version 3 means the load is for MT6293 or after, and ELT may use different
+   binding logic for some EM views
+   Only EM contact window and tool team can modify this enum
+******************************************************************************/
+typedef enum
+{
+    EM_Views_Version = 4 // 4 for the new EM views from MT6297
+} EM_Version_Info;
+
+/*This enum is added for xAS Sniffer to indicate INACTIVE / SCREEN OFF modes*/
+typedef enum
+{
+    EM_SNIFFER_IND_TYPE_NORMAL,
+    EM_SNIFFER_IND_TYPE_INACTIVE,
+    EM_SNIFFER_IND_TYPE_SCREENOFF
+} em_sniffer_ind_type_enum;
+
+typedef enum
+{
+    EM_OOS_SEARCH_START,
+    EM_OOS_SEARCH_STOP,
+    EM_OOS_SEARCH_SUSPEND,
+    EM_OOS_SEARCH_RESUME,    
+}em_as_oos_search_duration_enum;
+
+typedef enum
+{
+    RAC_EM_SIM_NOT_AVIL,
+    RAC_EM_SIM_AVIL,
+    RAC_EM_SIM_CS_INVALID,
+    RAC_EM_SIM_PS_INVALID,
+    RAC_EM_SIM_CS_PS_INVALID,
+} rac_em_sim_state_info_enum;
+
+typedef enum
+{
+  EM_UMTS_CELL,
+  EM_GSM_CELL,
+  EM_LTE_CELL
+} em_RAT_type_enum;
+
+typedef em_RAT_type_enum RAT_type_enum;
+
+
+#endif /* ~_EM_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_public_struct_c2k_hlp.h b/mcu/interface/service/em/em_public_struct_c2k_hlp.h
new file mode 100644
index 0000000..197bd31
--- /dev/null
+++ b/mcu/interface/service/em/em_public_struct_c2k_hlp.h
@@ -0,0 +1,609 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_public_struct_c2k_hlp.h
+ *
+ * Project:
+ * --------
+ *   Gen93
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures for C2K HLP module.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ *
+ *------------------------------------------------------------------------------
+ * 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.
+*
+********************************************************************************/
+
+/********************* begin of definition ****************************/
+
+#ifndef _EM_PUBLIC_STRUCT_C2K_HLP_H
+#define _EM_PUBLIC_STRUCT_C2K_HLP_H
+
+#include "em_struct.h"
+#include "em_msgid.h"
+
+
+#define EM_C2K_HLP_PDN_NUM_MAX             5
+#define EM_C2K_HLP_APN_LENGTH_MAX          100
+#define EM_C2K_HLP_USERNAME_LENGTH_MAX     73
+#define EM_C2K_HLP_NSPE_APPTYPE_NUM_MAX    5
+
+/*hlp timer list*/
+typedef enum {
+    EM_HLP_TIMER_TCH_SETUP = 0,
+    EM_HLP_TIMER_WFR_SYS_RSP = 1,
+    EM_HLP_TIMER_1X_CONNECTION_5MIN = 2,
+    EM_HLP_TIMER_WFR_FAST_CONN = 3,
+    EM_HLP_TIMER_DATA_RETRY = 4,
+    EM_HLP_TIMER_DO_RETRY = 5,
+    EM_HLP_TIMER_FALLBACK = 6,
+    EM_HLP_TIMER_DO_OOSA_CONNECT_1X = 7,
+    EM_HLP_TIMER_WFR_RM_CONNECT = 8,
+    EM_HLP_TIMER_PPP_REQ = 9,
+    EM_HLP_TIMER_WFR_UIM_AUTH_RSP = 10,
+    EM_HLP_TIMER_THROTTLING_HSPD = 11,
+    EM_HLP_TIMER_THROTTLING_HRPD = 12,
+    EM_HLP_TIMER_IP_250MS = 13,
+    EM_HLP_TIMER_DRMNT_RCNT_BACKOFF = 14,
+    EM_HLP_TIMER_WFR_HANDOFF_HYST = 15,
+    EM_HLP_TIMER_XOFF_RSP = 16,
+    EM_HLP_TIMER_TCH_REL = 17,
+    EM_HLP_TIMER_C109_PULSE = 18,
+    EM_HLP_TIMER_PPP_CONNECT_BACKOFF = 19,
+    EM_HLP_TIMER_DATA_RELEASE = 20,
+    EM_HLP_TIMER_PDN_REQ_0 = 21,
+    EM_HLP_TIMER_PDN_REQ_1 = 22,
+    EM_HLP_TIMER_PDN_REQ_2 = 23,
+    EM_HLP_TIMER_PDN_REQ_3 = 24,
+    EM_HLP_TIMER_PDN_REQ_4 = 25,
+    EM_HLP_TIMER_VSE_VER_CAP_IND = 26,
+    EM_HLP_TIMER_VSE_PPP_INACT = 27,
+    EM_HLP_TIMER_IMS_WFR_RSP = 28,
+    EM_HLP_TIMER_PDN_INACT_0 = 29,
+    EM_HLP_TIMER_PDN_INACT_1 = 30,
+    EM_HLP_TIMER_PDN_INACT_2 = 31,
+    EM_HLP_TIMER_PDN_INACT_3 = 32,
+    EM_HLP_TIMER_PDN_INACT_4 = 33,
+    EM_HLP_TIMER_THROTTLING_EHRPD = 34,
+    EM_HLP_TIMER_UE_PARTIAL_CONTEXT = 35,
+    EM_HLP_TIMER_MIP_RRP_REG = 36,
+    EM_HLP_TIMER_MIP_RRP_DEREG = 37,
+    EM_HLP_TIMER_MIP_RRQ_REG = 38,
+    EM_HLP_TIMER_MIP_AGENT_ADV = 39,
+    EM_HLP_TIMER_MIP_LIFETIME = 40,
+    EM_HLP_TIMER_IPV6_TEST = 41,
+    EM_HLP_TIMER_NAT = 42,
+}em_hlp_timer_enum;
+
+/*hlp cam event*/
+typedef enum {
+    EM_CAM_PPP_CONNECT_REQ_EV = 0,
+    EM_CAM_ANSWER_REQ_EV = 1,
+    EM_CAM_DORMANT_REQ_EV = 2,
+    EM_CAM_PPP_RELEASE_REQ_EV = 3,
+    EM_CAM_DORMANT_RECONNECT_REQ_EV = 4,
+    EM_CAM_CONNECTION_OPENED_IND_EV = 5,
+    EM_CAM_CONNECTION_FAILED_IND_EV = 6,
+    EM_CAM_CONNECTION_RELEASED_IND_EV = 7,
+    EM_CAM_SYSTEM_QUERY_RSP_EV = 8,
+    EM_CAM_OOSA_IND_EV = 9,
+    EM_CAM_UM_PPP_STATUS_RSP_EV = 10,
+    EM_CAM_RM_PPP_STATUS_RSP_EV = 11,
+    EM_CAM_RLP_INACT_IND_EV = 12,
+    EM_CAM_RLP_OPEN_FAILED_EV = 13,
+    EM_CAM_XOFF_RESPONSE_RCVD_EV = 14,
+    EM_CAM_FORCE_STATE_EV = 0xff,
+} em_hlp_cam_event_enum;
+
+/*hlp cam state*/
+typedef enum {
+    EM_CAM_IDLE_ST = 0,
+    EM_CAM_IDLE_WFR_SYSTEM_RSP_ST = 1,
+    EM_CAM_IDLE_WFR_CP_CONNECT_ST = 2,
+    EM_CAM_IDLE_WFR_CP_CONNECT_RETRY_ST = 3,
+    EM_CAM_WFR_UM_CONNECT_ST = 4,
+    EM_CAM_WFR_RM_CONNECT_ST = 5,
+    EM_CAM_CONNECTED_ST = 6,
+    EM_CAM_WFR_UM_RELEASE_ST = 7,
+    EM_CAM_WFR_RM_RELEASE_ST = 8,
+    EM_CAM_WFR_CP_DORMANT_ST = 9,
+    EM_CAM_DORMANT_ST = 10,
+    EM_CAM_DORMANT_WFR_SYSTEM_RSP_ST = 11,
+    EM_CAM_DORMANT_WFR_CP_CONNECT_ST = 12,
+    EM_CAM_DORMANT_WFR_CP_CONNECT_RETRY_ST = 13,
+    EM_CAM_WFR_CP_RELEASE_ST = 14,
+    EM_CAM_WFR_XOFF_RESPONSE_ST = 15,
+} em_hlp_cam_state_enum;
+
+/*cpc state*/
+typedef enum {
+    EM_CPC_IDLE = 0,
+    EM_CPC_CONNECTING = 1,
+    EM_CPC_CONNECTED = 2,
+    EM_CPC_DISCONNECT = 3,
+    EM_CPC_ANALOG_CONN = 4,
+} em_hlp_cpc_state_enum;
+
+/*psc state*/
+typedef enum {
+    EM_PSC_IDLE = 0,
+    EM_PSC_INIT = 1,
+    EM_PSC_CONNECTED = 2,
+    EM_PSC_NO_DMC_CONNECTED = 3,
+    EM_PSC_DORMANT = 4,
+    EM_PSC_RECONNECT = 5,
+} em_hlp_psc_state_enum;
+
+/*pending connect request*/
+typedef enum {
+    EM_NO_PENDING_RECONN_REQ = 0,
+    EM_PENDING_REQ_1X_BUSY = 1,
+    EM_PENDING_REQ_1X_IDLE = 2,
+} em_hlp_pending_reconn_enum;
+
+/*nspe type*/
+typedef enum {
+    EM_NSPE_ASYNC_TCP = 0,
+    EM_NSPE_PACKET_RLP = 1,
+    EM_NSPE_BROWSER_UDP = 2,
+    EM_NSPE_PACKET_UART = 3,
+    EM_NSPE_BROWSER_ON_ASYNC = 4,
+    EM_NSPE_BROWSER_CKT_TCP = 5,
+    EM_NSPE_BROWSER_PKT_TCP = 6,
+    EM_NSPE_PPP_ONLY = 7,
+    EM_NSPE_ACS_STREAM = 8,
+    EM_NSPE_MAIN_CONN = 9,
+    EM_NSPE_NULL = 10,
+} em_hlp_nspe_type_enum;
+
+/*nspe state*/
+typedef enum {
+    EM_NSPE_IDLE = 0,
+    EM_NSPE_RLP_CONNECTING = 1,
+    EM_NSPE_NET_CONNECTING = 2,
+    EM_NSPE_TCP_CONNECTING = 3,
+    EM_NSPE_PPP_CONNECTING = 4,
+    EM_NSPE_LCP_CONNECTED = 5,
+    EM_NSPE_PPP_CONNECTED = 6,
+    EM_NSPE_NET_CONNECTED = 7,
+    EM_NSPE_ABORTING = 8,
+    EM_NSPE_CLOSING = 9,
+    EM_NSPE_UM_RENEGO = 10,
+    EM_NSPE_DEREGISTERING = 11,
+    EM_NSPE_RESERVED = 12,
+} em_hlp_nspe_state_enum;
+
+/*ims state*/
+typedef enum {
+    EM_IMS_IDLE = 0,
+    EM_IMS_WFR_PPP_CONN = 1,
+    EM_IMS_WFR_PDN_CONN = 2,
+    EM_IMS_WFR_IPADDR_CONFIG = 3,
+    EM_IMS_WFR_QOS_NEGO = 4,
+    EM_IMS_PPP_CONNECTED = 5,
+    EM_IMS_WFR_PDN_REL = 6,
+    EM_IMS_WFR_SIP_REGISTRATION = 7,
+    EM_IMS_WFR_QOS_REL = 8,
+    EM_IMS_WFR_CALL_SETUP = 9,
+    EM_IMS_CALL_CONNECTED = 10,
+    EM_IMS_WFR_CALL_RELEASE = 11,
+    EM_IMS_WFR_CALL_SIP_DEREGISTRATION = 12,
+    EM_IMS_WFR_SESSION_MODIFY = 13,
+} em_hlp_ims_state_enum;
+
+/*ehrpd state*/
+typedef enum {
+    EM_EHRPD_PDN_IDLE = 0,
+    EM_EHRPD_PDN_REQ_SENT = 1,
+    EM_EHRPD_PDN_ACK_RCVD = 2,
+    EM_EHRPD_PDN_ACK_SENT = 3,
+    EM_EHRPD_PDN_OPEN = 4,
+    EM_EHRPD_PDN_TERM_SENT = 5,
+    EM_EHRPD_PDN_TERM_RCVD = 6,
+} em_hlp_ehrpd_state_enum;
+
+/*pdn state*/
+typedef enum {
+    EM_PDN_IDLE = 0,
+    EM_PDN_CONNECTED = 1,
+} em_hlp_pdn_status_enum;
+
+/*pppha module*/
+typedef enum {
+    EM_PPPHA_ENC0 = 0,
+    EM_PPPHA_ENC1 = 1,
+    EM_PPPHA_DEC0 = 2,
+    EM_PPPHA_DEC1 = 3,
+    EM_PPPHA_NUM  = 4,
+} em_hlp_pppha_enum;
+
+/*pppha status*/
+typedef enum {
+    EM_PPPHA_IDLE = 0,
+    EM_PPPHA_BUSY = 1,
+} em_hlp_pppha_status_enum;
+
+/*app type*/
+typedef enum {
+    EM_ASYNC_DATA = 0,
+    EM_NETWORK_RM = 1,
+    EM_PPP_ONLY = 2,
+    EM_RELAY_RM = 3,
+    EM_MAIN_CONN = 4,
+} em_hlp_app_type_enum;
+
+/*serving network*/
+typedef enum {
+    EM_DO_NETWORK = 0,
+    EM_RTT_NETWORK = 1,
+    EM_NON_CONNECTED = 2,
+} em_hlp_serving_network_enum;
+
+/*connection status*/
+typedef enum {
+    EM_NOT_CONNECTED = 0,
+    EM_DO_CONNECTING = 1,
+    EM_DO_CONNECTED = 2,
+    EM_RTT_CONNECTING = 3,
+    EM_RTT_CONNECTED = 4,
+} em_hlp_conn_status_enum;
+
+/*error code*/
+typedef enum {
+    /*Network Generates PDN Error*/
+    EM_GENERAL_ERROR = 0X8000,
+    EM_UNAUTHORIZED_APN,
+    EM_PDN_LIMIT_EXCEEDED,
+    EM_NO_PGW_AVAILABLE,
+    EM_PGW_UNREACHABLE,
+    EM_PGW_REJECT,
+    EM_INSUFFICIENT_PARAMETERS,
+    EM_RESOURCE_UNAVAILABLE,
+    EM_ADMIN_PROHIBITED,
+    EM_PDNID_ALREADY_IN_USE,
+    EM_SUBSCRIPTION_LIMITATION,
+    EM_PDN_CONN_ALREADY_EXIST_FOR_PDN,
+    EM_EMERGENCY_NOT_SUPPORTED,
+    EM_RECONNECT_NOT_ALLOWED,
+    /*User Defined PDN Error*/
+    EM_EAP_AKA_FAILURE = 0X8080,
+    EM_RETRY_TMR_THROTTLING,
+    EM_NETWORK_NO_RSP,
+    EM_PDN_ATTACH_ABORT,
+    EM_PDN_LIMIT_EXCEEDED_IN_UE_SIDE,
+    EM_PDNID_ALREADY_IN_USE_IN_UE_SIDE,
+    EM_INVALID_PDN_ATTACH_REQ,
+    EM_PDN_REC_FAILURE,
+    EM_MAINCONN_SETUP_FAILURE,
+    EM_BEARER_RESOURCE_UNAVAILABLE,
+    EM_OP_ABORT_BY_USER,
+    EM_RTT_DATA_CONNECTED,
+    EM_EAP_AKA_REJECT,
+    EM_LCP_NEGO_3FAILURE,
+    EM_TCH_SETUP_FAILURE,
+    EM_NW_NO_RSP_IN_LCP,
+    EM_NW_NO_RSP_IN_AUTH,
+    EM_A12_RETRY_3FAILURE,
+    EM_RSVAS_SUSPENDED,
+    EM_ABORT_BY_GMSS,
+    /*User Defined PPP Error*/
+    EM_PPP_AUTH_FAIL = 0X80B0,
+    EM_MIP_PPP_LCP_TMO,
+    EM_MIP_PPP_NCP_TMO,
+    EM_SIP_PPP_LCP_TMO,
+    EM_SIP_PPP_NCP_TMO,
+    EM_MIP_PPP_OPT_MISMATCH,
+    EM_SIP_PPP_OPT_MISMATCH,
+    EM_MIP_SOL_TMO,
+    EM_MIP_RRQ_TMO,
+    EM_MIP_RRP_ERR,
+    EM_MIP_LCP_FAIL,
+    EM_SIP_LCP_FAIL,
+    EM_MIP_NCP_FAIL,
+    EM_SIP_NCP_FAIL,
+    EM_A12_AUTH_FAIL,
+    EM_EAP_AKA_AUTH_FAIL,
+    EM_MIP_ADMIN_PROHIB_FAIL,
+    EM_MULTI_TCH_FAIL,
+    EM_PPP_A12_LCP_TMO,
+    EM_DNS_NO_RESPONSE,
+    /*Network Generates MIP Error*/
+    /*0x80f0 - 0x8140: MIP error code, shall not disorder it*/
+    EM_MIP_UNSPECIFIED_FAILURE = 0X80F0,
+    EM_MIP_ADMIN_PROHIBITED,
+    EM_MIP_INSUFFRESOURCES1,
+    EM_MIP_MN_FAILED_AUTH,
+    EM_MIP_HA_FAILED_AUTH,
+    EM_MIP_LIFETIME_TOO_LONG,
+    EM_MIP_POORLY_FORMED_REQ,
+    EM_MIP_POORLY_FORMED_REPLY,
+    EM_MIP_ENCAP_UNAVAIL,
+    EM_MIP_RESERVED_UNAVAIL,
+    EM_MIP_REV_TUN_UNAVAIL,
+    EM_MIP_RT_NT_NOT_SET,
+    EM_MIP_MN_TOO_DISTANT,
+    EM_MIP_INVALID_CARE_OF_ADDR,
+    EM_MIP_REG_TIMEOUT,
+    EM_MIP_DS_NOT_SUPPORT,
+    EM_MIP_HN_UNREACHABLE,
+    EM_MIP_HA_HOST_UNREACHABLE,
+    EM_MIP_HA_PORT_UNREACHABLE,
+    EM_MIP_HA_UNREACHABLE = 0X8108,
+    EM_MIP_VENDOR_SPECIFIC,
+    EM_MIP_NON_ZERO_HA_ADDR,
+    EM_MIP_NON_ZERO_HOME_ADDR = 0X8110,
+    EM_MIP_MISSING_NAI,
+    EM_MIP_MISSING_HA,
+    EM_MIP_MISSING_HOME_ADDR,
+    EM_MIP_UNKNOWN_CHALL = 0X8118,
+    EM_MIP_MISSING_CHALL,
+    EM_MIP_STALE_CHALL,
+    EM_MIP_MISSING_MN_FA,
+    EM_MIP_REASON_UNSPEC = 0X8130,
+    EM_MIP_ADMIN_PROHIB,
+    EM_MIP_INSUFF_RESOURCES2,
+    EM_MIP_MN_FAILED_AUTH2,
+    EM_MIP_FA_FAILED_AUTH,
+    EM_MIP_IDENT_MISMATCH,
+    EM_MIP_POORLY_FORMED_REQ2,
+    EM_MIP_TOO_MANY_BINDINGS,
+    EM_MIP_UNKNOWN_HA_ADDR,
+    EM_MIP_REV_TUNNEL_UNAVAIL,
+    EM_MIP_RT_NT_NOT_SET2,
+    EM_MIP_ENCAPSULATION_UNAVAIL = 0X813B,
+    EM_MIP_REG_WITH_REDIRECTED = 0X813F,
+    EM_MIP_ERR_CODE_FROM_HOME = 0X8140,
+    EM_NULL_ERROR   = 0XEEEE,
+    EM_NO_ERROR     = 0XFFFF,
+} em_hlp_error_code_enum;
+
+typedef enum
+{
+   EM_RM_VAL,
+   EM_RM_HLP,
+   EM_RM_RLP,
+   EM_RM_RCP,
+   EM_RM_DORM
+} em_hlp_rm_path_enum;
+
+typedef enum
+{
+   EM_FWD_QB,
+   EM_REV_QB
+} em_queue_type_enum;
+
+typedef enum
+{
+    EM_HLP_DATA_DIR_UL,
+    EM_HLP_DATA_DIR_DL,
+    EM_HLP_DATA_DIR_MAX
+} em_hlp_data_dir_enum;
+
+typedef enum
+{
+   EM_DUN,
+   EM_NDIS
+} em_hlp_ppp_route_type_enum;
+
+typedef enum
+{
+   EM_NONE_SYSTEM_FOUND,
+   EM_1X_CONNECTION_FAIL,
+   EM_DO_CONNECTION_FAIL,
+   EM_LCP_CONFIG_REQ_TIMEOUT,
+   EM_NCP_CONFIG_REQ_TIMEOUT,
+   EM_VSNCP_CONFIG_REQ_TIMEOUT,
+   EM_CHAP_RESPONSE_TIMEOUT,
+   EM_EAP_RESPONSE_TIMEOUT,
+   EM_RM_PORT_INIT_FAIL,
+   EM_CHAP_AUTH_ERROR_RSP_FROM_UIM,
+   EM_MIP_AUTH_ERROR_RSP_FROM_UIM,
+   EM_DATA_PACKET_TOO_BIG,
+   EM_UM_BUF_QUEUE_FULL,
+   EM_RM_BUF_QUEUE_FULL,
+   EM_ABNORMAL_EVENT_MAX
+} em_hlp_abnormal_event_enum;
+
+/*report hlp timer status*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum      em_info;
+    em_hlp_timer_enum hlp_timer_id;
+    kal_bool          hlp_timer_act;
+    kal_uint32        hlp_timer_duration;
+} em_c2k_hlp_timer_status_ind_struct;
+
+/*report cam state*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum               em_info;
+    em_hlp_cam_state_enum      hlp_cam_old_state;
+    em_hlp_cam_state_enum      hlp_cam_new_state;
+    em_hlp_cam_event_enum      hlp_cam_event;
+    em_hlp_cpc_state_enum      cpc_state;
+    em_hlp_psc_state_enum      psc_state;
+    em_hlp_pending_reconn_enum pending_reconnet;
+    kal_bool                   fallback_to_1x;
+    kal_bool                   ehrpd_enable;
+    kal_bool                   pending_a12_fail;
+} em_c2k_hlp_cam_state_ind_struct;
+
+/*report nspe state*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum           em_info;
+    em_hlp_nspe_state_enum hlp_nspe_state[EM_C2K_HLP_NSPE_APPTYPE_NUM_MAX];
+} em_c2k_hlp_nspe_state_ind_struct;
+
+/*report pdn status*/
+typedef struct
+{
+    kal_uint8               pdn_id;
+    kal_uint8               apn[EM_C2K_HLP_APN_LENGTH_MAX];
+    em_hlp_ehrpd_state_enum hlp_ehrpd_state;
+    em_hlp_pdn_status_enum  pdn_status;
+    kal_uint8               reconnection_ind;
+    kal_uint8               username[EM_C2K_HLP_USERNAME_LENGTH_MAX];
+    kal_uint8               ipv4_addr[4];
+    kal_uint8               ipv6_addr[16];
+    kal_uint16              ipv4_mtu;
+    em_hlp_error_code_enum  pdn_err_code;
+} em_hlp_pdn_status_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum             em_info;
+    em_hlp_ims_state_enum    hlp_ims_state;
+    em_hlp_pdn_status_struct hlp_pdn_status[EM_C2K_HLP_PDN_NUM_MAX];
+} em_c2k_hlp_pdn_status_ind_struct;
+
+/*report pppha status*/
+typedef struct
+{
+    em_hlp_pppha_status_enum pppha_status;
+    kal_uint32               pppha_total_packet;
+    kal_uint32               pppha_bad_packet;
+} em_hlp_pppha_status_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum               em_info;
+    em_hlp_pppha_status_struct hlp_pppha_status[EM_PPPHA_NUM];
+} em_c2k_hlp_pppha_status_ind_struct;
+
+/*report ppp status*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                em_info;
+    em_hlp_ppp_route_type_enum  route_type;
+    em_hlp_app_type_enum        app_type;
+    kal_uint16                  inactivity_tmr;
+    em_hlp_serving_network_enum serving_network;
+    em_hlp_conn_status_enum     connection_status;
+    kal_bool                    mip_fallback;
+    em_hlp_error_code_enum      error_code;
+} em_c2k_hlp_ppp_status_ind_struct;
+
+/*indicate buffer queue info*/
+typedef struct
+{
+    kal_bool                    q_flow_ctrl;
+    kal_uint32                  q_depth;
+    kal_uint16                  q_rd_index;
+    kal_uint16                  q_wr_index;
+    kal_uint16                  q_current_item;
+    kal_uint16                  q_discard_item;  
+} em_hlp_bufq_struct;
+
+/*report rm buffer queue info*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                em_info;
+    em_hlp_rm_path_enum         rm_data_path;
+    em_hlp_bufq_struct          rm_fwd_bufq;
+    em_hlp_bufq_struct          rm_rev_bufq;   
+} em_c2k_hlp_rm_bufq_info_ind_struct;
+
+/*report um buffer queue info*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                em_info;
+    em_hlp_bufq_struct          um_fwd_bufq;
+    em_hlp_bufq_struct          um_rev_bufq;   
+} em_c2k_hlp_um_bufq_info_ind_struct;
+
+/*indicate packet info*/
+typedef struct
+{
+    kal_uint32                   pkt_total_num;
+    kal_uint32                   pkt_total_len;
+    kal_uint32                   pkt_ipv6_num;
+    kal_uint32                   pkt_ip_icmp_num;
+    kal_uint32                   pkt_ip_tcp_num;
+    kal_uint32                   pkt_ip_udp_num;
+} em_hlp_pkt_info_struct;
+
+/*report packet info*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                em_info;
+    em_hlp_pkt_info_struct      pkt_fwd_info;
+    em_hlp_pkt_info_struct      pkt_rev_info;   
+} em_c2k_hlp_packet_info_ind_struct;
+
+/*report packet info*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                em_info;
+    em_hlp_abnormal_event_enum  hlp_abnormal_event;   
+} em_c2k_hlp_abnormal_event_info_struct;
+
+/********************* end of definition ****************************/
+
+#endif /*_EM_PUBLIC_STRUCT_C2K_HLP_H*/
+
diff --git a/mcu/interface/service/em/em_public_struct_chsc.h b/mcu/interface/service/em/em_public_struct_chsc.h
new file mode 100644
index 0000000..7eb5390
--- /dev/null
+++ b/mcu/interface/service/em/em_public_struct_chsc.h
@@ -0,0 +1,272 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2017
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+ /*******************************************************************************
+ * Filename:
+ * ---------
+ *   em_public_struct_chsc.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures for C2K CHSC module
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+********************************************************************************/
+
+
+#ifndef _EM_PUBLIC_STRUCT_CHSC_H
+#define _EM_PUBLIC_STRUCT_CHSC_H
+
+#include "em_struct.h"
+#include "em_msgid.h"
+#include "c2k_defs.h"
+
+#define MAX_RTBA_CHANNEL_BLOCK_INFO    (32)
+
+#define C2K_EM_MAX_GAP_NUM             (12)
+
+
+/** C2K System Mode Definition.*/
+typedef enum
+{
+    EM_SYS_MODE_1xRTT = 0,
+    EM_SYS_MODE_EVDO,
+    EM_SYS_MODE_MAX
+}em_mode_type_enum;
+
+/** RTBA channel type definition.*/
+typedef enum
+{
+    EM_RTBA_XL1_ICS_PILOT_CHAN = 0,                                                /** ICS Pilot Acq Channel. */
+    EM_RTBA_XL1_SINGLE_INTER_MEAS_CHAN,                                            /** Slotted Inter-Meas Channel after QPCH. */
+    EM_RTBA_XL1_SLT_CCI_CHAN,                                                      /** Slotted CCI Channel. */
+    EM_RTBA_XL1_SLT_QPCH1_CHAN,                                                    /** Slotted QPCH1 Channle. */
+    EM_RTBA_XL1_SLT_QPCH2_CHAN,                                                    /** Slotted QPCH2 Channle. */
+    EM_RTBA_XL1_ICS_RSSI_SCAN_CHAN,                                                /** ICS RSSI Scan Channel**/
+    EM_RTBA_EVL1_ICS_PILOT_CHAN,                                                   /** ICS Pilot Acq Channel. */
+    EM_RTBA_EVL1_STDBY_LTE_IDLE_MEAS_CHAN,                                         /** Standby Meas Channel in LTE Idle Gap. */
+    EM_RTBA_EVL1_STDBY_LTE_CONN_MEAS_CHAN,                                         /** Standby Meas Channel in LTE Connect Gap. */
+    EM_RTBA_EVL1_STDBY_CGI_MEAS_CHAN,                                              /** Standby CGI Meas Channel. */
+    EM_RTBA_XL1_SLT_PCH_CHAN,                                                      /** 1xRTT's Slotted PCH Channle. */
+    EM_RTBA_EVL1_SLT_PCH_CHAN,                                                     /** EVDO's Slotted PCH Channle. */
+    EM_RTBA_XL1_ICS_SYNC_CHAN,                                                     /** 1xRTT ICS Sync Acq Channel. */
+    EM_RTBA_XL1_ICS_SYNC_OPTIMIZE_CHAN,                                            /** 1xRTT ICS Sync Acq Channel with optimization schedule manner. */
+    EM_RTBA_EVL1_ICS_SYNC_CHAN,                                                    /** EVDO ICS Sync Acq Channel. */
+    EM_RTBA_EVL1_STDBY_LTE_IDLE_SYNC_CHAN,                                         /** Standby Sync Channel in LTE Idle Gap. */
+    EM_RTBA_EVL1_STDBY_LTE_CONN_SYNC_CHAN,                                         /** Standby Sync Channel in LTE Connect Auto Gap. */
+    EM_RTBA_EVL1_STDBY_CGI_SYNC_CHAN,                                              /** Standby CGI Sync Channel. */
+    EM_RTBA_XL1_NSLT_PCH_OVHD_CHAN,                                                /** Non-Slotted PCh Channel. */
+    EM_RTBA_XL1_NSLT_PCH_EARLY_WAKUP_CHAN,                                         /** Non-Slotted PCh ChannelRegistered in early wakeup. */
+    EM_RTBA_XL1_SLT_PCH_LOST_DET_CHAN,                                             /** Slotted PCH Lost Detect Channle. */
+    EM_RTBA_XL1_CONN_PS_RX_CHAN,                                                   /** Connect PS Rx. */
+    EM_RTBA_EVL1_NSLT_CC_OVHD_CHAN,                                                /** Non-Slotted CC Channel. */
+    EM_RTBA_EVL1_CONN_RX_CHAN,                                                     /** Connect PS Rx. */
+    EM_RTBA_EVL1_STDBY_CGI_CHAN,                                                   /** Standby CGI Channel. */
+    EM_RTBA_PRIMARY_CHAN_END
+}em_rtba_channel_type_enum;
+
+/** RTBA channel status definition.*/
+typedef enum
+{
+    EM_INACTIVE_STATUS,
+    EM_REGISTER_PEND_STATUS,
+    EM_PREEMPTED_STATUS,
+    EM_GRANT_PEND_STATUS,
+    EM_ACTIVE_STATUS
+}em_rtba_channel_staus_enum;
+
+/** RTBA channel block information.*/
+typedef struct
+{
+    em_rtba_channel_type_enum   channel;
+    kal_uint32                  start_time;
+    kal_uint32                  reserve_length;
+    em_rtba_channel_staus_enum  status;
+}em_c2k_rtba_channel_block_info_ind_struct;
+
+/** RTBA Channel Status and Block Information.*/
+typedef struct
+{
+    em_mode_type_enum                               mode;
+    kal_bool                                        srlte_mode;
+    em_c2k_rtba_channel_block_info_ind_struct       channel_info[MAX_RTBA_CHANNEL_BLOCK_INFO];
+    kal_uint8                                       block_index;
+}em_c2k_rtba_channel_status_info_msg_struct;
+    
+typedef struct
+{
+    SysAirInterfaceT                               mode;
+}em_c2k_rtba_channel_status_info_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    em_c2k_rtba_channel_status_info_msg_struct          ChannelStatusInfo;
+}em_c2k_rtba_channel_status_info_ind_struct;
+
+
+/* LL1A internal state */
+typedef enum
+{
+    EM_LL1A_FLIGHT,
+    EM_LL1A_STANDBY,
+    EM_LL1A_ACTIVE,
+    EM_LL1A_RAT_MODE_INIT,
+    EM_LL1A_SUSPEND
+} em_ll1a_rat_status_enum;
+
+/* RMC RAT status */
+typedef enum
+{
+    EM_RAT_FLIGHT,
+    EM_RAT_STANDBY,
+    EM_RAT_ACTIVE,
+    EM_RAT_NULL
+} em_rmc_rat_status_enum;
+
+/* RMC MODE status */
+typedef enum
+{
+    EM_RMC_MODE_BEGIN,
+    EM_RMC_NULL_MODE,
+    EM_RMC_IDLE_MODE,
+    EM_RMC_CONNECT_MODE
+} em_rmc_mode_status_enum;
+
+/* L1D DATA CALL MODE status */
+typedef enum
+{
+    EM_L1D_NON_DATA_CONNECT_MDOE,
+    EM_L1D_DATA_CONNECT_MDOE
+} em_l1d_mode_status_enum;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum               em_info;
+
+    em_ll1a_rat_status_enum    ll1a_rat_state;
+    em_rmc_rat_status_enum     rmc_rat_status;
+    em_rmc_mode_status_enum    rmc_mode_status;
+    em_l1d_mode_status_enum    l1d_mode_status;
+    kal_uint8                  gap_offered_status;
+    kal_uint8                  auto_gap_avail_status;
+    kal_uint8                  gap_ignore_flag;
+    kal_uint16                 drx_cycle;
+} em_c2k_ll1a_state_mode_info_ind_struct;
+
+/* L1D DATA CALL MODE status */
+typedef struct
+{
+    kal_uint32  gap_start_time;
+    kal_uint32  gap_end_time;
+} em_gap_info_type_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                 em_info;
+
+    kal_uint8                    gap_num;
+    em_gap_info_type_ind_struct  gap_info[C2K_EM_MAX_GAP_NUM];
+
+} em_c2k_ll1a_standby_gap_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                 em_info;
+
+    kal_uint8                    gap_num;
+    em_gap_info_type_ind_struct  gap_info;
+} em_c2k_ll1a_active_gap_info_ind_struct;
+
+/*do spage information */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                 		em_info;
+
+    kal_uint32                          TriggerEvent;
+    kal_uint32                          HscSpageHistory;
+    kal_uint8       					PrevSpageState;
+    kal_uint8                           CurrSpageState;
+	kal_uint16                          Prev2CurrTrigger;
+} em_c2k_do_spage_state_info_ind_struct;
+
+/*HSC MPA information */
+typedef struct
+{
+    kal_uint8       					Antenna;
+    kal_uint8                           Owner;
+}em_c2k_hsc_mpa_status_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                 		em_info;
+
+    em_c2k_hsc_mpa_status_info_struct  	mpa_info;
+} em_c2k_hsc_mpa_status_info_ind_struct;
+
+#endif /* ~_EM_PUBLIC_STRUCT_CHSC_H */
+
diff --git a/mcu/interface/service/em/em_public_struct_cval.h b/mcu/interface/service/em/em_public_struct_cval.h
new file mode 100644
index 0000000..38d31b4
--- /dev/null
+++ b/mcu/interface/service/em/em_public_struct_cval.h
@@ -0,0 +1,525 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_public_struct_cval.h
+ *
+ * Project:
+ * --------
+ *   Gen93
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures for C2K L4(CVAL) module.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_PUBLIC_STRUCT_CVAL_H
+#define _EM_PUBLIC_STRUCT_CVAL_H
+
+#ifdef __MD93__
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info; /* EM ID. */
+    kal_uint16  channel;  /* It defines channel number. */
+    kal_uint16  band_class;  /* It defines band class. */
+    kal_uint16  pilot_pn_offset;  /* It defines pilot PN offset. */
+    kal_int16   rx_power;  /* It defines rx power. */
+    kal_int16   div_rx_power;  /* It defines div rx power. */
+    kal_int16   tx_power;  /* It defines tx power. */
+    kal_int16   tx_ant;  /* It defines tx antenna id. */
+    kal_uint16  fer;  /* It defines frame error rate. */
+    kal_bool    tas_enable; /*if TAS is enabled or not.*/
+    kal_int16   tas_state;  /* It defines TAS state. */
+    kal_int16   tas_ver;  /* It defines TAS version. */
+    kal_int16   rx_power_dbmL;  /* It defines Antenna L rx power. */
+    kal_int16   rx_power_dbmU;  /* It defines Antenna U rx power. */
+    kal_int16   rx_power_dbmLp;  /* It defines Antenna Lp rx power. */
+} em_c2k_l4_rtt_radio_info_ind_struct;
+
+#else
+
+typedef struct
+{
+    kal_bool    valid;
+    kal_int16   rx_power;  /* It defines rx power. */
+    kal_int16   tx_power;  /* It defines tx power. */    
+    kal_int16   phr;  /*  */
+}em_c2k_l4_rtt_ant_info_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info; /* EM ID. */
+    kal_uint16  channel;  /* It defines channel number. */
+    kal_uint16  band_class;  /* It defines band class. */
+    kal_uint16  pilot_pn_offset;  /* It defines pilot PN offset. */
+    kal_bool    utas_enable; /*if TAS is enabled or not.*/
+	kal_bool    tas_enable; /*if TAS is enabled or not.*/
+    kal_int16   tas_state;  /* It defines TAS state. */
+    kal_int16   tas_ver;  /* It defines TAS version. */
+    kal_uint16  fer;  /* It defines frame error rate. */
+    kal_int16   tx_ant;  /* It defines tx antenna id. */
+
+    em_c2k_l4_rtt_ant_info_ind_struct em_c2k_l4_rtt_ant_info[8];
+    
+} em_c2k_l4_rtt_radio_info_ind_struct;
+
+#endif
+
+/* Definition of RF file cal state */
+typedef enum
+{
+    EM_RF_FILE_IS_CALIBRATED = 0,
+    EM_RF_FILE_IS_NOT_CALIBRATED = 1,
+    EM_RF_FILE_VERSION_NOT_EXIST = 2,
+} em_rf_file_cal_state_enum;
+
+typedef struct
+{
+    kal_uint8   major_ver; /* It defines RF file major version. */
+    kal_uint8   minor_ver; /* It defines RF file minor version. */
+    kal_uint8   value_ver; /* It defines RF file value version. */
+    kal_uint8   cust_ver; /* It defines RF file cust version. */
+} em_rf_file_ver_sturct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum  em_info; /* EM ID. */
+    kal_uint8     cp_state; /* It defines cp state. */
+    em_rf_file_cal_state_enum    rf_file_cal_state; /* The calibration state of RF file: */
+    em_rf_file_ver_sturct    rf_file_ver; /* Used to record the RF file version. */
+    kal_uint16    sid; /* It defines sid. */
+    kal_uint16    nid; /* It defines nid. */
+    kal_uint8     sys_det_ind; /* It defines system determination indication. */
+    kal_uint16    reg_zone; /* It defines registration zone. */
+    kal_uint32    base_lat; /* It defines base latitude. */
+    kal_uint32    base_long; /* It defines base longtitude. */
+    kal_uint8     nwk_pref_sci; /* It defines network preferred sci. */
+    kal_bool      qpch_mode; /* TRUE if qpch mode is enabled;FALSE if qpch mode is disabled. */
+    kal_uint16    mcc; /* It defines mcc. */
+    kal_uint8     imsi_11_12; /* It defines imsi 11 12. */
+    kal_uint8     pkt_zone_id; /* It defines current packet zone id. */
+    kal_uint16    service_option; /* It defines current service option. */
+    kal_uint16    t_add; /* It defines T_add. */
+    kal_uint16    t_drop; /* It defines T_drop. */
+    kal_uint16    t_comp; /* It defines T_comp. */
+    kal_uint16    t_tdrop; /* It defines T_tdrop. */
+} em_c2k_l4_rtt_info_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum  em_info; /* EM ID. */    
+    kal_uint16  for_sch_mux;    /* Scp_mux of forward supplement channel. */
+    kal_uint8   for_sch_rc;    /* Sch_rc of forward supplement channel. */
+    kal_uint8   for_sch_status;    /* Sch_status of forward supplement channel. */
+    kal_uint16  for_sch_duration;    /* Sch_duration of forward supplement channel. */
+    kal_uint8   for_sch_rate;    /* Sch_rate of forward supplement channel. */
+    kal_uint16  rev_sch_mux;    /* Scp_mux of reverse supplement channel. */
+    kal_uint8   rev_sch_rc;    /* Sch_rc of reverse supplement channel. */
+    kal_uint8   rev_sch_status;    /* Sch_status of reverse supplement channel. */
+    kal_uint16  rev_sch_duration;    /* Sch_duration of reverse supplement channel. */
+    kal_uint8   rev_sch_rate;    /* Sch_rate of reverse supplement channel. */
+} em_c2k_l4_rtt_sch_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum  em_info; /* EM ID. */    
+    kal_uint32  total_msg;    /* Number of paging ch messages received */
+    kal_uint32  error_msg;    /* Number of paging ch messages with bad crc */
+    kal_uint16  acc_1;    /* number of layer 3 requests messages generated */
+    kal_uint16  acc_2;    /* number of layer 3 response messages generated */
+    kal_uint16  acc_8;    /* number of unsuccessful access attempts */
+    kal_uint16  dpchLoss_count;    /* Count of paging ch declared */
+    kal_uint16  dtchLoss_count;    /* Count of dedicated traffic CH Loss */
+    kal_uint32  idleHO_count;    /* Count of idle handoff */
+    kal_uint16  hardHO_count;    /* Count of hard handoff */
+    kal_uint16  interFreqldleHO_count;    /* Count of inter_Freq idle handoff */
+    kal_uint16  silentryRetryTimeout_count;    /* Count of silentry retry timeout */
+    kal_uint16  T40_count;    /* Count of T40m timeout */
+    kal_uint16  T41_count;    /* Count of T41m timeout */
+} em_c2k_l4_rtt_stat_info_ind_struct;
+
+
+#define SYS_CP_MAX_ACTIVE_LIST_PILOTS        6   /* array size for active pilot list */
+#define SYS_CP_MAX_CANDIDATE_LIST_PILOTS    10   /* array size for candidate list */
+#define SYS_CP_MAX_NEIGHBOR_LIST_PILOTS     44   /* array size for neighbor pilot list */
+
+typedef struct
+{
+    kal_uint16   pilot_pn;    /* Pilot PN. */
+    kal_uint16   pilot_ecio;    /* Pilot Ec/Io. */
+    kal_uint16   pilot_phase;    /* Pilot phase. */    
+} em_rtt_set_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum  em_info; /* EM ID. */    
+    kal_uint8   num_in_active_set;    /* Number of in active set. */
+    em_rtt_set_struct   in_active_set[SYS_CP_MAX_ACTIVE_LIST_PILOTS];    /* In active set info. */
+    kal_uint8   num_candidate_set;    /* Number of in candidate set. */
+    em_rtt_set_struct   candidate_set[SYS_CP_MAX_CANDIDATE_LIST_PILOTS];    /* Candidate set info. */
+    kal_uint8   num_neighbor_set;    /* Number of in neighbor set. */
+    em_rtt_set_struct   neighbor_set[SYS_CP_MAX_NEIGHBOR_LIST_PILOTS];    /* Neighbor set info. */
+} em_c2k_l4_rtt_serving_neighbr_set_info_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum  em_info; /* EM ID. */    
+    kal_uint8   bandClass;    /* 1xEV-DO current band class. */
+    kal_uint16  channel;    /* 1xEV-DO current channel number. */
+    kal_uint16  pilotPN;    /* 1xEV-DO pilot PN. */
+    kal_uint8   phy_subtype;    /* Phy subtype. */
+    kal_int16   rssi_dbm;    /* 1xEV-DO RSSI_dbm. */
+    kal_int16   div_rssi;    /* div_rssi */
+    kal_int16   tx_ant_id;    /* tx_ant_id */
+    kal_char    sectorlD[34];    /* 1xEV-DO Sector ID. */
+    kal_uint8   subnetMask;    /* 1xEV-DO subnetmask. */
+    kal_uint8   colorCode;    /* 1xEV-DO color Code. */
+    kal_char    uati[34];    /* 1xEV-DO UATI. */
+    kal_uint8   pilotlnc;    /* 1xEV-DO pilotlnc. */
+    kal_uint8   activeSetSchWin;    /* 1xEV-DO activeSet Search Window. */
+    kal_uint8   neighborSetSchWin;    /* 1xEV-DO neighborSet Search Window. */
+    kal_uint8   remainSetSchWin;    /* 1xEV-DO remainSet Search Window. */
+    kal_uint8   sameFreq_T_ADD;    /* 1xEV-DO T_ADD with same channel. */
+    kal_uint8   sameFreq_T_DROP;    /* 1xEV-DO T_DROP with same channel. */
+    kal_uint8   sameFreq_T_tDROP;    /* 1xEV-DO T_tDROP with same channel. */
+    kal_uint8   diffFreq_T_ADD;    /* 1xEV-DO T_ADD with different channel. */
+    kal_uint8   diffFreq_T_DROP;    /* 1xEV-DO T_DROP with different channel. */
+    kal_uint8   diffFreq_T_tDROP;    /* 1xEV-DO T_tDROP with different channel. */
+} em_c2k_l4_evdo_serving_info_ind_struct;
+
+
+typedef struct
+{
+    kal_uint16  activePilotPN;    /* 1xEV-DO activePilotPN. */
+    kal_int16   activepilotEclo;    /* 1xEV-DO activePilotEclo. */
+    kal_uint8   activeDrcCover;    /* 1xEV-DO activeDrcCover. */
+} em_evdo_active_set_struct;
+
+#define SYS_MAX_ACTIVE_LIST_PILOTS       6
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum  em_info; /* EM ID. */    
+    kal_uint8   num_evdo_active_set;    /* Number of in active set. */
+    em_evdo_active_set_struct   evdo_active_set[SYS_MAX_ACTIVE_LIST_PILOTS];    /* Active set info. */
+} em_c2k_l4_evdo_active_set_info_ind_struct;
+
+
+typedef struct
+{
+    kal_uint8   Band;    /* 1xEV-DO band of set. */
+    kal_uint16  Channel;    /* 1xEV¡ªDO channel of set. */
+    kal_uint16  PilotPN;    /* 1xEV-DO pilotPN of set. */
+    kal_int16   PilotEclo;    /* 1xEV-DO pilotEclo of set. */
+} em_evdo_set_struct;
+
+/* max number of pilot pn's in candidate list */
+#define SYS_MAX_CANDIDATE_LIST_PILOTS   10
+
+/* max number of pilot pn's in neighbor list */
+#define SYS_MAX_NEIGHBOR_LIST_PILOTS    56
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum  em_info; /* EM ID. */    
+    kal_uint8   num_evdo_cand_set;    /* Number of in candidate set. */
+    em_evdo_set_struct  evdo_cand_set[SYS_MAX_CANDIDATE_LIST_PILOTS];    /* Candidate set info. */    
+} em_c2k_l4_evdo_cand_set_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum  em_info; /* EM ID. */    
+    kal_uint8   num_evdo_nghdr_set;    /* Number of in neighbor set. */
+    em_evdo_set_struct  evdo_nghdr_set[SYS_MAX_NEIGHBOR_LIST_PILOTS];    /* Neighbor set info. */
+} em_c2k_l4_evdo_nghdr_set_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum  em_info; /* EM ID. */
+    kal_int32   c_i;    /* 1xEV-DO C/I. */
+    kal_uint8   drcAverageValue;    /* 1xEV-DO drcAverageValue. */
+    kal_uint32  ftcCrcErrorCount;    /* 1xEV-DO ftcCrcErrorCount. */
+    kal_uint32  ftcTotalCount;    /* 1xEV-DO ftcTotalCount. */
+    kal_uint8   syncCrcErrorRatio;    /* 1xEV-DO syncCrcErrorRatio. */
+} em_c2k_l4_evdo_fl_info_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum  em_info; /* EM ID. */    
+    kal_uint16  averageTbsize;    /* 1xEV-DO averageTbsize. */
+    kal_uint32  rtcRetransmitCount;    /* 1xEV¡ªDO rtcRetransmitCount. */
+    kal_uint32  rtcTransmitTotalCount;    /* 1xEV-DO rtcTransmitTotalCount. */
+    kal_int16   txPower;    /* 1xEV¡ªDO txPower. */
+    kal_int16   pilotPower;    /* 1xEV¡ªDO pilotPower. */
+    kal_uint8   rab_1_ratio;    /* 1xEV-DO rab_1_ratio. */
+} em_c2k_l4_evdo_rl_info_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum  em_info; /* EM ID. */
+    kal_uint8   sessionState;    /* 1xEV-DO Session state. */
+    kal_uint8   atState;    /* 1xEV-DO AT state. */
+    kal_uint8   almpState;    /* 1xEV-DO ALMP state. */
+    kal_uint8   inspState;    /* 1xEV-DO INSP state. */
+    kal_uint8   idpState;    /* 1xEV-DO IDP state. */
+    kal_uint8   ompState;    /* 1xEV-DO OMP state. */
+    kal_uint8   cspState;    /* 1xEV-DO CSP state. */
+    kal_uint8   rupState;    /* 1xEV-DO RUP state. */
+} em_c2k_l4_evdo_state_info_ind_struct;
+
+/* Definition of CP state */
+typedef enum
+{
+    EM_VAL_AT_RTT_NOSVC = 0,
+    EM_VAL_AT_RTT_INIT = 1,
+    EM_VAL_AT_RTT_IDLE = 2,
+    EM_VAL_AT_RTT_TRAFFICINI = 3,
+    EM_VAL_AT_RTT_TRAFFIC = 4,
+    EM_VAL_AT_RTT_STATE_NUM = 5,
+} em_val_at_rtt_state_enum;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum  em_info; /* EM ID. */
+    em_val_at_rtt_state_enum    State;    /* It defines the Val AT RTT state. */
+    kal_uint16  serviceOption;    /* Service option. */
+    kal_uint8   rateReduction;    /* Rate Reduction. */
+    kal_uint16  channel;    /* Current channel number. */
+    kal_uint16  bandClass;    /* Current band class. */
+    kal_uint16  sid;    /* SID. */
+    kal_uint16  nid;    /* NID. */
+    kal_uint16  baseId;    /* Base station ID. */
+    kal_uint16  pilotPNOffset;    /* Pilot PN offset. */
+    kal_uint8   mob_p_revp;    /* Protocol revision number of band. */
+    kal_uint32  baseLat;    /* Latitide of last registered base station. */
+    kal_uint32  baseLong;    /* Lonitude of last registered base station. */
+    kal_int16  rxPower;    /* Rx power. */
+    kal_int16   EcIo;    /* Ec/Io. */
+    kal_uint16  FER;    /* FER. */
+    kal_int16  txPower;    /* Tx power. */
+}em_c2k_l4_sprint_xrtt_info_ind_struct;
+
+
+/* Definition of CP state */
+typedef enum
+{
+    EM_VAL_AT_EVDO_INACTIVE = 0,
+    EM_VAL_AT_EVDO_ACQUISITION = 1,
+    EM_VAL_AT_EVDO_SYNC = 2,
+    EM_VAL_AT_EVDO_IDLE = 3,
+    EM_VAL_AT_EVDO_ACCESS = 4,
+    EM_VAL_AT_EVDO_CONNECTED = 5,
+    EM_VAL_AT_EVDO_STATE_NUM = 6,
+} em_val_at_evdo_state_enum;
+
+#define  IPV4_ADDR_STR_LEN  16
+
+#define  IPV6_ADDR_STR_LEN  64
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum  em_info; /* EM ID. */
+    
+    em_val_at_evdo_state_enum   DO_state;    /* It defines the Val AT EVDO state.. */
+    kal_uint8   Mac_index;    /* Mac_index */
+    kal_uint16  Channel;    /* Channel */
+    kal_uint8   Color_Code;    /* Color_Code */
+    kal_char    Sector_ID[34];    /* Sector_ID */
+    kal_uint16  PN;    /* PN */
+    kal_int16   Rx_Pwr;    /* Rx_Pwr */
+    kal_uint16  Rx_PER;    /* Rx_PER */
+    kal_int16   Pilot_Energy;    /* Pilot_Energy */
+    kal_uint8   DRC;    /* DRC */
+    kal_int16   SINR;    /* SINR */
+    kal_uint8   AN_AAA;    /* AN-AAA */
+    kal_char    IPv4_Address[IPV4_ADDR_STR_LEN];    /* IPv4 Address */
+    kal_char    IPv6_Address[IPV6_ADDR_STR_LEN];    /* IPv6 Address */
+} em_c2k_l4_sprint_evdo_info_ind_struct;
+
+#define C2K_DATA_BURST_MAX_FIELDS   255
+typedef enum
+{
+   C2K_OTA_ORIGINATION_MESSAGE,
+   C2K_OTA_ALERT_WITH_INFO_MESSAGE,
+   C2K_OTA_SERVICE_COON_COMP_MESSAGE,
+   C2K_OTA_PAGE_RESPONSE_MESSAGE
+}em_c2k_xcal_ota_msg_type_enum;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum  em_info; /* EM ID. */
+   em_c2k_xcal_ota_msg_type_enum event;
+} em_c2k_xcal_ota_event_info_ind_struct;
+
+/* Data burst message of  F-DSCH and R-DSCH.*/
+typedef struct
+{
+  LOCAL_PARA_HDR
+  em_info_enum  em_info; /* EM ID. */
+  kal_uint8     msg_number; /*message number within the data burst stream*/
+  kal_uint8     burst_type; /*data burst type as defined in TSB58*/
+  kal_uint8     num_msgs;   /*number of messages in the data burst stream*/
+  kal_uint8     num_fields; /*number of characters in this message*/
+  kal_uint8     chari[C2K_DATA_BURST_MAX_FIELDS]; /*pointer to received data*/
+} em_c2k_xcal_ota_fdsch_info_ind_struct;
+
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+  em_info_enum  em_info; /* EM ID. */
+  kal_uint8     msg_number;/*message number within the data burst stream*/
+  kal_uint8     burst_type; /*data burst type as defined in TSB58*/
+  kal_uint8     num_msgs;   /*number of messages in the data burst stream*/
+  kal_uint8     num_fields; /*number of characters in this message*/
+  kal_uint8     chari[C2K_DATA_BURST_MAX_FIELDS]; /*pointer to received data*/
+}em_c2k_xcal_ota_rdsch_info_ind_struct;
+
+typedef enum
+{
+   EM_C2K_RESELECTION_TO_LTE,
+   EM_LTE_RESELECTION_TO_C2K,
+   EM_LTE_REDIRECTION_TO_C2K,
+   EM_C2K_RAT_CHANGE_MAX_EVENT,
+}em_c2k_rat_change_event_enum;
+
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+  em_info_enum	em_info; /* EM ID. */
+  em_c2k_rat_change_event_enum  event; /* event. */
+  kal_bool     is_irat_success;/*indicate whether irat is success*/
+}em_c2k_rat_change_info_ind_struct;
+
+typedef enum
+{
+    EM_VAL_CS_REG_HOME_SERVICE         = 1,   /*mapping +vser:0 & 1x registered & roaming status:0*/
+    EM_VAL_CS_REG_ROAM_SERVICE         = 5,   /*mapping +vser:0 &  1x registered & roaming status:1*/
+    
+    EM_VAL_CS_REG_NORMAL_SERVICE       = 101,  /*mapping +vser:0*/
+    EM_VAL_CS_REG_NO_SERVICE           = 102,  /*mapping +vser:1*/
+    EM_VAL_CS_REG_OUT_OF_SERVICE       = 103,  /*mapping +vser:2*/
+    EM_VAL_CS_REG_LIMIT_SERVICE        = 104,  /*mapping +vser:3*/
+
+    EM_VAL_CS_REG_MAX_STATUS
+}em_val_cs_reg_status_enum;
+
+typedef enum
+{
+    EM_VAL_AT_RAT_UNSPECIFIED = 0,
+    EM_VAL_AT_RAT_1xRTT,
+    EM_VAL_AT_RAT_HRPD,
+    EM_VAL_AT_RAT_EHRPD,
+    
+    EM_VAL_AT_RAT_INVALID
+} em_val_at_rat_enum;
+
+typedef enum
+{    
+    EM_VAL_PS_REG_HOME_SERVICE         = 1,   /*mapping +ecgreg:1(PS registered) & roaming status:0*/
+    EM_VAL_PS_REG_ROAM_SERVICE         = 5,   /*mapping +ecgreg:1(PS registered) & roaming status:1*/
+
+    EM_VAL_PS_NOT_REG_NO_NWK_SERVICE   = 101,  /*mapping +ecgreg:0 & ^mode:0, No NW, need to find NW*/
+    EM_VAL_PS_NOT_REG_1XRTT_SERVICE    = 102,  /*mapping ^mode:2, MT find 1x NW,but need wait result of registered*/
+    EM_VAL_PS_NOT_REG_DO_SERVICE       = 103,  /*mapping ^mode:4, MT find Do NW,but need wait result of registered*/
+    EM_VAL_PS_NOT_REG_1X_DO_SERVICE    = 104,  /*mapping ^mode:8, MT find 1x&Do NW,but need wait result of registered*/
+
+    EM_VAL_PS_REG_CHECK_ROAM_STATUS,   /*PS have been registered, need check whether it was Roaming*/
+    EM_VAL_PS_REG_NO_CHANGE_STATUS,     /*it need not that PS Regstration state changed*/
+    
+    EM_VAL_PS_REG_MAX_STATUS
+}em_val_ps_reg_status_enum;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+  em_info_enum	em_info; /* EM ID. */
+  em_val_cs_reg_status_enum  cs_reg_status; /* C2K CS status */
+  em_val_at_rat_enum  cs_eact;
+  em_val_ps_reg_status_enum  ps_reg_status; /* C2K PS status */
+  em_val_at_rat_enum  ps_eact;
+}em_c2k_l4_state_info_ind_struct;
+
+#endif /* ~_EM_PUBLIC_STRUCT_CVAL_H */
+
+
diff --git a/mcu/interface/service/em/em_public_struct_evl1.h b/mcu/interface/service/em/em_public_struct_evl1.h
new file mode 100644
index 0000000..a1bb238
--- /dev/null
+++ b/mcu/interface/service/em/em_public_struct_evl1.h
@@ -0,0 +1,597 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+#ifndef _EM_PUBILIC_STRUCT_EVL1_H_
+#define _EM_PUBILIC_STRUCT_EVL1_H_
+
+/***********************************************************************************
+*
+* FILE NAME   :     em_pubilc_stuct_evl1.h.
+*
+* DESCRIPTION :     EM MSG Struct defination
+*
+*
+************************************************************************************/
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "em_struct.h"
+#include "em_msgid.h"
+
+
+#define MAX_C2K_FRAME_CNT                      18
+
+
+/* *******************Begain of C2K EVDO L1 MSG_ID struct definition ************/
+
+/* 1. MSG_ID_EM_EVL1_GENERAL_INFO_IND */
+typedef enum
+{
+    EM_EVL1_SYNC = 1,
+    EM_EVL1_IDLE = 2,
+    EM_EVL1_CONNECTED = 4
+} em_evl1_state_enum;
+
+typedef enum
+{
+    EM_RMC_INACTIVE,
+    EM_RMC_INITIAL_SEARCH_PENDING,
+    EM_RMC_INITIAL_SEARCH,
+    EM_RMC_MINI_ACQ,
+    EM_RMC_SYNC,
+    EM_RMC_ONLINE_SEARCH,
+    EN_RMC_PAUSED
+} em_evl1_rmc_modem_status_enum;
+
+typedef enum
+{
+    EM_TXSTH_STATUS_IDLE,
+    EM_TXSTH_STATUS_ACCESS,
+    EM_TXSTH_STATUS_TRAFFIC,
+    EM_TXSTH_STATUS_TRAFFIC_FREEZE,
+    EM_TXSTH_STATUS_FREEZE,
+    EM_TXSTH_STATUS_INVALID
+} em_evl1_txsth_status_type_enum;
+
+typedef enum
+{
+    EM_CL1_RFC_IDLE,
+    EM_CL1_RFC_1X_MAIN_ONLY,
+    EM_CL1_RFC_1X_DIV_ONLY,
+    EM_CL1_RFC_1X_DIV_RX,
+    EM_CL1_RFC_DO_MAIN_ONLY,
+    EM_CL1_RFC_DO_DIV_RX,
+    EM_CL1_RFC_SHDR,
+    EM_CL1_RFC_1X_DFS,
+    EM_CL1_RFC_DO_DFS
+} em_rfc_status_type_enum;
+
+typedef struct
+{
+    em_evl1_state_enum              evl1_state;
+    em_evl1_rmc_modem_status_enum   rmc_mode;
+    em_evl1_txsth_status_type_enum  txsth_status;
+    em_rfc_status_type_enum         rfc_status;
+    kal_uint16                      ServingPN;   /* Serving Pilot Pn */
+    kal_uint16                      BandClass;
+    kal_uint16                      Channel;
+} em_evl1_general_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    em_info;
+    em_evl1_general_info_struct     Msg;
+} em_evl1_general_info_ind_struct;
+
+
+/* 2. MSG_ID_EM_EVL1_TXAGC_POWER_INFO_IND */
+typedef struct
+{
+    kal_uint32  Lower32; /*FrameNo. Lower 32 bit */
+    kal_uint8   Upper6;  /* FrameNo. Upper 6 bit */
+}em_frame_rec_struct;
+
+typedef struct
+{
+    kal_int16            OpenLoopFilter[MAX_C2K_FRAME_CNT]; /* Open loop Rssi filter*/
+    kal_int16            CloseLoopAcc[MAX_C2K_FRAME_CNT];   /* Close loop accumulation */
+    kal_int16            TxPowerMax[MAX_C2K_FRAME_CNT];     /* Maximum Tx Power */
+    kal_int16            ReqPowerSlot[MAX_C2K_FRAME_CNT];   /* Slot request Power */
+    kal_int16            ReqPowerHslot[MAX_C2K_FRAME_CNT];  /* Half slot request Power */
+    em_frame_rec_struct  FrameNo[MAX_C2K_FRAME_CNT];        /* Period Per frame, 18 frames */
+} em_evl1_txagc_power_info_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                     em_info;
+    em_evl1_txagc_power_info_struct  Msg;
+} em_evl1_txagc_power_info_ind_struct;
+
+
+/* 3. MSG_ID_EM_EVL1_CELL_SWITCH_INFO_IND */
+typedef struct
+{
+    kal_uint16  Pn;        /*Pilot Pn */
+    kal_int16   c2i;
+    kal_uint16  drc_cover; /* DRC Cover Value */
+    kal_uint16  dsc;       /* DSC Date */
+    kal_uint16  Pcg_id;
+    kal_uint16  Mac_id;
+}em_evl1_cell_c2i_info_struct;
+
+typedef struct
+{
+    kal_uint16                    srv_pn[MAX_C2K_FRAME_CNT];     /* Serving Pilot Pn*/
+    em_evl1_cell_c2i_info_struct  Cell_info[MAX_C2K_FRAME_CNT][6];  /* C2i info in active list */
+    em_frame_rec_struct           FrameNo[MAX_C2K_FRAME_CNT];    /* Period Per frame, 18 frames */
+} em_evl1_cell_switch_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                     em_info;
+    em_evl1_cell_switch_info_struct  Msg;
+} em_evl1_cell_switch_info_ind_struct;
+
+
+/* 4. MSG_ID_EM_EVL1_RXAGC_INFO_IND */
+typedef enum
+{
+    EM_EVL1_RXAGC_STATE_FAST,
+    EM_EVL1_RXAGC_STATE_STEADY,
+    EM_EVL1_RXAGC_STATE_ICS,
+    EM_EVL1_RXAGC_STATE_CAL,
+    EM_EVL1_RXAGC_STATE_INVALID
+} em_evl1_rxagc_state_enum;
+
+typedef enum
+{
+    EM_EVL1_RXAGC_HIGH_POWER_MODE,
+    EM_EVL1_RXAGC_LOW_POWER_MODE
+} em_evl1_rxagc_power_mode_enum;
+
+typedef struct
+{
+    em_evl1_rxagc_state_enum       rxagc_state;
+    em_evl1_rxagc_power_mode_enum  power_mode;
+    kal_int16                      Rssi; /* Rssi, in dBm Q5 */
+    kal_int16                      DC;
+}em_evl1_rxagc_dm_info_struct;
+
+typedef struct
+{
+    em_evl1_rxagc_dm_info_struct  rxagc_main_info[MAX_C2K_FRAME_CNT];  /* Serving Pilot Pn*/
+    em_evl1_rxagc_dm_info_struct  rxagc_div_info[MAX_C2K_FRAME_CNT];   /* C2i info in active list */
+    em_frame_rec_struct        FrameNo[MAX_C2K_FRAME_CNT];          /* Period Per frame, 18 frames */
+
+} em_evl1_rxagc_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum               em_info;
+    em_evl1_rxagc_info_struct  Msg;
+} em_evl1_rxagc_info_ind_struct;
+
+/* 5. MSG_ID_EM_EVL1_AFC_INFO_IND */
+typedef enum
+{
+    EM_EVL1_AFC_STATE_DISABLED,
+    EM_EVL1_AFC_STATE_INIT_ACQ_NO_PILOT,
+    EM_EVL1_AFC_STATE_INIT_ACQ_PILOT_FOUND,
+    EM_EVL1_AFC_STATE_INIT_ACQ_FINGER_ALLOC,
+    EM_EVL1_AFC_STATE_SLOTTED,
+    EM_EVL1_AFC_STATE_ONLINE,
+    EM_EVL1_AFC_STATE_MINIACQ,
+    EM_EVL1_TXAFC_STATE_DIABLED,
+    EM_EVL1_TXAFC_STATE_ENABLED
+} em_evl1_afc_state_enum;
+
+typedef struct
+{
+    em_evl1_afc_state_enum  afc_state;
+    kal_int16               foe;       /* Total FOE, in Hz */
+    kal_int16               pll_foe;   /* FOE adjusted by PLL, in Hz */
+    kal_int16               nco_foe;   /* FOE adjusted by NCO, in Hz */
+} em_evl1_rxtx_afc_info_struct;
+
+typedef struct
+{
+    em_evl1_rxtx_afc_info_struct  Rx_afc_info[MAX_C2K_FRAME_CNT];  /* Serving Pilot Pn*/
+    em_evl1_rxtx_afc_info_struct  Tx_afc_info[MAX_C2K_FRAME_CNT];   /* C2i info in active list */
+    em_frame_rec_struct           FrameNo[MAX_C2K_FRAME_CNT];          /* Period Per frame, 18 frames */
+} em_evl1_afc_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                  em_info;
+    em_evl1_afc_info_struct       Msg;
+} em_evl1_afc_info_ind_struct;
+
+
+/* 6. MSG_ID_EM_EVL1_MBP_SECTOR_INFO_IND */
+typedef struct
+{
+    kal_uint16  PilotPN;
+    kal_uint16  PwrEst;        /* Estimated Power */
+    kal_uint8   PcgId;         /* PCG Id*/
+    kal_uint8   ServCellFlag;  /* Flag to indicade if it's serving sector */
+    kal_uint8   MacId;
+    kal_uint8   MacWalshId;    /* Walshld of MAC channel */
+    kal_uint8   RABLength;     /* RAB length */
+    kal_uint8   RABOffset;
+    kal_uint8   RAChannelGain; /* RA Channel Gain */
+    kal_uint8   DRCCover;
+    kal_uint8   DSC;           /* DSC Value */
+} em_evl1_mbp_active_sector_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                           em_info;
+    kal_uint8                              NumPcg;         /* Number of PCG for active sectors */
+    kal_uint8                              NumSec;         /* Number of active sectors */
+    em_evl1_mbp_active_sector_info_struct  SectorInfo[6];  /* Active sector info list */
+} em_evl1_mbp_sector_info_ind_struct;
+
+
+/* 7. MSG_ID_EM_EVL1_FMP_FINGER_INFO_IND */
+typedef enum
+{
+    EM_SCH_FGR_NOT_DET,
+    EM_SCH_FGR_UNCH_ALLOC,
+    EM_SCH_FGR_UNCH_DISABLE,
+    EM_SCH_FGR_CH_ALLOC,
+    EM_SCH_FGR_CH_DISABLE
+} em_evl1_fmp_finger_alloc_status_enum;
+
+typedef enum
+{
+    EM_FINGER_RELEASED,
+    EM_FINGER_ACTIVATED,
+    EM_FINGER_OBSERVED
+} em_evl1_fmp_finger_status_enum;
+
+typedef struct
+{
+    em_evl1_fmp_finger_alloc_status_enum  AllocStatus;
+    em_evl1_fmp_finger_status_enum        Status;        /* fmp finger status */
+    kal_bool                              AssignedFlg;   /* Flag to Indicate if finger is assigned */
+    kal_int8                              ProtectCount;
+    kal_int8                              AccuDrift;     /* Accumulated drift */
+    kal_uint8                             AssocAnt;      /* Associated antenna path*/
+    kal_uint8                             AssocFinger;   /* Associated Finger Id */
+    kal_uint16                            PilotPN;
+    kal_int16                             OffsetTc16;    /* Finger offest */
+    kal_uint16                            MacId;
+    kal_uint16                            MicPower;
+    kal_uint16                            SnrEstQ9;     /* Instantaneous figner SNR */
+    kal_uint16                            FiltSnrEstQ9; /* Longer term filterd figner SNR */
+} em_evl1_fmp_per_finger_struct;
+
+typedef struct
+{
+    kal_uint8    NumTrafficFinger;              /* Number of Traffic finger */
+    kal_uint8    NumMacFinger;                  /* Number of MAC finger */
+    em_evl1_fmp_per_finger_struct  Finger[15];  /* Finger detail Information */
+} em_evl1_fmp_finger_database_struct;
+
+typedef struct
+{
+    em_evl1_fmp_finger_database_struct  FmpFinerInfo[9];  /* Fmp finger database, every two frames*/
+    em_frame_rec_struct                 FrameNo[9];          /* Period two frames */
+} em_evl1_fmp_finger_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                        em_info;
+    em_evl1_fmp_finger_info_struct      Msg;
+} em_evl1_fmp_finger_info_ind_struct;
+
+
+/* 8. MSG_ID_EM_EVL1_TIMING_TRACK_STATUS_IND */
+typedef enum
+{
+    EM_TIMING_TRACK_STATUS_NULL,
+    EM_TIMING_TRACK_STATUS_ADV,
+    EM_TIMING_TRACK_STATUS_RET
+} em_evl1_timing_track_status_type_enum;
+
+typedef struct
+{
+    em_evl1_timing_track_status_type_enum  timing_track_status[MAX_C2K_FRAME_CNT];  /* Fmp finger database, every two frames*/
+    em_frame_rec_struct                    FrameNo[MAX_C2K_FRAME_CNT];              /* Period Per frame, 18 frames */
+} em_evl1_timing_track_status_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                           em_info;
+    em_evl1_timing_track_status_struct     Msg;
+} em_evl1_timing_track_status_ind_struct;
+
+/* 9. MSG_ID_EM_EVL1_SCH_STATUS_IND */
+typedef struct
+{
+    kal_uint16  PilotPN;        /* Sch result pilotPN */
+    kal_uint8   macId;          /* Sch result MacId */
+    kal_uint16  pwrEst;         /* Sch path power */
+    kal_int8    pcgId;          /* Sch result PcgId */
+    kal_uint8   RABLengh;       /* Sch result RAB length */
+    kal_uint8   RABOffset;      /* Sch result RAB offset */
+    kal_uint8   RAChannelGain;  /* Sch result RA channel gain */
+    kal_uint8   DRCCover;       /* Sch result DRC cover*/
+    kal_uint8   DSC;            /* Sch result DSC */
+} em_evl1_sector_info_struct;
+
+typedef struct
+{
+    kal_uint16  PilotPN;        /* Sch result pilotPN */
+    kal_uint16  pwrEstQ16;      /* Power estimate for the offset, in linear Val */
+    kal_int16   offestTc16;     /* path offset in 1/16Tc.Range[-1024, 1024]chips */
+    kal_int16   sOffestTc16;    /* path start offset in 1/16Tc.Range[-1024, 1024]chips */
+    kal_uint8   macId;          /* Sch result macId */
+    kal_uint8   assocAnt;       /* Associated Antenna path, 0->main, 1-> div, FF->None*/
+} em_evl1_usable_path_info_struct;
+
+typedef enum
+{
+    EM_HW_RESET,
+    EM_HW_PAUSE,
+    EM_INIT_ACQ_PN_SRCH,
+    EM_INIT_ACQ_ONLINE_PN_SRCH,
+    EM_INIT_ACQ_VERIFY_SRCH,
+    EM_MINI_ACQ,
+    EM_FAST_SEARCH,
+    EM_ONLINE,
+    EM_OFFSET_ADJ,
+    EM_FAST_FULL_SEARCH,
+    EM_DFS,
+    EM_MEAS_6MS_SRCH,
+    EM_EMAS_ONLINE_SCAN
+} em_evl1_sch_mode_type_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                     em_info;
+    em_evl1_sch_mode_type_enum       SchMode;
+    kal_uint8                        SectorNum;          /* Number of sector */
+    em_evl1_sector_info_struct       SectorInfo[6];
+    kal_uint8                        UsablePathNum;      /* Number of usable path*/
+    em_evl1_usable_path_info_struct  UsablePathInfo[7];
+} em_evl1_sch_status_ind_struct;
+
+/* 10. MSG_ID_EM_EVL1_ACC_DATA_RATE_INFO_IND */
+typedef enum
+{
+    EM_ACC_RATE_0BPS,
+    EM_ACC_RATE_9600BPS,
+    EM_ACC_RATE_19200BPS,
+    EM_ACC_RATE_38400BPS
+} em_evl1_acc_data_rate_enum;
+
+typedef struct
+{
+    em_evl1_acc_data_rate_enum  AccDataRate[MAX_C2K_FRAME_CNT];  /* evl1 tx access date rate , every frame, total 18 frames*/
+    em_frame_rec_struct         FrameNo[MAX_C2K_FRAME_CNT];      /* Period Per frame, 18 frames */
+} em_evl1_acc_data_rate_info_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                       em_info;
+    em_evl1_acc_data_rate_info_struct  Msg;
+} em_evl1_acc_data_rate_info_ind_struct;
+
+/* 11. MSG_ID_EM_EVL1_TRAFFIC_RRI_VALUE_INFO_IND */
+typedef enum
+{
+    EM_TRAFFIC_RATE_0BPS,
+    EM_TRAFFIC_RATE_9600BPS,
+    EM_TRAFFIC_RATE_19200BPS,
+    EM_TRAFFIC_RATE_38400BPS,
+    EM_TRAFFIC_RATE_76800BPS,
+    EM_TRAFFIC_RATE_153600BPS
+} em_evl1_traffic_data_rate_enum;
+
+typedef struct
+{
+    em_evl1_traffic_data_rate_enum  RriDataAckPhy01[MAX_C2K_FRAME_CNT];  /* evl1 tx traffic rri date ack, every frame ror subype0/1 */
+    kal_uint8                       RriDataAckPhy2[MAX_C2K_FRAME_CNT];  /* evl1 tx traffic rri date ack pkSzIndex,  every 4 slots for subtype2*/
+    kal_uint8                       RriDataNakPhy2[MAX_C2K_FRAME_CNT];  /* evl1 tx traffic rri date nak pkSzIndex,  every 4 slots for subtype2*/
+    em_frame_rec_struct             FrameNo[MAX_C2K_FRAME_CNT];     /* Period Per frame, 18 frames */
+} em_evl1_traffic_rri_value_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                           em_info;
+    em_evl1_traffic_rri_value_info_struct  Msg;
+} em_evl1_traffic_rri_value_info_ind_struct;
+
+/* 12. MSG_ID_EM_EVL1_FMP_SECTOR_INFO_IND */
+typedef struct
+{
+    kal_uint16  PilotPN;        /* Pilot PN*/
+    kal_uint8   MacIndex;       /* Mac index */
+    kal_uint16  PwrEst;         /* Ec/Io */
+    kal_int8    PcgId;          /* PCG Id */
+    kal_uint8   RABLength;      /* RAB Length */
+    kal_uint8   RABOffest;      /* RAB offest */
+    kal_uint8   RAChannelGain;  /* RA channel gain */
+    kal_uint8   DRCCover;       /* DRC cover */
+    kal_uint8   DSC;
+} em_evl1_fmp_per_sector_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                        em_info;
+    kal_uint8                           NumSec;
+    em_evl1_fmp_per_sector_info_struct  SectorInfo[6];
+} em_evl1_fmp_sector_info_ind_struct;
+
+/* 13. MSG_ID_EM_EVL1_SCH_PILOT_UPDATE_INFO_IND */
+
+typedef struct
+{
+    kal_uint16        PilotPN;        /* Number of pilot */
+    kal_int16         StartOffset;    /* Start offset to search, Tc/2(-1024 ~ +1023.5) */
+} em_list_q_struct;
+
+typedef struct
+{
+    kal_uint16        WinSize;      /* Window size */
+    kal_int16         WinOffset;    /* Window offset */
+} em_win_struct;
+
+typedef struct
+{
+    kal_int8          NumPilots;        /* Number of pilot */
+    kal_int16         WinSize;          /* window size */
+    em_list_q_struct  ListQ[6];
+    kal_uint8         MACIndex[6];       /*mac index */
+    kal_int8          PcgId[6];
+    kal_uint8         RABLength[6];     /* RAB length*/
+    kal_uint8         RABOffset[6];     /* RAB offset*/
+    kal_uint8         RAChannelGain[6]; /* RA channel gain */
+    kal_uint8         DRCCover[6];      /* DRC cover */
+    kal_uint8         DSC[6];   
+} em_active_list_struct;
+
+typedef struct
+{
+    kal_int8          NumPilots;  /* Number of pilot */
+    kal_int16         WinSize;    /* Window size */   
+    em_list_q_struct  ListQ[10];
+} em_cand_list_struct;
+
+typedef struct
+{
+    kal_int8          NumPilots;  /* Number of pilot */
+    em_win_struct     Win[56];    /* Window size */   
+    em_list_q_struct  ListQ[56];
+} em_neigh_list_struct;
+
+typedef struct
+{
+    kal_int8          NumPilots;  /* Number of pilot */
+    kal_uint16        WinSize;    /* Window size */   
+    em_list_q_struct  ListQ[5];
+} em_rem_list_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum           em_info;
+    kal_int16              PilotSeq;
+    kal_uint8              ConnSetupFlag;
+    kal_uint8              TcaFlag;
+    em_active_list_struct  ActiveList;
+    em_cand_list_struct    CandList;
+    em_neigh_list_struct   NeighList;
+    em_rem_list_struct     RemList;
+} em_evl1_sch_pilot_update_info_ind_struct;
+
+/* 14. MSG_ID_EM_EVL1_SCH_RESULT_INFO_IND */
+typedef struct
+{
+    kal_uint8   Ant;
+    kal_uint16  Stat;   
+    kal_int16   StatOffset;
+} em_sch_path_info_struct;
+
+typedef struct
+{
+    kal_uint16              PilotPn;   
+    kal_uint16              PwrEst;
+    kal_uint16              Offset;
+    em_sch_path_info_struct PathInfo[16];
+} em_sch_result_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                em_info;
+    kal_int16                   PilotSeq;
+    em_evl1_sch_mode_type_enum  SchMode;
+    em_sch_result_struct        ActiveResult[6];
+    em_sch_result_struct        CandResult[10];
+    em_sch_result_struct        NeighResult[56];
+} em_evl1_sch_result_info_ind_struct;
+
+#ifdef __TC10_IPC_CDMA_SUPPORT__
+
+/* 15. MSG_ID_EM_EVL1_RFPD_INFO_IND */
+typedef struct
+{
+    kal_int16               TargetPwr;   /* Tx Power:Q5, uint:dBm */  
+    kal_int16               Ddpc;        /* DDPC Power:Q5, uint:dBm */
+    kal_int32               DdpcDet;
+    kal_int16               RssiFilter ; /* Rssi:Q6, uint:dBm */
+    kal_uint8               PllState;
+    kal_uint8               vcc;
+    kal_int8                PATemp;  
+} em_evl1_rfd_query_info_struct;
+
+typedef struct
+{
+    kal_uint16                      ChanNum;             /* Tx Channel Req */
+    kal_uint16                      TxChanType;          /* 0:Acc, 1:Traffic */
+    em_evl1_rfd_query_info_struct   RfdQueryInfo;
+} em_evl1_rfpd_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                em_info;
+    em_evl1_rfpd_info_struct    Msg;  /* Get from RFD */
+} em_evl1_rfpd_info_ind_struct;
+#endif
+
+
+
+/* ***********************End of C2K EVDO L1 MSG_ID struct definiton ****************/
+
+
+#endif /* ~_EM_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_public_struct_evl2.h b/mcu/interface/service/em/em_public_struct_evl2.h
new file mode 100644
index 0000000..51df2dc
--- /dev/null
+++ b/mcu/interface/service/em/em_public_struct_evl2.h
@@ -0,0 +1,327 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_public_struct_evl2.h
+ *
+ * Project:
+ * --------
+ *   Gen93
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures for C2K XL3 module.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_PUBLIC_STRUCT_EVL2_H
+#define _EM_PUBLIC_STRUCT_EVL2_H
+
+#include "em_struct.h"
+#include "em_msgid.h"
+#include "c2k_nvram_def.h"
+
+/* C2K EVL2 EM Struct Start */
+typedef enum
+{
+    EM_INVALID_RLP_STREAM=0,
+    EM_DPA_ACCESS_STREAM=1,
+    EM_DPA_SERVICE_STREAM=2,
+    EM_MFPA_ACCESS_STREAM = 4,
+    EM_MFPA_SERVICE_STREAM = 5,
+    EM_EMPA_ACCESS_STREAM = 8,
+    EM_EMPA_SERVICE_STREAM = 9
+} em_evl2_app_subtype_enum;
+
+
+typedef struct
+{
+    em_evl2_app_subtype_enum app_subtype;
+    kal_uint8 seq_len;
+    kal_uint8 rlp_id_len;
+    kal_uint8 rlp_id;
+    kal_uint16 rlp_abort_timer;
+    kal_uint16 rlp_flush_timer;
+} em_evl2_rlp_flow_attribute_struct;
+
+typedef struct
+{
+    kal_uint32 rlp_flow_vn;
+    kal_uint32 rlp_flow_vr;
+    kal_uint32 total_recv_pdu_count;
+    kal_uint32 total_recv_byte_count;
+    kal_uint32 total_request_retx_pdu_count;
+    kal_uint32 total_request_retx_byte_count;
+    kal_uint32 total_missed_pdu_count;
+    kal_uint32 total_missed_byte_count;
+} em_evl2_rlp_flow_fwd_info_struct;
+
+typedef struct
+{
+    kal_uint32 total_ftm_recv_preamble_count;     /* whose slot count = 0 */
+    kal_uint32 total_ftm_crc_pass_pdu_count;      /* whose crc is passed */
+    kal_uint32 total_ftm_crc_pass_byte_count;     /* The total bytes */
+    kal_uint32 total_ftm_recv_pdu_ind_count;      /* all the pdu indication from EVL1 */
+} em_evl2_ftm_info_struct;
+
+typedef struct
+{
+    kal_uint32 total_ccm_recv_preamble_count;     /* whose slot count = 0 */
+    kal_uint32 total_ccm_crc_pass_pdu_count;      /* whose crc is passed */
+    kal_uint32 total_ccm_crc_pass_byte_count;     /* The total bytes */
+    kal_uint32 total_ccm_recv_pdu_ind_count;      /* all the pdu indication from EVL1 */
+} em_evl2_ccm_info_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum        em_info;
+    em_evl2_rlp_flow_attribute_struct evl2_rlp_flow_attribute[2];
+    em_evl2_rlp_flow_fwd_info_struct evl2_rlp_flow_fwd_info[2];
+    em_evl2_ftm_info_struct evl2_ftm_info;
+    em_evl2_ccm_info_struct evl2_ccm_info;
+} em_evl2_fwd_channel_info_ind_struct;
+
+
+typedef struct
+{
+    kal_uint32 rlp_flow_vs;
+    kal_uint32 total_recv_pdu_count;
+    kal_uint32 total_recv_byte_count;
+    kal_uint32 total_sent_pdu_count;
+    kal_uint32 total_sent_byte_count;
+    kal_uint32 total_request_retx_pdu_count;
+    kal_uint32 total_request_retx_byte_count;
+    kal_uint32 total_missed_pdu_count;
+    kal_uint32 total_missed_byte_count;
+} em_evl2_rlp_flow_rev_info_struct;
+
+typedef struct
+{
+    kal_uint32 total_rtm_sent_pdu_count;
+    kal_uint32 total_rtm_sent_byte_count;
+    kal_uint32 total_rtm_harq_ack_count[4];
+    kal_uint32 total_rtm_parq_nak_count;
+} em_evl2_rtm_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum        em_info;
+    em_evl2_rlp_flow_attribute_struct evl2_rlp_flow_attribute[2];
+    em_evl2_rlp_flow_rev_info_struct  evl2_rlp_flow_rev_info[2];
+    em_evl2_rtm_info_struct evl2_rtm_info;
+} em_evl2_rev_traffic_info_ind_struct;
+
+
+typedef enum
+{
+    EM_ACCESS_RATE_0BPS,
+    EM_ACCESS_RATE_9600BPS,
+    EM_ACCESS_RATE_19200BPS,
+    EM_ACCESS_RATE_38400BPS
+} em_evl2_access_rate_enum;
+
+typedef struct
+{
+    kal_uint8 probe_seq;
+    kal_uint8 probe_num;
+    kal_int16 probe_pwr;
+    kal_uint32 probe_start_action;
+    kal_uint32 probe_start_slot;
+    kal_uint32 probe_duration;
+    kal_uint32 preamble_duration;
+    kal_uint32 capsue_size;
+    em_evl2_access_rate_enum probe_trans_rate;
+} em_evl2_acm_probe_info_struct;
+
+typedef enum
+{
+    EM_EVL2_DSAR_IDP_NO_ACT_ST,
+    EM_EVL2_DSAR_WFR_IDP_RSP_ST,
+    EM_EVL2_DSAR_IDP_RESP_TX_AVAIL,
+    EM_EVL2_DSAR_IDP_TX_FAIL
+} em_evl2_dsar_state_in_access_enum;
+
+typedef enum
+{
+    EM_EVL2_ACM_CTRL_INACTIVE_ST,
+    EM_EVL2_ACM_CTRL_IDLE_ST,
+    EM_EVL2_ACM_CTRL_PARMUPD_ST,
+    EM_EVL2_ACM_CTRL_ACTXING_ST
+} em_evl2_acm_ctrl_state_enum;
+
+typedef enum
+{
+    EM_EVL2_ACM_RB_INACTIVE_ST,
+    EM_EVL2_ACM_RB_INTERSEQ_ST,
+    EM_EVL2_ACM_RB_PROBING_ST,
+    EM_EVL2_ACM_RB_INTERPROBE_ST,
+} em_evl2_acm_rb_state_enum;
+
+typedef struct
+{
+    kal_uint16 msg_protocol_id;
+    kal_uint8  msg_message_id;
+    kal_uint8  msg_trans_id;
+    kal_uint16 msg_len;
+    kal_uint8  msg_priority;
+    kal_bool   msg_inconfig;
+    kal_bool   msg_reliable;
+} em_evl2_dsar_queue_msg_info_struct;
+
+typedef struct
+{
+    em_evl2_dsar_state_in_access_enum dsar_state_in_access;
+    em_evl2_dsar_queue_msg_info_struct dsar_queue_msg_info[2];
+}em_evl2_acm_dsar_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum        em_info;
+    em_evl2_acm_ctrl_state_enum evl2_acm_ctrl_state;
+    em_evl2_acm_rb_state_enum evl2_acm_rb_state;
+    em_evl2_acm_probe_info_struct evl2_acm_probe_info;
+    em_evl2_acm_dsar_info_struct evl2_acm_dsar_info;
+} em_evl2_access_state_info_ind_struct;
+
+/* MSG_ID_EM_EVL2_ACCESS_STATE_INFO_IND */
+
+
+/* C2K EVL2 EM Struct End */
+
+typedef struct
+{
+    em_evl2_rlp_flow_attribute_struct evl2_rlp_flow_attribute[2];
+    em_evl2_rlp_flow_rev_info_struct  evl2_rlp_flow_rev_info[2];
+    em_evl2_rtm_info_struct evl2_rtm_info;
+} RcpTrafficInfoTransMsgT;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RcpTrafficInfoTransMsgT msg;
+} em_rcp_traffic_info_trans_msg_struct;
+
+
+//MSG_ID_EM_RCP_TRAFFIC_INFO_TRANS_MSG
+
+typedef struct
+{
+    em_evl2_acm_ctrl_state_enum evl2_acm_ctrl_state;
+    em_evl2_acm_rb_state_enum evl2_acm_rb_state;
+    em_evl2_acm_probe_info_struct evl2_acm_probe_info;
+    em_evl2_acm_dsar_info_struct evl2_acm_dsar_info;
+} AcmStateInfoTransMsgT;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    AcmStateInfoTransMsgT msg;
+} em_acm_state_info_trans_msg_struct;
+
+typedef struct
+{
+    kal_uint8   FlowNo;
+    kal_uint8   QRAB;
+    kal_int32   T2POutFlow;
+    kal_int32   DeltaT2pInfow;
+    kal_int32   T2PInflow;
+    kal_int32   BucketLevel;
+    kal_int32   BucketStaturationLevel;
+    kal_int32   BucketFactor;
+} em_evl2_rtm3_t2p_flow_info_ind_struct;
+
+typedef struct
+{
+    kal_uint16                              TxT2P;
+    kal_int16                               PilotStrength;
+    kal_uint16                              Sub3PacketSize;
+    kal_bool                                NormalHDRMode;
+    kal_int8                                FRAB;
+    kal_bool                                QRAB_ps;
+    kal_uint8                               FlowNum;
+    em_evl2_rtm3_t2p_flow_info_ind_struct   FlowInfo[MAX_MAC_FLOW_NUM];
+} Rtm3T2PInfoTransMsgT;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                            em_info;
+    kal_uint16                              TxT2P;
+    kal_int16                               PilotStrength;
+    kal_uint16                              Sub3PacketSize;
+    kal_bool                                NormalHDRMode;
+    kal_int8                                FRAB;
+    kal_bool                                QRAB_ps;
+    kal_uint8                               FlowNum;
+    em_evl2_rtm3_t2p_flow_info_ind_struct   FlowInfo[MAX_MAC_FLOW_NUM];
+} em_evl2_rtm3_t2p_info_ind_struct;
+
+typedef struct
+{
+    kal_uint32 retx_byte_cnt;
+    kal_uint32 retx_mac_id;
+} em_rlp_retx_info_struct;
+
+#endif /* ~_EM_PUBLIC_STRUCT_XL3_H */
+
+
diff --git a/mcu/interface/service/em/em_public_struct_evl3.h b/mcu/interface/service/em/em_public_struct_evl3.h
new file mode 100644
index 0000000..cafdbec
--- /dev/null
+++ b/mcu/interface/service/em/em_public_struct_evl3.h
@@ -0,0 +1,377 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_public_struct_evl3.h
+ *
+ * Project:
+ * --------
+ *   Gen93
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures for C2K EVDO module.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *                       HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_PUBLIC_STRUCT_EVL3_H
+#define _EM_PUBLIC_STRUCT_EVL3_H
+
+#include "em_struct.h"
+#include "em_msgid.h"
+
+
+/* Definition of DO idle slotted mode events */
+typedef enum
+{
+    EM_DO_SM_SLEEP_CAPSULE          = 0,
+    EM_DO_SM_OVHD_STATUS_CHANGE     = 1,
+    EM_DO_SM_SESSION_STATUS_CHANGE  = 2,
+    EM_DO_SM_BYPASS_SESSION_STATUS  = 3,
+    EM_DO_SM_DFS_START              = 4,
+    EM_DO_SM_DFS_END                = 5,
+    EM_DO_SM_DSAR_START             = 6,
+    EM_DO_SM_DSAR_END               = 7,
+    EM_DO_SM_INVALID_EVENT          = 8
+} em_evdo_slotted_event_enum;
+
+/* Definition of EVDO access procedure events */
+typedef enum
+{
+    EM_DO_ACC_DSAR_START       = 0,
+    EM_DO_ACC_DSAR_END         = 1,
+    EM_DO_ACC_PROBE_TX_START   = 2,
+    EM_DO_ACC_PROBE_TX_END     = 3,
+    EM_DO_ACC_ACK_WAIT         = 4,
+    EM_DO_ACC_EARLY_WAKEUP_CMD = 5,
+    EM_DO_ACC_EARLY_WAKEUP_IND = 6,
+    EM_DO_ACC_TX_AVAIL_IND     = 7,
+    EM_DO_ACC_RSVAS_OCCUPY_REQ = 8,
+    EM_DO_ACC_RSVAS_OCCUPY_CNF = 9,
+    EM_DO_ACC_RSVAS_OCCUPY_IND = 10,
+    EM_DO_ACC_ACK_RCVD         = 11,
+    EM_DO_ACC_TCA_RCVD         = 12,
+    EM_DO_ACC_TCC_SEND         = 13,
+    EM_DO_ACC_DRC_AND_PILOT_TX = 14,
+    EM_DO_ACC_RTC_ACK_RCVD     = 15,
+    EM_DO_ACC_ACM_ACTIVE       = 16,
+    EM_DO_ACC_ACM_DEACTIVE     = 17,
+    EM_DO_ACC_INVALID_EVENT    = 18
+}em_evdo_access_event_enum;
+
+typedef enum
+{
+    EM_DO_RSVAS_OCCUPY_STATUS_NULL,
+    EM_DO_RSVAS_OCCUPY_STATUS_WAIT_CNF,
+    EM_DO_RSVAS_OCCUPY_STATUS_WAIT_CNF_FOR_FAST_CONN,
+    EM_DO_RSVAS_OCCUPY_STATUS_WAIT_IND,
+    EM_DO_RSVAS_OCCUPY_STATUS_WAIT_IND_FOR_FAST_CONN,
+    EM_DO_RSVAS_OCCUPY_STATUS_COMPLETE
+} EmDoRsvasOccupyStatusT;
+
+typedef enum
+{
+    EM_C2K_EVDO_AT_POWEROFF_STATE,
+    EM_C2K_EVDO_AT_INACTIVE_STATE,
+    EM_C2K_EVDO_AT_PILOACQ_STATE,
+    EM_C2K_EVDO_AT_SYNC_STATE,
+    EM_C2K_EVDO_AT_IDLE_STATE,
+    EM_C2K_EVDO_AT_ACCESS_STATE,
+    EM_C2K_EVDO_AT_CONNECTED_STATE,
+}em_evdo_at_state_enum;
+
+typedef enum
+{
+    EM_C2K_EVDO_ALMP_INIT_STATE,
+    EM_C2K_EVDO_ALMP_IDLE_STATE,
+    EM_C2K_EVDO_ALMP_CONN_SETUP_STATE,
+    EM_C2K_EVDO_ALMP_CONNECTED_STATE,
+}em_evdo_almp_state_enum;
+
+typedef enum
+{
+    EM_C2K_EVDO_INSP_INACTIVE_STATE,
+    EM_C2K_EVDO_INSP_NETWORK_DET_STATE,
+    EM_C2K_EVDO_INSP_SYNC_STATE,
+    EM_C2K_EVDO_INSP_TIMING_CHANGE_STATE,
+    EM_C2K_EVDO_INSP_WFR_1XASSIST_STATE,
+}em_evdo_insp_state_enum;
+
+typedef enum
+{
+    EM_C2K_EVDO_IDP_INACTIVE_STATE,
+    EM_C2K_EVDO_IDP_MONITOR_STATE,
+    EM_C2K_EVDO_IDP_SLEEP_STATE,
+    EM_C2K_EVDO_IDP_CONN_SETUP_STATE,
+    EM_C2K_EVDO_IDP_FREEZE_PENDING_STATE,
+    EM_C2K_EVDO_IDP_FREEZE_STATE,
+    EM_C2K_EVDO_IDP_CONN_FROZEN_STATE,
+}em_evdo_idp_state_enum;
+
+typedef enum
+{
+    EM_C2K_EVDO_CSP_INACTIVE_STATE,
+    EM_C2K_EVDO_CSP_CLOSING_STATE,
+    EM_C2K_EVDO_CSP_OPENE_STATE,
+}em_evdo_csp_state_enum;
+
+typedef enum
+{
+    EM_C2K_EVDO_RUP_INACTIVE_STATE,
+    EM_C2K_EVDO_RUP_IDLE_STATE,
+    EM_C2K_EVDO_RUP_CONNECTED_STATE,
+    EM_C2K_EVDO_RUP_IRAT_MEASUREMENT_STATE,
+}em_evdo_rup_state_enum;
+
+typedef enum
+{
+    EM_C2K_EVDO_OMP_INACTIVE_STATE,
+    EM_C2K_EVDO_OMP_ACTIVE_STATE,
+}em_evdo_omp_state_enum;
+
+typedef enum
+{
+    EM_C2K_EVDO_SESSION_CLOSE_STATE,
+    EM_C2K_EVDO_SESSION_AMPSETUP_STATE,
+    EM_C2K_EVDO_SESSION_ATINIT_STATE,
+    EM_C2K_EVDO_SESSION_ANINIT_STATE,
+    EM_C2K_EVDO_SESSION_OPEN_STATE,
+    EM_C2K_EVDO_SESSION_CLOSEING_STATE,
+}em_evdo_session_state_enum;
+
+typedef enum
+{
+    EM_C2K_EVDO_SMP_INACTIVE_STATE,
+    EM_C2K_EVDO_SMP_SETUP_STATE,
+    EM_C2K_EVDO_SMP_OPEN_STATE,
+    EM_C2K_EVDO_SMP_CLOSING_STATE,
+}em_evdo_smp_state_enum;
+
+typedef enum
+{
+    EM_C2K_EVDO_SCP_INACTIVE_STATE,
+    EM_C2K_EVDO_SCP_OPEN_STATE,
+    EM_C2K_EVDO_SCP_AT_INIT_STATE,
+    EM_C2K_EVDO_SCP_AN_INIT_STATE,
+}em_evdo_scp_state_enum;
+
+typedef enum
+{
+    EM_C2K_EVDO_AMP_INACTIVE_STATE,
+    EM_C2K_EVDO_AMP_SETUP_STATE,
+    EM_C2K_EVDO_AMP_OPEN_STATE,
+}em_evdo_amp_state_enum;
+
+typedef enum
+{
+	EM_C2K_EVDO_ABNORMAL_EVENT_INVALID	         = 0,
+    EM_C2K_EVDO_PILOT_ACQ_TIMEOUT                = 1,
+    EM_C2K_EVDO_PILOT_SYNC_TIMEOUT               = 2,
+    EM_C2K_EVDO_PILOT_TIMING_TIMEOUT             = 3,
+    EM_C2K_EVDO_CONNECTION_FAIL                  = 4,
+    EM_C2K_EVDO_IDP_ACCESS_FAIL                  = 5,
+    EM_C2K_EVDO_RUP_NETWORK_LOST                 = 6,
+    EM_C2K_EVDO_HSC_NETWORK_LOST                 = 7,
+    EM_C2K_EVDO_RUP_ASSGN_REJ_WHEN_CONNECT_STATE = 8,
+    EM_C2K_EVDO_DSAR_QUEUE_FULL                  = 9,
+    EM_C2K_EVDO_RTM_SUPERVSN_FAIL                = 10,
+    EM_C2K_EVDO_FTM_SUPERVSN_FAIL                = 11,
+    EM_C2K_EVDO_CCM_SUPERVSN_FAIL                = 12,
+    EM_C2K_EVDO_ACM_SUPERVSN_FAIL                = 13,
+    EM_C2K_EVDO_OMP_SUPERVSN_FAIL                = 14,
+    EM_C2K_EVDO_ABNORMAL_EVENT_NUM_MAX           = 15,
+}em_evdo_abnormal_event_enum;
+
+typedef enum
+{
+    EM_C2K_EVDO_PROEVENT_INVALID	             = 0,
+    EM_C2K_EVDO_POWER_UP                         = 1,
+    EM_C2K_EVDO_POWER_DOWN						 = 2,
+    EM_C2K_EVDO_CSS_ACQ_ABORT_REQ                = 3,
+    EM_C2K_EVDO_CSS_VALIDATED					 = 4,
+    EM_C2K_EVDO_SMP_CSS_ACTIVATE_MSG             = 5,
+    EM_C2K_EVDO_EHRPD_DISABLE_ETS_CMD            = 6,
+    EM_C2K_EVDO_EHRPD_ENABLE_ETS_CMD             = 7,
+    EM_C2K_EVDO_SESSION_OPEN                     = 8,
+    EM_C2K_EVDO_SESSION_CLOSE                    = 9,
+    EM_C2K_EVDO_PROCEDURE_EVENT_NUM_MAX          = 10,
+}em_evdo_procedure_event_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                 em_info;
+	
+    kal_uint16                   band;
+    kal_uint16                   channel;
+    kal_uint32					 pn;
+    em_evdo_abnormal_event_enum  abEvent;
+    em_evdo_procedure_event_enum proEvent;
+} em_evl3_cp_events_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_evdo_at_state_enum AtState;
+    em_evdo_almp_state_enum AlmpState;
+    em_evdo_insp_state_enum InspState;
+    em_evdo_idp_state_enum IdpState;
+    em_evdo_csp_state_enum CspState;
+    em_evdo_rup_state_enum RupState;
+    em_evdo_omp_state_enum OmpState;
+    em_evdo_session_state_enum SessionState;
+    em_evdo_smp_state_enum SmpState;
+    em_evdo_scp_state_enum ScpState;
+    em_evdo_amp_state_enum AmpState;
+}em_evl3_state_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint8  BandClass;
+    kal_uint16 Channel;
+    kal_uint16 RefPilotPN;
+}em_evl3_serving_cell_info_ind_struct;
+
+typedef struct
+{
+    kal_bool   bSleepCapsuleDoneRcvd;
+    kal_bool   bSectorParmsUpdated;
+    kal_bool   bSlottedModeEnabled;
+    kal_bool   bSessionIsActive;
+    kal_bool   bByPassSessionStatusForSleep;
+    kal_bool   bConnectionReqInProgress;
+    kal_bool   bProhibitEnterSleepForPageRcvd;
+    kal_bool   bWakeupInd;
+    kal_bool   bImdWakeup;
+    kal_bool   bDfsprocessing;
+    kal_bool   bPsDataOnC2K;
+    kal_bool   bServiceConfigStarted;
+    kal_bool   bSubnetChangedOrCommittingIndication;
+    kal_uint8  nAcmacTxStartedCount;
+
+    kal_bool   R_value_pccc;
+    kal_uint8  R_value;
+
+    kal_uint32 do_next_wakeup_time;
+    kal_uint32 do_wakeup_time_distance;
+} em_do_slotted_mode_info_struct;
+
+typedef struct
+{
+    kal_bool   bDsarAccessInProgress;
+    kal_bool   bConnectionReqPending;
+    kal_bool   bConnectionReqInProgress;
+    kal_bool   rtbProtectState;
+    kal_bool   bLLAOccupySuccess;
+    kal_uint8  LLAResourceStatus;
+    kal_uint8  probeTotalNum;
+    kal_uint8  probeSerialNum;
+    kal_uint8  sequenceTotalNum;
+    kal_uint8  sequenceSerialNum;
+    kal_uint8  msgPrtocolId;
+    kal_uint16 msgMessageId;
+    kal_uint16 msgTransId;
+    EmDoRsvasOccupyStatusT rsvasState;
+} em_evdo_access_procedure_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_do_slotted_mode_info_struct slotted_mode_info;
+    em_evdo_slotted_event_enum     slotted_event;
+} em_evl3_slotted_mode_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_evdo_access_procedure_info_struct access_procedure_info;
+    em_evdo_access_event_enum            access_event;
+} em_evl3_access_procedure_info_ind_struct;
+
+typedef struct
+{  
+    kal_uint16  band;
+    kal_uint16  channel;
+	kal_bool    isPilotFound;
+	kal_bool    isSyncRev;
+	kal_bool    isSyncOK;
+	kal_uint32  pilotPN;
+} em_evdo_system_search_info_struct;
+
+typedef struct
+{  
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+	em_evdo_system_search_info_struct system_search_info;
+} em_evl3_system_search_info_ind_struct;
+
+
+#endif /* ~_EM_PUBLIC_STRUCT_EVL3_H */
+
diff --git a/mcu/interface/service/em/em_public_struct_xl1.h b/mcu/interface/service/em/em_public_struct_xl1.h
new file mode 100644
index 0000000..adcb540
--- /dev/null
+++ b/mcu/interface/service/em/em_public_struct_xl1.h
@@ -0,0 +1,436 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_public_struct_xl1.h
+ *
+ * Project:
+ * --------
+ *   Gen93
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures for C2K XL3 module.
+ *
+ * Author:
+ * -------
+ *   
+ *
+ *==============================================================================
+ * HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_PUBLIC_STRUCT_XL1_H
+#define _EM_PUBLIC_STRUCT_XL1_H
+
+#include "em_struct.h"
+#include "em_msgid.h"
+
+#define XL1_EM_REPORT_FRAME_NUM            25
+#define EM_SYS_MAX_ACTIVE_LIST_PILOTS         6
+#define EM_SYS_MAX_CANDIDATE_LIST_PILOTS      10
+#define EM_SYS_MAX_NEIGHBOR_LIST_PILOTS       44
+
+/* begin of C2K definition */
+
+/*EM_XL1_STATUS_IND*/
+typedef enum {
+    EM_L1D_UNINITIALIZED = 0,
+    EM_L1D_INITIALIZED,
+    EM_PILOT_ACQ,
+    EM_PILOT_FOUND,
+    EM_ACQ_COMPLETE,
+    EM_TIMING_CHANGE,
+    EM_SYSTEM_TIME_UPDATE, /* Eliminated */
+    EM_IDLE,
+    EM_EACH_PREAMBLE_SETUP,
+    EM_EACH_PREAMBLE_ON,
+    EM_ACCESS_PREAMBLE_SETUP,
+    EM_ACCESS_PREAMBLE_ON,
+    EM_TRAFFIC_CHANNEL_SETUP, /* Renamed */
+    EM_POWER_CONTROL_COMPLETE,/* Eliminated */
+    EM_PREAMBLE_ON_RC1_2,/* Eliminated */
+    EM_REVERSE_PILOT_SETUP,/* Eliminated */
+    EM_PREAMBLE_ON_RC3_6,/* Eliminated */
+    EM_L1D_TRAFFIC,
+    EM_HARD_HANDOFF,
+    EM_HARDHO_COMPLETE, /* Eliminated */
+    EM_HARDHO_TRANSMITTER_CONTROL,/* Eliminated */
+    EM_SERVICE_CONFIG,
+#if defined (MTK_DEV_C2K_IRAT) && defined (MTK_DEV_C2K_SRLTE_L1)
+    EM_TRAFFIC_SUSPEND,
+#endif
+    EM_L1D_NULL_STATE
+}em_xl1_state_type_enum; 
+
+typedef enum {
+    EM_SP_STATE_IDLE = 0,                   /* slotted page mode is disabled */
+    EM_SP_STATE_CLOCK_CAL,                  /* 32kHz 9mHz calibration */
+    EM_SP_STATE_DIFF_FREQ_SEARCH,
+    EM_SP_STATE_PCH_FCCCH_MONITOR,
+    EM_SP_STATE_WAIT_FOR_SLEEP,
+    EM_SP_STATE_WAIT_FOR_SEARCH,
+    EM_SP_STATE_WAIT_FOR_SLEEP_ACK,
+    EM_SP_STATE_SLEEP,
+    EM_SP_STATE_QPCH1_MONITOR,
+    EM_SP_STATE_QPCH2_MONITOR,
+    EM_SP_STATE_CCI_MONITOR
+}em_xl1_spage_state_type_enum; 
+
+typedef enum {
+    EM_SCH_SPAGE_STATE_RF_LOST = 0,
+    EM_SCH_SPAGE_STATE_PCH_DECODE_NGHBR,
+    EM_SCH_SPAGE_STATE_SLEEP,
+    EM_SCH_SPAGE_STATE_SRCH_PILOT_LIST,
+    EM_SCH_SPAGE_STATE_QPCH_DECODE_NO_NGHBR_RSLT,
+    EM_SCH_SPAGE_STATE_SRCH_NGHBR,
+    EM_SCH_SPAGE_STATE_QPCH_DECODE,
+    EM_SCH_SPAGE_STATE_CCI_DECODE,
+    EM_SCH_SPAGE_STATE_SRCH_BUFFER_DELAY,
+    EM_SCH_SPAGE_STATE_CONT_RX,
+    EM_SCH_SPAGE_STATE_INTER_FREQ_SRCH   
+}em_xl1_slt_sch_state_type_enum; 
+
+
+typedef struct
+{
+    em_xl1_state_type_enum               l1d_state;
+    em_xl1_spage_state_type_enum         l1d_spage_state;
+    em_xl1_slt_sch_state_type_enum       l1d_slt_sch_state;
+    kal_uint32                           frc_cnt;
+} xl1_status_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum               em_info;
+    xl1_status_info_struct     xl1_status_info[XL1_EM_REPORT_FRAME_NUM];
+} em_xl1_status_info_ind_struct;
+
+/*EM_XL1_MEAS_INFO*/
+typedef enum {
+    EM_SCH_RST = 0,
+    EM_SCH_NCOH_IAQ,
+    EM_SCH_COH_IAQ,
+    EM_SCH_FDS,
+    EM_SCH_NORMAL,
+    EM_SCH_SPAGE,
+    EM_SCH_QPCH,
+    EM_SCH_CFS 
+}em_xl1_srch_mode_type_enum; 
+
+typedef struct
+{
+    kal_uint16                 PnOffset;
+    kal_uint16                 PnPhase;
+    kal_int16                  PnStrength;
+    kal_int16                  Otd;
+}xl1_pn_meas_rslt_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum               em_info;
+    em_xl1_srch_mode_type_enum SrchMode;
+    kal_uint16                 NumAct;
+    kal_uint16                 NumCand;
+    kal_uint16                 NumNghbr; 
+    xl1_pn_meas_rslt_struct    ActiveMeasRslt[EM_SYS_MAX_ACTIVE_LIST_PILOTS];
+    xl1_pn_meas_rslt_struct    CandMeasRslt[EM_SYS_MAX_CANDIDATE_LIST_PILOTS];
+    xl1_pn_meas_rslt_struct    NghbrMeasRslt[EM_SYS_MAX_NEIGHBOR_LIST_PILOTS];
+    kal_int16                  pi;
+    kal_int16                  cci;
+} em_xl1_meas_info_ind_struct;
+
+/*EM_XL1_MAIN_RXAGC_IND*/
+typedef enum {
+    EM_XL1_RXAGC_STATE_FAST = 0,
+    EM_XL1_RXAGC_STATE_STEADY,
+    EM_XL1_RXAGC_STATE_ICS,
+    EM_XL1_RXAGC_STATE_CAL
+}em_rxagc_state_enum; 
+
+typedef enum{
+    EM_CL1D_RF_HPM = 0,
+    EM_CL1D_RF_LPM,
+    EM_CL1D_RF_MAX_NUM_OF_PM
+}em_pwr_mode_type_enum;
+
+typedef struct
+{
+    kal_int16                  rssi;
+    em_rxagc_state_enum        agc_state;
+    em_pwr_mode_type_enum      power_mode;
+    kal_int16                  dc;//TBD
+    kal_int16                  band;
+    kal_int16                  channel;
+    kal_uint32                 frc_cnt;
+} xl1_rxagc_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum               em_info;
+    xl1_rxagc_info_struct      xl1_rxagc_info[XL1_EM_REPORT_FRAME_NUM];
+} em_xl1_main_rxagc_info_ind_struct;
+
+/*EM_XL1_DIV_RXAGC_IND*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum               em_info;
+    xl1_rxagc_info_struct      xl1_rxagc_info[XL1_EM_REPORT_FRAME_NUM];
+} em_xl1_div_rxagc_info_ind_struct;
+
+
+/* begin of C2K definition */
+typedef struct
+{
+    kal_uint16          tx_ctrl;
+    kal_uint16          fch_status;
+    kal_uint32          frc_cnt;
+} xl1_tx_path_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum               em_info;
+    xl1_tx_path_info_struct    tx_path_info[XL1_EM_REPORT_FRAME_NUM];
+} em_xl1_tx_path_info_ind_struct;
+
+typedef struct
+{
+    kal_uint16          pcg_num;  /** close loop adjust accumulation with 1/64dB@S8.6 unit */
+    kal_int16           cl_accum_pre;  /** RSSI value with filter in TXAGC HW with 1/64dBm@S7.6 unit*/
+    kal_int16           ol_rx_pwr_filter_pre; /** current max limit Tx power with temperature back off and SWTP back off in HW with 1/64dBm@S5.6 unit */
+    kal_int16           pwr_max;       /**Tx power at antenna in 1/32dBm@S6.5 unit */
+    kal_int16           target_pwr;    /** KS in HW with 1/64dBm@S6.6 unit */
+    kal_int16           ks;             /** RPC bit position*/
+    kal_int16           rpc_sym_pos;   /** TX UPC trigger */
+    kal_int16           tx_upc_trig;    /** RPC bit */
+    kal_int16           rpc_bit;
+    kal_uint32          frc_cnt;
+} xl1_tx_agc_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum             em_info;
+    xl1_tx_agc_info_struct   tx_agc_info[XL1_EM_REPORT_FRAME_NUM];
+} em_xl1_tx_agc_info_ind_struct;
+
+typedef struct
+{
+    kal_int32           foe_read;
+    kal_int32           total_foe;
+    kal_int32           rx_pll_hz;
+    kal_int32           tx_pll_hz;
+    kal_int32           rx_nco_phase;    
+    kal_int32           tx_nco_hz;
+    kal_uint32          frc_cnt;
+} xl1_afc_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum          em_info;
+    xl1_afc_info_struct   afc_info[XL1_EM_REPORT_FRAME_NUM];
+} em_xl1_afc_info_ind_struct;
+/* end of C2K definition */
+
+typedef struct
+{
+    kal_uint32            micpwr[8];
+    kal_int8              accdrift[8];
+    kal_uint32            frc_cnt;
+} xl1_rake_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum          em_info;
+    xl1_rake_info_struct  rake_info[8];
+} em_xl1_rake_info_ind_struct;
+
+typedef enum
+{
+    EM_FCH_BLANK      = 0x0,
+    EM_FCH_EIGHTH     = 0x1,
+    EM_FCH_QUARTER    = 0x2,   /* not used for SSO 3 */
+    EM_FCH_HALF       = 0x3,
+    EM_FCH_FULL       = 0x4,
+    EM_FCH_ERASURE     = 0xE,
+    EM_FCH_FULL_LIKELY = 0xF   /* used only for SSO's 1&3 */
+}em_fch_data_rate;
+
+typedef struct
+{       
+    kal_uint16            sync_EbNt;
+    kal_uint16            pch_EbNt;
+    kal_uint16            fch_EbNt;
+    kal_uint16            sch_EbNt;
+    em_fch_data_rate      fch_rate;    
+    kal_bool              fchchnlqual;
+    kal_bool              schchnlqual;
+    kal_uint32            frc_cnt;
+} xl1_crc_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum          em_info;
+    xl1_crc_info_struct   crc_info[XL1_EM_REPORT_FRAME_NUM];
+} em_xl1_crc_info_ind_struct;
+
+typedef enum
+{
+    EM_PATH_RXM      = 0x0,
+    EM_PATH_RXD      = 0x1,
+    EM_PATH_RXS      = 0x2,
+    EM_PATH_TX       = 0x3,
+    EM_MAX_PATH      = 0x4
+}em_xl1_path_type_enum;
+
+typedef enum
+{
+    EM_INIT_FOE_ICS      = 0x0,
+    EM_INIT_FOE_DRX      = 0x1,
+    EM_INIT_FOE_DFS      = 0x2
+}em_xl1_path_on_scenario_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                   em_info;
+    kal_int32                      InitFoe;
+    em_xl1_path_type_enum          Path;
+    em_xl1_path_on_scenario_enum   PathOnScenario;
+    kal_int32                      InitPpb;
+} em_xl1_mmafc_init_foe_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum     em_info;
+    kal_uint16       Channel;          /* Current channel number */
+    kal_uint16       BandClass;        /* Current band class  */
+    kal_uint16       PilotPnOffset;    /* Pilot PN offset  */
+    kal_int16        TxPower;   
+    kal_int16        TasState;      /*figure*/
+    kal_int16        TasVer;
+    kal_int16        RxPowerDbmL;   /*figure*/
+    kal_int16        RxPowerDbmU;   /*figure*/
+    kal_int16        RxPowerDbmLp;  /*figure*/      
+} em_xl1_tas_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum     em_info;
+    kal_uint16       Channel;          /* Current channel number */
+    kal_uint16       BandClass;        /* Current band class  */
+    kal_uint16       PilotPnOffset;    /* Pilot PN offset  */
+    kal_int16        TxPower;   
+    kal_int16        TasState;      /*figure*/
+    kal_int16        TasVer;
+	kal_int16        TxAnt;
+	kal_int16        DRxAnt;
+	kal_int16        RxPower;
+	kal_int16        DRxPower;
+} em_xl1_utas_info_ind_struct;
+
+typedef enum
+{
+    EM_TLP_TMG_TRK_NO_CHG,
+    EM_TLP_TMG_TRK_ADV,
+    EM_TLP_TMG_TRK_RET,
+    EM_TLP_TMG_TRK_MAX
+}em_xl1_tlp_tmg_trk_dir_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                    em_info;
+    em_xl1_tlp_tmg_trk_dir_enum     em_tmg_trk_dir_info;
+    kal_uint8                       AdjQ3;     
+} em_xl1_timing_loop_info_ind_struct;
+#if defined(__TC10__) && defined(__TC10_IPC_CDMA_SUPPORT__)
+#define XL1_POW_ABNORML_CHECK_PERIOD              (16*25) /* 400 pcg,25 frame*/ 
+/* MSG_ID_EM_XL1_RFD_INFO_IND */
+typedef struct
+{
+    kal_int16               TargetPwr;  /* Tx Power:Q5, uint:dBm */ 
+    kal_int16               Ddpc;        /* DDPC Power:Q5, uint:dBm */
+    kal_int32               DdpcDet;
+    kal_int16               RssiFilter; /* Rssi:Q6, uint:dBm */
+    kal_bool                PllState;
+    kal_uint8               vcc;
+    kal_int16               PATemp;
+	kal_bool                powerabnormal;
+} em_xl1_rfd_query_info_struct;
+
+
+typedef struct
+{
+    kal_uint16                      ChanNum;             
+    kal_uint16                      TxChanType;  //0:FCH/ACH,1:DCCH,2:SCH       
+    em_xl1_rfd_query_info_struct   RfdQueryInfo;
+} em_xl1_rfpd_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                em_info;
+    em_xl1_rfpd_info_struct     Msg;  /* Get from RFD */
+} em_xl1_rfpd_info_ind_struct;
+#endif
+#endif
diff --git a/mcu/interface/service/em/em_public_struct_xl2.h b/mcu/interface/service/em/em_public_struct_xl2.h
new file mode 100644
index 0000000..83b4802
--- /dev/null
+++ b/mcu/interface/service/em/em_public_struct_xl2.h
@@ -0,0 +1,271 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_public_struct_xl2.h
+ *
+ * Project:
+ * --------
+ *   Gen93
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures for C2K XL2 module.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_PUBLIC_STRUCT_XL2_H
+#define _EM_PUBLIC_STRUCT_XL2_H
+
+#include "em_struct.h"
+#include "em_msgid.h"
+
+
+/********************* begin of XL2 definition ****************************/
+
+#define MAX_FRAME_COUNT_IN_500MS 25
+
+/**xl2_rev_state***/
+typedef enum
+{
+	EM_UNINITIALIZED = 0,
+	EM_INITIALIZED,
+	EM_ACCESS,
+	EM_EACH_STATE,
+	EM_TRAFFIC,
+	EM_TEST_STATE,
+	EM_NULL_STATE,
+	EM_WAIT_2_FRAME_STATE
+}em_lmd_rev_state_type_enum;
+
+typedef enum
+{
+	EM_ENG_SRBP_NULL = 0,
+	EM_ENG_SRBP_INIT,
+	EM_ENG_SRBP_WAIT,
+	EM_ENG_SRBP_ACCESS_HO,
+	EM_ENG_SRBP_ACCESS_PROBE_HO,
+	EM_ENG_SRBP_SUPERVISION_SUSPEND,
+	EM_ENG_SRBP_IDLE
+}em_srbp_access_state_enum;
+
+typedef struct
+{
+	em_lmd_rev_state_type_enum lmd_rev_state;
+	em_srbp_access_state_enum  srbp_access_state;
+}em_rev_state_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	em_info_enum em_info;
+	em_rev_state_struct rev_state_info;
+}em_xl2_rev_state_ind_struct;
+
+/*******srbp_ach_probe*******/
+typedef struct
+{
+	kal_uint8 probe_num;
+	kal_uint8 seq_num;
+	kal_int16 power_correction;
+	kal_uint8 max_probe_seq;
+}em_ach_probe_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	em_info_enum em_info;
+	em_ach_probe_struct ach_probe_info;
+}em_xl2_ach_probe_info_ind_struct;
+
+/****xl2_voice_rate*******/
+typedef enum
+{
+	EM_IPC_SPCH_BLANK = 0,
+	EM_IPC_SPCH_EIGHTH = 1,
+	EM_IPC_SPCH_QUARTER = 2,
+	EM_IPC_SPCH_HALF = 3,
+	EM_IPC_SPCH_FULL = 4,
+	EM_IPC_SPCH_ENCRYPT_BLK	= 5,	 /*used only for SO32944*/
+    EM_IPC_SPCH_ENCRYPT_FULL = 6,	/*used only for SO32944*/
+	EM_IPC_SPCH_NON_CRITICAL= 0xC,/*change to 0xc since there's a definition in other Branches which already used 0X5*/
+	EM_IPC_SPCH_ERASURE	 = 0xE,
+	EM_IPC_SPCH_FULL_LIKELY = 0xF	  /* used only for SSO's 1&3 */
+}em_lmd_voice_rate_enum;
+
+typedef struct
+{
+    kal_uint32              em_systime;
+    em_lmd_voice_rate_enum  lmd_voice_rate;
+}em_voice_rate_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	em_info_enum em_info;
+	em_voice_rate_struct rev_voice_rate_info[MAX_FRAME_COUNT_IN_500MS];
+	em_voice_rate_struct fwd_voice_rate_info[MAX_FRAME_COUNT_IN_500MS];
+}em_xl2_voice_rate_info_ind_struct;
+
+/******xl2_rlp_info********/
+typedef enum
+{
+   NAK_TYPE_00 = 0,
+   NAK_TYPE_01 = 1,
+   NAK_TYPE_10 = 2,
+   NAK_TYPE_11 = 3
+}em_nak_type_enum;
+
+
+typedef struct
+{
+  kal_uint8  nak_gap_counts;
+  kal_uint16 nak_first[4];
+  kal_uint16 nak_last[4];
+}em_nak_type_00_struct;
+
+typedef struct
+{
+  kal_uint8  nak_map_counts;
+  kal_uint16 nak_map_seq[4];
+  kal_uint16 nak_map[4];
+}em_nak_type_01_struct;
+
+typedef struct
+{
+  kal_uint8  nak_seg_counts;
+  kal_uint16 nak_first_s_seq[4];
+  kal_uint16 nak_last_s_seq[4];
+  kal_uint16 nak_frame_seq[4];
+}em_nak_type_10_struct;
+
+typedef struct
+{
+  kal_uint8  nak_seg_counts;
+  kal_uint16 nak_first_s_seq[4];
+  kal_uint16 length_s_seq[4];
+  kal_uint16 nak_frame_seq[4];
+}em_nak_type_11_struct;
+
+typedef enum
+{
+	Fill_frame_ev = 0,
+	Nak_frame_ev = 1,
+	Reset_frame_ev = 2,
+	Rlp_Close_ev = 3,
+	Data_frame_ev = 4
+}em_event_type_enum;
+typedef struct
+{
+    em_nak_type_enum  nak_type_id;
+    kal_uint8         nak_counts;/*for gap,map,seg counts*/
+    kal_uint16        first_seq[4];
+    kal_uint16        last_seq[4];
+    kal_uint16        for_type34[4];/*nak_frame_seq*/
+}em_rlp_fwd_nak_list_struct;
+
+typedef struct
+{
+    kal_uint32 rlp_vs;
+	kal_uint16 rlp_vnp;
+	kal_uint16 rlp_vr;
+	kal_uint16 rlp_vn;
+    em_event_type_enum event_type;
+}em_rlp_general_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    em_rlp_general_info_struct rlp_general_info;
+    em_rlp_fwd_nak_list_struct rlp_fwd_nak_list;
+}em_xl2_rlp_info_ind_struct;
+
+/******xl2_ps_throughput_info********/
+typedef struct
+{
+    kal_uint32 rev_1x_ps_throuput;
+    kal_uint32 fwd_1x_ps_throuput;
+}em_ps_throuput_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    em_ps_throuput_struct ps_throuput_info;
+}em_xl2_ps_rate_info_ind_struct;
+
+typedef enum
+{
+   em_fwdChnl = 0,
+   em_revChnl = 1
+}em_channel_enum;
+
+/****xl2_sch_assigned_rate*****/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum     em_info;
+    em_channel_enum  channel;
+    kal_uint8        sch_assigned_rate;
+}em_xl2_sch_assigned_rate_ind_struct;
+
+
+#endif /* ~_EM_PUBLIC_STRUCT_XL2_H */
+
diff --git a/mcu/interface/service/em/em_public_struct_xl3.h b/mcu/interface/service/em/em_public_struct_xl3.h
new file mode 100644
index 0000000..69b08ab
--- /dev/null
+++ b/mcu/interface/service/em/em_public_struct_xl3.h
@@ -0,0 +1,746 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_public_struct_xl3.h
+ *
+ * Project:
+ * --------
+ *   Gen93
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures for C2K XL3 module.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_PUBLIC_STRUCT_XL3_H
+#define _EM_PUBLIC_STRUCT_XL3_H
+
+#include "em_struct.h"
+#include "em_msgid.h"
+#include "em_public_struct_xl1.h"
+
+
+#define EM_1XRTT_ASET_MAX_NUM 6
+
+
+/* Definition of CP state */
+typedef enum
+{
+    EM_CP_DISABLED          = 0,   /* CP Disabled                              */
+    EM_CP_SYS_DETERMINATION = 1,   /* System Determination (6.6.1.1)           */
+    EM_CP_PILOT_ACQUISITION = 2,   /* Pilot Channel Acquisition (6.6.1.2)      */
+    EM_CP_SYNC_ACQUISITION  = 3,   /* Sync Channel Acquisition (6.6.1.3)       */
+    EM_CP_TIMING_CHANGE     = 4,   /* Timing Change (6.6.1.4)                  */
+    EM_CP_IDLE              = 5,   /* Idle (6.6.2)                             */
+    EM_CP_UPDATE_OHD_INFO   = 6,   /* Update Overhead Information (6.6.3.2)    */
+    EM_CP_PAGE_RESPONSE     = 7,   /* Page Response (6.6.3.3)                  */
+    EM_CP_ORD_MSG_RESP      = 8,   /* Order/Message Response (6.6.3.4)         */
+    EM_CP_ORIGINATION       = 9,   /* Origination Attempt (6.6.3.5)            */
+    EM_CP_REGISTRATION      = 10,  /* Registration Attempt (6.6.3.6)           */
+    EM_CP_MSG_TRANSMISSION  = 11,  /* Message Transmission (6.6.3.7)           */
+    EM_CP_TC_INIT           = 12,  /* Traffic Channel Initialization (6.6.4.2) */
+    EM_CP_TC_WAIT_ORDER     = 13,  /* TC Waiting for Order (6.6.4.3.1)         */
+    EM_CP_TC_WAIT_ANSWER    = 14,  /* TC Waiting for MS Answer (6.6.4.3.2)     */
+    EM_CP_TC_CONVERSATION   = 15,  /* TC Conversation (6.6.4.4)                */
+    EM_CP_TC_RELEASE        = 16,  /* TC Release (6.6.4.5)                     */
+    EM_CP_NST               = 17,  /* Non-Signaling Test Mode                  */
+    EM_CP_FROZEN            = 18,  /* Temp put here                            */
+    EM_CP_TC_FROZEN         = 19,  /* TC Frozen                                */
+    EM_CP_NUM_STATES        = 20,  /* Num of state                             */
+} em_cp_state_enum;
+
+/* Definition of Idle Substate */
+typedef enum
+{
+    EM_IDLE_START               = 0,
+    EM_IDLE_WAIT_FOR_FCSCH      = 1,
+    EM_IDLE_MONITOR             = 2,
+    EM_IDLE_HANDOFF             = 3,
+    EM_IDLE_CH_CHANGE           = 4,
+    EM_IDLE_AEHO                = 5,
+    EM_IDLE_WAIT_FOR_ACC        = 6,
+    EM_IDLE_POWER_DOWN          = 7,
+    EM_IDLE_SLOTTED_HO_WAKEUP   = 8,
+    EM_IDLE_QPCH_HO_WAKEUP      = 9,
+    EM_IDLE_FROZEN              = 10,
+    EM_IDLE_SUB_STATE_NUM       = 11,
+} em_1x_idle_sub_state_enum;
+
+typedef struct
+{
+    em_cp_state_enum cp_state;
+    em_cp_state_enum prev_cp_state;
+    em_1x_idle_sub_state_enum idle_state;
+} em_1x_cp_states_struct;
+
+typedef struct
+{
+    kal_uint16 band;
+    kal_uint16 channel;
+    kal_uint16 ref_pn;
+    kal_uint16 aset_pn[EM_1XRTT_ASET_MAX_NUM];
+    kal_uint16 sid;
+    kal_uint16 nid;
+
+    kal_uint16 reg_zone;
+    kal_uint16 mcc_s;
+    kal_uint8 mnc_s;
+    kal_uint8 pzid;
+    kal_uint8 prev;
+    kal_uint8 roam;
+    kal_uint16 bid;
+} em_1x_serving_cell_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    em_1x_cp_states_struct cp_states;
+    em_1x_serving_cell_info_struct serving_cell_info;
+} em_xl3_cp_status_ind_struct;
+
+
+/* Definition of 1x wake mode in slotted mode */
+typedef enum
+{
+    EM_1X_PCH   = 0,
+    EM_1X_QPCH1 = 1,
+    EM_1X_QPCH2 = 2,
+    EM_1X_CCI   = 3,
+    EM_1X_FCCCH = 4,
+    EM_1X_BC    = 5,
+} em_1x_wake_mode_enum;
+
+typedef em_1x_wake_mode_enum em_1x_sleep_cmd_enum;
+
+typedef struct
+{
+    kal_bool slotted_mode;
+    kal_bool sleep_mode;
+    em_1x_wake_mode_enum wake_mode;
+    em_1x_sleep_cmd_enum sleep_cmd;
+    kal_uint8 sci;
+    kal_uint16 pgslot;
+    kal_bool qpch_enable;
+    kal_bool scm_slotted_mode;
+    kal_uint16 slotted_veto;
+    kal_bool ovhd_current;
+    kal_uint8 cfg_msg_seq;
+    kal_uint8 spm_msg_seq;
+    kal_uint8 espm_msg_seq;
+    kal_uint8 nlm_msg_seq;
+    kal_uint8 enlm_msg_seq;
+    kal_uint8 gnlm_msg_seq;
+    kal_uint8 cclm_msg_seq;
+    kal_uint8 gsrdm_msg_seq;
+    kal_uint8 ati_msg_seq;
+    kal_uint8 egsrdm_msg_seq;
+    kal_uint8 ecclm_msg_seq;
+    kal_uint8 acc_msg_seq;
+} em_1x_slotted_mode_info_struct;
+
+/* Definition of 1x idle slotted mode events */
+typedef enum
+{
+    EM_1X_SM_ENABLE             = 0,
+    EM_1X_SM_DISABLE            = 1,
+    EM_1X_SM_WAKE_PCH           = 2,
+    EM_1X_SM_WAKE_PI1           = 3,
+    EM_1X_SM_WAKE_PI2           = 4,
+    EM_1X_SM_WAKE_CCI           = 5,
+    EM_1X_SM_WAKE_BC            = 6,
+    EM_1X_SM_SLEEP_PCH          = 7,
+    EM_1X_SM_SLEEP_PI1          = 8,
+    EM_1X_SM_SLEEP_PI2          = 9,
+    EM_1X_SM_SLEEP_CCI          = 10,
+    EM_1X_SM_SLEEP_BC           = 11,
+    EM_1X_SM_RESYNC_DENIED_PCH  = 12,
+    EM_1X_SM_RESYNC_DENIED_PI1  = 13,
+    EM_1X_SM_RESYNC_DENIED_PI2  = 14,
+    EM_1X_SM_RESYNC_DENIED_CCI  = 15,
+    EM_1X_SM_RESYNC_DENIED_BC   = 16,
+    EM_1X_SM_EARLY_WAKEUP       = 17,
+    EM_1X_SM_EVENT_MAX          = 18,
+} em_1x_slotted_event_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    em_1x_slotted_event_enum slotted_event;
+    em_1x_slotted_mode_info_struct slotted_mode_info;
+} em_xl3_slotted_mode_info_ind_struct;
+
+/* Definition of 1x call events */
+typedef enum
+{
+    EM_CALL_EVENT_INVALID      = 0,
+    EM_CALL_EVENT_CDV          = 1,
+    EM_CALL_EVENT_CHV          = 2,
+    EM_CALL_EVENT_CONN         = 3,
+    EM_CALL_EVENT_RING         = 4,
+    EM_CALL_EVENT_ATA          = 5,
+    EM_CALL_EVENT_CEND         = 6,
+    EM_CALL_EVENT_REG_SUCC     = 7,
+    EM_CALL_EVENT_PAGING       = 8,
+    EM_CALL_EVENT_ACC_ATTEMPT  = 9,
+    EM_CALL_EVENT_NW_ACK       = 10,
+    EM_CALL_EVENT_CH_ASSN      = 11,
+    EM_CALL_EVENT_MAX          = 12,
+} em_call_events_enum;
+
+/* Definition of 1x call type */
+typedef enum
+{
+    EM_CALL_TYPE_INVALID             = 0,
+    EM_CALL_TYPE_VOICE               = 1,
+    EM_CALL_TYPE_CIRCUIT_DATA        = 2,
+    EM_CALL_TYPE_PACKET_DATA         = 3,
+    EM_CALL_TYPE_LOOPBACK_TEST       = 4,
+    EM_CALL_TYPE_MESSAGING           = 5,
+    EM_CALL_TYPE_OTA_ADMIN           = 6,
+    EM_CALL_TYPE_LOCATION            = 7,
+    EM_CALL_TYPE_MAX                 = 8,
+} em_call_type_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    em_call_events_enum call_events;
+    em_call_type_enum call_type;
+} em_1xrtt_call_events_ind_struct;
+
+/* Definition of c2k rsvas state */
+typedef enum
+{
+    EM_RSVAS_NORMAL_STATE       = 0,
+    EM_RSVAS_CONNECT_STATE      = 1,
+    EM_RSVAS_VIRTUAL_STATE      = 2,
+    EM_RSVAS_SUSPEND_STATE      = 3,
+    EM_RSVAS_NUM_STATE          = 4,
+} em_rsvas_state_enum;
+
+/* Definition of c2k rsvas temp state */
+typedef enum
+{
+    EM_RSVAS_TEMP_STATE_NONE             = 0,
+    EM_RSVAS_WAIT_OCCUPY_IND             = 1,
+    EM_RSVAS_WAIT_SUSPEND_REQ            = 2,
+    EM_RSVAS_WAIT_SUSPEND_CNF            = 3,
+    EM_RSVAS_WAIT_RESUME_IND             = 4,
+    EM_RSVAS_WAIT_VIRTUAL_SUSPEND_CNF    = 5,
+    EM_RSVAS_WAIT_ABORT_CNF              = 6,
+    EM_RSVAS_NUM_TEMP_STATE              = 7,
+} em_rsvas_temp_state_enum;
+
+/* Definition of c2k rsvas event */
+typedef enum
+{
+    EM_RSVAS_OCCUPY_EVENT                     = 0,
+    EM_RSVAS_OCCUPY_IND_EVENT                 = 1,
+    EM_RSVAS_RELEASE_EVENT                    = 2,
+    EM_RSVAS_RESUME_EVENT                     = 3,
+    EM_RSVAS_VIRTUAL_RESUME_EVENT             = 4,
+    EM_RSVAS_ABORT_EVENT                      = 5,
+    EM_RSVAS_SUSPEND_EVENT                    = 6,
+    EM_RSVAS_SUSPEND_CNF_EVENT                = 7,
+    EM_RSVAS_VIRTUAL_SUSPEND_EVENT            = 8,
+    EM_RSVAS_VIRTUAL_SUSPEND_CNF_EVENT        = 9,
+    EM_RSVAS_VIRTUAL_SUSPEND_COMPLTE_EVENT    = 10,
+    EM_RSVAS_ABORT_CNF_EVENT                  = 11,
+    EM_RSVAS_NUM_EVENT                        = 12,
+} em_rsvas_event_enum;
+
+#define FRAME_COUNT_500MS (25)
+
+typedef struct
+{
+    kal_uint32 sys_frc_cnt;
+    kal_bool ftc_frame_quality;
+}em_1x_ftc_crc_struct;
+
+typedef struct
+{
+    kal_uint8 ftc_crc_total_count;
+    kal_uint8 ftc_crc_error_count;
+    em_1x_ftc_crc_struct ftc_crc_detail[FRAME_COUNT_500MS];
+} em_1x_crc_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    em_rsvas_state_enum state;
+    em_rsvas_state_enum prevState;
+    em_rsvas_temp_state_enum tempState;
+    em_rsvas_event_enum event;
+    em_1x_crc_info_struct crc_info;
+} em_c2k_rsvas_info_ind_struct;
+
+typedef enum
+{
+    EM_CP_ABE_INVALID                           = 0,
+    EM_CP_ABE_INIT_FAIL_NO_SERVICE              = 1,    /* CP_NO_SERVICE_TIME expired (60s) */
+    EM_CP_ABE_INIT_FAIL_PILOT_ACQ_RF_GRANTED    = 2,    /* L1D can't report RF_GRANTED in 15s */
+    EM_CP_ABE_INIT_FAIL_PILOT_ACQ_T20           = 3,    /* L1D can't report pilot acq result in 15s */
+    EM_CP_ABE_INIT_FAIL_SYNC_ACQ                = 4,    /* L1D report sync acq failure */
+    EM_CP_ABE_INIT_FAIL_SYNC_ACQ_T21            = 5,    /* Layer 2 can't build valid sync message in 1s */
+    EM_CP_ABE_INIT_FAIL_TIME_CHANGE             = 6,    /* L1D can't report SYNC_TO_SYS_TIME in 2s */
+    EM_CP_ABE_INIT_FAIL_LOST_SYSTEM_REJECTED    = 7,    /* CSS reports current system is not most preferred */
+    EM_CP_ABE_IDLE_FAIL_LOST_T30                = 8,    /* Layer 2 can't build any valid PCH message in 3s */
+    EM_CP_ABE_IDLE_FAIL_LOST_T40                = 9,    /* PSW can't receive overhead complete in 4s */
+    EM_CP_ABE_IDLE_WARN_SEARCH_RESULT_DELAY     = 10,   /* L1D can't report measurement report in 800ms in Entry HO */
+    EM_CP_ABE_IDLE_FAIL_WAKEUP_FAILURE          = 11,   /* L1D can't wakeup in expected time */
+    EM_CP_ABE_IDLE_LOST_NO_ESPM                 = 12,   /* PSW can't receive ESPM in 4s when MCC/MNC needed for validate */
+    EM_CP_ABE_IDLE_FAIL_LOST_SYSTEM_REJECTED    = 13,   /* CSS reports current system is not most preferred */
+    EM_CP_ABE_IDLE_LOST_PILOT_FAIL              = 14,   /* PSW triggers pilot lost in poor signal when EVDO in connected */
+    EM_CP_ABE_ACC_FAIL_LOST_T40_T72             = 15,   /* Layer 2 can't build any valid PCH message in 3s */
+    EM_CP_ABE_ACC_FAIL_LOST_T41                 = 16,   /* PSW can't receive overhead complete in 4s */
+    EM_CP_ABE_ACC_FAIL_T42                      = 17,   /* PSW can't receive ECAM in 12s after received Ack Order */
+    EM_CP_ABE_ACC_FAIL_MAX_PROBE                = 18,   /* Max probe and access failure */
+    EM_CP_ABE_ACC_FAIL_PSIST_FAIL               = 19,   /* Layer 2 calculates PSIST failure */
+    EM_CP_ABE_ACC_FAIL_PROBE_FAIL               = 20,   /* Layer 2 finds message size to send is error */
+    EM_CP_ABE_ACC_FAIL_SEND_ACC_MSG_FAIL        = 21,   /* Layer 2 sends reverse message failure*/
+    EM_CP_ABE_ACC_FAIL_E911_ACC_FAIL            = 22,   /* Emergency call access failure in 16s */
+    EM_CP_ABE_ACC_FAIL_OOSA                     = 23,   /* Current service is aborted by MD1 Rsvas suspend / Gmss Deactivate */
+    EM_CP_ABE_ACC_FAIL_EXIT_PS                  = 24,   /* Current service is aborted by LTE MPSR / IMS */
+    EM_CP_ABE_ACC_FAIL_USER_CANCEL              = 25,   /* Current service is aborted by user */
+    EM_CP_ABE_ACC_WARN_PROBE_HO_FAIL            = 26,   /* Access handoff failure, but it doesn't cause access failure */
+    EM_CP_ABE_TC_FAIL_LOST_FADE_TIMER           = 27,   /* PSW can't receive 2 consecutive good frames in 5s */
+    EM_CP_ABE_TC_FAIL_LOST_HHO_TIMER            = 28,   /* Hard handoff failure */
+    EM_CP_ABE_TC_FAIL_LOST_ACK_FAIL             = 29,   /* Layer 2 sends one reverse message reach 13 times consecutive failure in assure mode */
+    EM_CP_ABE_TC_FAIL_LOST_T50                  = 30,   /* PSW can't receive 2 consecutive good frames in 1s in TC_INIT */
+    EM_CP_ABE_TC_FAIL_LOST_T51                  = 31,   /* PSW can't receive Ack Order in 2s in TC_INIT */
+    EM_CP_ABE_TC_FAIL_LOST_T52                  = 32,   /* For terminal call, PSW can't reveive AWIM in 5s in TC_WAIT_FOR_ORDER */
+    EM_CP_ABE_TC_FAIL_LOST_T53                  = 33,   /* For terminal call, PSW can't reveive user answer in 65s in TC_WAIT_FOR_ORDER */
+    EM_CP_ABE_TC_WARN_LOST_T55                  = 34,   /* MS originates Release Order, but can't receive Release Order from network in 2s */
+    EM_CP_ABE_TC_WARN_OOSA                      = 35,   /* Current service is aborted by MD1 Rsvas suspend / Gmss Deactivate */
+    EM_CP_ABE_TC_WARN_EXIT_PS                   = 36,   /* Current service is aborted by LTE MPSR / IMS */
+    EM_CP_ABE_TC_FAIL_E911_ACC_FAIL             = 37,   /* Emergency call access failure in 16s */
+    EM_CP_ABE_EVENT_NUM_MAX                     = 38,
+} em_cp_abnormal_event_enum;
+
+typedef struct
+{
+    em_cp_abnormal_event_enum   event;
+    em_cp_state_enum            state;
+    kal_uint16                  band;
+    kal_uint16                  channel;
+    kal_uint16                  pn;
+    kal_uint8                   last_meas_ecio;
+
+} em_xl3_abnormal_event_info_struct;
+
+typedef enum
+{
+    EM_1X_HO_EVENT_INVALID  = 0,
+    EM_1X_IHO_INTRA         = 1,
+    EM_1X_IHO_INTER         = 2,
+    EM_1X_HASH_CH           = 3,
+    EM_1X_HASH_PAGE         = 4,
+    EM_1X_AEHO_INTRA        = 5,
+    EM_1X_AEHO_INTER        = 6,
+    EM_1X_AHO               = 7,
+    EM_1X_SHO               = 8,
+    EM_1X_HHO_INTRA         = 9,
+    EM_1X_HHO_INTER         = 10,
+    EM_1X_HO_RESERVE        = 11,
+} em_1x_ho_event_enum;
+
+typedef struct
+{
+    kal_uint16  src_band;
+    kal_uint16  src_channel;
+    kal_uint16  src_pn;
+    kal_uint8   src_ecio;  /* uint: -0.5dB */
+    kal_uint16  dest_band;
+    kal_uint16  dest_channel;
+    kal_uint16  dest_pn;
+    kal_uint8   dest_ecio;  /* uint: -0.5dB */
+} em_1x_ho_common_info_struct;
+
+typedef struct
+{
+    kal_uint16  src_band;
+    kal_uint16  src_channel;
+    kal_uint16  src_aset_pn[EM_1XRTT_ASET_MAX_NUM];
+    kal_uint16  dest_band;
+    kal_uint16  dest_channel;
+    kal_uint16  dest_aset_pn[EM_1XRTT_ASET_MAX_NUM];
+} em_1x_ho_traffic_info_struct;
+
+typedef struct
+{
+    em_1x_ho_event_enum event;
+    em_cp_state_enum cp_state;
+    union
+    {
+        em_1x_ho_common_info_struct common_info;
+        em_1x_ho_traffic_info_struct traffic_info;
+    } choice;  /* parameters are valid when ho_event is not invalie */
+} em_1x_ho_event_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                        em_info;
+    em_xl3_abnormal_event_info_struct   abnormal_event_info;
+    em_1x_ho_event_info_struct          ho_event_info;
+} em_xl3_cp_events_ind_struct;
+
+
+/* Definition of 1xrtt paging info */
+typedef enum
+{
+    EM_1X_PCH_WAKEUP        = 0,
+    EM_1X_QPCH_OFF          = 1,
+    EM_1X_NON_SLOTTED_MODE  = 2,
+    EM_1X_PCH_RESYNC_DENIED = 3,
+} em_1x_pch_rcv_mode_enum;
+
+typedef struct
+{
+    kal_uint16  src_pn;
+    kal_int8    src_ecio;
+    kal_uint16  dest_pn;
+    kal_int8    dest_ecio;
+} em_qpch_ho_info_struct;
+
+/* Definition of EM QPCH Indicator */
+typedef enum
+{
+    EM_1X_PI_OFF        = 0,
+    EM_1X_PI_ON         = 1,
+    EM_1X_PI_UNDEF      = 2,
+    EM_1X_PI_ERASURE    = 3,
+    EM_1X_PI_INVALID    = 4,
+} em_1x_pi_status_enum;
+
+typedef struct
+{
+    em_1x_pi_status_enum   pi_status;
+    em_qpch_ho_info_struct ho_info;
+} em_qpch_info_struct;
+
+typedef struct
+{
+    kal_uint8   rcv_frame_num;
+    kal_uint8   valid_pch_msg_num;
+    kal_uint8   bad_crc_num;
+    kal_uint8   middle_sci_num;
+    kal_uint8   invalid_frame_num;
+} em_pch_msg_stat_struct;
+
+typedef struct
+{
+    kal_uint32              paging_time;
+    em_cp_state_enum        cp_state;
+    em_1x_pch_rcv_mode_enum pch_rcv_mode;
+    kal_bool                paging_matched;
+    kal_bool                paging_ignored;
+    kal_uint16              paging_so;
+    em_qpch_info_struct     qpch_info;
+    kal_uint16              channel;
+    kal_uint16              aset_pn;
+    kal_uint8               aset_last_ecio;
+    em_pch_msg_stat_struct  pch_msg_stat;
+} em_1x_paging_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                em_info;
+    em_1x_paging_info_struct    paging_info;
+} em_xl3_paging_info_ind_struct;
+
+
+/* Definition of 1xrtt set info */
+typedef struct
+{
+    kal_uint8  act_win_size;
+    kal_uint8  nghbr_win_size;
+    kal_uint8  remain_win_size;
+} em_1x_srch_param_struct;
+
+typedef struct
+{
+    kal_uint16  pn;
+    kal_bool    last_measured;
+    kal_int8    last_meas_otd;
+    kal_uint8   last_meas_ecio;
+    kal_bool    drop_timer_enabled; /* indicates if the timer is active     */
+    kal_uint16  drop_timer;         /* drop timer length, in uint 100ms */
+    kal_uint8   t_drop_count;       /* T_DROP hysteresis counter */
+    kal_bool    notify_drop_timer;  /* PSMM sent when HO drop timer expires */
+    kal_bool    keep;               /* keep indicator for PSMM message      */
+    kal_uint8   hspd_t_comp_count;
+} em_1x_aset_info_struct;
+
+typedef struct
+{
+    kal_uint16  pn;
+    kal_bool    last_measured;
+    kal_int8    last_meas_otd;
+    kal_uint8   last_meas_ecio;
+    kal_bool    drop_timer_enabled; /* indicates if the timer is active     */
+    kal_uint16  drop_timer;         /* drop timer length, in uint 100ms */
+    kal_uint8   t_drop_count;       /* T_DROP hysteresis counter */
+    kal_bool    notify_dynamic_tadd;/* PSMM sent when satisfy Dynamic TAdd */
+    kal_bool    notify_tcomp_0;     /* PSMM sent for TComp (Aset 0) */
+    kal_bool    notify_tcomp_1;     /* PSMM sent for TComp (Aset 1) */
+    kal_bool    notify_tcomp_2;     /* PSMM sent for TComp (Aset 2) */
+    kal_bool    notify_tcomp_3;     /* PSMM sent for TComp (Aset 3) */
+    kal_bool    notify_tcomp_4;     /* PSMM sent for TComp (Aset 4) */
+    kal_bool    notify_tcomp_5;     /* PSMM sent for TComp (Aset 5) */
+    kal_uint8   srch_win;          /* Nghbr pilot CH search window size   */
+} em_1x_cset_info_struct;
+
+typedef struct
+{
+    kal_uint16  band;
+    kal_uint16  channel;
+    kal_uint16  pn;
+    kal_bool    last_measured;
+    kal_int8    last_meas_otd;
+    kal_uint8   last_meas_ecio;
+    kal_uint8   nghbr_config;
+    kal_uint8   delayed_iho_count;
+    kal_bool    aeho_allowed;
+    kal_bool    aho_allowed;
+    kal_uint8   srch_win;
+    kal_uint8   age;
+    kal_bool    remove;  /* used for marking removal during neighbor list update */
+    kal_uint8   t_add_count;
+} em_1x_nset_info_struct;
+
+typedef struct
+{
+    kal_uint16  pn;
+    kal_bool    last_measured;
+    kal_int8    last_meas_otd;
+    kal_uint8   last_meas_ecio;
+    kal_bool    is_detected_ever;
+    kal_uint8   t_drop_count;        /* T_DROP hysteresis counter           */
+    kal_uint8   delayed_iho_count;
+    kal_bool    aeho_allowed;
+    kal_bool    aho_allowed;
+} em_1x_rset_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum            em_info;
+    em_1x_srch_param_struct srch_param;
+    kal_uint8               aset_num;
+    em_1x_aset_info_struct  aset_info[EM_SYS_MAX_ACTIVE_LIST_PILOTS];
+    kal_uint8               cset_num;
+    em_1x_cset_info_struct  cset_info[EM_SYS_MAX_CANDIDATE_LIST_PILOTS];
+    kal_uint8               nset_num;
+    em_1x_nset_info_struct  nset_info[EM_SYS_MAX_NEIGHBOR_LIST_PILOTS];
+    kal_uint8               rset_num;
+    em_1x_rset_info_struct  rset_info[EM_SYS_MAX_NEIGHBOR_LIST_PILOTS];
+} em_xl3_set_info_ind_struct;
+
+typedef enum
+{
+    EM_CP_UNKNOWN                           =  0,
+    EM_CP_PREV_POWERUP                      =  1,
+    EM_CP_PREV_ACQUISITION_FAILURE          =  2,
+    EM_CP_PREV_NEW_SYSTEM                   =  3,
+    EM_CP_PREV_CDMA_AVAILABLE               =  4,
+    EM_CP_PREV_RESELECTION                  =  5,
+    EM_CP_PREV_PROTOCOL_MISMATCH            =  6,
+    EM_CP_PREV_SYSTEM_LOST                  =  7,
+    EM_CP_PREV_UNLOCK                       =  8,
+    EM_CP_PREV_ACCESS_DENIED                =  9,
+    EM_CP_PREV_NDSS_OFF                     =  10,
+    EM_CP_PREV_RELEASE                      =  11,
+    EM_CP_PREV_ERROR                        =  12,
+    EM_CP_PREV_REDIRECTION                  =  13,
+    EM_CP_PREV_REGISTRATION_REJECT          =  14,
+    EM_CP_PREV_WRONG_SYSTEM                 =  15,
+    EM_CP_PREV_WRONG_NETWORK                =  16,
+    EM_CP_PREV_RESCAN                       =  17,
+    EM_CP_PREV_LOCK                         =  18,
+    EM_CP_PREV_SYSTEM_LOST_ACCESS           =  19,
+    EM_CP_PREV_E911_CALL                    =  20,
+    EM_CP_PREV_OTASP_CALL                   =  21,
+    EM_CP_PREV_PERIODIC_RESCAN_OBSOLETE     =  22,
+    EM_CP_PREV_ADDITIONAL_CDMA              =  23,
+    EM_CP_PREV_SYSTEM_RESELECTION           =  24,
+    EM_CP_PREV_FORCE_BAND_MODE              =  25,
+    EM_CP_PREV_EXIT_E911_MODE               =  26,
+    EM_CP_PREV_SYSTEM_FOUND_NOT_BEST        =  27,
+    EM_CP_PREV_REDIRECTION_END_TIMER_EXPIRED =  28,
+    EM_CP_PREV_FORCE_ANALOG_MODE            =  29,
+    EM_CP_PREV_MORE_PREF_SCAN_TIMER_EXPIRED =  30,
+    EM_CP_PREV_ACCESS_FAILED_SILENT_RETRY   =  31,
+    EM_CP_PREV_ESPM_NOT_RECEIVED            =  32,
+    EM_CP_PREV_TIMING_CHANGE_FAILURE        =  33,
+    EM_CP_PREV_SYNCHRONIZATION_FAILURE      =  34,
+    EM_CP_PREV_REG_THROTTLING               =  35,
+    EM_CP_PREV_ACCESS_MAX_PROBES            =  36,
+
+    EM_CP_PREV_PAGING_MONITOR_TIMEOUT       =  40,
+    EM_CP_PREV_MODEM_FAILURE                =  41,
+    EM_CP_PREV_IRAT_RESET_1XCDMA            =  42,
+    EM_CP_PREV_MANUAL_AVOID_RESELECT        =  43,
+
+    EM_CP_PREV_1X_DO_COLLOCATED_BROKEN      =  50,
+    EM_CP_PREV_REINIT                       =  51,
+    EM_CP_PREV_E911_TRAFF_CONV_FAIL         =  52,
+    EM_CP_GLOBALMODE_DO_ACQUISITION_FAILURE =  60,
+    EM_CP_PREV_1X_RESUME_FROM_SUSPENDED     =  61,
+    EM_CP_PREV_1X_DATA_ACCESS_RELEASE       =  62,
+    EM_CP_PREV_MAX_NUM,
+} em_1xrtt_search_indication_enum;
+
+
+typedef struct
+{
+    kal_bool                         search_success;
+    em_cp_state_enum                 cp_state;
+    em_1xrtt_search_indication_enum  search_ind;
+    kal_uint16                       band;
+    kal_uint16                       channel;
+    kal_uint32                       time_start_search;
+    kal_uint32                       time_enter_oosa;
+    kal_uint32                       time_exit_oosa;
+    kal_uint32                       time_SD;
+    kal_uint32                       time_RF_grant;
+    kal_uint32                       time_PA;
+    kal_uint32                       time_SA;
+    kal_uint32                       time_TC;
+    kal_int16                        RSSI;
+    kal_int16                        EcIo;
+    kal_int16                        SyncEbNt;
+    kal_int32                        total_foe;
+} em_xl3_system_search_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                     em_info;
+    em_xl3_system_search_info_struct system_search_info;
+} em_xl3_system_search_info_ind_struct;
+
+
+typedef enum
+{
+    EM_1X_CALL_SUCCESS                      = 0,    /* call success. */
+    EM_1X_CALL_FAIL_NO_SERVICE              = 1,    /* can't camp on for a long time. */
+    EM_1X_CALL_FAIL_BLOCKED_BY_IRAT         = 2,    /* blocked by other RATs. */
+    EM_1X_CALL_FAIL_POWERDOWN               = 3,    /* interrupted by power down or enter flight mode. */
+    EM_1X_CALL_FAIL_T42_EXPIRED             = 4,    /* T42 expired - can not receive ECAM in 12s. */
+    EM_1X_CALL_FAIL_MAX_PROBE               = 5,    /* max probe in access phase. */
+    EM_1X_CALL_FAIL_SYSTEM_LOST             = 6,    /* system lost caused by poor signal. */
+    EM_1X_CALL_FAIL_PSIST_FAIL              = 7,    /* persistence calculation failed. */
+    EM_1X_CALL_FAIL_PROBE_FAIL              = 8,    /* signaling message size problem. */
+    EM_1X_CALL_FAIL_SEND_ACC_MSG_FAIL       = 9,    /* access attempt could not be sent. */
+    EM_1X_CALL_FAIL_E911_ACC_FAIL           = 10,   /* emergency call access failure. */
+    EM_1X_CALL_FAIL_NW_RELEASE              = 11,   /* access failure caused by network release order. */
+    EM_1X_CALL_FAIL_REORDER                 = 12,   /* access failure caused by network reorder order. */
+    EM_1X_CALL_FAIL_NW_LOCK                 = 13,   /* access failure caused by network lock order. */
+    EM_1X_CALL_FAIL_NW_INTERCEPT            = 14,   /* access failure caused by network intercept order. */
+    EM_1X_CALL_FAIL_INVALID_CAM             = 15,   /* received invalid channel assignment message. */
+    EM_1X_CALL_FAIL_RETRY_ORDER             = 16,   /* access failure caused by network retry order. */
+    EM_1X_CALL_FAIL_FNM_RELEASE             = 17,   /* released by FNM. */
+    EM_1X_CALL_FAIL_UIM_PLUGOUT             = 18,   /* uim card is plugout. */
+    EM_1X_CALL_FAIL_FADE_TIMER              = 19,   /* fade timer expired - can't received 2 consecutive good frames. */
+    EM_1X_CALL_FAIL_ACK_FAIL                = 20,   /* ack fail. */
+    EM_1X_CALL_FAIL_NORMAL_CALL_IN_E911     = 21,   /* unexpected normal call in emergency call mode. */
+    EM_1X_CALL_FAIL_VOICE_NOT_ALLOWED       = 22,   /* voice call is not allowed set by phone. */
+    EM_1X_CALL_FAIL_DATA_PREFERRED          = 23,   /* call rejected as data connection exist when data preferred set. */
+    EM_1X_CALL_FAIL_REASON_MAX_NUM,
+} em_1xrtt_call_fail_reason_enum;
+
+typedef enum
+{
+    EM_C2K_CALL_MO      = 0,    /* mo voice call. */
+    EM_C2K_CALL_MT      = 1,    /* mt voice call. */
+    EM_C2K_CALL_DROP    = 2,    /* voice call drop. */
+    EM_C2K_CALL_TYPE_MAX_NUM,
+} em_c2k_call_type_enum;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                   em_info;
+    em_c2k_call_type_enum          type;
+    em_1xrtt_call_fail_reason_enum reason;
+    kal_uint16                     mcc;
+    kal_uint8                      mnc;
+    kal_uint16                     sid;
+    kal_uint16                     nid;
+
+    kal_uint16                     pn_offset;
+    kal_uint16                     band;
+    kal_uint16                     channel;
+    kal_uint16                     ecio;   /* unit of -0.5dB */
+    kal_int8                       rssi;
+    kal_uint16                     bid;
+} em_xl3_call_fail_reason_ind_struct;
+
+
+#endif /* ~_EM_PUBLIC_STRUCT_XL3_H */
+
diff --git a/mcu/interface/service/em/em_ratcm_public_struct.h b/mcu/interface/service/em/em_ratcm_public_struct.h
new file mode 100644
index 0000000..9f51faf
--- /dev/null
+++ b/mcu/interface/service/em/em_ratcm_public_struct.h
@@ -0,0 +1,93 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_ratcm_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef _EM_RATCM_PUBLIC_STRUCT_H
+#define _EM_RATCM_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum            em_info;
+
+   kal_uint8               source_rat;    /* 0/1/2 -2G/3G/4G */
+   kal_uint8               target_rat;
+} em_ratcm_23g_rat_change_ind_struct;
+
+#endif /* _EM_RATCM_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_sbp_public_struct.h b/mcu/interface/service/em/em_sbp_public_struct.h
new file mode 100644
index 0000000..83c8e46
--- /dev/null
+++ b/mcu/interface/service/em/em_sbp_public_struct.h
@@ -0,0 +1,122 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+ /*******************************************************************************
+ * Filename:
+ * ---------
+ *   em_sbp_public_struct.h
+ *
+ * Project:
+ * --------
+ *  
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef _EM_SBP_PUBLIC_STRUCT_H_
+#define _EM_SBP_PUBLIC_STRUCT_H_
+
+#include "em_public_struct.h"
+
+typedef enum
+{
+    EM_L4BSBP_TRIGGER_UNKNOWN = -1,
+    EM_L4BSBP_TRIGGER_AP = 0,
+    EM_L4BSBP_TRIGGER_BOOTUP,
+    EM_L4BSBP_TRIGGER_SIM
+} em_l4bsbp_trigger_type_enum;
+
+typedef enum
+{
+    EM_L4BSBP_MODE_UNKNOWN = -1,
+    EM_L4BSBP_MODE_BOOTUP = 0,
+    EM_L4BSBP_MODE_IMS_ONLY = 1,
+    EM_L4BSBP_MODE_ALL_MODEM = 2
+} em_l4bsbp_mode_type_enum;
+
+typedef enum
+{
+    EM_L4BSBP_RESULT_UNKNOWN = -1,
+    EM_L4BSBP_RESULT_SUCCESS = 0,
+    EM_L4BSBP_RESULT_FAIL_SIM_ERROR = 1,
+    EM_L4BSBP_RESULT_FAIL_OTHER = 2,
+} em_l4bsbp_result_type_enum;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   em_l4bsbp_trigger_type_enum           trigger_type;  // ap, bootup, sim
+   em_l4bsbp_mode_type_enum              mode;          // bootup, ims, all modem
+   em_l4bsbp_result_type_enum            result;        // success, failure
+   kal_uint32                       sbp_id;
+   kal_uint32                       sim_sbp_id;
+   kal_uint32                       start_time_tick;
+   kal_uint32                       end_time_tick;
+} em_l4bsbp_dsbp_info_ind_struct;
+
+
+
+#endif /* _EM_SBP_PUBLIC_STRUCT_H_ */
+
diff --git a/mcu/interface/service/em/em_sim_public_struct.h b/mcu/interface/service/em/em_sim_public_struct.h
new file mode 100644
index 0000000..40c28e7
--- /dev/null
+++ b/mcu/interface/service/em/em_sim_public_struct.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) 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:
+ * ---------
+ *   em_sim_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_SIM_PUBLIC_STRUCT_H
+#define _EM_SIM_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+
+#define SIM_EM_MAX_APDU_CMD_LEN 261
+#define SIM_EM_MAX_APDU_RES_LEN 256
+
+typedef enum
+{
+    SIM_EVENT_CARD_LOSS,
+    SIM_EVENT_ATR_ERROR,
+    SIM_EVENT_PLUG_OUT,
+    SIM_EVENT_PLUG_IN,
+    SIM_EVENT_CARD_COMMUNICATE_ERROR,
+    SIM_EVENT_CARD_REFRESH,
+	SIM_EVENT_CARD_RECOVERY,
+} sim_monitor_type;
+
+typedef enum
+{
+    SIM_ERROR_INFO_TYPE_HOTSWAP,
+    SIM_ERROR_INFO_TYPE_PARITY,
+    SIM_ERROR_INFO_TYPE_NULL_TIMEOUT,
+    SIM_ERROR_INFO_TYPE_TIMEOUT = 6,
+    SIM_ERROR_INFO_TYPE_OVERRUN,
+    SIM_ERROR_INFO_TYPE_NO_ATR,
+    SIM_ERROR_INFO_TYPE_VOLT_NOT_SUPPORT,
+    SIM_ERROR_INFO_TYPE_TECH_PROB,
+    SIM_ERROR_INFO_TYPE_POLL_ERROR,
+    SIM_ERROR_INFO_TYPE_PPS_TIMEOUT,
+    SIM_ERROR_INFO_TYPE_PERSO_SIMLOCK,
+    SIM_ERROR_INFO_TYPE_NO_ATR_AFTER_RECOVERY,
+    SIM_ERROR_INFO_TYPE_CORRUPTED_ATR,
+    SIM_ERROR_INFO_TYPE_PPS_TIMEOUT_AFTER_RECOVERY,
+    SIM_ERROR_INFO_TYPE_CORRUPTED_ATR_AFTER_RECOVERY,
+    SIM_ERROR_INFO_TYPE_MAX = 50
+} em_sim_error_info_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    sim_monitor_type event_type;
+    kal_uint32 count;
+} em_sim_monitor_event_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint32   command_len;
+    kal_uint8   command_data[SIM_EM_MAX_APDU_CMD_LEN];
+    kal_uint32   response_len;
+    kal_uint8   response_data[SIM_EM_MAX_APDU_RES_LEN + 2];
+} em_sim_apdu_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    em_sim_error_info_enum event_type;
+} em_sim_error_info_ind_struct;
+
+#endif /* _EM_SIM_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_sm_public_struct.h b/mcu/interface/service/em/em_sm_public_struct.h
new file mode 100644
index 0000000..9d03c2f
--- /dev/null
+++ b/mcu/interface/service/em/em_sm_public_struct.h
@@ -0,0 +1,302 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_sm_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef _EM_SM_PUBLIC_STRUCT_H
+#define _EM_SM_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+
+
+
+typedef enum{ // mtk01936 SM EM mode
+     LOG_EM_MODE_PDP_INACTIVE, // PDP-INACTIVE
+     LOG_EM_MODE_PDP_ACTIVE_PENDING, // PDP-ACTIVE-PENDING
+     LOG_EM_MODE_PDP_INACTIVE_PENDING, // PDP-INACTIVE-PENDING
+     LOG_EM_MODE_PDP_ACTIVE, // PDP-ACTIVE
+     LOG_EM_MODE_PDP_MODIFY_PENDING, // PDP-MODIFY-PENDING
+     LOG_EM_MODE_PDP_CONTEXT_ENUM_TOTAL
+} sm_em_mode_pdp_context_enum;
+
+typedef enum
+{
+    LOG_EM_MODE_PRIMARY_CONTEXT,
+    LOG_EM_MODE_SECONDARY_CONTEXT,
+    LOG_EM_MODE_UNKNOWN_CONTEXT
+} sm_em_mode_pdp_context_type_enum;
+
+typedef enum
+{
+    LOG_EM_MODE_MS_INITIATED = 0,
+    LOG_EM_MODE_NW_INITIATED = 1
+} sm_em_mode_initiated_enum;
+
+typedef enum
+{
+     LOG_EM_MODE_IPV4_ADDR_TYPE      = 0X21,
+     LOG_EM_MODE_IPV6_ADDR_TYPE      = 0X57,
+     LOG_EM_MODE_IPV4V6_ADDR_TYPE    = 0X8D,
+     LOG_EM_MODE_PPP_ADDR_TYPE       = 0X01,
+     LOG_EM_MODE_OSP_IHOSS_ADDR_TYPE = 0X02,
+     LOG_EM_MODE_NULL_PDP_ADDR_TYPE  = 0X03  /* This is added incase if no pdpaddrtype is
+                                  * specified */
+} sm_em_mode_pdp_addr_type_enum;
+
+/* BCM stands for bearer control mode. */
+typedef enum
+{
+    LOG_EM_MODE_SM_BCM_NULL    = 0x00,  /* Not yet selected by NW. */
+    LOG_EM_MODE_SM_BCM_MS_ONLY = 0x01,  /* 24.008, Sec. 10.5.6.3 (PCO). */
+    LOG_EM_MODE_SM_BCM_MS_NW   = 0x02   /* 24.008, Sec. 10.5.6.3 (PCO). */
+} sm_em_mode_selected_bcm_enum ;
+
+/* ETFT stands for extended TFT format. */
+typedef enum
+{
+    LOG_EM_MODE_SM_ETFT_NOT_SUPPORT = 0x00,  /* 24.008, Sec. 10.5.6.3 (PCO). */
+    LOG_EM_MODE_SM_ETFT_SUPPORT     = 0x01   /* 24.008, Sec. 10.5.6.3 (PCO). */
+} sm_em_mode_selected_etft_enum ;
+
+/* IM CN Subsystem Signaling Flag */
+typedef enum
+{
+    LOG_EM_MODE_NOT_FOR_IM_CN_SIGNALING = 0x00,  /* 24.008, Sec. 10.5.6.3 (PCO). */
+    LOG_EM_MODE_FOR_IM_CN_SIGNALING     = 0x01   /* 24.008, Sec. 10.5.6.3 (PCO). */
+} sm_em_mode_im_cn_signaling_flag_enum;
+
+typedef struct
+{
+    /* Requested Qos */
+    kal_uint8 delay_class; // possible value are Decimal 1, 2, 3, 4
+    kal_uint8 reliability_class; // possible value are Decimal 1, 2, 3, 4, 5
+    kal_uint8 peak_throughput; // possible value are Decimal 1~9
+    kal_uint8 precedence_class; // possible value are Decimal 1, 2, 3, 4
+    kal_uint8 mean_throughput; // possible value are Decimal 1~18
+    kal_uint8 traffic_class; // possible value are Decimal 1, 2, 3, 4
+    kal_uint8 delivery_order; // possible value are Decimal 1, 2
+    kal_uint8 delivery_of_err_sdu; // possible value are Decimal 1, 2, 3
+    kal_uint8 max_sdu_size; // max SDU size according to 24.008 Table 10.5.156 encoding
+    kal_uint8 max_bitrate_up_lnk; // possible value are Decimal 1~254
+    kal_uint8 max_bitrate_down_lnk;  // possible value are Decimal 1~254
+    kal_uint8 residual_bit_err_rate; // possible value are Decimal 1~9
+    kal_uint8 sdu_err_ratio; // possible value are Decimal 1~7
+    kal_uint8 transfer_delay; // possible value are Decimal 1~62
+    kal_uint8 traffic_hndl_priority; // possible value are Decimal 1, 2, 3
+    kal_uint8 guarntd_bit_rate_up_lnk; // possible value are Decimal 1~254
+    kal_uint8 guarntd_bit_rate_down_lnk;  // possible value are Decimal 1~254
+    kal_uint8 signalling_indication;
+    kal_uint8 source_statistics_descriptor;
+    kal_uint8 ext_max_bitrate_down_lnk;
+    kal_uint8 ext_guarntd_bit_rate_down_lnk;
+    kal_uint8 ext_max_bitrate_up_lnk;
+    kal_uint8 ext_guarntd_bit_rate_up_lnk;
+    kal_uint8 ext2_max_bitrate_down_lnk;
+    kal_uint8 ext2_guarntd_bit_rate_down_lnk;
+    kal_uint8 ext2_max_bitrate_up_lnk;
+    kal_uint8 ext2_guarntd_bit_rate_up_lnk;
+
+
+
+    kal_uint8 human_readable_delay_class; // delay_class_enum
+    kal_uint8 human_readable_reliability_class; // sm_readable_reliability_class_enum
+    kal_uint8 human_readable_peak_throughput; // sm_readable_peak_throughput_class_enum
+    kal_uint8 human_readable_precedence_class; // sm_readable_precedence_class_enum
+    kal_uint8 human_readable_mean_throughput; // sm_readable_mean_throughput_enum
+    kal_uint8 human_readable_traffic_class; // sm_readable_traffic_class_enum
+    kal_uint8 human_readable_delivery_order; // sm_readable_delivery_order_enum
+    kal_uint8 human_readable_delivery_of_err_sdu; // sm_readable_delivery_of_err_sdu_enum
+    kal_uint16 human_readable_max_sdu_size;
+    kal_uint32 human_readable_max_bitrate_up_lnk;
+    kal_uint32 human_readable_max_bitrate_down_lnk;
+    kal_uint8 human_readable_residual_bit_err_rate; // sm_readable_residual_bit_error_rate_enum
+    kal_uint8 human_readable_sdu_err_ratio; // sm_readable_sdu_err_ratio_enum
+    kal_uint16 human_readable_transfer_delay;
+    kal_uint8 human_readable_traffic_hndl_priority; // sm_readable_traffic_hndl_priority_enum
+    kal_uint32 human_readable_guarntd_bit_rate_up_lnk;
+    kal_uint32 human_readable_guarntd_bit_rate_down_lnk;
+    kal_uint8 human_readable_signalling_indication; // sm_readable_signaling_indication_enum
+    kal_uint8 human_readable_source_statistics_descriptor; // sm_readable_source_statistics_descriptor_enum
+    kal_uint32 human_readable_ext_max_bitrate_down_lnk;
+    kal_uint32 human_readable_ext_guarntd_bit_rate_down_lnk;
+    kal_uint32 human_readable_ext_max_bitrate_up_lnk;
+    kal_uint32 human_readable_ext_guarntd_bit_rate_up_lnk;
+    kal_uint32 human_readable_ext2_max_bitrate_down_lnk;
+    kal_uint32 human_readable_ext2_guarntd_bit_rate_down_lnk;
+    kal_uint32 human_readable_ext2_max_bitrate_up_lnk;
+    kal_uint32 human_readable_ext2_guarntd_bit_rate_up_lnk;
+
+} sm_em_qos_struct;
+
+
+typedef struct
+{
+   /*
+     * MTK Question: what is the index mean? Does it mean the PDP array index?
+     * Response: Yes
+     */
+   kal_uint8   pdp_index;
+
+   kal_uint8   nsapi; // NSAPI
+   kal_uint8    ti_value;
+
+   /*
+     * MTK Question: How many states do you need to show? Just inactive & active?
+     * Response:
+     * PDP status is like below
+     * PDP-INACTIVE
+     * PDP-ACTIVE_-PENDING
+     * PDP-INACTIVE-PENDING
+     * PDP-ACTIVE
+     * PDP-MODIFY-PENDING
+     */
+
+   sm_em_mode_pdp_context_enum   pdp_context_status;
+   sm_em_mode_pdp_context_type_enum context_type;
+
+   sm_em_mode_initiated_enum   initiated_by;
+
+   sm_em_mode_pdp_addr_type_enum   pdp_addr_type;
+
+   kal_uint8   ip[MAXIMUM_POSSIBLE_ADDR_LEN]; // IPv4 address or IPv6 address(not ready)
+   //kal_uint8   dns1[4];
+   //kal_uint8   dns2[4];
+
+   kal_uint16 sdu_size; // Max SDU size in Bytes
+
+   kal_uint8   apn[100];
+
+   /*
+     * MTK Question: In our current design, we clear the cause value after PDP deactivation, do you need to see the previous deactivation cause?
+     * Response:
+     * If MS work normal, just see the previos deactivaion cause.
+     * If MS send PDP act msg to Network, MS recevie PDP reject msg from Network, then we need to see reject casue.
+     */
+   kal_uint8   sm_cause;          //  if applicable
+
+   /*
+     * MTK Question: Is this the neg QoS? According to 24.008 Table 10.5.156?
+     * LG Response: Yes
+     */
+
+   sm_em_qos_struct em_requested_qos;
+   sm_em_qos_struct em_minimum_qos;
+   sm_em_qos_struct em_negotiated_qos;
+
+   kal_uint8    pkt_flow_id;
+   kal_uint8    radio_priority;
+   kal_uint16   req_n201u;
+
+   #ifdef __REL7__
+   sm_em_mode_selected_bcm_enum     selected_bcm ;
+   #endif // __REL7__
+
+   sm_em_mode_selected_etft_enum    selected_etft ;
+   sm_em_mode_im_cn_signaling_flag_enum  em_im_cn_signaling_flag; // non-IMS PDP or IMS PDP
+   kal_uint8 em_t3380_retry_count; // Retransmission count of PDP Activation
+   
+} sm_em_pdp_info_struct;
+
+/* Poying: Need to define enum so Catcher can get from database */
+typedef enum{
+      SM_EM_MAX_PDP_SUPPORT = 11 // nsapi 5~15
+} sm_em_max_pdp_support_enum;
+
+
+typedef struct{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+   kal_uint8    num_of_active_pdp_context;
+   sm_em_pdp_info_struct pdp; // nsapi 5~15
+} em_sm_info_struct;
+
+typedef em_sm_info_struct em_sm_nsapi5_status_ind_struct;
+typedef em_sm_info_struct em_sm_nsapi6_status_ind_struct;
+typedef em_sm_info_struct em_sm_nsapi7_status_ind_struct;
+typedef em_sm_info_struct em_sm_nsapi8_status_ind_struct;
+typedef em_sm_info_struct em_sm_nsapi9_status_ind_struct;
+typedef em_sm_info_struct em_sm_nsapi10_status_ind_struct;
+typedef em_sm_info_struct em_sm_nsapi11_status_ind_struct;
+typedef em_sm_info_struct em_sm_nsapi12_status_ind_struct;
+typedef em_sm_info_struct em_sm_nsapi13_status_ind_struct;
+typedef em_sm_info_struct em_sm_nsapi14_status_ind_struct;
+typedef em_sm_info_struct em_sm_nsapi15_status_ind_struct;
+
+#endif /* _EM_SM_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_sms_public_struct.h b/mcu/interface/service/em/em_sms_public_struct.h
new file mode 100644
index 0000000..84dc60d
--- /dev/null
+++ b/mcu/interface/service/em/em_sms_public_struct.h
@@ -0,0 +1,121 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_sms_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef _EM_SMS_PUBLIC_STRUCT_H
+#define _EM_SMS_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+
+typedef enum
+{
+    EM_MO_SMS,
+    EM_MT_SMS
+} em_sms_msg_direction_enum;
+
+
+typedef enum
+{
+    EM_SMS_OVER_SGS,
+    EM_SMS_OVER_IMS
+} em_sms_domain_enum;
+
+typedef enum
+{
+    EM_SMS_START,
+    EM_SMS_SUCCESS,
+    EM_SMS_FAIL
+} em_sms_event_enum;
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+} em_mt_sms_over_sgs_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    em_sms_msg_direction_enum msg_direction;    
+    em_sms_domain_enum domain;                
+    em_sms_event_enum sms_event;
+    kal_uint32 fail_cause; 
+}em_sms_info_ind_struct;
+
+#endif /* _EM_SMS_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_sndcp_public_struct.h b/mcu/interface/service/em/em_sndcp_public_struct.h
new file mode 100644
index 0000000..c432989
--- /dev/null
+++ b/mcu/interface/service/em/em_sndcp_public_struct.h
@@ -0,0 +1,91 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_sndcp_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef _EM_SNDCP_PUBLIC_STRUCT_H
+#define _EM_SNDCP_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+
+
+
+typedef struct
+{
+    kal_uint32  num_reasm_failure;
+} sndcp_em_info_struct;
+
+#endif /* _EM_SNDCP_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_ss_public_struct.h b/mcu/interface/service/em/em_ss_public_struct.h
new file mode 100644
index 0000000..1d762e0
--- /dev/null
+++ b/mcu/interface/service/em/em_ss_public_struct.h
@@ -0,0 +1,99 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+ /*******************************************************************************
+ * Filename:
+ * ---------
+ *   em_ss_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef _EM_SS_PUBLIC_STRUCT_H
+#define _EM_SS_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+
+
+/* SS structure */
+typedef struct
+{
+    kal_uint8   ss_state;   //ciss state
+    kal_uint8   ti; //transaction identifier
+    kal_uint8   call_id;    //call id
+    kal_uint8   invoke_id;  //invoke id
+    kal_uint8   num_invoke; //number of active invokes
+    kal_uint8   op_code;    //operation code
+    kal_uint8   ss_code;    //supplementary service code
+    kal_uint8   bs_code;    //basic service code
+} ss_em_info_struct;
+
+
+#endif /* _EM_SS_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_struct.h b/mcu/interface/service/em/em_struct.h
new file mode 100644
index 0000000..f4d7f3b
--- /dev/null
+++ b/mcu/interface/service/em/em_struct.h
@@ -0,0 +1,617 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode related structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_STRUCT_H
+#define _EM_STRUCT_H
+
+#include "ps_public_struct.h"
+#include "kal_public_defs.h" //MSBB change #include "stack_config.h"
+#include "kal_general_types.h"
+/*Justin: RHR*/
+//#include "rrm_context.h"
+//#include "meas_context.h"
+#include "em_public_struct.h"
+//#include "em_l4_common_public_struct.h"
+
+#define MAX_NUM_CELL_LOCK_ARFCN 3
+
+typedef enum
+{
+   CELL_LOCK_MODE_CONDITIONED = 0,
+   CELL_LOCK_MODE_ABSOLUTE
+} em_cell_lock_mode_enum;
+
+typedef struct
+{
+   kal_uint32       mod_id; 
+   em_info_enum     em_info_event;
+   kal_uint8        mod_bit_mask;
+} em_info_req_mod_tbl_struct;
+
+/* To identify the EM request from */
+/* Do not change the order of the enum value */
+typedef enum                     
+{
+	EM_FROM_ELT, //replace EM_FROM_CATCHER
+	EM_FROM_RMMI,	/* tommy add for RMMI EM support */
+	EM_FROM_MTF
+} em_source_enum;
+
+typedef enum
+{
+	EM_CAUSE_OK,
+	EM_CAUSE_INVALID_INFO_TYPE
+} em_err_cause_enum;
+
+/*Byron: 2007/03/14: Add for request to RR from Engineering mode*/
+typedef enum
+{
+    /*For quest to disable MT or not*/
+    EM_MT_NOT_ALLOWED
+} em_feature_enum;
+
+/*Byron: 2007/03/14: Add for request to RR from Engineering mode*/
+typedef enum
+{
+    /*For turn on the feature or not*/
+    EM_FEATURE_ON,
+    EM_FEATURE_OFF
+} em_feature_state_enum;
+
+/* local parameter structures */
+
+/* For L4CPS_EM_UPDATE_REQ */
+typedef struct
+{
+  LOCAL_PARA_HDR
+  em_source_enum   em_src;
+  em_info_status_enum  info_request[NUM_OF_EM_INFO];
+} l4cps_em_update_req_struct;
+
+/*Byron: 2006/02/15: User can trigger RR to suspend cell reselection procedure in all state or transfer state*/
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_uint8 suspend_status; /* 0: in all RR states, 1: in RR GPRS transfer */
+} l4cps_em_cell_resel_suspend_req_struct; 
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_bool result; /* 0: in all RR states, 1: in RR GPRS transfer */
+   kal_uint8 cause;
+}l4cps_em_cell_resel_suspend_cnf_struct;
+
+typedef l4cps_em_cell_resel_suspend_cnf_struct l4cps_em_cell_resel_resume_cnf_struct;
+
+/*Byron: 2006/08/06: Add for cell lock*/
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool band_indicator; /* 0: not 1900 band cell, 1: 1900 band cell*/
+    kal_uint32 enabled_bitmap; /* Ex: 00000101 => The 1st and 3rd index of the array "lock_arfcn" are valid */
+    kal_uint16 lock_arfcn[MAX_NUM_CELL_LOCK_ARFCN]; /* The cell's arfcn to be locked*/
+    em_cell_lock_mode_enum mode;
+}l4cps_em_set_cell_lock_req_struct;
+
+/*Byron: 2006/08/06: Add for cell lock*/
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool result; /*0: Turn off, 1: Turn on*/
+}l4cps_em_set_cell_lock_cnf_struct;
+
+/*Byron: 2006/08/06: Add for cell lock*/
+/* Zengyu 20100807: add header for this structure */
+typedef struct{
+    LOCAL_PARA_HDR
+    kal_bool result;
+    kal_bool band_indicator; /*0: not 1900 band cell, 1: 1900 band cell*/
+    kal_uint32 enabled_bitmap; /* Ex: 00000101 => The 1st and 3rd index of the array "lock_arfcn" are valid */
+    kal_uint16 lock_arfcn[MAX_NUM_CELL_LOCK_ARFCN]; /* The cell's arfcn to be locked*/
+    em_cell_lock_mode_enum mode;
+}l4cps_em_get_cell_lock_cnf_struct;
+
+/*Byron: 2007/03/14: Add for request to RR from Engineering mode*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_feature_enum em_feature;
+    em_feature_state_enum em_feature_state;
+} l4cps_em_feature_command_req_struct;
+
+/*Byron: 2007/03/14: Add for request to RR from Engineering mode*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_feature_enum em_feature;
+    kal_bool result; /*0: Fail, 1: Success*/
+} l4cps_em_feature_command_cnf_struct;
+
+/* For L4CPS_EM_START_CNF, L4CPS_EM_STOP_CNF */
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_bool	result;
+   kal_uint8	cause;
+   request_info_type	info_request;
+} l4cps_em_start_cnf_struct;
+
+typedef l4cps_em_start_cnf_struct l4cps_em_stop_cnf_struct;
+
+/*091020 shuang SHUANG_EM_UT shuang move to the buttom of the rr em structures 
+  because codegen, the struct declare should be in front of 
+  the using*/
+  
+/* For L4CPS_EM_STATUS_IND */
+/* James 2012/8/15 */
+#ifndef __MTK_TARGET__
+typedef struct l4cps_em_info_req_struct_tag
+#else
+typedef struct
+#endif
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+} l4cps_em_info_req_struct;
+
+typedef l4cps_em_info_req_struct l4cps_em_status_ind_struct;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+/* brwang, 20070727, [EM Cell ID Lock function] { */    
+
+#define L4C_MAX_EM_CELL_LOCK_NUM 16
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_uint8		 num_of_nc_lai;
+   rr_em_lai_info_struct nc_lai[L4C_MAX_EM_CELL_LOCK_NUM];
+} l4cps_em_set_cell_id_lock_req_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_bool result; 
+} l4cps_em_set_cell_id_lock_cnf_struct;
+
+/* brwang, 20070727, [EM Cell ID Lock function]  } */    
+
+/*mtk00924: 061106 add for network event notify*/
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_bool 	is_on;
+} l4cps_em_nw_event_notify_req_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_bool 	result;
+} l4cps_em_nw_event_notify_cnf_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8 group_id;
+	kal_uint32 event_id;
+} l4cps_em_nw_event_notify_ind_struct;
+
+
+/* this is the header for local parameter of EM information 
+   please define your EM local parameter as below:
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    your_em_info_type your_em_info;
+} your_em_struct;
+*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+} l4cps_em_info_ind_hdr_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_char event[MAX_MD_EVENT_STRLEN];
+} l4cps_md_event_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_bool is_turned_on;
+} l4cps_event_report_req_struct;
+
+typedef l4cps_em_info_ind_hdr_struct ipca_em_info_ind_struct;
+#endif /* ~_EM_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_uas_public_struct.h b/mcu/interface/service/em/em_uas_public_struct.h
new file mode 100644
index 0000000..494d1b2
--- /dev/null
+++ b/mcu/interface/service/em/em_uas_public_struct.h
@@ -0,0 +1,1746 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_uas_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_UAS_PUBLIC_STRUCT_H
+#define _EM_UAS_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+#include "em_as_common_public_struct.h"
+#include "em_l4_common_public_struct.h"
+#include "em_nwsel_common_public_struct.h"
+
+
+#ifdef __UMTS_RAT__    //For MAUI, MONZA2G exclude 3G
+/**
+ * Remus 20080626
+ * Added MEME EM info in Catcher
+ */
+
+typedef enum
+{
+    MEME_EM_EVENT_TYPE1_INVALID,
+    MEME_EM_EVENT_TYPE1_E1A,
+    MEME_EM_EVENT_TYPE1_E1B,
+    MEME_EM_EVENT_TYPE1_E1C,
+    MEME_EM_EVENT_TYPE1_E1D,
+    MEME_EM_EVENT_TYPE1_E1E,
+    MEME_EM_EVENT_TYPE1_E1F,
+
+    MEME_EM_EVENT_TYPE1_E1G,
+    MEME_EM_EVENT_TYPE1_E1H,
+    MEME_EM_EVENT_TYPE1_E1I,
+
+    MEME_EM_EVENT_TYPE1_E1J
+} MemeEmInfoEventType1;
+
+
+typedef enum
+{
+    MEME_EM_EVENT_TYPE2_INVALID,
+    MEME_EM_EVENT_TYPE2_E2A,
+    MEME_EM_EVENT_TYPE2_E2B,
+    MEME_EM_EVENT_TYPE2_E2C,
+    MEME_EM_EVENT_TYPE2_E2D,
+    MEME_EM_EVENT_TYPE2_E2E,
+    MEME_EM_EVENT_TYPE2_E2F
+} MemeEmInfoEventType2;
+
+typedef enum
+{
+    MEME_EM_EVENT_TYPE3_INVALID,
+    MEME_EM_EVENT_TYPE3_E3A,
+    MEME_EM_EVENT_TYPE3_E3B,
+    MEME_EM_EVENT_TYPE3_E3C,
+    MEME_EM_EVENT_TYPE3_E3D
+} MemeEmInfoEventType3;
+
+typedef enum
+{
+    MEME_EM_EVENT_INVALID,
+    // E1x:
+    // E2x:
+    // E3x:
+    MEME_EM_EVENT_E3A,
+    MEME_EM_EVENT_E3B,
+    MEME_EM_EVENT_E3C,
+    MEME_EM_EVENT_E3D
+} MemeEmInfoEvent;
+
+
+
+typedef enum
+{
+    MEME_EM_MEAS_QTY_INVALID,
+    MEME_EM_MEAS_QTY_RSCP,
+    MEME_EM_MEAS_QTY_ECN0,
+    MEME_EM_MEAS_QTY_PATHLOSS
+} MemeEmMeasQty;
+
+typedef enum
+{
+    MEME_EM_MEAS_QTY_FOR_OTHER_RAT_INVALID,
+    MEME_EM_MEAS_QTY_GSM_RSSI,
+    MEME_EM_MEAS_QTY_EUTRA_RSRP,
+    MEME_EM_MEAS_QTY_EUTRA_RSRQ
+} MemeEmMeasQtyForOtherRAT;
+
+
+typedef struct {
+    kal_uint8   MeasId;
+    MemeEmInfoEventType1   EventType;   // 1: 1B, 2: 1B, 3: 1C, 4: 1D, 5: 1E, 6: 1F, 10: 1J
+    MemeEmMeasQty MeasQty;              //  1: RSCP, 2: EcN0, 3: pathloss
+    kal_uint8   fc;
+    kal_int16   Threshold;
+    kal_int16   W;                      // FDD only
+    kal_int16   ReportingRange;         // FDD only
+    kal_int16   Hystersis;              //unit: 0.5dB, real_value = Hystersis/2
+    kal_uint16  TimeToTrigger;
+} event_1_struct;
+
+typedef struct {
+    kal_uint8   MeasId;
+    MemeEmInfoEventType2   EventType;   // 1: 2A, 2: 2B, 3: 2C, 4: 2D, 5: 2E, 6: 2F
+    MemeEmMeasQty MeasQty;              //  1: RSCP, 2: EcN0, 3: pathloss
+    kal_uint8   fc;
+    kal_int16   UsedT;                  // threshold for used freq
+    kal_int16   nonUsedT;               // threshold for non-used freq
+    kal_int16   UsedW;                  // FDD only
+    kal_int16   nonUsedW;               // FDD only
+    kal_int16   Hystersis;              //unit: 0.5dB, real_value = Hystersis/2
+    kal_uint16  TimeToTrigger;
+} event_2_struct;
+
+typedef struct {
+    kal_uint8   MeasId;                 // 0: invalid, range 1~32
+    MemeEmInfoEventType3   EventType;   // 0: invalid, 1: 3A, 2: 3B, 3: 3C, 4: 3D
+    MemeEmMeasQty MeasQty;              // 0: invalid, 1: RSCP, 2: EcN0, 3: pathloss
+    MemeEmMeasQtyForOtherRAT MeasQtyOtherRAT;   // 0: invalid, 1: GSM_RSSI, 2: EUTRA_RSRP, 3: EUTRA_RSRQ
+    kal_uint8   fc_OtherSys;                     // 0xFF: invalid, range 0~ 19, Note: for other RAT (GSM or LTE)
+    kal_uint8   fc_OwnSys;              // 0xFF: invalid, range 0~ 19, Note: for UMTS RAT
+    kal_int16   ThresholdOwnSystem;      // 0xFFFF: invalid, step unit: 0.25 dB, real_value = ThresholdOwnSystem/4
+    kal_int16   ThresholdOtherSystem;    // 0xFFFF: invalid, step unit: 0.25 dB, real_value = ThresholdOtherSystem/4
+
+    kal_uint8   W;                      // 0xFF: invalid, FDD only, 0~2 with 0.1 step
+
+    kal_uint8   Hystersis;              // 0xFF: invalid, step unit: 0.5dB, real_value = Hystersis/2, range 0~7.5
+    kal_uint16  TimeToTrigger;          // 0xFFFF: invalid, range 0~5000
+} event_3_struct;
+
+typedef struct {
+    kal_uint8   MeasId;                 // 0: invalid, range 1~32
+    MemeEmInfoEvent   EventType;        // 0: invalid, 31: 3A, 32: 3B, 33: 3C, 34: 3D
+} report_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 num_event_info;
+    event_1_struct em_event_info[7];
+} tdd_em_meme_event_type_1_parameter_info_ind_struct, fdd_em_meme_event_type_1_parameter_info_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 num_event_info;
+    event_2_struct em_event_info[6];
+} tdd_em_meme_event_type_2_parameter_info_ind_struct, fdd_em_meme_event_type_2_parameter_info_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 num_event_info;
+    event_3_struct em_event_info[4];
+} tdd_em_meme_event_type_3_parameter_info_ind_struct, fdd_em_meme_event_type_3_parameter_info_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 num_trch;
+    trch_bler_struct TrCHBler[8];
+} em_meme_periodic_bler_report_ind;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    report_struct em_report_info;
+} fdd_em_meme_report_info_ind_struct, tdd_em_meme_report_info_ind_struct;
+
+
+
+
+
+
+
+typedef struct
+{
+    kal_uint16 UARFCN;
+    kal_uint16 CELLPARAID;
+    kal_int32 RSCP; /* value = RSCP/4096 */
+    kal_int32 ISCP[6]; /* value = ISCP/4096, timeslot 1 - 6 */
+    kal_bool isServingCell;/* if it is KAL_TRUE, MMI or Catcher display the cell in Red*/
+	kal_uint8 band;  /* value  = 0-invalid, = 1-A band,  =2-B band, ...,  = 6-F band */
+} TDD_meme_umts_cell_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint16 workingFreq;
+    kal_uint8 num_cells;
+    kal_uint8 supportBand; //bitmap: bit0-A Band, bit1-B Band, bit2-C Band, bit3-D Band, bit4-E Band, bit5-F Band
+    kal_uint8 sinr; // 0~254, 0xff means this value is invalid
+    TDD_meme_umts_cell_struct umts_cell_list[64];
+} tdd_em_meme_dch_umts_cell_info_ind_struct;
+
+typedef struct uas_cell_plmn_id
+{
+    kal_uint16              mcc;
+    kal_uint16              mnc;
+} uas_cell_plmn_id;
+
+/* BIT STRING URA-Identity */
+typedef struct meme_umts_ura_identity
+{
+   kal_uint8                numBits;
+   kal_uint8                stringData[2];
+}
+meme_umts_ura_identity;
+
+typedef enum {
+    MEME_EM_ACTIVE_SET,
+    MEME_EM_INTRA_MONITORED,
+    MEME_EM_INTRA_DETECTED,
+    MEME_EM_INTER_MONITORED,
+    MEME_EM_INVALID         = 0xff
+} meme_em_umts_cell_type;
+
+typedef struct
+{
+    kal_uint16              UARFCN;
+    kal_uint16              PSC;    // FDD only
+    kal_int32               RSCP;   /* value = RSCP/4096 */
+    kal_int32               ECN0;   /* value = ECN0/4096 */ // FDD only
+    meme_em_umts_cell_type  cell_type;
+    kal_uint8               Band;
+    kal_int32               RSSI;
+    kal_uint32              Cell_identity;
+
+    kal_uint8               validity;
+#define MEME_UMTS_CELL_INFO_LAC_VALID 0x01
+#define MEME_UMTS_CELL_INFO_RAC_VALID 0x02
+#define MEME_UMTS_CELL_INFO_CID_VALID 0x04
+
+    /* Extended Cell Info */
+    kal_uint8               num_plmn_id;
+    uas_cell_plmn_id        plmn_id_list[6];
+    kal_uint16              lac;
+    kal_uint8               rac;
+    kal_uint8               num_ura_id;
+    meme_umts_ura_identity  uraIdentity[8];
+	kal_uint16              UARFCN_UL;
+} FDD_meme_umts_cell_struct;
+
+typedef struct
+{
+    kal_uint8 frequency_band;
+    kal_uint16 arfcn;
+    kal_uint8 bsic;
+    kal_int16 rssi; /* value = rssi /4 */
+    kal_bool verified;
+} meme_gsm_cell_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 num_cells;
+    meme_gsm_cell_struct gsm_cell_list[6];
+} fdd_em_meme_dch_gsm_cell_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 num_cells;
+    meme_gsm_cell_struct gsm_cell_list[6];
+} tdd_em_meme_dch_gsm_cell_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_bool with_2g_neighbor;
+    kal_bool is_gsm_ncell_meas_ongoing;
+} tdd_em_meme_gsm_ncell_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_bool with_4g_neighbor;
+    kal_bool is_lte_ncell_meas_ongoing;
+} tdd_em_meme_lte_ncell_info_ind_struct;
+
+
+/* 20101006
+ * H-Serving cell information is added into EM */
+typedef struct
+{
+   kal_uint16 HSDSCH_Serving_UARFCN;     /* uarfcn of HS-DSCH serving cell, 0xFFFF means invalid */
+   kal_uint16 HSDSCH_Serving_PSC;        /* psc of HS-DSCH serving cell, 0xFFFF means invalid */
+   kal_uint16 EDCH_Serving_UARFCN;       /* uarfcn of E-DCH serving cell, 0xFFFF means invalid */
+   kal_uint16 EDCH_Serving_PSC;          /* psc of E-DCH serving cell, 0xFFFF means invalid */
+} meme_em_info_h_serving_cell_ind_struct;
+
+/**
+ * Gibran 20061228
+ * Added Cell Status for EM in Catcher
+ * Gibran 20080627
+ * Modified CSCE structure for EM in Catcher/MMI.
+ */
+typedef enum
+{
+   EM_3G_IN_SERV_ABOVE_S,  /* green button */
+   EM_3G_IN_SERV_BELOW_S,  /* yellow button */
+   EM_3G_OUT_OF_SERV,      /* orange button */
+   EM_3G_NO_SERV,          /* red button */
+   EM_3G_NO_CHANGE         /* no change */
+} em_3g_service_status_enum;
+
+typedef enum
+{
+   EM_3G_RRC_IDLE,
+   EM_3G_RRC_CELL_FACH,
+   EM_3G_RRC_CELL_PCH,
+   EM_3G_RRC_URA_PCH,
+   EM_3G_RRC_CELL_DCH,
+   EM_3G_RRC_INACTIVE,
+   EM_3G_RRC_NO_CHANGE,
+   // RRCE R7 new states
+   EM_3G_RRC_CELL_FACH_HSDPA,
+   EM_3G_RRC_CELL_PCH_HSDPA_DATA,
+   EM_3G_RRC_CELL_PCH_HSDPA_PAGING,
+   EM_3G_RRC_URA_PCH_HSDPA_PAGING,
+   // RRCE R8 new states
+   EM_3G_RRC_CELL_FACH_HSUPA,
+   EM_3G_RRC_CELL_PCH_HSUPA_DATA,
+   EM_3G_RRC_CELL_PCH_READYtoHSPA
+} em_3g_rrc_state_enum;
+
+typedef enum
+{
+   EM_3G_PLMNSEARCH_NO_CHANGE,
+   EM_3G_PLMNSEARCH_ANY_START,
+   EM_3G_PLMNSEARCH_GIVEN_START,
+   EM_3G_PLMNSEARCH_ANY_SUCCESS,
+   EM_3G_PLMNSEARCH_ANY_NO_CELL,
+   EM_3G_PLMNSEARCH_GIVEN_SUCCESS,
+   EM_3G_PLMNSEARCH_GIVEN_NO_CELL,
+   EM_3G_PLMNSEARCH_ABORT
+} em_3g_rrc_plmn_search_status_enum;
+
+typedef enum
+{
+    EM_3G_OOS_NONE,
+    EM_3G_RL_FAILURE,
+    EM_3G_CELL_BARRED,
+    EM_3G_S_CRITERIA_FAIL_IDLE_MODE,
+    EM_3G_S_CRITERIA_FAIL_FACH_MODE,
+    EM_3G_S_CRITERIA_FAIL_PCH_MODE,
+    EM_3G_RACH_ACCESS_FAILURE,
+    EM_3G_SIB_COLLECTION_FAILURE,
+    EM_3G_MISCELLANEOUS
+} em_3g_rrc_out_of_service_cause_enum;
+
+typedef struct
+{
+   em_3g_service_status_enum  service_status;               //MMI
+   em_3g_rrc_state_enum      umts_rrc_state;                //MMI
+   kal_uint16        uarfcn_DL;                             //MMI
+   /* if 0xFFFFFFFF means Invalid, set to empty; 0xFFFFFFFE means No Change. */
+   kal_uint16        psc;                                   //MMI
+   /* if 0xFFFFFFFF means Invalid, set to empty; 0xFFFFFFFE means No Change.*/
+
+   em_3g_rrc_plmn_search_status_enum plmn_search_status;
+   em_3g_rrc_out_of_service_cause_enum  out_of_service_cause;
+} fdd_uas_em_3g_status;
+
+typedef struct
+{
+   em_3g_service_status_enum  service_status;               //MMI
+   em_3g_rrc_state_enum      umts_rrc_state;                //MMI
+   kal_uint16        uarfcn_DL;                             //MMI
+   /* if 0xFFFFFFFF means Invalid, set to empty; 0xFFFFFFFE means No Change. */
+   kal_uint16        psc;                                   //MMI
+   /* if 0xFFFFFFFF means Invalid, set to empty; 0xFFFFFFFE means No Change.*/
+
+   kal_uint16        workingFreq;                           //MMI
+   /* if 0xFFFFFFFF means Invalid, set to empty; 0xFFFFFFFE means No Change. */
+   kal_uint16        uppch_Position;                       //MMI
+   /* if 0xFFFFFFFF means Invalid, set to empty; 0xFFFFFFFE means No Change.*/
+
+   kal_uint16    repetitionPeriod_dl;
+   /* if 0xFFFF means Invalid, set to empty; 0xFFFE means No Change. */
+   kal_uint16    repetitionLength_dl;
+   /* if 0xFFFF means Invalid, set to empty; 0xFFFE means No Change. */
+   kal_uint16    repetitionPeriod_ul;
+   /* if 0xFFFF means Invalid, set to empty; 0xFFFE means No Change. */
+   kal_uint16    repetitionLength_ul;
+   /* if 0xFFFF means Invalid, set to empty; 0xFFFE means No Change. */
+
+} tdd_uas_em_3g_status;
+
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   fdd_uas_em_3g_status  uas_3g_general_status;
+} fdd_em_urr_3g_general_status_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+    tdd_uas_em_3g_status  uas_3g_general_status;
+} tdd_em_urr_3g_general_status_ind_struct;
+
+#ifdef __UMTS_TDD128_MODE__
+typedef enum
+{
+   INTRA_TR_HHO,
+   INTRA_TM_HHO,
+   INTER_TR_HHO,
+   INTER_TM_HHO,
+   INTRA_TR_BHO,
+   INTRA_TM_BHO,
+   INTER_TR_BHO,
+   INTER_TM_BHO,
+   HHO_REVERT,
+   BHO_REVERT
+} em_3g_handover_type_enum; /* the enum name should be shown in MMI */
+
+typedef struct
+{
+   kal_uint16   primary_uarfcn_DL;
+   kal_uint16   working_uarfcn;
+   kal_uint16   physicalCellId;
+
+}em_3g_cell_info;
+
+typedef struct
+{
+   em_3g_handover_type_enum  service_status;
+   em_3g_cell_info           old_cell_info;
+   em_3g_cell_info           target_cell_info;
+} em_uas_handover_status;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   em_uas_handover_status  uas_3g_general_status;
+} em_uas_3g_tdd128_handover_sequence_ind_struct;
+
+#endif /*__UMTS_TDD128_MODE__*/
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+} em_rrce_3g4_redir_event_ind_struct;
+
+
+typedef enum
+{
+    TDD_RRC_CONN_NULL,
+    TDD_RRC_CONN_EST_INIT,/*when nas send est_req*/
+    TDD_RRC_CONN_ATMPTING,/*when send rrcConnReq to ADR*/
+    TDD_RRC_CONN_EST_FAIL,
+    TDD_RRC_CONN_ESTED, /*when send est_cnf(success)to NAS*/
+    TDD_RRC_CONN_REL,
+} tdd_em_rrc_conn_status_enum;
+
+typedef enum
+{
+    /*casue for est fail*/
+    TDD_RRC_CAUSE_EST_FAIL_REJ_CONGESTION = 0,
+    TDD_RRC_CAUSE_EST_FAIL_START = TDD_RRC_CAUSE_EST_FAIL_REJ_CONGESTION,
+    TDD_RRC_CAUSE_EST_FAIL_REJ_UNSPECIFIED,
+    TDD_RRC_CAUSE_EST_FAIL_RA_FAIL,
+    TDD_RRC_CAUSE_EST_FAIL_NO_SETUP,
+    TDD_RRC_CAUSE_EST_FAIL_AC_BARRED,
+    TDD_RRC_CAUSE_EST_FAIL_T312_EXP,
+    TDD_RRC_CAUSE_EST_FAIL_ABORTED,
+    TDD_RRC_CAUSE_EST_FAIL_GIBI_TAG_MISMATCH,
+    TDD_RRC_CAUSE_EST_FAIL_OTHER,
+
+    /*cause for conn rel*/
+    TDD_RRC_CAUSE_REL_START = 20,
+    TDD_RRC_CAUSE_REL_UTRAN_NORMAL_EVENT = TDD_RRC_CAUSE_REL_START,
+    TDD_RRC_CAUSE_REL_UTRAN_UNSPECIFIED,
+    TDD_RRC_CAUSE_REL_UTRAN_PRE_EMPTIVE_RELEASE,
+    TDD_RRC_CAUSE_REL_UTRAN_CONGESTION,
+    TDD_RRC_CAUSE_REL_UTRAN_REEST_REJECT,
+    TDD_RRC_CAUSE_REL_UTRAN_DIRECTED_SIGNALING_CONN_REEST,
+    TDD_RRC_CAUSE_REL_UTRAN_USER_INACTIVITY,
+    TDD_RRC_CAUSE_REL_CONN_INACTIVITY,
+    TDD_RRC_CAUSE_REL_RLF,
+    TDD_RRC_CAUSE_REL_SECURITY_CAP_MISMATCH,
+    TDD_RRC_CAUSE_REL_NAS_AUTH_FAIL,
+    TDD_RRC_CAUSE_REL_CSCE_REL_CH_REQ,
+    TDD_RRC_CAUSE_REL_RATCM_DEACTIBATE,
+
+    /*common cause*/
+    TDD_RRC_CAUSE_NO_SERVICE = 254,
+    TDD_RRC_CAUSE_NULL = 255,
+} tdd_em_rrc_cause_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum  em_info;
+
+    tdd_em_rrc_conn_status_enum rrc_conn_status;
+    kal_uint8 est_cause;//RRC_EstablishmentCause:0-31, 255 means est_cause_NULL.
+    tdd_em_rrc_cause_enum rrc_cause;
+} tdd_em_rrce_conn_status_ind_struct;
+
+
+typedef struct
+{
+   kal_uint16        uarfcn_DL;     //MMI
+   kal_uint16        psc;           //MMI
+   kal_uint32        Sib_Scheduled; //MMI
+   /* MIB      0x0001
+      SB1      0x0002
+      SB2      0x0004
+      SIB1     0x0008
+      SIB2     0x0010
+      SIB3     0x0020
+      SIB4     0x0040
+      SIB5     0x0080
+      SIB6     0x0100
+      SIB7     0x0200
+      SIB11    0x0400
+      SIB12    0x0800
+      SIB18    0x1000
+      SIB16    0x4000
+      SIB5bis  0x8000
+      SIB11bis 0x00010000
+      SIB19    0x00020000
+      SIB20    0x00040000
+      SIB21    0x00080000
+      SIB22    0x00100000
+      */
+   kal_uint32        received_Sib_Type;   //MMI
+   kal_bool          is_finished;      //MMI
+/*    20110524 YenChih
+  *    kal_uint8 deferredSIB11 is only used in UMTS_R7 for catcher to display deferred SIB11 related information
+  *                 0x00: status not change,
+  *                 0x01: deferred SIB11 is on-going,
+  *                 0x02: deferred SIB11 is finished
+  */
+   kal_uint8        deferredSIB11_ongoing;   //MMI
+#ifdef __UMTS_TDD128_MODE__
+
+   kal_uint8        cell_type;             //MMI
+                /*0x00 invalid (clear Cell_type)
+                  0x01 r4 cell
+                  0x03 DPA CELL
+                  0X05 UPA CELL
+                  0X07 UPA+DPA CELL
+                */
+#endif /*UMTS_TDD128_MODE*/
+} sibe_em_sib_status;
+
+/* Viola 20080627, sibe_em_sib_status as the discussion with Shyla,
+Sib_Scheduled brings a bitmask for several SIBs, which indicate the SIBs UE needs to receive. Catcher should gray the other SIBs not contained in the variable. Sib_Scheduled would change 0~2 times during SIB collection, I suggest that Catcher could store the current Sib_Scheduled value and compare it with the latest received one.
+received_Sib_Type: This variable may contain one or several SIBs. Catcher shall mark "v" for the SIB(s) contained in this variable, but shall all keep the v of the other SIBs, which is marked by pervious "sibe_em_sib_status" messages.
+is_finished: is_finished sets to True, it means that the current SIB Collection finishes. When a new collection starts, Catcher shall clean the "v" mark of all SIBs.
+*/
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   sibe_em_sib_status      sib_status;
+} sibe_em_sib_status_ind_struct;
+
+typedef enum
+{
+   EM_UMTS_SUPPORT,
+   EM_HSDPA_SUPPORT,
+   EM_HSUPA_SUPPORT,
+   EM_HSDPA_UPA_SUPPORT
+}csce_em_serv_cell_hspa_status;
+
+typedef struct
+{
+   kal_uint8         cellidx;
+   kal_uint16        uarfcn_DL;   /* UARFCN */  //MMI
+   kal_uint16        uarfcn_UL;
+   kal_uint16        psc;                       //MMI
+   kal_uint16        DL_BW;  // in kHz
+   kal_uint16        UL_BW;  // in kHz
+   kal_bool          is_s_criteria_satisfied;   //MMI
+   /* is_s_criteria_satisfied, 0: FALSE, 1: TRUE */
+   kal_int8          qQualmin;  /* Qualmin */   //MMI
+   kal_int8          qRxlevmin; /* Qrxlevmin */ //MMI
+   /* the following value should be divided by 4096, the result may be float */
+   kal_int32         srxlev;                    //MMI
+   kal_int32         squal;                     //MMI
+   kal_int32         rscp;                      //MMI
+   kal_int32         ec_no;                     //MMI
+   kal_uint16        cycleLength;               //MMI
+/* number as k, value is 2k/100 in sec, float */
+   kal_uint8         quality_measure;   /* 0: RSCP, 1: EcN0 */ //MMI
+   /**
+    * Dennis Weng 20101015
+    * add band, rssi, cell_identity
+    */
+   kal_uint8         band;
+   kal_int32         rssi;
+   kal_uint32        cell_identity;
+#ifdef __UMTS_R8__
+/* csg_id: 0xFFFFFFFF means not show this csg_id */
+   kal_uint32        csg_id;
+/* apbcr_priority: -2 means not show apbcr_priority, Sprio_search1, Sprio_search2, and Threshserv_low */
+   kal_int8          apbcr_priority;             //MMI
+   kal_uint8         sprio_search1;              //MMI
+   kal_uint8         sprio_search2;              //MMI
+   kal_uint8         threshserv_low;             //MMI
+   kal_uint8         threshserv_low2;            //MMI, 0xFF means invalid
+#endif
+
+   /* AT&T EM mode */
+   kal_uint8         multi_plmn_count;
+   plmn_struct       multi_plmn_id[6];
+
+   kal_bool          lac_valid;
+   kal_uint16        lac;
+
+   kal_bool          rac_valid;
+   kal_uint8         rac;
+
+   kal_bool          ura_valid;
+   kal_uint8         num_ura_id;
+   meme_umts_ura_identity uraIdentity[8];
+
+   csce_em_serv_cell_hspa_status hspa_status;
+
+#ifdef __LTE_RAT__
+#ifdef __UMTS_R11__
+   kal_uint8         sib19CellFachMeasInd;
+   kal_uint8         eutraRachReportNumBits;
+   kal_uint8         eutraRachReportStringData;
+#endif
+#endif
+   kal_int8          primaryCPICH_TX_Power;
+   kal_int8          ul_interference;
+   kal_bool          tx_diversityIndicator;
+} FDD_csce_em_serv_cell_s_status;
+
+typedef struct
+{
+   kal_uint8         cellidx;
+   kal_uint16        uarfcn_DL;   /* UARFCN */  //MMI
+   kal_uint16        psc;                       //MMI
+   kal_bool          is_s_criteria_satisfied;   //MMI
+   /* is_s_criteria_satisfied, 0: FALSE, 1: TRUE */
+   kal_int8          qQualmin;  /* Qualmin */   //MMI
+   kal_int8          qRxlevmin; /* Qrxlevmin */ //MMI
+   /* the following value should be divided by 4096, the result may be float */
+   kal_int32         srxlev;                    //MMI
+   kal_int32         squal;                     //MMI
+   kal_int32         rscp;                      //MMI
+   kal_uint16        cycleLength;               //MMI
+   /**
+    * Dennis Weng 20101015
+    * add band, rssi, cell_identity
+    */
+   kal_uint8         band;
+   kal_int32         rssi;
+   kal_uint32        cell_identity;
+#ifdef __UMTS_R8__
+/* csg_id: 0xFFFFFFFF means not show this csg_id */
+   kal_uint32        csg_id;
+/* apbcr_priority: -2 means not show apbcr_priority, Sprio_search1, Sprio_search2, and Threshserv_low */
+   kal_int8          apbcr_priority;             //MMI
+   kal_uint8         sprio_search1;              //MMI
+   kal_uint8         sprio_search2;              //MMI
+   kal_uint8         threshserv_low;             //MMI
+   kal_uint8         threshserv_low2;            //MMI, 0xFF means invalid
+#endif
+} tdd_csce_em_serv_cell_s_status;
+
+typedef struct
+{
+    kal_uint8 multi_plmn_count;
+    plmn_struct multi_plmn_id[6];
+} csce_em_info_multiple_plmn_struct;
+
+typedef struct
+{
+   kal_uint8         cellidx;
+   kal_uint16        uarfcn_DL;                 //MMI
+   kal_uint16        psc;                       //MMI
+   kal_bool          is_s_criteria_satisfied;   //MMI
+/* is_s_criteria_satisfied, 0: FALSE, 1: TRUE */
+   kal_int8          qQualmin;  /* Qualmin */   //MMI
+   kal_int8          qRxlevmin; /* Qrxlevmin */ //MMI
+   /* the following value should be divided by 4096, the result may be float */
+   kal_int32         srxlev;                    //MMI
+   kal_int32         squal;                     //MMI
+   kal_int32         rscp;                      //MMI
+   kal_int32         ec_no;                     //MMI
+#ifdef __UMTS_R8__
+/* apbcr_priority: -2 means not show apbcr_priority, Threshx_high, and Threshx_low */
+   kal_int8          apbcr_priority;             //MMI
+   kal_uint8         threshx_high;               //MMI
+   kal_uint8         threshx_low;                //MMI
+   kal_uint8         threshx_high2;              //MMI, 0xFF means invalid
+   kal_uint8         threshx_low2;               //MMI, 0xFF means invalid
+#endif
+
+   /* AT&T EM mode */
+   kal_uint32        cell_identity;
+
+   kal_bool          multi_plmn_valid;
+
+   kal_uint8         multi_plmn_count;
+   plmn_struct       multi_plmn_id[6];
+
+   kal_bool          lac_valid;
+   kal_uint16        lac;
+
+   kal_bool          rac_valid;
+   kal_uint8         rac;
+
+   kal_bool          ura_valid;
+   kal_uint8         num_ura_id;
+   meme_umts_ura_identity uraIdentity[8];
+} FDD_csce_em_neigh_cell_s_status;
+
+typedef struct
+{
+   kal_uint8         cellidx;
+   kal_uint16        uarfcn_DL;                 //MMI
+   kal_uint16        psc;                       //MMI
+   kal_bool          is_s_criteria_satisfied;   //MMI
+/* is_s_criteria_satisfied, 0: FALSE, 1: TRUE */
+   kal_int8          qQualmin;  /* Qualmin */   //MMI
+   kal_int8          qRxlevmin; /* Qrxlevmin */ //MMI
+   /* the following value should be divided by 4096, the result may be float */
+   kal_int32         srxlev;                    //MMI
+   kal_int32         squal;                     //MMI
+   kal_int32         rscp;                      //MMI
+   kal_int32         ec_no;                     //MMI
+#ifdef __UMTS_R8__
+/* apbcr_priority: -2 means not show apbcr_priority, Threshx_high, and Threshx_low */
+   kal_int8          apbcr_priority;             //MMI
+   kal_uint8         threshx_high;               //MMI
+   kal_uint8         threshx_low;                //MMI
+   kal_uint8         threshx_high2;              //MMI, 0xFF means invalid
+   kal_uint8         threshx_low2;               //MMI, 0xFF means invalid
+#endif
+} tdd_csce_em_neigh_cell_s_status;
+
+typedef struct
+{
+   kal_uint8         cellidx;
+   kal_uint16        arfcn;                     //MMI
+   kal_uint8         bsic;                      //MMI
+   kal_bool          is_bsic_verified;          //MMI
+   kal_bool          is_s_criteria_satisfied;   //MMI
+/* is_s_criteria_satisfied, 0: FALSE, 1: TRUE */
+   kal_uint8         freq_band;                 //MMI
+   /* 0: 1800Band, 1: 1900Band */
+   kal_int8          qRxlevmin; /* Qrxlevmin */ //MMI
+   /* the following value should be divided by 4096, the result may be float */
+   kal_int32         srxlev;                    //MMI
+   kal_int32         rssi;                      //MMI
+#ifdef __UMTS_R8__
+/* apbcr_priority: -2 means not show apbcr_priority, Threshx_high, and Threshx_low */
+   kal_int8          apbcr_priority;            //MMI
+   kal_uint8         threshx_high;              //MMI
+   kal_uint8         threshx_low;               //MMI
+   kal_uint8         threshx_high2;             //MMI, 0xFF means invalid
+   kal_uint8         threshx_low2;              //MMI, 0xFF means invalid
+#endif
+} FDD_csce_em_2G_neigh_cell_s_status;
+
+typedef struct
+{
+   kal_uint8         cellidx;
+   kal_uint16        arfcn;                     //MMI
+   kal_uint8         bsic;                      //MMI
+   kal_bool          is_bsic_verified;          //MMI
+   kal_bool          is_s_criteria_satisfied;   //MMI
+/* is_s_criteria_satisfied, 0: FALSE, 1: TRUE */
+   kal_uint8         freq_band;                 //MMI
+   /* 0: 1800Band, 1: 1900Band */
+   kal_int8          qRxlevmin; /* Qrxlevmin */ //MMI
+   /* the following value should be divided by 4096, the result may be float */
+   kal_int32         srxlev;                    //MMI
+   kal_int32         rssi;                      //MMI
+#ifdef __UMTS_R8__
+/* apbcr_priority: -2 means not show apbcr_priority, Threshx_high, and Threshx_low */
+   kal_int8          apbcr_priority;            //MMI
+   kal_uint8         threshx_high;              //MMI
+   kal_uint8         threshx_low;               //MMI
+   kal_uint8         threshx_high2;             //MMI, 0xFF means invalid
+   kal_uint8         threshx_low2;              //MMI, 0xFF means invalid
+#endif
+} tdd_csce_em_2G_neigh_cell_s_status;
+
+typedef struct
+{
+   kal_uint32        earfcn;                    //MMI
+   kal_uint16        pci;                       //MMI
+   kal_int32         rsrp;                      //MMI
+   kal_int32         rsrq;                      //MMI
+   kal_int32         Treselection;              //MMI
+   kal_int8          apbcr_priority;            //MMI
+
+   kal_int16         qRxlevmin;                 //MMI
+   kal_int8          qQualMinEUTRA;             //MMI
+
+   kal_uint8         threshx_high;              //MMI
+   kal_uint8         threshx_low;               //MMI
+   kal_uint8         threshx_high2;             //MMI, 0xFF means invalid
+   kal_uint8         threshx_low2;              //MMI, 0xFF means invalid
+} FDD_csce_em_LTE_neigh_cell_s_status;
+
+typedef struct
+{
+   kal_uint16        earfcn;                    //MMI
+   kal_uint16        pci;                       //MMI
+   kal_int32         rsrp;                      //MMI
+   kal_int32         rsrq;                      //MMI
+   kal_int32         Treselection;              //MMI
+   kal_int8          apbcr_priority;            //MMI
+
+   kal_int16         qRxlevmin;                 //MMI
+   kal_int8          qQualMinEUTRA;             //MMI
+
+   kal_uint8         threshx_high;              //MMI
+   kal_uint8         threshx_low;               //MMI
+   kal_uint8         threshx_high2;             //MMI, 0xFF means invalid
+   kal_uint8         threshx_low2;              //MMI, 0xFF means invalid
+} tdd_csce_em_LTE_neigh_cell_s_status;
+
+#ifdef __UMTS_R8__
+typedef enum
+{
+  EM_CLEAN_NEIGH_CELL_INFO,
+  EM_UPDATE_RH_NEIGH_CELL_INFO,
+  EM_UPDATE_APBCR_NEIGH_CELL_INFO
+}em_neigh_cell_operation_enum;
+#endif
+
+typedef struct
+{
+   kal_uint8      cellidx;
+   kal_uint8      celltype;               //MMI
+   /* 1: ServCell, 2: IntraFreq NeighCell, 3: InterFreq NeighCell, 4: InterRAT NeighCell, 5: Detected NieghCell */
+   kal_int32      r_value;                //MMI
+   /* the value should be divided by 4096, the result may be float */
+   kal_int32      Treselection;           //MMI
+   /* if ServCell, it's Tresel_s; others, it's Tresel_acc */
+   kal_uint8      chan_fail_type;         //MMI
+   /* 0: Normal, 1: BCH failure, 2: Attempt failure, 4: MainCH failure */
+} csce_em_cell_r_status;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_uint8               cell_count;
+   csce_em_cell_r_status   cell_r_status[9];      /* for the element over neigh_cell_count, left blank */
+} csce_em_cell_r_status_ind_struct;
+
+typedef struct
+{
+   kal_uint8      cellidx;
+   kal_int32      h_value;       //MMI
+   /* the value should be divided by 4096, the result may be float */
+   kal_uint8      HCS_PRIO;      //MMI
+} csce_em_cell_h_status;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_uint8               cell_count;
+   csce_em_cell_h_status   cell_h_status[9];      /* for the element over neigh_cell_count, left blank */
+} csce_em_cell_h_status_ind_struct;
+
+#ifdef __UMTS_R8__
+typedef struct
+{
+   kal_uint8      cellidx;
+   kal_uint8      celltype;               //MMI
+   /* 1: ServCell, 2: IntraFreq NeighCell, 3: InterFreq NeighCell, 4: InterRAT NeighCell, 5: Detected NieghCell */
+   kal_int32      Treselection;           //MMI
+   /* if ServCell, it's Tresel_s; others, it's Tresel_acc */
+   kal_uint8      chan_fail_type;         //MMI
+   /* 0: Normal, 1: BCH failure, 2: Attempt failure, 4: MainCH failure */
+} csce_em_cell_apbcr_status;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_uint8               cell_count;
+   csce_em_cell_apbcr_status   cell_apbcr_status[16];      /* for the element over neigh_cell_count, left blank */
+} csce_em_cell_apbcr_status_ind_struct;
+#endif
+
+/*  UL1 Engineering Mode  */
+
+
+
+/* BEGIN {2013} - NEW EM Architecture */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint8 multi_plmn_count;
+    plmn_struct multi_plmn_id[6];
+}
+fdd_em_csce_multiple_plmn_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint8 multi_plmn_count;
+    plmn_struct multi_plmn_id[6];
+}
+tdd_em_csce_multiple_plmn_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    em_as_oos_search_duration_enum	uas_oos_search_duration_status;
+
+}
+em_fdd_csce_em_search_duration_info_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   kal_uint8               neigh_cell_count;
+#ifdef __UMTS_R8__
+   em_neigh_cell_operation_enum      operation;
+#endif
+   em_RAT_type_enum        RAT_type;
+   union
+   {
+      FDD_csce_em_neigh_cell_s_status      neigh_cells[16];
+      FDD_csce_em_2G_neigh_cell_s_status   GSM_neigh_cells[16];
+      FDD_csce_em_LTE_neigh_cell_s_status  LTE_neigh_cells[16];
+   }
+   choice;
+   /* for the element over neigh_cell_count, left blank */
+}
+fdd_em_csce_neigh_cell_s_status_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   kal_uint8               neigh_cell_count;
+#ifdef __UMTS_R8__
+   em_neigh_cell_operation_enum      operation;
+#endif
+   em_RAT_type_enum        RAT_type;
+   union
+   {
+      tdd_csce_em_neigh_cell_s_status      neigh_cells[16];
+      tdd_csce_em_2G_neigh_cell_s_status   GSM_neigh_cells[16];
+      tdd_csce_em_LTE_neigh_cell_s_status  LTE_neigh_cells[16];
+   }
+   choice;
+   /* for the element over neigh_cell_count, left blank */
+}
+tdd_em_csce_neigh_cell_s_status_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+   /* the "sx","s_intra_search_value","s_intra_search_value",
+   "s_search_hcs_value", "s_search_rat_value",
+   "s_hcs_rat_value", "s_limit_search_rat_value"
+   should be divided by 4096, the result may be float */
+   kal_int32        sx;                            //MMI
+   kal_bool         is_s_intra_search_valid;
+   kal_int32        s_intra_search_value;          //MMI
+   kal_bool         is_s_inter_search_valid;
+   kal_int32        s_inter_search_value;          //MMI
+   kal_bool         is_s_search_hcs_valid;
+   kal_int32        s_search_hcs_value;            //MMI
+   kal_bool         is_s_search_rat_valid;
+   kal_int32        s_search_rat_value;            //MMI
+   kal_bool         is_s_hcs_rat_valid;
+   kal_int32        s_hcs_rat_value;               //MMI
+   kal_bool         is_s_limit_search_rat_valid;
+   kal_int32        s_limit_search_rat_value;      //MMI
+   /* For meas_tgt_cells:
+      1st LSB: UMTS Intra-Freq Cells, 2nd LSB: UMTS Inter-Freq Cells, 3rd LSB: GSM Inter-RAT Cells
+      "Meas Target Type" in "Measurement Rule Status":
+      0: Serv Cell only
+      1: Serv with IntraFreq Cell
+      2: Serv with InterFreq Cell
+      3: Serv with Intra/InterFreq Cell
+      4: Serv with InterRAT Cell
+      5: Serv with IntraFreq/InterRAT Cell
+      6: Serv with InterFreq/InterRAT Cell
+      7: Serv with Intra/InterFreq/InterRAT Cell
+      If the 1st&2nd LSB are all set to '0', make the "UMTS Satisfied Neighbour Cells Status" be invalid;
+      If the 3rd LSB is set to '0', make the "GSM Satisfied Neighbour Cells Status" be invalid. */
+   kal_uint32       meas_tgt_cells;               //MMI
+
+#ifdef __UMTS_R8__
+/* For apbcr_enabled_type:
+      1: MEAS_RULE
+      2: MEAS_RULE_AND_APB_H_PRIO
+      3: MEAS_RULE_AND_APB_ALL_PRIO
+      If apbcr_enabled_type is 1, please do not show apbMeasTargetCells, is_gsm_apbcr_enabled, apbcr_uarfcn .
+   */
+   kal_uint8        apbcr_enabled_type;               //MMI
+   /* For apbMeasTargetCells:
+      0: None cell
+      1: intraFreq Cell
+      2: interFreq Cell
+      3: Intra/InterFreq Cell
+      4: GSM Cell
+      5: intraFreq/GSM Cell
+      6: interFreq/GSM Cell
+      7: Intra/InterFreq/GSM Cell
+      8: LTE Cell
+      9: intraFreq/LTE Cell
+     10: interFreq/LTE Cell
+     11: intraFreq/interFreq/LTE Cell
+     12: GSM/LTE Cell
+     13: intraFreq/GSM/LTE Cell
+     14: interFreq/GSM/LTE Cell
+     15: Intra/InterFreq/GSM/LTE Cell
+   */
+   kal_uint32       apbMeasTargetCells;                 //MMI
+   kal_bool         is_gsm_apbcr_enabled;               //MMI
+   kal_uint16       apbcr_uarfcn[2];                    //MMI
+#endif
+}
+fdd_em_csce_meas_rule_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+   /* the "sx","s_intra_search_value","s_intra_search_value",
+   "s_search_hcs_value", "s_search_rat_value",
+   "s_hcs_rat_value", "s_limit_search_rat_value"
+   should be divided by 4096, the result may be float */
+   kal_int32        sx;                            //MMI
+   kal_bool         is_s_intra_search_valid;
+   kal_int32        s_intra_search_value;          //MMI
+   kal_bool         is_s_inter_search_valid;
+   kal_int32        s_inter_search_value;          //MMI
+   kal_bool         is_s_search_hcs_valid;
+   kal_int32        s_search_hcs_value;            //MMI
+   kal_bool         is_s_search_rat_valid;
+   kal_int32        s_search_rat_value;            //MMI
+   kal_bool         is_s_hcs_rat_valid;
+   kal_int32        s_hcs_rat_value;               //MMI
+   kal_bool         is_s_limit_search_rat_valid;
+   kal_int32        s_limit_search_rat_value;      //MMI
+   /* For meas_tgt_cells:
+      1st LSB: UMTS Intra-Freq Cells, 2nd LSB: UMTS Inter-Freq Cells, 3rd LSB: GSM Inter-RAT Cells
+      "Meas Target Type" in "Measurement Rule Status":
+      0: Serv Cell only
+      1: Serv with IntraFreq Cell
+      2: Serv with InterFreq Cell
+      3: Serv with Intra/InterFreq Cell
+      4: Serv with InterRAT Cell
+      5: Serv with IntraFreq/InterRAT Cell
+      6: Serv with InterFreq/InterRAT Cell
+      7: Serv with Intra/InterFreq/InterRAT Cell
+      If the 1st&2nd LSB are all set to '0', make the "UMTS Satisfied Neighbour Cells Status" be invalid;
+      If the 3rd LSB is set to '0', make the "GSM Satisfied Neighbour Cells Status" be invalid. */
+   kal_uint32       meas_tgt_cells;               //MMI
+
+#ifdef __UMTS_R8__
+/* For apbcr_enabled_type:
+      1: MEAS_RULE
+      2: MEAS_RULE_AND_APB_H_PRIO
+      3: MEAS_RULE_AND_APB_ALL_PRIO
+      If apbcr_enabled_type is 1, please do not show apbMeasTargetCells, is_gsm_apbcr_enabled, apbcr_uarfcn .
+   */
+   kal_uint8        apbcr_enabled_type;               //MMI
+   /* For apbMeasTargetCells:
+      0: None cell
+      1: intraFreq Cell
+      2: interFreq Cell
+      3: Intra/InterFreq Cell
+      4: GSM Cell
+      5: intraFreq/GSM Cell
+      6: interFreq/GSM Cell
+      7: Intra/InterFreq/GSM Cell
+      8: LTE Cell
+      9: intraFreq/LTE Cell
+     10: interFreq/LTE Cell
+     11: intraFreq/interFreq/LTE Cell
+     12: GSM/LTE Cell
+     13: intraFreq/GSM/LTE Cell
+     14: interFreq/GSM/LTE Cell
+     15: Intra/InterFreq/GSM/LTE Cell
+   */
+   kal_uint32       apbMeasTargetCells;                 //MMI
+   kal_bool         is_gsm_apbcr_enabled;               //MMI
+   kal_uint16       apbcr_uarfcn[8];                    //MMI
+#endif
+}
+tdd_em_csce_meas_rule_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint8                 cell_count;
+    csce_em_cell_apbcr_status cell_apbcr_status[16];    /* for the element over neigh_cell_count, left blank */
+}
+fdd_em_csce_apbcr_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint8                 cell_count;
+    csce_em_cell_apbcr_status cell_apbcr_status[16];    /* for the element over neigh_cell_count, left blank */
+}
+tdd_em_csce_apbcr_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint8             cell_count;
+    csce_em_cell_r_status cell_r_status[9];   /* for the element over neigh_cell_count, left blank */
+}
+fdd_em_csce_cell_r_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint8             cell_count;
+    csce_em_cell_r_status cell_r_status[9];   /* for the element over neigh_cell_count, left blank */
+}
+tdd_em_csce_cell_r_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint8             cell_count;
+    csce_em_cell_h_status cell_h_status[9];    /* for the element over neigh_cell_count, left blank */
+}
+fdd_em_csce_cell_h_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint8             cell_count;
+    csce_em_cell_h_status cell_h_status[9];    /* for the element over neigh_cell_count, left blank */
+}
+tdd_em_csce_cell_h_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    FDD_csce_em_serv_cell_s_status serv_cell;
+} fdd_em_csce_serv_cell_s_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    tdd_csce_em_serv_cell_s_status serv_cell;
+} tdd_em_csce_serv_cell_s_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    sibe_em_sib_status sib_status;
+} em_sibe_sib_status_ind_struct;
+
+typedef enum {
+    ON,
+    OFF
+} hspa_support;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    hspa_support hsdpa_enable;
+    hspa_support hsupa_enable;
+} fdd_em_usime_capability_info_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   kal_uint16 HSDSCH_Serving_UARFCN;     /* uarfcn of HS-DSCH serving cell, 0xFFFF means invalid */
+   kal_uint16 HSDSCH_Serving_PSC;        /* psc of HS-DSCH serving cell, 0xFFFF means invalid */
+   kal_uint16 EDCH_Serving_UARFCN;       /* uarfcn of E-DCH serving cell, 0xFFFF means invalid */
+   kal_uint16 EDCH_Serving_PSC;          /* psc of E-DCH serving cell, 0xFFFF means invalid */
+} fdd_em_meme_dch_h_serving_cell_info_ind_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   kal_uint8 num_trch;
+   trch_bler_struct TrCHBler[8];
+}
+fdd_em_meme_dch_bler_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_int8 tx_power; // FDD only
+    kal_bool ul_tx_allow;    
+    kal_uint8 num_cells;
+    FDD_meme_umts_cell_struct umts_cell_list[32];
+} fdd_em_meme_dch_umts_cell_info_ind_struct;
+
+typedef struct
+{
+    kal_uint32 EARFCN;
+    kal_uint16 PCI;
+    kal_int16 RSRP;
+    kal_int16 RSRQ;
+} meme_lte_cell_struct;
+
+#define MAX_REPORT_LTE_CELL_EM (32)
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint8 num_cells;
+    meme_lte_cell_struct lte_cell_list[32];
+} fdd_em_meme_fach_dch_lte_cell_info_ind_struct, fdd_em_meme_dch_lte_cell_info_ind_struct, fdd_em_meme_fach_lte_cell_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint8 num_cells;
+    meme_lte_cell_struct lte_cell_list[32];
+} tdd_em_meme_dch_lte_cell_info_ind_struct;
+
+
+/* END {2013} - NEW EM Architecture */
+
+typedef enum
+{
+   EM_TDD_MEASURE,
+   EM_FDD_MEASURE,
+   EM_GSM_RSSI,
+   EM_GSM_BSIC_INIT,
+   EM_GSM_BSIC_CNF,
+   EM_MULTI_CARRIER,
+   EM_E_UTRA
+} em_tgps_measure_enum;
+
+
+typedef struct
+{
+   kal_bool          existed;
+   kal_uint8          tgpsi;  /* 1~6 */
+   kal_bool          is_gap_deactive;
+   /* is_gap_deactive, 0: gap is ACTIVE, 1: gap is DEACTIVE */
+   em_tgps_measure_enum    measure_purpose;
+} urr_em_tgps_status;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   urr_em_tgps_status        tgps_status[6];
+
+} em_rrce_tgps_status_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   kal_uint16        srnc;
+
+} em_slce_srncid_status_ind_struct;
+
+typedef struct
+{
+   kal_uint8     RAB_ID;
+   kal_int8      RB_ID;
+   kal_uint32    DL_rate;   /* the value should be divided by 1000, the result may be float, uint: kbps */
+   kal_uint32    UL_rate;   /* the value should be divided by 1000, the result may be float, uint: kbps */
+
+} slce_em_ps_data_status;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   kal_uint8         ps_number;
+   slce_em_ps_data_status        ps_data_status[8];
+
+} em_slce_ps_data_rate_status_ind_struct;
+
+typedef enum
+{
+   FDD_em_dtx_cycle2_inaTrHd_1 = 0,
+   FDD_em_dtx_cycle2_inaTrHd_4,
+   FDD_em_dtx_cycle2_inaTrHd_8,
+   FDD_em_dtx_cycle2_inaTrHd_16,
+   FDD_em_dtx_cycle2_inaTrHd_32,
+   FDD_em_dtx_cycle2_inaTrHd_64,
+   FDD_em_dtx_cycle2_inaTrHd_128,
+   FDD_em_dtx_cycle2_inaTrHd_256
+} FDD_em_ue_dtx_cycle2_inactivity_threshold_E;
+
+typedef enum
+{
+   FDD_em_burst_1 = 0,
+   FDD_em_burst_2,
+   FDD_em_burst_5
+} FDD_em_ue_dpcch_burst_E;
+
+typedef enum
+{
+   FDD_em_slot_2 = 0,
+   FDD_em_slot_4,
+   FDD_em_slot_15,
+   FDD_em_slot_invalid
+} FDD_em_ue_dtx_long_preamble_length_E;
+
+typedef enum
+{
+   FDD_em_drx_cycle_4 = 0,
+   FDD_em_drx_cycle_5,
+   FDD_em_drx_cycle_8,
+   FDD_em_drx_cycle_10,
+   FDD_em_drx_cycle_16,
+   FDD_em_drx_cycle_20
+} FDD_em_ue_drx_cycle_E;
+
+typedef enum
+{
+   FDD_em_drx_cycle_inaTrHd_0 = 0,
+   FDD_em_drx_cycle_inaTrHd_1,
+   FDD_em_drx_cycle_inaTrHd_2,
+   FDD_em_drx_cycle_inaTrHd_4,
+   FDD_em_drx_cycle_inaTrHd_8,
+   FDD_em_drx_cycle_inaTrHd_16,
+   FDD_em_drx_cycle_inaTrHd_32,
+   FDD_em_drx_cycle_inaTrHd_64,
+   FDD_em_drx_cycle_inaTrHd_128,
+   FDD_em_drx_cycle_inaTrHd_256,
+   FDD_em_drx_cycle_inaTrHd_512
+} FDD_em_ue_drx_cycle_inactivity_threshold_E;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   kal_uint8 ue_dtx_cycle1;
+   kal_uint8 ue_dtx_cycle2;
+   FDD_em_ue_dtx_cycle2_inactivity_threshold_E cycle2_inactivity_threshold;
+   FDD_em_ue_dpcch_burst_E dpcch_burst1;
+   FDD_em_ue_dpcch_burst_E dpcch_burst2;
+   FDD_em_ue_dtx_long_preamble_length_E preamble_length;
+   FDD_em_ue_drx_cycle_E drx_cycle_length;
+   FDD_em_ue_drx_cycle_inactivity_threshold_E drx_cycle_inactivity_threshold;
+   kal_uint8 e_dch_tti;
+} em_slce_ue_dtx_drx_info_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   kal_uint16 cn_drx_cycle_len;
+} em_rrce_cn_drx_cycle_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   kal_uint16      utran_drx_cycle_len;
+} em_rrce_utran_drx_cycle_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+    /* UMAC related */
+   kal_uint8    dl_mac_hspa_type;  // dl_mac_type display : 0:NA, 1:MAC-hs, 2:MAC-ehs
+    kal_uint8   ul_mac_hspa_type;  // ul_mac_type display : 0:NA, 1:MAC-ees, 2:MAC-iis
+
+    /* UL1 PHY related */
+    kal_uint8 fdpch[6];           // fdpch slot format display : 0~9: SlotFormat-0 ~ SlotFormat-9, 10:NA(NotConfigured  )
+
+   /* Jack Chu: Amazon EM Modifications: shift ID workaround */
+   kal_uint16 num_rbs;           // PS RBs only
+   /* HS-DSCH related */
+   kal_uint8  cqi_feedback_cycle;
+   kal_uint8 num_hs_ops_start; /* HSDPA channel setup */
+   kal_uint8 num_hs_ops_reconfig; /* H serving cell change */
+   kal_uint8 num_hs_ops_stop; /* HSDPA channel tear down */
+   kal_uint16 mac_hs_reset;
+
+} em_rrce_dch_state_configuration_status_ind_struct ;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   kal_uint8 e_dch_tti; // edch tti display : 255:NA, 0: 2 tti, 1: 10 tti
+   kal_uint8 hsdpa_configured;  //display: 0: not configured, 1; configured
+   kal_uint8 hsupa_configured;  //display: 0: not configured, 1; configured
+   kal_uint8 dc_hsdpa_configured;  //display: 0: not configured, 1; configured
+   kal_uint8 dtx_configured;  //display: 0: not configured, 1; configured
+   kal_uint8 drx_configured;  //display: 0: not configured, 1; configured
+   kal_uint8 hspa_plus_configured;  //display: 0: not configured, 1; configured
+}em_rrce_hspa_config_ind_struct; /* MOLY00100048, Jack Chu,  EM_RRCE_HSPA_CONFIG_IND == 160 */
+
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+    /* eDRX related */
+   kal_bool eDRXcfgStatus;  // Note that this is config status from RRC viewpoint, not real operating status from UL1 viewpoint
+
+} em_rrce_fach_state_configuration_status_ind_struct ;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+    /* security related */
+   kal_uint8    uCipheringAlgorithm;  // F9 Alg : 0x0:Init(no cipher), 0x1:UEA0, 0x2:UEA1, 0x4:UEA2
+    kal_uint8   uIntegrityAlgorithm;  // F8 Alg : 0x0:Init(no integrity), 0x1:UIA1, 0x2:UIA2
+} em_rrce_3g_security_configuration_status_ind_struct ;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   kal_bool cs_over_hspa_status;  // R8 feature CS over HSPA on/off status
+
+} em_rrce_cs_over_hspa_status_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   kal_bool FDcfgStatus;  // NW support FD status
+
+} em_rrce_fd_configuration_status_ind_struct;
+
+
+
+typedef enum
+{
+    EM_RRCE_CALL_TYPE_MO    = 0,
+    EM_RRCE_CALL_TYPE_MT,
+    EM_RRCE_CALL_TYPE_EMERGENCY,
+    EM_RRCE_CALL_TYPE_INVALID
+} em_rrce_call_type_enum;
+
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+   kal_uint16 uarfcn_DL;   /* DL UARFCN */
+    em_rrce_call_type_enum te_call_type;    /* mo/mt call */
+} em_rrce_rlf_ind_struct; /* __ALPS02506878_SUPPORT__ */
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+} em_rrce_mo_rlf_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+} em_rrce_rach_fail_ind_struct;
+
+#define RRC_NW_PEER_MESSAGE_MAX_LEN 30
+#define RRC_NW_PEER_MESSAGE_TYPE_MAX_LEN 50
+#define RRC_PEER_MSG_DIR_UPLINK 0
+#define RRC_PEER_MSG_DIR_DOWNLINK 1
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+   kal_uint8 direction; /* 0 = uplink 1 = downlink */
+   kal_uint8 message[RRC_NW_PEER_MESSAGE_MAX_LEN];
+   kal_uint8 message_type[RRC_NW_PEER_MESSAGE_TYPE_MAX_LEN];
+   kal_uint8 msg_type_idx;
+   kal_uint8 channelType;
+   kal_uint8 rrcTransactionId;
+} em_rrce_nw_peer_msg_info_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+} em_rrce_3g3_ho_fail_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+} em_rrce_3g2_ho_fail_ind_struct;
+
+typedef enum
+{
+   EM_RRCE_KPI_IRAT_3G2_HO,
+   EM_RRCE_KPI_IRAT_3G2_IDLE_CR,
+   EM_RRCE_KPI_IRAT_3G2_CONNECTED_CR,
+   EM_RRCE_KPI_IRAT_3G2_CCO,
+   EM_RRCE_KPI_IRAT_3G2_IDLE_REDIR,
+   EM_RRCE_KPI_IRAT_3G2_CONNECTED_REDIR,
+   EM_RRCE_KPI_INTRA_UMTS_CR,
+   EM_RRCE_KPI_IRAT_3G4_HO,
+   EM_RRCE_KPI_IRAT_3G4_IDLE_CR,
+   EM_RRCE_KPI_IRAT_3G4_CONNECTED_CR,
+   EM_RRCE_KPI_IRAT_3G4_IDLE_REDIR,
+   EM_RRCE_KPI_IRAT_3G4_CONNECTED_REDIRECTION,
+   EM_RRCE_KPI_IRAT_3G4_CONNECTED_AFR,
+   EM_RRCE_KPI_IRAT_3G4_CONNECTED_NFR,
+   EM_RRCE_KPI_3G3_CR,
+   EM_RRCE_KPI_PROC_NUM
+} em_rrce_kpi_proc_enum;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   em_rrce_kpi_proc_enum proc_id;
+   em_kpi_status_enum status;
+   kal_uint32  attempt;
+   kal_uint32  success;
+} em_rrce_kpi_status_ind_struct;
+
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   kal_uint16 uarfcn_DL;   /* DL UARFCN */
+   kal_uint16 uarfcn_UL;   /* UL UARFCN */
+} em_rrce_3g_cell_uarfcn_dl_ul_info_ind_struct ;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   em_sniffer_ind_type_enum  sniffer_ind_type;
+} em_urr_cell_sniffer_ind_struct;
+
+#endif /* __UMTS_RAT__ */
+
+
+#endif /* _EM_UAS_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_ul1_public_struct.h b/mcu/interface/service/em/em_ul1_public_struct.h
new file mode 100644
index 0000000..5d807ca
--- /dev/null
+++ b/mcu/interface/service/em/em_ul1_public_struct.h
@@ -0,0 +1,492 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_ul1_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_UL1_PUBLIC_STRUCT_H
+#define _EM_UL1_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+#include "em_l4_common_public_struct.h"
+#include "em_as_common_public_struct.h"
+
+
+#ifdef __UMTS_RAT__    //For MAUI, MONZA2G exclude 3G
+/**
+ * Remus 20080626
+ * Added MEME EM info in Catcher
+ */
+
+#define HS_CARRIER_DATA_USED  2
+typedef enum
+{
+   _QPSK = 0,
+   _16QAM,           /* 1st alphabet can not digit */
+   _64QAM
+} em_mod_enum;
+
+typedef struct
+{
+   kal_bool    dl_64QAM_on;
+} ul1_em_hs_dsch_configuration_struct;
+
+typedef struct
+{
+   kal_bool    ul_16QAM_on;
+   kal_uint8   edch_tti;
+} ul1_em_edch_configuration_struct;
+
+typedef struct
+{
+   kal_bool    dtx_on;
+   kal_bool       drx_on;
+} ul1_em_cpc_configuration_struct;
+
+typedef struct
+{
+   kal_bool    dc_on;
+   kal_uint16  dl_freq;
+   kal_uint16  psc;
+   kal_bool    dl_64QAM_on;
+} ul1_em_secondary_hs_dsch_configuration_status_struct;
+
+typedef struct
+{
+   kal_uint16  dsch_error_all;
+   kal_uint16  dsch_error_new_data;
+   kal_uint16  dsch_error_after_retx;
+   em_mod_enum dsch_curr_mod;
+   kal_uint16  dsch_code_num;
+   kal_uint16  dsch_cqi_val;
+   kal_uint16  dsch_gap_ratio;
+} ul1_em_primary_hs_dsch_bler_struct;
+
+typedef struct
+{
+   kal_uint16  dsch_error_all;
+   kal_uint16  dsch_error_new_data;
+   kal_uint16  dsch_error_after_retx;
+   em_mod_enum dsch_curr_mod;
+   kal_uint16  dsch_code_num;
+   kal_uint16  dsch_cqi_val;
+   kal_uint16  dsch_gap_ratio;
+} ul1_em_secondary_hs_dsch_bler_struct;
+
+typedef struct
+{
+   kal_uint16  edch_ack_cnt;
+   kal_uint16  edch_gap_ratio;
+} ul1_em_edch_ack_rate_struct;
+
+/* hs_dsch_configuration */
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   ul1_em_hs_dsch_configuration_struct EmHsDschInfo;
+}
+fdd_em_ul1_hs_dsch_config_ind_struct;
+
+/* edch_configuration */
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   ul1_em_edch_configuration_struct EmEdchInfo;
+}
+fdd_em_ul1_edch_config_ind_struct;
+
+/* secondary_hs_dsch_configuration */
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   ul1_em_secondary_hs_dsch_configuration_status_struct EmSecHsDschInfo;
+}
+fdd_em_ul1_sec_hs_dsch_config_ind_struct;
+
+
+/* cpc_configuration */
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   ul1_em_cpc_configuration_struct EmCpcInfo;
+}
+fdd_em_ul1_cpc_config_ind_struct;
+
+/* primary_hs_dsch_bler*/
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   ul1_em_primary_hs_dsch_bler_struct EmPriHsDschBLER;
+}
+fdd_em_ul1_pri_hs_dsch_bler_ind_struct;
+
+/* secondary_hs_dsch_bler */
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   ul1_em_secondary_hs_dsch_bler_struct EmSecHsDschBLER;
+}
+fdd_em_ul1_sec_hs_dsch_bler_ind_struct;
+
+/* edch_ack_rate */
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   ul1_em_edch_ack_rate_struct EmEdchAckRate;
+}
+fdd_em_ul1_edch_ack_rate_ind_struct;
+
+/* prx_drx_measurement_ind */
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   /* DL Qual indicator */
+   kal_int16  dl_rscp[2]; // -255: disable, -120 ~ (dBm)
+   kal_int16  dl_rssi[2]; // -255: disable, -120 ~  (dBm)
+}
+fdd_em_ul1_prx_drx_measurement_ind_struct;
+
+/* ul1_hspa_info_group_ind_struct */
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum                                         em_info;
+
+   ul1_em_hs_dsch_configuration_struct                  hs_dsch_configuration;
+   ul1_em_edch_configuration_struct                     edch_configuration;
+   ul1_em_cpc_configuration_struct                      cpc_configuration;
+   ul1_em_secondary_hs_dsch_configuration_status_struct secondary_hs_dsch_configuration_status;
+   ul1_em_primary_hs_dsch_bler_struct                   primary_hs_dsch_bler;
+   ul1_em_secondary_hs_dsch_bler_struct                 secondary_hs_dsch_bler;
+   ul1_em_edch_ack_rate_struct                          edch_ack_rate;
+   kal_int16                                            qdpcch_avg;
+}
+fdd_em_ul1_hspa_info_group_ind_struct;
+
+typedef struct
+{
+   kal_uint16 band;
+   kal_uint16 uarfcn;
+   kal_uint16 serving_psc;
+   kal_int16 rscp_max;
+   kal_int16 rscp_0;
+   kal_int16 rscp_1;
+   kal_int16 rscp_diff;
+   kal_int16 ecno_max;
+   kal_int16 ecno_0;
+   kal_int16 ecno_1;
+   kal_int16 rssi_max;
+   kal_int16 rssi_0;
+   kal_int16 rssi_1;
+   kal_int8 tx_pwr;
+   kal_int8 dpcch_tx_pwr;
+   kal_uint8 main_ant_idx;
+   kal_int16 tas_version;
+   kal_int16 rscp_2;
+   kal_int16 ecno_2;
+   kal_int16 rssi_2;
+   kal_uint16 tas_enable;
+   /*instantaneous value*/
+   kal_int16 rscp_div_inst;
+   kal_int16 rscp_main_inst;
+   kal_int16 ecio_div_inst;
+   kal_int16 ecio_main_inst;
+   kal_int16 rssi_div_inst;
+   kal_int16 rssi_main_inst;
+} fdd_ul1_em_tas_info_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+
+   fdd_ul1_em_tas_info_struct EmUl1Tas;
+} fdd_em_ul1_tas_info_ind_struct;
+
+typedef enum
+{
+   FDD_T313_STATUS_STOPPED = 0,
+   FDD_T313_STATUS_RUNNING,
+   FDD_T313_STATUS_EXPIRED,
+   FDD_T313_STATUS_UNKNOWN = 255
+} iq_t313_status_t;
+typedef struct
+{
+   kal_uint16 wScramblingCode;
+   kal_uint8 ucTpcCombinationIndex;
+   iq_t313_status_t ucT313Status;
+} iq_rl_sync_status_t;
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+   kal_uint8                    ucNumRLSyncStatus;    /* Number of radio link sync status structuers: Range 1-6 */
+   kal_uint8                    ucPad;
+   iq_rl_sync_status_t          tRlSyncStatus[6];
+}
+em_ul1_radio_link_sync_status_ind_struct;
+
+typedef enum
+{
+   RxPATH_NONE = 0,
+   RxPATH_MAIN,
+   RxPATH_BOTH
+} em_rxd_enum;
+
+typedef enum
+{
+   NONE,
+   CPC_ON,
+   TEST_SIM_PS_ONLY,
+   PS_HIGH_DATA_RATE,
+   SYNC_INFO_FAIL,
+   BAD_CELL_CONDITIONS, // when data rate low
+   GOOD_RADIO_CONDITION   // when data rate low
+} em_ras_switch_cause_enum;
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum            em_info;
+   em_rxd_enum             rx_path;
+   em_ras_switch_cause_enum    ras_switch_cause;
+}
+fdd_em_ul1_rxd_status_ind_struct;
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum em_info;
+   kal_uint8  band;
+   RAT_type_enum        RAT_type;
+}
+em_ul1_band_rat_info_during_search_ind_struct;
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum            em_info;
+   kal_uint16              UARFCN;
+   RAT_type_enum           RAT_type;
+}
+fdd_em_ul1_freq_rat_info_during_search_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum               em_info;
+   kal_bool                   ras_hs_current_valid;
+   kal_int16                  hs_ras_sum_cqi_diff_final[HS_CARRIER_DATA_USED];
+   kal_uint8                  hs_ras_num_alloc_sub[HS_CARRIER_DATA_USED];
+   kal_uint8                  hs_ras_num_total_sub[HS_CARRIER_DATA_USED];
+   kal_uint8                  hs_ras_hs_rate[HS_CARRIER_DATA_USED];
+   kal_bool                   ras_hs_thresold_valid;
+   kal_uint8                  RAS_HS_HYST;
+   kal_uint8                  RAS_HS_THD;
+   kal_uint8                  RAS_CQI_HYST;
+   kal_uint8                  RAS_CQIDIFF_THD;
+   kal_bool                   Sync_info_valid ;   //  kal_true
+   kal_uint8                  Sync_data;
+}
+fdd_em_ul1_ras_info_ind_struct;
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum               em_info;
+   kal_bool utas_info_valid;  // kal_false
+   kal_uint8 tas_enable ;
+   kal_uint16 band;
+   kal_int16 rscp_max;
+   kal_int16 ecno_max;   //-480
+   kal_int16 rssi_max;  // -480
+   kal_int16 dpcch_tx_pwr; // -128
+   kal_uint8  current_ant_state;  // 0xff
+   kal_uint8  previous_ant_state;  //0xff
+   kal_uint8  rx_system;   //  0
+   kal_uint8  ccmState ;   // EM_NULL_CONFIG
+   kal_uint8 tx_index;  // 0xf
+   kal_uint8  rx_index;  //0xf
+   kal_int16 tx_index_txp;   // -128
+   kal_int16 rx_index_txp; //-128
+   kal_int16 tx_index_pwrhdr; // -128
+   kal_int16 rx_index_pwrhdr; //-128
+   kal_int16 tx_index_rscp;  //-480
+   kal_int16 rx_index_rscp; //-480
+   kal_int16 tx_index_rssi; //-480
+   kal_int16 rx_index_rssi; //-480
+}fdd_em_ul1_utas_info_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum            em_info;
+
+
+   kal_int8     Avg_TX_power; /*signed integer,  unit:dBm*/
+   kal_int8     Avg_PD_power; /*signed integer, unit:dBm*/
+
+}
+fdd_em_ul1_rfpd_avg_info_ind_struct;
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum     em_info;
+   kal_bool         paging_rx_done;//TRUE means, paging is decoded in UL1 during IDLE mode
+   kal_uint16       pch_drx_ms; //This indicates the drx of pch when paging reception is done in UL1.
+}
+fdd_em_ul1_paging_rx_done_ind_struct;//Paging Rx done in UL1.
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   em_info_enum     em_info;
+   kal_uint16       meas_duration_in_ms; //report meas duration in ms from UL1, DMF will accumutae this duration
+}
+fdd_em_ul1_meas_duration_info_ind_struct;//UL1 measurements(CS/PS/FS) frame count duration information
+
+
+#endif /* __UMTS_RAT__ */
+
+#endif /* _EM_UL1_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_ul2_public_struct.h b/mcu/interface/service/em/em_ul2_public_struct.h
new file mode 100644
index 0000000..8143409
--- /dev/null
+++ b/mcu/interface/service/em/em_ul2_public_struct.h
@@ -0,0 +1,595 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_ul2_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef _EM_UL2_PUBLIC_STRUCT_H
+#define _EM_UL2_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+#include "em_l4_common_public_struct.h"
+#include "em_as_common_public_struct.h"
+
+typedef struct
+{
+    kal_uint16                      max_usage_kbytes;          /*Maximum used size of the pool, <= 999*/
+    kal_uint16                      avg_usage_kbytes;           /*Average used size of the pool, <= 999*/
+} adm_pool_info_struct;
+
+typedef enum
+{
+    URLC_ESTABLISH,               //display "EST"
+    URLC_REESTABLISH,           //display "REEST"
+    URLC_RECONFIG,                //display "RECFG"
+    URLC_RELEASE,                   //display "REL"
+    URLC_SUSPEND,                  //display "SUSPD"
+    URLC_RESUME,                    //display "RES"
+    URLC_RESET,                        //display "RST"
+    URLC_DISCARD                   //display "DISCD"
+} RLC_ACTION_INFO;
+
+/***HSUPA SI***/
+typedef struct
+{
+   kal_uint32                       time;
+   kal_uint8                        SNPL;
+   kal_uint8                        UPH;
+   kal_uint8                        TEBS;
+   kal_uint8                        HLBS;
+   kal_uint8                        HLID;
+   kal_bool                         isERUCCH;
+}ul2_em_hsupa_si_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    ul2_em_hsupa_si_ind_struct ul2_em_hsupa_si_ind_info;
+}em_ul2_hsupa_si_ind_struct;
+/***HSUPA SI***/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+}tdd_em_ul2_pch_crc_ind_struct;
+
+
+typedef struct
+{
+    /*UMAC new EM Arch*/
+    adm_pool_info_struct      dl_adm_pool_info; /*dl_adm_pool_info represent the info of  DL ADM POOl 1*/
+    adm_pool_info_struct      ul_adm_pool_info[4];/* ul_adm_pool_info[0] ~ ul_adm_pool_info[2]
+                                              represent the info of  UL ADM POOl 1 ~ 3 and
+                                              ul_adm_pool_info[3] represent the info TOTAL UL ADM POOL*/
+} ul2_em_adm_pool_status_ind_struct;
+
+typedef struct
+{
+    kal_uint8               num_trch;
+    trch_bler_struct        TrCHBler[8];
+}ul2_em_3g_bler_ind_struct;
+
+
+typedef enum
+{
+    Invalid,                                        /*show blank */
+    No_Modify,                                   /*show "=" */
+    Add_Queue,                                  /*show "V" */
+    Delete_Queue,                                /*show "X" */
+    Reconfigure_T1,                              /*show "T1" */
+    Reconfigure_WindowSize,                   /*show "WS" */
+    Reconfigure_T1_WindowSize,               /*show "T1_WS" */
+    Reconfigure_C_T,                          /*show "C_T"*/
+} reconfigure_operation_E;
+
+typedef struct
+{
+    reconfigure_operation_E               reconfig_info[8];         /* reconfiguration operation of the Queue 0 ~ 7 */
+} ul2_em_hsdsch_reconfig_status_ind_struct;
+typedef struct
+{
+    kal_uint16           rx_mac_data_rate;      /* kbps, <=2800*/
+    kal_uint16           rx_pdcp_data_rate;     /* kbps, <= 2800*/
+    kal_uint16           tx_mac_data_rate;      /*kbps, <=400*/
+    kal_uint16           tx_pdcp_data_rate;      /*kbps, <=400*/
+} ul2_em_ps_data_rate_status_ind_struct;
+
+
+typedef struct
+{
+    kal_bool                  is_srb;         // if TRUE, display "S", else display "U"
+    kal_uint8                 cn_domain;  // for 0, display "CS"; for 1, display "PS"; for 2, display "ALL"
+} ul2_em_rb_info_struct;
+
+typedef struct
+{
+    kal_uint8                  rlc_mode;   //for 1, display "TM"; for 2, display "UM"; for 3, display "AM", other "Error"
+    kal_uint8                  direction;    //for 1, display "UL"; for 2, display "DL"; for 3, display "Both", other "Error"
+} ul2_em_rlc_info_struct;
+
+typedef struct
+{
+    kal_uint16              pdu_Size;    //display the value
+    kal_uint16              tx_window_size;  //display the value, range [1, 2048]
+    kal_uint16              rx_window_size;   //display the value, range[1, 2048]
+    kal_uint8               discard_mode;    //value is 0/1/2/3, display the value
+    kal_uint16              discard_value;    //display the value, range [0, 9999]
+} ul2_em_rlc_parameter_struct;
+
+typedef struct
+{
+    kal_int8                        rb_id;        // display the value, range [-5, 32]
+    RLC_ACTION_INFO                 rlc_action;
+    ul2_em_rb_info_struct           rb_info;
+    ul2_em_rlc_info_struct          rlc_info;
+    ul2_em_rlc_parameter_struct     rlc_parameter;
+    kal_bool                        flush_data_indicator;    //if TRUE, display "Flush", else show blank
+    kal_uint8                       reset_cause;                //value is 0/1/2, display the value
+} ul2_em_urlc_event_status_ind_struct;
+
+
+/* __UL2_EM_MODE__ */
+#if defined(__UMTS_RAT__)
+
+
+/*UMAC new EM Arch*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    ul2_em_adm_pool_status_ind_struct ul2_em_adm_pool_status_ind_struct_info;
+} em_ul2_adm_pool_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    ul2_em_ps_data_rate_status_ind_struct ul2_em_ps_data_rate_status_ind_struct_info;
+} em_ul2_ps_data_rate_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    ul2_em_hsdsch_reconfig_status_ind_struct ul2_em_hsdsch_reconfig_status_ind_struct_info;
+} em_ul2_hsdsch_reconfig_status_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    ul2_em_urlc_event_status_ind_struct ul2_em_urlc_event_status_ind_struct_info;
+} em_ul2_urlc_event_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    ul2_em_3g_bler_ind_struct ul2_em_periodic_bler_report_ind_info;
+} em_ul2_3g_bler_ind_struct;
+
+
+
+typedef enum
+{
+   AMR_4_75 = 0,
+   AMR_5_15,
+   AMR_5_90,
+   AMR_6_70,
+   AMR_7_40,
+   AMR_7_95,
+   AMR_10_20,
+   AMR_12_20,
+   AMR_SID,
+   GSM_EFR_SID,
+   TDMA_EFR_SID,
+   PDC_EFR_SID,
+   RESERVE_1,
+   RESERVE_2,
+   RESERVE_3,
+   AMR_NODATA,
+   AMRWB_6_60,
+   AMRWB_8_85,
+   AMRWB_12_65,
+   AMRWB_14_25,
+   AMRWB_15_85,
+   AMRWB_18_25,
+   AMRWB_19_85,
+   AMRWB_23_05,
+   AMRWB_23_85,
+   AMRWB_SID
+} em_csr_SpeechCodecType;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum            em_info;
+    em_csr_SpeechCodecType   ULAMRType;
+    em_csr_SpeechCodecType   DLAMRType;
+} em_csr_status_ind_struct;
+
+typedef struct
+{
+    kal_uint16 dummy;
+    kal_bool bPCHBadCRC; /* KAL_FALSE means UE get Bad CRC TB from PCH at CELL_PCH state */
+    kal_uint8 cfn;       /* the cfn receiving Bad CRC TB from PCH at CELL_PCH state */
+} fdd_em_umac_info_pch_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    fdd_em_umac_info_pch_struct     pch_info;
+} fdd_em_umac_info_pch_ind_struct;
+
+
+typedef struct
+{
+    kal_bool        valid; /* indicate if this struct info is valid; SHALL be 0 or 1 */
+    kal_uint8       dummy1; /* 4 byte alignment for memcpy */
+    kal_uint16      dummy2; /* 4 byte alignment for memcpy */
+
+    /* Happy bit indicator; for EM View:
+            happy_rate = 100 * happy_count / tx_count
+            dtx_rate = 100 * dtx_count / (tx_count + dtx_count)
+     */
+    kal_uint32      happy_count;
+    kal_uint32      tx_count;
+    kal_uint32      dtx_count;
+
+    /* MAC-E layer throughput; for EM View:
+            retx_1st_rate = 100 * retx_1st_count / total_tx_count
+            retx_2nd_rate = 100 * retx_2nd_count / total_tx_count
+            retx_3rd_rate = 100 * retx_3rd_count / total_tx_count
+     */
+    kal_uint32      bit_rate;   /* total transmit SDU bits */
+    kal_uint32      block_rate; /* total transmit PDU bits */
+    kal_uint32      retx_1st_count;
+    kal_uint32      retx_2nd_count;
+    kal_uint32      retx_3rd_count;
+    kal_uint32      total_tx_count;
+
+    /* Serving Grant; for EM View:
+            sg_utilization = 100 * block_rate / sg_bit_rate;
+     */
+    kal_uint16      serving_grant[32];   /* count AG value when UE received AG command */
+    kal_uint32      sg_bit_rate; /* total grant bits*/
+    kal_uint32      sg_distribution; /* ??? */
+
+    kal_uint32      AckBlkCnt;   /* total Ack block count*/
+    kal_uint32      NackBlkCnt;  /* total Nack block count*/
+
+    kal_uint32      ETFCISampleCnt;  /* number of ucETFCI */
+                                     /* range: 0 ~ 500    */
+    kal_uint8       ucETFCI[500];   /* worst case: recording on 2ms TTI and transmitting data on each TTI*/
+} fdd_em_umac_info_cell_edch_struct;
+
+typedef struct
+{
+    kal_uint32 dl_rb_rate; // DL Radio Bearer Rate
+    kal_uint32 ul_rb_rate; // DL Radio Bearer Rate
+    kal_uint16 rx_num_error_pdu; //Tot Num of PDU!|d received in error
+    kal_uint16 rx_num_data_pdu_rxd; //Total Number of Data PDU!|s received
+    kal_uint16 num_pdu_nak_by_nw; // Total Number of PDU!|s NAK!|d by n/w
+    kal_uint16 pad;
+    kal_uint32 rx_num_pdu_bytes; // Total number of bytes Rx!|d (Control + Data)
+    kal_uint16 num_rlc_resets; //Number of RLC resets
+    kal_uint16 num_pdu_tx; //Tot number of PDU!|s Tx
+    kal_uint16 num_pdu_retx; // Tot number of PDU!|s Re- Tx
+    kal_uint16 tot_num_pdu_nak_to_nw; // Total Number of PDU!|s NAK!|d to n/w
+    kal_uint32 tx_num_pdu_bytes; // Total number of bytes Sent (Control + Data)
+} FDD_em_urlc_status_struct;
+
+typedef struct
+{
+    kal_uint32 ul_rlc_rate;
+    kal_uint32 dl_rlc_rate;
+    kal_uint32 ul_rlc_retx_rate;
+    kal_uint32 ul_rb_tpt[8];
+    kal_uint32 dl_rb_tpt[8];
+    kal_uint32 ul_rb_retx_rate[8];
+ } FDD_em_urlc_layer_tput_struct;
+
+
+typedef enum iq_rlc_mode_Tag
+{
+    IQ_RLC_MODE_UNKNOWN,        /* Mode could not be determined */
+    IQ_RLC_MODE_UNACKNOWLEDGED, /* Unacknowledged mode */
+    IQ_RLC_MODE_ACKNOWLEDGED,   /* Acknowledged mode */
+    IQ_RLC_MODE_TRANSPARENT,    /* Transparent mode */
+} iq_rlc_mode_t;
+
+typedef struct
+{
+    kal_uint8 ucUserRBId;       /* The ID of the user radio bearer to which this structure pertains (The deprecated name of this field was ucTrChId) */
+    iq_rlc_mode_t urRlcMode;    /* The RLC mode of operation for this radio bearer */
+    kal_uint16 wPad;            /* Padding for alignment, shall be set to 65535.*/
+    kal_uint32 dwRlcByteCnt;    /* Number of new RLC data (payload) bytes received (UL) or transmitted (DL) on this radio bearer */
+    kal_uint32 dwRlcBlkCnt;     /* Number of new RLC PDUs received or transmitted on this radio bearer */
+    kal_uint32 dwRlcReTrBlkCnt; /* Number retransmitted PDUs (UL) or number of PDUs requested for retransmission (DL) on this radio bearer */
+ } iq_rb_rlc_stats_t;
+
+
+typedef struct
+{
+    kal_uint32 dwRlcUlDuration; /* RLC uplink measurement period to which this metric pertains in milliseconds*/
+    kal_uint32 dwRlcDlDuration; /* RLC downlink measurement period to which this metric pertains in milliseconds*/
+    kal_uint8  ucNumUlUserRB;   /* Number of uplink user radio bearers to which this metric pertains (The deprecated name of this field was ucNumUlTrCh) */
+    kal_uint8  ucNumDlUserRB;   /* Number of user radio bearers to which this metric pertains (The deprecated name of this field was ucNumDlTrCh)*/
+    kal_uint16 wPad;   /* Padding for alignment, shall be set to 65535.*/
+    iq_rb_rlc_stats_t tRlcUlStats[8];   /* An array of structure type iq_rb_rlc_stats_t whose length is ucNumUlUserRB (The deprecated name of this field was iq_trch_rlc_stats_t) */
+    iq_rb_rlc_stats_t tRlcDlStats[8];   /* An array of structure type iq_rb_rlc_stats_t whose length is ucNumDlUserRB (The deprecated name of this field was iq_trch_rlc_stats_t) */
+ } FDD_em_urlc_att_rlc_statistics_struct;
+
+typedef struct
+{
+    kal_uint8  ucRadioBearerId;   /* The identity of the AM-RLC radio bearer to which the RESET pertains */
+    kal_uint8  ucDirection;       /* 0: The PDU was received by the UE, 1: The PDU was transmitted by the UE , All other values are reserved */
+    kal_uint8  ucPduType;         /* The type of PDU to which this metric pertains: 1: RESET PDU, 2: RESET ACK PDU, All other values are reserved NOTE: This field corresponds to PDU Type as defined in 3GPP TS 25.322/9.2.2.2 */
+    kal_uint8  ucResetSeqNum;     /* The sequence number of the reset transaction to which this metric pertains. Shall be set to 255 if the Reset Sequence Number is not available NOTE: This field corresponds to Reset Sequence Number as defined in 3GPP TS 25.322/9.2.2.13 */
+    kal_uint8  ucMaxRst;          /* 0: MaxRST has not yet been reached for this AM-RLC entity, 1: MaxRST has been reached (i.e., transmission of this PDU is prohibited) All other values are reserved. */
+ } FDD_em_urlc_att_rlc_reset_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    fdd_em_umac_info_cell_edch_struct       edch_info[2]; /* [0] is Primary Cell; [1] is Secondary Cell */
+} fdd_em_umac_info_edch_ind_struct; /* for periodic (1s) edch reporting */
+
+
+typedef struct
+{
+    kal_bool        valid; /* indicate if this struct info is valid; SHALL be 0 or 1 */
+    kal_uint8       dummy1; /* 4 byte alignment for memcpy */
+    kal_uint16      dummy2; /* 4 byte alignment for memcpy */
+
+    /* MAC layer HSDPA throughput; for EM View:
+            retx_1st_rate = 100 * retx_1st_count / total_tx_count
+            retx_2nd_rate = 100 * retx_2nd_count / total_tx_count
+            retx_3rd_rate = 100 * retx_3rd_count / total_tx_count
+            redundant_rate = 100 * redundant_TSN_count / total_TSN_count
+     */
+    kal_uint32      bit_rate;   /* total transmit SDU bits */
+    kal_uint32      block_rate; /* total transmit PDU bits */
+                                /* For MAC-hs, both bit_rate & block_rate include the MAC-hs header
+                                 * For MAC-ehs, only block_rate includes the MAC-ehs header */
+    kal_uint32      retx_1st_count;
+    kal_uint32      retx_2nd_count;
+    kal_uint32      retx_3rd_count;
+    kal_uint32      total_tx_count;         /* Count of MAC-hs PDU or "MAC-ehs PDU" */
+    kal_uint32      redundant_TSN_count;    /* Count of duplicated MAC-hs PDU or "MAC-ehs RO PDU" */
+    kal_uint32      total_TSN_count;        /* Count of MAC-hs PDU or "MAC-ehs RO PDU" */
+} fdd_em_umac_info_cell_hsdsch_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    fdd_em_umac_info_cell_hsdsch_struct     hsdsch_info[3]; /* [0] is Primary Cell; [1] is Secondary Cell */
+} fdd_em_umac_info_hsdsch_ind_struct; /* for periodic (1s) hsdsch reporting */
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    FDD_em_urlc_status_struct FDD_em_urlc_status_struct_info;
+} fdd_em_urlc_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    FDD_em_urlc_layer_tput_struct FDD_em_urlc_layer_tput_struct_info;
+} fdd_em_urlc_layer_tput_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    FDD_em_urlc_att_rlc_statistics_struct FDD_em_urlc_att_rlc_statistics_struct_info;
+} fdd_em_urlc_att_rlc_statistics_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    FDD_em_urlc_att_rlc_reset_struct FDD_em_urlc_att_rlc_reset_struct_info;
+} fdd_em_urlc_att_rlc_reset_ind_struct;
+
+
+#endif /* __UMTS_RAT__ */
+
+/***********UMAC LogCh to Trch Mapping Info****************/
+
+typedef enum
+{
+    FDD_LOGICAL_CHANNEL_NONE_EM = -1,
+    FDD_LOGICAL_CHANNEL_BCCH_EM,    
+    FDD_LOGICAL_CHANNEL_PCCH_EM,
+    FDD_LOGICAL_CHANNEL_CCCH_EM,
+    FDD_LOGICAL_CHANNEL_DCCH_EM,
+    FDD_LOGICAL_CHANNEL_DTCH_EM,
+    FDD_LOGICAL_CHANNEL_CTCH_EM,
+    FDD_LAST_LOGICAL_CHANNEL_EM = FDD_LOGICAL_CHANNEL_CTCH_EM
+} FDD_LogicalChannelType;
+
+typedef enum
+{
+    FDD_UL_CCTrCh_Type_none_EM = -1,
+    FDD_UL_CCTrCh_Type_rach_EM ,
+    FDD_UL_CCTrCH_Type_dch_EM,
+    FDD_UL_CCTrCH_Type_Inactive_EM,
+    FDD_UL_CCTrCH_Type_e_dch_EM,
+    FDD_UL_CCTrCH_Type_Invalid_EM 
+}FDD_UL_CCTrCH_Type_EM;
+
+typedef enum
+{
+    FDD_DL_CCTrCH_Type_bch_EM,
+    FDD_DL_CCTrCH_Type_pch_EM,
+    FDD_DL_CCTrCH_Type_fach_EM,
+    FDD_DL_CCTrCH_Type_dch_EM,   
+    FDD_DL_CCTrCH_Type_dsch_EM,
+    FDD_DL_CCTrCH_Type_hs_dsch_EM,
+    FDD_DL_CCTrCH_Type_Invalid_EM
+}FDD_DL_CCTrCH_Type_EM;
+
+typedef enum 
+{
+    RLC_TM_EM = 1,
+    RLC_UM_EM,
+    RLC_AM_EM
+} RLCEntityMode;
+
+
+typedef struct
+{
+    FDD_LogicalChannelType      ChannelType;
+    kal_uint8                   RbId;/*LCH and RB have one to one mapping in R99*/
+    RLCEntityMode               EntityMode;
+}FDD_R99_MacTxLogicalChannel;
+
+typedef struct
+{
+    FDD_LogicalChannelType      ChannelType;
+    kal_uint8                   RbId;/*LCH and RB have one to one mapping in R99*/
+    RLCEntityMode               EntityMode;
+}FDD_R99_MacRxLogicalChannel;
+
+typedef struct
+{
+    kal_uint8                   MacDFlowId; /* For MAC-hs use only */
+    RLCEntityMode               EntityMode;
+    FDD_LogicalChannelType      ChannelType;    
+    kal_uint8                   LogChID; //SLCE will configure this value only when Mac-ehs configured
+    kal_uint8                   MacEhsQueueID;
+} FDD_MacRxLogicalChannel;
+
+typedef struct
+{
+    kal_uint8                       Id;
+    FDD_UL_CCTrCH_Type_EM           CCTrCHtype; /*For TX, this type is identity*/
+    FDD_R99_MacTxLogicalChannel     LogicalChannelInfo[15]; /* Iterate through NoOfLogicalChannel, since this is the max NoOfLogicalChannel which a Queue can have*/
+}fdd_umac_r99_ul_mapping_info_ind_struct;
+
+typedef struct
+{
+    kal_uint8                       Id;
+    FDD_DL_CCTrCH_Type_EM           CCTrCHtype; /* For TX, this type is identity*/
+    FDD_R99_MacRxLogicalChannel     LogicalChannelInfo[15]; /* Iterate through NoOfLogicalChannel, since this is the max NoOfLogicalChannel which a Queue can have*/
+}fdd_umac_r99_dl_mapping_info_ind_struct;
+
+
+typedef struct
+{
+    kal_uint8                   Queue_Id;    /* 0~ 7. The MAC-hs queue ID is unique across all MAC-d flows */
+    kal_uint8                   Flow_Id;    /* 0 ~ 7. One MAC-d flow can associate to more than one MAC-hs Queue */
+    FDD_MacRxLogicalChannel     LogicalChannelInfo[15]; /* Iterate through NoOfLogicalChannel, since this is the max NoOfLogicalChannel which a Queue can have*/
+}fdd_umac_hsdsch_mapping_info_ind_struct;
+
+typedef enum
+{
+    hsdsch_mapping_info_ind = 1,
+    r99_dl_mapping_info_ind,
+    r99_ul_mapping_info_ind
+}fdd_release_info_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum                em_info;
+    kal_uint8                   NoOfLogicalChannel;/* Nooflogicalchannel belongs to one queue is MAC-hs or one trch in case R99*/
+    fdd_release_info_enum       release_info;
+    union
+    {
+        fdd_umac_hsdsch_mapping_info_ind_struct em_hsdsch_info;
+        fdd_umac_r99_dl_mapping_info_ind_struct em_r99_dl_info;
+        fdd_umac_r99_ul_mapping_info_ind_struct em_r99_ul_info;
+    }choice;  /*Selection of type of mapping info depends on release_info_enum*/
+}fdd_em_umac_lchid_trch_mapping_info_struct;
+
+
+
+#endif /* _EM_UL2_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_vdm_public_struct.h b/mcu/interface/service/em/em_vdm_public_struct.h
new file mode 100644
index 0000000..44b3489
--- /dev/null
+++ b/mcu/interface/service/em/em_vdm_public_struct.h
@@ -0,0 +1,316 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_vdm_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Engineer mode public structures.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *              HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * 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 _EM_VDM_PUBLIC_STRUCT_H
+#define _EM_VDM_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+#include "ims_interface_md.h"
+
+#define EM_VDM_TRK_MAX_DOMAIN_ATTEMPT_RECORD 20  // align VDM_MAX_DOMAIN_ATTEMPT_RECORD
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+/* should be synced with vdm_trk_call_inst_state_enum*/
+typedef enum{
+    EM_VDM_CALL_STATE_DISCONNECTED = 0,
+    EM_VDM_CALL_STATE_CONNECTED,
+    EM_VDM_CALL_STATE_MO_EST_ADS_INIT,
+    EM_VDM_CALL_STATE_MO_EST_MSPM,
+    EM_VDM_CALL_STATE_MO_EST_ADS_EXE,
+    EM_VDM_CALL_STATE_MO_EST_DOMAIN_ATMP,
+    EM_VDM_CALL_STATE_MO_EST_CC_PROCESS,
+    EM_VDM_CALL_STATE_MO_EST_ADS_END,
+    EM_VDM_CALL_STATE_MT_EST_APPROVE,
+    EM_VDM_CALL_STATE_MT_EST_DOMAIN_ATMP
+} em_vdm_call_state_enum;
+
+/* align vdm_trk_call_inst_domain_enum */
+typedef enum{
+    EM_VDM_TRK_CALL_INST_DOMAIN_NULL = 0,      // Domain not decided yet
+    EM_VDM_TRK_CALL_INST_DOMAIN_WG_CS = 1,     // 3gpp CS
+    EM_VDM_TRK_CALL_INST_DOMAIN_C2K_CS = 2,    // 3gpp2 CS
+    EM_VDM_TRK_CALL_INST_DOMAIN_LTE = 3,
+    EM_VDM_TRK_CALL_INST_DOMAIN_WIFI = 4,
+    EM_VDM_TRK_CALL_INST_DOMAIN_NR = 5,
+    EM_VDM_TRK_CALL_INST_DOMAIN_MAX
+} em_vdm_trk_call_inst_domain_enum;
+
+/* align em_vdm_trk_call_inst_domain_enum */
+typedef em_vdm_trk_call_inst_domain_enum em_vdm_ads_select_result_enum;
+
+typedef enum{
+    EM_VDM_SSAC_NO_BARRING = 0,
+    EM_VDM_SSAC_BARRING_FOR_MMTEL_VOICE = 1,
+    EM_VDM_SSAC_BARRING_FOR_MMTEL_VIDEO = 2
+} em_vdm_ssac_cause_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint8                        call_id;
+    em_vdm_call_state_enum           state;
+    ims_call_dir_enum                dir;
+    ims_call_mode_enum               mode;
+    kal_uint8                        number[MAX_CC_ECPI_NUM_LEN];
+    ims_disc_cause_enum              disc_cause;
+    em_vdm_trk_call_inst_domain_enum domain;
+    kal_bool                         is_emergency;
+    kal_bool                         ims_380_occur;
+    kal_bool                         is_ims_380_redial_normal;
+    kal_bool                         is_trk_redial_as_ecc;
+
+    /* align vdm_trk_domain_attempt_rec_struct */
+    em_vdm_ads_select_result_enum    domain_atmp_domain[EM_VDM_TRK_MAX_DOMAIN_ATTEMPT_RECORD];
+    ims_cc_cause_enum                domain_atmp_failure_cause[EM_VDM_TRK_MAX_DOMAIN_ATTEMPT_RECORD];
+    kal_uint8                        domain_attempt_rec_idx;
+} em_vdm_call_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+
+    kal_uint8                        barringtime;
+    kal_uint8                        barringfactor;
+    ims_call_mode_enum               est_type;
+    em_vdm_ssac_cause_enum           cause;
+    
+} em_vdm_ssac_info_ind_struct;
+
+#endif /* _EM_VDM_PUBLIC_STRUCT_H */
+
diff --git a/mcu/interface/service/em/em_wo_public_struct.h b/mcu/interface/service/em/em_wo_public_struct.h
new file mode 100644
index 0000000..99fb118
--- /dev/null
+++ b/mcu/interface/service/em/em_wo_public_struct.h
@@ -0,0 +1,120 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+#ifndef _EM_WO_PUBLIC_STRUCT_H_
+#define _EM_WO_PUBLIC_STRUCT_H_
+
+#include "em_public_struct.h"
+#include "atcmd_enum.h"
+
+// MSG_ID_EM_WO_IKE_SRCPORT_INFO_IND
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint16 port;
+} em_wo_ike_srcport_info_ind_struct;
+
+// MSG_ID_EM_WO_IKE_NATT_SRCPORT_INFO_IND
+typedef em_wo_ike_srcport_info_ind_struct em_wo_ike_natt_srcport_info_ind_struct;
+
+// MSG_ID_EM_WO_IKE_DECRYPT_INFO_ADD_IND
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 spi_i[20];
+    kal_uint8 spi_r[20];
+    kal_uint8 sk_ei[256];
+    kal_uint8 sk_er[256];
+    kal_uint16 enc_algo;
+    kal_uint16 enc_key_size;
+    kal_uint8 sk_ai[256];
+    kal_uint8 sk_ar[256];
+    kal_uint16 int_algo;
+} em_wo_ike_decrypt_info_add_ind_struct;
+
+// MSG_ID_EM_WO_IKE_DECRYPT_INFO_DEL_IND
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 spi_i[20];
+    kal_uint8 spi_r[20];
+} em_wo_ike_decrypt_info_del_ind_struct;
+
+// MSG_ID_EM_WO_ESP_DECRYPT_INFO_ADD_IND
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint16 ip_proto_version;
+    kal_uint8 spi[20];
+    kal_uint8 src_ip[64];
+    kal_uint8 dst_ip[64];
+    kal_uint16 enc_algo;
+    kal_uint16 enc_key_size;
+    kal_uint8 enc_key[256];
+    kal_uint16 int_algo;
+    kal_uint8 int_key[256];
+} em_wo_esp_decrypt_info_add_ind_struct;
+
+// MSG_ID_EM_WO_ESP_DECRYPT_INFO_DEL_IND
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8 spi[20];
+} em_wo_esp_decrypt_info_del_ind_struct;
+
+// MSG_ID_EM_WO_DPD_INTERVAL_INFO_IND
+typedef struct
+{
+    LOCAL_PARA_HDR
+    em_info_enum em_info;
+    kal_uint8  apn[APN_STRING_LEN];
+    kal_uint32 interval;
+} em_wo_dpd_interval_info_ind_struct;
+
+#endif /* _EM_WO_PUBLIC_STRUCT_H_ */
+
diff --git a/mcu/interface/service/em/em_xcap_public_struct.h b/mcu/interface/service/em/em_xcap_public_struct.h
new file mode 100644
index 0000000..a2da943
--- /dev/null
+++ b/mcu/interface/service/em/em_xcap_public_struct.h
@@ -0,0 +1,129 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_xcap_public_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   XCAP View public structures.
+ *
+ * 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 _EM_XCAP_PUBLIC_STRUCT_H
+#define _EM_XCAP_PUBLIC_STRUCT_H
+
+#include "em_public_struct.h"
+
+/********************* begin of XCAP definition ****************************/
+
+typedef enum {
+    XCAP_DIR_MO,
+    XCAP_DIR_MT,
+    XCAP_DIR_UNSPECIFIED
+} xcap_direction_enum;
+
+typedef enum {
+    XCAP_TRANS_HTTP,
+    XCAP_TRANS_HTTPS,
+    XCAP_TRANS_UNSPECIFIED
+} xcap_protocol_enum;
+
+typedef enum {
+    XCAP_ACCESS_RAT_PUBLIC_WIFI,
+    XCAP_ACCESS_RAT_CELLULAR,
+    XCAP_ACCESS_RAT_EPDG,
+    XCAP_ACCESS_RAT_UNSPECIFIED
+} xcap_access_rat_enum;
+
+typedef enum {
+    XCAP_INTERFACE_UA,
+    XCAP_INTERFACE_UB,
+    XCAP_INTERFACE_UNSPECIFIED
+} xcap_interface_type_enum;
+
+typedef enum {
+    XCAP_OPERATION_QUERY,
+    XCAP_OPERATION_MODIFY,
+    XCAP_OPERATION_DELETE,
+    XCAP_OPERATION_UNSPECIFIED
+} xcap_operation_enum;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    em_info_enum                    em_info;      // = EM_XCAP_INFO_IND
+
+    kal_uint8                       protocol_id;
+    kal_uint8                       sim_slot_id;
+    xcap_direction_enum             direction;
+    xcap_protocol_enum              protocol;
+    kal_uint32                      port_num;
+    xcap_access_rat_enum            rat_type;
+    xcap_interface_type_enum        if_type;
+    kal_uint32                      session_id;
+    xcap_operation_enum             operation;
+} em_xcap_info_ind_struct;
+
+/********************* end of XCAP definition ****************************/
+
+#endif
diff --git a/mcu/interface/service/em/protect/em_mapping_for_tool.h b/mcu/interface/service/em/protect/em_mapping_for_tool.h
new file mode 100644
index 0000000..4ad9a3c
--- /dev/null
+++ b/mcu/interface/service/em/protect/em_mapping_for_tool.h
@@ -0,0 +1,342 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   em_mapping_for_tool.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   Message id to em access level mapping table
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 04 26 2020 akash.gowda
+ * [MOLY00517603] [EMview] some EL1StatsHQ parameters view access to mtk_internal
+ * 	remove mapped access of OV_STATUS_IND to MTK_INTENAL[EWSP0000106298]
+ *
+ * 01 17 2020 jen-de.lai
+ * [MOLY00470713] ?¤_DMF¥\¯àªººÃ?
+ * 	
+ * 	- update C2K EM trace filter for customer ELT
+ *
+ * 09 24 2019 howen.pu
+ * [MOLY00440880] EM info with XCAP information
+ * 	
+ * 	XCAP - EM part.
+ *
+ * 05 28 2019 yuchi.huang
+ * [MOLY00408807] [MT6297][NR][EM] NL1 EMdevelopment
+ * 	
+ * 	-add EM interface
+ *
+ * 06 11 2018 huang-da.chen
+ * [MOLY00331090] [TINNO][SPRINT] UICC Unlock Feature(Trace enhancement & Bug fix)
+ * .
+ *
+ * 06 11 2018 huang-da.chen
+ * [MOLY00331090] [TINNO][SPRINT] UICC Unlock Feature(Trace enhancement & Bug fix)
+ * .
+ *
+ * 06 11 2018 huang-da.chen
+ * [MOLY00331090] [TINNO][SPRINT] UICC Unlock Feature(Trace enhancement & Bug fix)
+ * .
+ *
+ * 06 11 2018 huang-da.chen
+ * [MOLY00331090] [TINNO][SPRINT] UICC Unlock Feature(Trace enhancement & Bug fix)
+ * .
+ *
+ * 01 09 2018 danny.kuo
+ * [MOLY00300859] [Gen93] Update SBP mapping table for OP132/156/187/188
+ * .
+ *
+ * 10 24 2017 danny.kuo
+ * [MOLY00285077] ELT C2K LOG¸ÑªR??
+ * .
+ *
+ * 08 16 2017 kevin.tseng
+ * [MOLY00265639] [IMS] RTP on ELT - interface part - UMOLY
+ * 	
+ * 	- UMOLYA
+ *
+ * 02 23 2017 danny.kuo
+ * [MOLY00229528] [EM][UMOLYA][COMMON FILE]divide em_public_struch.h for each library
+ * 	
+ * 	.
+ *
+ * 02 07 2017 danny.kuo
+ * [MOLY00226183] [new feature]C2K EM Develop: EM common header files
+ *
+ * 03 02 2016 danny.kuo
+ * [MOLY00167162] [IMS] Resolve SIP display issues
+ * .
+ *
+ * 07 28 2015 peng.pan
+ * [MOLY00130960] [Volunteer Patch][TK6291E1] FT EM support DHL mapping
+ * Rollback //UMOLY/TRUNK/UMOLY/mcu/pcore/modem/common/config/include/em_mapping_for_tool.h to revision 26
+ *
+ * 07 03 2015 hong.yu
+ * [MOLY00124020] [EM] revise MD EM framework to support L+W
+ * EM Gemini revise
+ *
+ * 06 11 2015 ariel.lin
+ * [MOLY00120396] [UMOLY] VoLTE patch back from MP7
+ * Merge from CL1353395.
+ *
+ * 06 05 2015 ariel.lin
+ * MP7 to UMOLY.
+ *
+ * 04 30 2015 chun-fan.tsai
+ * [MOLY00098400] [6291] eRRC CONN EM
+ * Change publish level of ERRC_HO_KPI
+ *
+ * 04 28 2015 ming.shen
+ * [MOLY00098874] [RRCE][EM Info] KPI status - 3G2IR event
+ * 	.
+ *
+ * 04 24 2015 bart.liang
+ * [MOLY00108086] [6291][L4c] EM framework revise
+ *
+ * 04 24 2015 zhipeng.feng
+ * [MOLY00100064] [MT6290][CMCC FT Auto Test Tool][TDD CSFB] add EM info for CSFB FT Auto Test Tool
+ * .
+ *
+ * 04 22 2015 ming.shen
+ * [MOLY00098874] [RRCE][EM Info] KPI status - 3G2IR event
+ * 	.
+ *
+ * 04 17 2015 stan.chen
+ * [MOLY00098774] [UPCM] EM Info for 91
+ * 	[UPCM] Add EM mapping for tool.
+ *
+ * 04 17 2015 songsong.jia
+ * [MOLY00107769] [MT6291] Legacy EM message/type/data strucure modification
+ * 	.
+ *
+ * 04 17 2015 hongwei.zhang
+ * [MOLY00107769] [MT6291] Legacy EM message/type/data strucure modification
+ *  TDD/FDD EM Type split.
+ *
+ * 04 17 2015 yuhhwang.yu
+ * [MOLY00107769] [MT6291] Legacy EM message/type/data strucure modification
+ * . CSCE part
+ *
+ * 04 17 2015 claud.li
+ * [MOLY00107769] [MT6291] Legacy EM message/type/data strucure modification
+ * [MEME EM] split em enum to FDD/TDD.
+ *
+ * 04 17 2015 wynne.chu
+ * [MOLY00098943] [UMOLY][TCM] em mode
+ * 	Add to em_mapping_for_tool.h.
+ *
+ * 04 17 2015 ming.shen
+ * [MOLY00104543] [EM] Universal Bin Modification- 3G_GENERAL_STATUS_IND
+ * 	.
+ *
+ * 04 17 2015 wenlong.an
+ * [MOLY00107769] [MT6291] Legacy EM message/type/data strucure modification
+ * EM [UBIN] impact
+ *
+ * 04 16 2015 jack.chu
+ * [MOLY00100048] [6291][EM] EM Component Group: HSPA configuration in 3G dedicated
+ * 	.
+ *
+ * 03 27 2015 cp.chiang
+ * [MOLY00104408] [MT6291][EM][EL1] modify for EM
+ * .
+ *
+ * 03 18 2015 taili.chiang
+ * [MOLY00084384] [C90][New Feature][Engineering Mode Update Request]UL1 report PRX/DRX measurement for EM
+ * .
+ *
+ * 03 13 2015 taili.chiang
+ * [MOLY00099027] [UMOLY] Add new interface for UL1 EM information of MT6291 EM task
+ * .
+ *
+ * 02 02 2015 chi-chung.lin
+ * [MOLY00089131] [MT6291 Gemini] L+W+W+W code revision check in
+ * MOLY->UMOLY code sync.
+ *
+ * 12 30 2014 george.chang
+ * [MOLY00077536] [CMCC][TD-L] Terminal Field Test precondition detection using EM interface
+ * .
+ *
+ * 12 17 2014 mu.ding
+ * [MOLY00077536] [CMCC][TD-L] Terminal Field Test precondition detection using EM interface
+ * 	.
+ *
+ * 11 27 2014 ethan.han
+ * [MOLY00040490] [RRCE][Security] 3G security information display in engineering mode UI. Port related code to WR8.
+ * 	.
+ *
+ * 10 23 2014 steve.kao
+ * [MOLY00075475] add RB count in EM
+ * Add RB count in EM.     
+ * 	
+ * 	
+ * 	
+ * 	Merging
+ * 	
+ * 	//MOLY_CBr/steve.kao/MOLY_mp6tc01sp.43p6.patch/mcu/...
+ * 	
+ * 	to //MOLY/BRANCHES_LR9/LR9.W1440.MD.LWTG.TC01.SP/mcu/...
+ *
+ * 10 22 2014 peter.chien
+ * [MOLY00078113] ERRC add EM message ID and EM type mapping
+ * .
+ *
+ * 09 12 2014 peter.hsu
+ * [MOLY00078729] UL throttling EM ELT Implementation
+ * + L1S flavor not support EM, add compile option
+ * + EM access level set to MTK Internel
+ *
+ * 09 12 2014 peter.hsu
+ * [MOLY00078729] UL throttling EM ELT Implementation
+ * [IPCORE] T-put Throttling EM ELT Implementation
+ *
+ * 09 05 2014 aaron.liu
+ * [MOLY00078113] ERRC add EM message ID and EM type mapping
+ * .
+ *
+ * 09 05 2014 william.chang
+ * [MOLY00078113] ERRC add EM message ID and EM type mapping
+ * .
+ *
+ * 09 05 2014 rainee.yeh
+ * [MOLY00078113] ERRC add EM message ID and EM type mapping
+ * Integration change.
+ *
+ * 09 01 2014 timothy.yao
+ * [MOLY00075475] add RB count in EM
+ * add EL2 pub EM info : drb/srb_num
+ * 
+ * Merging
+ *  	
+ * 	//MOLY_CBr/timothy.yao/MOLY_MP6.W1434p1/mcu/...
+ *  	
+ * 	to //MOLY/TRUNK/MOLY/mcu/...
+ *
+ * 07 07 2014 yuda.lee
+ * [MOLY00071626] [UL1D][Modify] Publish UL1D EM log for ELT EM view.
+ * .
+ *
+ * 01 21 2014 yr.chiang
+ * [MOLY00054538] [MT6290E2][EL1] EL1 Trace update for EM Customer Release
+ * .
+ *
+ * 01 14 2014 stanleyhy.chen
+ * [MOLY00053071] EM type access level control. Add em_info_access_level_map
+ * Add compile option __DHL_TRACE_ENABLED__
+ *
+ *
+ ****************************************************************************/
+
+#ifdef GEN_FOR_CPARSER
+#include "dhl_trace.h"
+
+#include "em_public_struct.h"
+
+/* Mapping table: EM MSG ID to EM Type */
+typedef enum 
+{
+    /* One MSG ID can only be mapped to one EM type */
+
+    /* Add MAPPED_ before MSG ID */
+
+#define EM_INFO(EM_SRV,X,Y,X_BM,Y_BM,MSGID) MAPPED_##MSGID = EM_SRV,
+
+    #include "em_info.h"
+
+#undef EM_INFO
+} msg_id_to_em_info_map;
+
+#ifdef __DHL_TRACE_ENABLED__
+
+/* Mapping table: EM MSG ID to access level */
+typedef enum
+{
+    /* For the MSG_ID not listed below, the default setting is ALL_USER and customers will be able to read it */
+    
+    /* Add MAPPED_ACCESS_LEVEL_ before MSG ID */
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_EL2_OV_STATUS_IND                 = DHL_ACCESS_LEVEL_7_HQ_ONLY,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_EL1_OV_STATUS_IND                 = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_QBM_STATUS_IND                    = DHL_ACCESS_LEVEL_7_HQ_ONLY,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_IPC_UL_THROTTLE_STATUS_IND        = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_EVL1_MBP_SECTOR_INFO_IND                  = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_EVL1_FMP_FINGER_INFO_IND                  = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_EVL1_TIMING_TRACK_STATUS_IND              = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_EVL1_SCH_STATUS_IND                       = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_EVL1_SCH_RESULT_INFO_IND                  = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_XL1_TX_PATH_INFO_IND                      = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_XL1_AFC_INFO_IND                          = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_XL1_STATUS_INFO_IND                       = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_XL1_RAKE_INFO_IND                         = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_XL1_CRC_INFO_IND                          = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_XL1_MMAFC_INIT_FOE_INFO_IND               = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_XL1_TIMING_LOOP_INFO_IND                  = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_C2K_RTBA_CHANNEL_STATUS_INFO_IND          = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_C2K_DO_SPAGE_STATE_INFO_IND               = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_C2K_HSC_MPA_STATUS_INFO_IND               = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_C2K_LL1A_STATE_MODE_INFO_IND              = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_C2K_LL1A_STANDBY_GAP_INFO_IND             = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_C2K_LL1A_ACTIVE_GAP_INFO_IND              = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+
+    /*
+    * Please don't define __IMS_OTA_MESSAGE_SUPPORT__ without the permission of the RD/Manager of IMC.
+    */
+#ifndef __IMS_OTA_MESSAGE_SUPPORT__
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_IMC_SIP_INFO_IND = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_LTECSR_RTP_INFO_IND = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_LTECSR_RTCP_INFO_IND = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_XCAP_INFO_IND = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+#endif
+    MAPPED_ACCESS_LEVEL_MSG_ID_SMU_DUMP_SML_CONTEXT_IND                     = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+    MAPPED_ACCESS_LEVEL_MSG_ID_EM_NL1_SYNC_STATUS_IND                           = DHL_ACCESS_LEVEL_4_MTK_INTERNAL,
+} msg_id_access_level_map;
+
+#endif /* __DHL_TRACE_ENABLED__ */
+
+#endif