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

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

Change-Id: I45a4c2752fa9d1a618beacd5d40737fb39ab64fb
diff --git a/mcu/protocol/interface/ims/ltecsr_struct.h b/mcu/protocol/interface/ims/ltecsr_struct.h
new file mode 100644
index 0000000..07c0b8d
--- /dev/null
+++ b/mcu/protocol/interface/ims/ltecsr_struct.h
@@ -0,0 +1,1178 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software 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:
+ * ---------
+ *   ltecsr_struct.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *	define the message struct parameters
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef _LTECSR_STRUCT_H
+#define _LTECSR_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+
+#include "codec_def.h"
+#include "ims_common_def.h"
+#include "ims_nvram_editor.h"
+
+/* value define for common_para2 */
+typedef enum e_ltecsr_feature_option {
+	LTECSR_FEATURE_NONE                     = (0),
+	LTECSR_FEATURE_DTMF_MUTE                = (1<<0),
+	LTECSR_FEATURE_HOLDCALL_DL_CHECK        = (1<<1),
+	LTECSR_FEATURE_ALWAYS_ONE_SHOT_DTMF     = (1<<2),
+	LTECSR_FEATURE_DTMF_END_SEP_ENABLE      = (1<<3),
+	LTECSR_FEATURE_DYNAMIC_QOS              = (1<<4),
+	LTECSR_FEATURE_FIX_RTCP_INTERVAL_ACTIVE = (1<<5),	
+	LTECSR_FEATURE_FIX_RTCP_INTERVAL_HOLD   = (1<<6),
+	LTECSR_FEATURE_PING_PCSCF_ENABLE        = (1<<7),
+	LTECSR_FEATURE_RTCP_MAX_INTERVAL_ENABLE = (1<<8),
+	LTECSR_FEATURE_IGNORE_BEARER_LOST       = (1<<9),
+	LTECSR_FEATURE_DTMF_END_DURATION_UPDATE = (1<<10),
+	LTECSR_FRATURE_CMR_DISABLE = (1<<11),
+    LTECSR_FEATURE_SEND_INCOMING_DLPKT = (1<<12),
+	LTECSR_FEATURE_DISABLE_UDPCHECKSUM_SEND = (1<<13),
+} ltecsr_feature_option_e;
+
+/* value define for nvram stat_feature_option */
+typedef enum e_ltecsr_stat_feature_option {
+    LTECSR_STAT_NONE        = (0),
+    LTECSR_STAT_MDMI        = (1<<0),
+    LTECSR_STAT_CIQ         = (1<<1),
+    LTECSR_STAT_ECHO        = (1<<2),
+    LTECSR_STAT_HIDDEN      = (1<<3),
+    LTECSR_STAT_RJIL        = (1<<4),
+} ltecsr_stat_feature_option_e;
+
+typedef enum e_func_class {
+	FC_RTP          = IMCB_IMC_FC_RTP,
+	FC_XMIT         = IMCB_IMC_FC_XMIT,
+	FC_VOICE        = IMCB_IMC_FC_VOICE,
+	FC_VIDEO        = IMCB_IMC_FC_VIDEO,
+	FC_DTMF         = IMCB_IMC_FC_DTMF,
+	FC_CODEC        = IMCB_IMC_FC_CODEC,
+	FC_HANDOVER     = IMCB_IMC_FC_HANDOVER,
+	FC_TTY          = IMCB_IMC_FC_TTY,
+} func_class_e;
+
+typedef enum e_xmit_mode {
+	XMIT_MODE_NONE=0,
+	XMIT_MODE_INACTIVE,
+	XMIT_MODE_SENDONLY,
+	XMIT_MODE_RECVONLY,
+	XMIT_MODE_SENDRECV,
+	XMIT_MODE_ACTIVE,
+} xmit_mode_e;
+
+typedef enum e_ecfg{
+    LTECSR_ECFG_NONE                        = 0,
+    LTECSR_ECFG_DTX_ENABLE                  = 1,
+    LTECSR_ECFG_SILENCE_DROPCALL_THRESHOLD  = 2,
+    LTECSR_ECFG_JBM_LOAD_PARAMS_ENABLE      = 3,
+    LTECSR_ECFG_JBM_PREBUF_LEN              = 4,
+    LTECSR_ECFG_JBM_JITTER_MAX_DEPTH        = 5,
+    LTECSR_ECFG_JBM_JITTER_FULL_OFFSET      = 6,
+    LTECSR_ECFG_LTECSR_COMMON_PARA0         = 7,
+    LTECSR_ECFG_LTECSR_COMMON_PARA1         = 8,
+    LTECSR_ECFG_LTECSR_COMMON_PARA2         = 9,
+    LTECSR_ECFG_LTECSR_COMMON_PARA3         = 10,
+    LTECSR_ECFG_LTECSR_COMMON_PARA4         = 11,
+
+    LTECSR_ECFG_SILENCE_TO_RRC_REPORT_THRRESHOLD    = 12,
+    LTECSR_ECFG_RTP_EXPIRE_TIMER                    = 13,
+    LTECSR_ECFG_RTCP_EXPIRE_TIMER                   = 14,
+    LTECSR_ECFG_RTCP_XR_INTERVAL                    = 15,
+    LTECSR_ECFG_RTCP_XR_COMPOUND_RTCP               = 16,
+    LTECSR_ECFG_RTCP_XR_GMIN                        = 17,
+    LTECSR_ECFG_RTCP_FIX_INTERVAL_ACTIVE            = 18,
+    LTECSR_ECFG_RTCP_FIX_INTERVAL_HOLD              = 19,
+    LTECSR_ECFG_TTY_SYNC_BUF_TIME                   = 20,
+    LTECSR_ECFG_TTY_WAIT_TIME                       = 21,
+    LTECSR_ECFG_TTY_SEN_DIFF                        = 22,
+    LTECSR_ECFG_SILENCE_PING_PCSCF_THRESHOLD        = 23,
+    LTECSR_ECFG_RTCP_MIN_INTERVAL                   = 24,
+    LTECSR_ECFG_RTCP_MAX_INTERVAL                   = 25,
+    LTECSR_ECFG_STAT_FEATURE_OPTION                 = 26,
+    LTECSR_ECFG_STAT_REPORT_INTERVAL                = 27,
+    LTECSR_ECFG_EVS_PREFER_RATE                     = 28,
+
+    LTECSR_ECFG_RESET_DEFAULT                       = 29,
+
+    LTECSR_ECFG_TEXT_RTP_EXPIRE_TIMER               = 30,
+    LTECSR_ECFG_TEXT_RTCP_EXPIRE_TIMER              = 31,
+    LTECSR_ECFG_TEXT_RTP_RTCP_EXPIRE_TIMER          = 32,
+    LTECSR_ECFG_WFC_SILENCE_THRESHOLD               = 33,
+    LTECSR_ECFG_EVOLTE_DELAY_THRESHOLD              = 34,
+    LTECSR_ECFG_EVOLTE_JITTER_THRESHOLD             = 35,
+    LTECSR_ECFG_EVOLTE_PLR_THRESHOLD                = 36,
+    LTECSR_ECFG_EVOLTE_ANBR_ENABLE                  = 37,
+    LTECSR_ECFG_EVOLTE_ANBR_PARA                    = 38,
+
+    LTECSR_ECFG_DUMP_PROFILE                        = 39,
+    LTECSR_ECFG_NO_RTP_DROPCALL                     = 40,
+    LTECSR_ECFG_UL_SILENCE_DROPCALL_THRESHOLD       = 41,
+
+    LTECSR_ECFG_RA_PARA                             = 44,
+    LTECSR_ECFG_RA_DURATION_MAX                     = 45,
+    LTECSR_ECFG_RA_DURATION_LOW                     = 46,
+    LTECSR_ECFG_RA_RSRP_POOR_TH                     = 47,
+    LTECSR_ECFG_RA_RSRP_GOOD_TH                     = 48,
+    LTECSR_ECFG_RA_SINR_POOR_TH                     = 49,
+    LTECSR_ECFG_RA_SINR_GOOD_TH                     = 50,
+	
+    LTECSR_ECFG_MAX                                 ,
+} ecfg_e;
+
+enum VoLTE_Event_IP_Version_e {
+    VoLTE_Event_IPv4 = 0, 
+    VoLTE_Event_IPv6,
+    /*add here*/    
+    VoLTE_Event_IPv_Max,
+};
+
+enum VoLTE_Event_ECN_RTP_METHOD_e {
+    VoLTE_Event_ECN_RTP_NONE = 0,
+    VoLTE_Event_ECN_RTP,
+    VoLTE_Event_ECN_RTP_ICE,
+    VoLTE_Event_ECN_RTP_LEAP,
+    /*add here*/    
+    VoLTE_Event_ECN_RTP_Max,
+};
+
+/* Bit-map
+
+    bit0: ALTC
+
+*/
+enum  VoLTE_Event_Media_Feature_Flag_e {
+    VoLTE_Event_Media_Feature_Flag_Altc = (1<<0),
+};
+
+typedef enum e_dtmf_mode {
+	DTMF_IN_BAND=0,
+	DTMF_OUT_BAND=1,
+	DTMF_INOUT_BAND=2,
+} dtmf_mode_e;
+
+typedef enum e_dtmf_duration {
+	DTMF_PLAY_INFINITE=-1,
+	DTMF_STOP=0,
+	DTMF_PLAY_ONESHOT=40, 
+	/* others value: for unit(ms) */
+} dtmf_duration_e;
+
+typedef enum e_dtmf_clock_rate {
+	DTMF_CLOCK_RATE_8000 = 0,
+	DTMF_CLOCK_RATE_16000 = 1,
+} dtmf_clock_rate_e;
+
+typedef struct s_xxx2ltecsr_dtmf_param {
+	kal_int32 cid;
+//	kal_int32 sid;
+	kal_uint8 digit;
+//	kal_int8 mode;
+	kal_int8 duration;
+} xxx2ltecsr_dtmf_param_t;
+
+typedef enum e_dtmf_event_state {
+	DTMF_KEY_RELEASE =0,
+	DTMF_KEY_PUSH_STR=1,
+	DTMF_KEY_PUSH_ING=2,
+	DTMF_KEY_PUSH_RE1=3,
+	DTMF_KEY_PUSH_RE2=4,
+	DTMF_KEY_PUSH_RE3=5,
+} dtmf_event_state_e;
+
+typedef enum {
+	LTECSR_HO_START = 0,
+	LTECSR_HO_END   = 1
+} ltecsr_ho_stage_enum;
+
+
+
+#define VOLTE_IPV4_LENGTH                   4
+#define VOLTE_IPV6_LENGTH                   16
+
+/** For EVS START **/
+/* Ref 3GPP 26.445 Table A.3 */
+/* Only for Primary mode */
+enum VoLTE_EVS_Codec_Bitrate_e {
+	VoLTE_EVS_Codec_Bitrate_5_9 = 0x0,
+	VoLTE_EVS_Codec_Bitrate_7_2,
+	VoLTE_EVS_Codec_Bitrate_8_0,
+	VoLTE_EVS_Codec_Bitrate_9_6,
+	VoLTE_EVS_Codec_Bitrate_13_2,
+	VoLTE_EVS_Codec_Bitrate_16_4,
+	VoLTE_EVS_Codec_Bitrate_24_4,
+	VoLTE_EVS_Codec_Bitrate_32_0,
+	VoLTE_EVS_Codec_Bitrate_48_0,
+	VoLTE_EVS_Codec_Bitrate_64_0,
+	VoLTE_EVS_Codec_Bitrate_96_0,
+	VoLTE_EVS_Codec_Bitrate_128_0 = 0xB,
+	VoLTE_EVS_Codec_Bitrate_NONE  = 0xF,
+};
+
+enum VoLTE_EVS_Bandwidth_e {
+	VoLTE_EVS_Bandwidth_NB = 0x0,
+	VoLTE_EVS_Bandwidth_WB,
+	VoLTE_EVS_Bandwidth_SWB,
+	VoLTE_EVS_Bandwidth_FB,
+	VoLTE_EVS_Bandwidth_MAX,
+	VoLTE_EVS_Bandwidth_NONE = 0xF,
+};
+/** For EVS END **/
+
+typedef struct s_media_param {
+	VoLTE_Event_Media_config_t o;
+} media_param_t;
+
+typedef struct bearer_mbr_gbr {
+    kal_int32 dl_gbr;
+    kal_int32 dl_mbr;
+    kal_int32 ul_gbr;
+    kal_int32 ul_mbr;
+} bearer_mbr_gbr_t;
+
+typedef struct s_xxx2ltecsr_param {
+
+	/* call id */
+	kal_int32 cid;
+
+	/* session id */
+	kal_int32 voice_sid;
+	kal_int32 video_sid;
+
+   	/* BID for voice and video */
+   	/* for media_del, BID    is not used */
+   	kal_int32 voice_bid;   /* LTE: EBI, NR: PSI|QFI */
+   	kal_int32 video_bid;   /* LTE: EBI, NR: PSI|QFI */
+
+	/* channel for voice and video */
+   	kal_uint16 voice_type;  /* 0 (LTE), 1 (WIFI), 2 (NR) */
+   	kal_uint16 video_type;  /* 0 (LTE), 1 (WIFI), 2 (NR) */
+
+	/* op code */
+	kal_uint32 func_class;
+
+	/* Default Bearer ID */
+	kal_uint32 default_bid;  /* LTE: Default EBI, NR: PSI|Default QFI */
+
+	/* PDN Context ID */
+	kal_uint32 pdn_cid;
+
+	/* all parameters */
+	media_param_t params;
+
+	/* pcscf */
+	kal_uint32  ip_version;  /* 1 (IPv4), 2 (IPv6) */
+	kal_int8    pcscf_address[IMCB_IMC_IPADDR_LENGTH];
+    kal_uint8   if_name[IMC_MAX_IF_NAME_LENGTH];
+
+    /* text sid for TTY/RTT
+       0        default value
+       -1       delete tty/rtt
+       others   tty/rtt alive
+    */
+    kal_int32 tty_sid;
+    kal_int32 tty_bid; /* LTE: EBI, NR: PSI|QFI */
+
+    kal_uint16 tty_type;  /* 0 (LTE), 1 (WIFI), 2 (NR) */
+    kal_uint16 gbr_mbr_present_mask; /* 0x1 voice, 0x2 video, 0x4 tty */
+
+    bearer_mbr_gbr_t voice_bearer_quatlity;
+    bearer_mbr_gbr_t video_bearer_quatlity;
+    bearer_mbr_gbr_t   tty_bearer_quatlity;
+} xxx2ltecsr_param_t ;
+/* from IMC to LTECSR */
+typedef struct s_ltecsr_media_new {
+	LOCAL_PARA_HDR
+    kal_uint32  tv_sec;         // IMCB use gettimeofday to get the time from 1970 (sec)
+	xxx2ltecsr_param_t param;
+} ltecsr_media_new_struct;
+
+typedef struct s_ltecsr_media_del {
+	LOCAL_PARA_HDR
+	xxx2ltecsr_param_t param;
+} ltecsr_media_del_struct;
+
+typedef struct s_ltecsr_media_update {
+	LOCAL_PARA_HDR
+	xxx2ltecsr_param_t param;
+} ltecsr_media_update_struct;
+
+typedef struct s_ltecsr_media_active {
+	LOCAL_PARA_HDR
+	kal_int32 cid;
+	kal_int32 direction;
+} ltecsr_media_active_struct;
+
+/* from LTECSR to IMC */
+typedef struct s_ltecsr_media_no_dlpkt_struct {
+	LOCAL_PARA_HDR
+	kal_int32 cid;
+} ltecsr_media_no_dlpkt_struct;
+
+typedef struct s_ltecsr_media_no_ulpkt_struct {
+	LOCAL_PARA_HDR
+	kal_int32 cid;
+} ltecsr_media_no_ulpkt_struct;
+
+
+/*from LTECSR to IMC,  if ANBR can not supported by the negotiated codec,  notify UA for further SIP procedure*/
+typedef struct s_ltecsr_media_anbr_notify_ind_struct {
+  LOCAL_PARA_HDR
+  kal_int32 cid;
+  kal_uint32 anbr_value; /*for cid, AS(including RTP and RTCP) supported by access network(e.g, LTE)*/
+}ltecsr_media_anbr_notify_ind_struct;
+
+/*from IMC to LTECSR, UA tells that SIP negotiated based on ANBR fails, then LTECSR shall not notify ANBR with the same bearer and session again*/
+typedef struct s_ltecsr_media_anbr_notify_rsp_struct {
+  LOCAL_PARA_HDR
+  kal_int32 cid;
+  kal_uint32 anbr_result;  /*0: SIP negotiated base on ANBR fails;  1: SIP negotiated based on ANBR success; other value: ignore*/
+}ltecsr_media_anbr_notify_rsp_struct;
+
+
+
+/**
+ * IMC External
+ */
+typedef struct s_ltecsr_dtmf_req {
+	LOCAL_PARA_HDR
+	xxx2ltecsr_dtmf_param_t param;
+} ltecsr_dtmf_req_struct;
+
+typedef struct s_ltecsr_media_incoming_dlpkt_struct {
+	LOCAL_PARA_HDR
+	kal_int32 cid;
+} ltecsr_media_incoming_dlpkt_struct;
+
+/* HANDOVER with ebi */
+typedef struct s_ltecsr_handover_begin_struct{
+    imcf_uint8  source_rat_type;
+    imcf_uint8  target_rat_type;
+    imcf_uint8  default_ebi;
+    imcf_uint8  pad;
+    imcf_uint32 network_id;
+} ltecsr_handover_begin_struct;
+
+typedef struct s_ltecsr_handover_end_struct{
+    imcf_uint8  source_rat_type;
+    imcf_uint8  target_rat_type;
+    imcf_uint8  is_success;
+    imcf_uint8  default_ebi;
+    imcf_uint32 network_id;
+} ltecsr_handover_end_struct;
+
+/**
+ * L1SP External
+ */
+typedef struct s_ltecsr_voice_ul_data_notify {
+	LOCAL_PARA_HDR
+} ltecsr_voice_ul_data_notify_struct;
+
+/**
+ * LTECSR Internal
+ */
+typedef struct s_ltecsr_media_init {
+	LOCAL_PARA_HDR
+	xxx2ltecsr_param_t param;
+} ltecsr_media_init_struct;
+
+typedef struct s_ltecsr_media_start {
+	LOCAL_PARA_HDR
+	kal_int32 cid;
+	kal_int32 sid;
+} ltecsr_media_start_struct;
+
+typedef struct s_ltecsr_media_stop {
+	LOCAL_PARA_HDR
+	kal_int32 cid;
+	kal_int32 sid;
+} ltecsr_media_stop_struct;
+
+typedef struct s_ltecsr_media_xmit_mode_set {
+	LOCAL_PARA_HDR
+	kal_int32 cid;
+	kal_int32 sid;
+	kal_int8 xmit_mode; /* xmit_mode_e */
+} ltecsr_media_xmit_mode_set_struct;
+
+typedef struct s_ltecsr_dtmf_play {
+	LOCAL_PARA_HDR
+	xxx2ltecsr_dtmf_param_t param;
+} ltecsr_dtmf_play_struct;
+
+typedef struct s_ltecsr_dtmf_stop {
+	LOCAL_PARA_HDR
+	kal_int32 cid;
+} ltecsr_dtmf_stop_struct;
+
+typedef struct s_ltecsr_media_pt_set {
+	LOCAL_PARA_HDR
+	kal_int32 cid;
+	kal_int32 codec;
+	kal_int32 pt;
+} ltecsr_media_pt_set_struct;
+
+typedef struct s_ltecsr_rtcp_send_interval_set {
+	LOCAL_PARA_HDR
+	kal_int32 cid;
+	kal_int32 sid;
+	kal_int32 rtcp_send_interval;
+} ltecsr_rtcp_send_interval_set_struct;
+
+
+/* For new mechanism, 
+ * ecfg_req/ecfg_cnf are used for LTECSR internally.
+ * we keep structure here for old IMC code not removed yet.
+ */
+typedef struct s_ltecsr_ecfg_req {
+    LOCAL_PARA_HDR
+    kal_bool        op_code;    // 0:get, 1:set
+    ecfg_e          config_type;
+    kal_uint8       config_size;
+    kal_uint32      value;      // only set op_code will use it
+} ltecsr_ecfg_req_struct;
+
+typedef struct s_ltecsr_ecfg_cnf {
+    LOCAL_PARA_HDR
+    kal_bool        result;     // KAL_TRUE or KAL_FALSE
+    kal_bool        op_code;    // 0:get, 1:set
+    ecfg_e          config_type;
+    kal_uint8       config_size;
+    kal_uint32      value;      // only get op_code will use it
+} ltecsr_ecfg_cnf_struct;
+
+
+typedef struct s_ltecsr_epdg_ho_ind {
+    LOCAL_PARA_HDR
+    kal_int32  stage;      // ltecsr_ho_stage_enum
+    kal_int32  rat;        // rat: 0->3GPP, 1->WiFi
+    kal_int32  network_id; // network_id
+    kal_int32  pdn_id;     // if (stage==1 && rat==0), pdn_id must be non-zero; LTE: Default EBI, NR: PDU Session ID
+    kal_uint8  if_name[IMC_MAX_IF_NAME_LENGTH];
+} ltecsr_epdg_ho_ind_struct;
+
+/* interface to ATP */
+typedef enum e_ltecsr_event_type {
+	LTECSR_EVENT_NONE = 0,
+	LTECSR_EVENT_ONE_WAY = 1,
+	LTECSR_EVENT_NEED_CNF = 2,
+	LTECSR_EVENT_CNF = 3,
+	LTECSR_EVENT_MAX = 0xff,
+} ltecsr_event_type_e;
+
+typedef enum e_ltecsr_atp_event {
+	LTECSR_ATP_NONE = 0,
+	LTECSR_ATP_RTP_SESSION_TIMEOUT = 1,
+	LTECSR_ATP_PKT_INFO_URC = 2,
+	LTECSR_ATP_IMS_AUDIO_SILENCE_IND = 3,
+	LTECSR_ATP_MAX = 0xff,
+} ltecsr_atp_event_e;
+
+typedef enum e_ltecsr_action_ind {
+	LTECSR_IND_NONE = 0,
+	LTECSR_IND_EPDG = 1,
+	LTECSR_IND_PCSCF = 2,
+	LTECSR_IND_MAX = 0xff,
+} ltecsr_action_ind_e;
+
+typedef struct s_ltecsr_atp_req_struct {
+	LOCAL_PARA_HDR
+	kal_uint32 index;
+	ltecsr_event_type_e type;
+	ltecsr_atp_event_e msg;
+} ltecsr_atp_req_struct;
+
+typedef struct s_ltecsr_rtp_sample_time_ind_struct {
+	LOCAL_PARA_HDR
+	kal_uint8 pdn_id;
+	kal_uint32 network_id;
+	kal_uint32 timer; 
+} ltecsr_rtp_sample_time_ind_struct;
+
+typedef struct s_ltecsr_rtp_session_expire_ind {
+	kal_uint32 id;
+	kal_uint32 pdn_id;
+	kal_uint32 network_id;
+	kal_uint32 timer;
+	kal_uint32 timeout;
+	kal_uint32 action;
+} ltecsr_rtp_session_expire_ind_struct;
+
+typedef struct s_ltecsr_pkt_info_urc_struct {
+	kal_uint32 id;
+	kal_uint32 pdn_id;
+	kal_uint32 network_id;
+	kal_uint32 timer;       // statistic duration (ms)
+	kal_uint32 ul_lost;     // Uplink pkt loss rate (1/256)
+	kal_uint32 dl_lost;     // Downlink pkt loss rate (%)
+	kal_uint32 jitter;      // jitter (ms)
+	kal_uint32 rtt;         // round trip time (ms)
+} ltecsr_pkt_info_urc_struct;
+
+typedef struct s_ltecsr_ims_audio_silence_ind_struct {
+	kal_uint32 call_id;
+	kal_uint32 is_silence;
+} ltecsr_ims_audio_silence_ind_struct;
+
+
+typedef struct _ltecsr_ims_notify_msg_t{
+	kal_uint32 call_id;    //unique call id
+	kal_uint8 msg_id;      //enum value should be maintain in shared point
+	kal_uint8 ver;         //structure version number start from 0
+	kal_uint16 rsv;        //reserve bit must fill 0 (for 4 byte alignment)
+	kal_uint8 ext[64];     //reserve for future other usage
+} ltecsr_ims_notify_msg_t;
+
+typedef struct s_ltecsr_ims_notify_ind_struct {
+	LOCAL_PARA_HDR
+	ltecsr_ims_notify_msg_t msg;
+} ltecsr_ims_notify_ind_struct;
+
+typedef struct s_ltecsr_ims_notify_req_struct {
+	LOCAL_PARA_HDR
+	ltecsr_ims_notify_msg_t msg;
+} ltecsr_ims_notify_req_struct;
+
+typedef enum e_ltecsr_ims_notify{
+	LTECSR_IMS_NOTIFY_NONE = 0,
+	LTECSR_IMS_RTP_TIMER_EXPIRE = 1,
+	LTECSR_IMS_RTCP_TIMER_EXPIRE = 2,
+	LTECSR_IMS_RTP_WARNING_TIMER_EXPIRE = 3,
+	LTECSR_IMS_TEXT_RTP_RTCP_TIMER_EXPIRE =  4,
+	LTECSR_IMS_TEXT_RTP_TIMER_EXPIRE = 5,
+	LTECSR_IMS_TEXT_RTCP_TIMER_EXPIRE = 6,
+	LTECSR_IMS_PARAM_ERROR_NOTIFY = 7,
+	LTECSR_IMS_RTP_TIMER_SDP_REFRESH = 8,
+	LTECSR_IMS_NOTIFY_MAX = 0xff,
+} ltecsr_ims_notify_e;
+
+/**
+ * L1C to LTECSR
+ */
+typedef struct s_ltecsr_l1c_latency_test_detection_ind {
+	LOCAL_PARA_HDR
+	kal_bool latency_test_flag; // 1: detected, 0: not detected
+} ltecsr_l1c_latency_test_detection_ind_struct;
+
+/*
+ * LTECSR Self Profile(NVRAM) Logging
+ */
+#ifdef __VOLTE_SUPPORT__
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_uint32 sim_slot_id;
+    nvram_ef_ltecsr_profile_record_struct profile;
+} ltecsr_profile_dump_struct;
+#endif
+
+/*
+ * LTECSR to IWLAN
+ */
+typedef enum _ltecsr_ping_result_e {
+    NETWORK_PING_PCSCF_NO_REPLY     =   1,
+    NETWORK_PING_PCSCF_PART_REPLY   =   2,
+    NETWORK_PING_PCSCF_FULL_REPLY   =   3,
+}ltecsr_ping_result_e;
+
+/*********** ERRC ************/
+typedef enum e_ltecsr_errc_volte_status {
+    LTECSR_ERRC_VOLTE_CALL_START = 0,
+    LTECSR_ERRC_VOLTE_CALL_END   = 1,
+} ltecsr_errc_volte_status_e;
+
+typedef enum e_ltecsr_errc_delay_budget_cmd {
+    LTECSR_ERRC_DB_RELEASE  = 0,
+    LTECSR_ERRC_DB_SETUP    = 1,
+} ltecsr_errc_delay_budget_cmd_e;
+
+typedef enum e_ltecsr_errc_delay_budget_type {
+	LTECSR_ERRC_DB_INVALID  = 0,
+    LTECSR_ERRC_DB_TYPE1    = 1,
+    LTECSR_ERRC_DB_TYPE2    = 2,
+} ltecsr_errc_delay_budget_type_e;
+
+typedef enum e_ltecsr_errc_volte_quality {
+    LTECSR_ERRC_VOICE_GOOD  = 0,
+    LTECSR_ERRC_VOICE_BAD   = 1,
+} ltecsr_errc_volte_quality_e;
+
+
+/* VoLTE Status: LTECSR -> ERRC */
+typedef struct s_ltecsr_errc_volte_status_ntf_struct {
+    LOCAL_PARA_HDR
+    ltecsr_errc_volte_status_e volte_status;
+} ltecsr_errc_volte_status_ntf_struct;
+
+
+/* Delay Budget: ERRC -> LTECSR */
+typedef struct s_ltecsr_errc_delay_budget_rpt_req_struct {
+    LOCAL_PARA_HDR
+    ltecsr_errc_delay_budget_cmd_e cmd;
+} ltecsr_errc_delay_budget_rpt_req_struct;
+
+typedef struct s_ltecsr_errc_delay_budget_result_ind_struct {
+    LOCAL_PARA_HDR
+    ltecsr_errc_delay_budget_type_e type;       // type 1 or 2 report to eNB
+    kal_int16   value;                          // unit: ms, reported value 
+} ltecsr_errc_delay_budget_result_ind_struct;   // JBM could use this info to do some enhancement
+
+/* Delay Budget: LTECSR -> ERRC */
+typedef struct s_ltecsr_errc_delay_budget_rpt_cnf_struct {
+    LOCAL_PARA_HDR
+    ltecsr_errc_volte_quality_e volte_quality;
+    kal_int16   e2e_delay;                      // unit: ms
+    kal_int16   speech_delay;                   // unit: ms, UL+DL speech delay
+    kal_int16   JBM_delay_budget;               // unit: ms
+    kal_int16   delay_threshold;                // unit: ms, mouth-to-ear delay threshold defined by NVRAM
+} ltecsr_errc_delay_budget_rpt_cnf_struct,ltecsr_errc_delay_budget_rpt_ind_struct;
+
+/*ANBRQ support or not from LTE: UPCM -> LTECSR*/
+typedef struct s_ltecsr_upcm_anbrq_config_ind_struct {
+  LOCAL_PARA_HDR
+  kal_bool anbrq_config; /*true: anbrq support; false: anbrq not support*/
+}ltecsr_upcm_anbrq_config_ind_struct;
+
+/*ABNR:  UPCM->LTECSR*/
+typedef struct s_ltecsr_upcm_anbr_ind_struct {
+  LOCAL_PARA_HDR
+#ifdef __FIVEG_VOICE__
+  kal_uint8 bearer_id; // EBI/QFI
+  kal_uint8 pdu_session_id; // LTE: 0, NR: PSI
+#else  /* __FIVEG_VOICE__ */
+  kal_uint8 ebi;
+#endif /* __FIVEG_VOICE__ */
+  kal_bool is_ul;
+  kal_uint32 bitrate; /*bps, recommendated bitrate (in RTP payload level) from Access Network,  after removing LTE related header (ROHC/PDCP/RLC/MAC.)*/
+}ltecsr_upcm_anbr_ind_struct;
+
+/*ANBRQ: LTECSR->UPCM*/
+typedef struct s_ltecsr_upcm_anbrq_req_struct {
+  LOCAL_PARA_HDR
+#ifdef __FIVEG_VOICE__
+  kal_uint8 bearer_id; // EBI/QFI
+  kal_uint8 pdu_session_id; // LTE: 0, NR: PSI
+#else /* __FIVEG_VOICE__ */
+  kal_uint8 ebi;
+#endif /* __FIVEG_VOICE__ */
+  kal_bool is_ul;
+  kal_uint32 bitrate; /*bps, queryed bitrate (in RTP payload level) to Access Network*/
+}ltecsr_upcm_anbrq_req_struct;
+
+#ifdef __FIVEG_VOICE__
+/*IPV4V6: LTECSR->UPCM*/
+typedef struct s_ltecsr_upcm_ipv4v6_req_struct {
+    LOCAL_PARA_HDR
+    kal_uint8 bearer_id; // EBI/QFI
+    kal_uint8 ipv4v6_type;
+    kal_uint8 pdu_session_id; // LTE: 0, NR: PSI
+}ltecsr_upcm_ipv4v6_req_struct;
+#endif /* __FIVEG_VOICE__ */
+
+/*********** NRRC - LTECSR SAP ************/
+typedef enum {
+    LTECSR_NR_DELAY_BUDGET_REPORTING_COMMAND_STOP    =   0,
+    LTECSR_NR_DELAY_BUDGET_REPORTING_COMMAND_START   =   1
+} ltecsr_nr_delay_budget_reporting_command_enum;
+
+typedef enum {
+    LTECSR_NR_DELAY_BUDGET_REPORT_TYPE_TYPE1     =   1
+} ltecsr_nr_delay_budget_report_type_enum;
+
+/* NRRC_LTECSR_DELAY_BUDGET_REPORT_REQ (NRRC -> LTECSR) */
+typedef struct s_ltecsr_nrrc_delay_budget_report_req_struct {
+    LOCAL_PARA_HDR
+    ltecsr_nr_delay_budget_reporting_command_enum command;
+} nrrc_ltecsr_delay_budget_report_req_struct;
+
+/* NRRC_LTECSR_DELAY_BUDGET_REPORT_IND (LTECSR -> NRRC) */
+typedef struct s_ltecsr_nrrc_delay_budget_report_ind_struct{
+    LOCAL_PARA_HDR
+    kal_bool     valid;
+    kal_bool     is_voice_quality_good;
+    kal_uint16   voice_delay;
+    kal_uint16   jbm_delay_budget;
+    kal_uint16   max_acceptable_delay;
+} nrrc_ltecsr_delay_budget_report_ind_struct;
+
+/* NRRC_LTECSR_DELAY_BUDGET_RESULT_HANDLE_REQ (NRRC -> LTECSR) */
+typedef struct s_ltecsr_nrrc_delay_budget_result_handle_req_struct {
+    LOCAL_PARA_HDR
+    ltecsr_nr_delay_budget_report_type_enum     type;
+    kal_int16                                   drx_adjustment;
+} nrrc_ltecsr_delay_budget_result_handle_req_struct;
+
+#endif
+