blob: 07c0b8da4fd7d7127ce3995f6456a3409320a6db [file] [log] [blame]
/*****************************************************************************
* 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