[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
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