[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
+