blob: 2af11697ef880c347faeab4109cc4d6038556a6d [file] [log] [blame]
#ifndef __IMSVT_IMCB_STRUCT_H__
#define __IMSVT_IMCB_STRUCT_H__
#include "kal_public_defs.h"
#if __IMCF_NO_UA__
#define VOLTE_MAX_SDP_PARAMETER_SET_LENGTH (256) // H.264, Spros parameter sets, must align with LTE_VT_SRV_UA_PARAMETER_SIZE_MAX.
#define VOLTE_MAX_SUB_PARAM_LENGTH (128)
#define VOLTE_MAX_SDP_FMTP_TOT_VALUE_LENGTH (32)// The maximum length of total fmtp specific parameter key and value, must align with LTE_VT_SRV_UA_FMTP_SIZE_MAX.
#define VOLTE_MAX_SDP_EGBYTE_LENGTH (8)
#define VOLTE_IPADDR_LENGTH (16) // IP address in binary
#define IMC_MAX_IF_NAME_LENGTH (16)
#define VOLTE_MAX_IF_NAME_LENGTH (IMC_MAX_IF_NAME_LENGTH)
#define VOLTE_MAX_IMAGE_NUM (4)
#define VOLTE_MAX_RTCP_FB_SIZE (8)
#define VOLTE_MAX_VIDEO_CAP_NUM (4)
#define VOLTE_MAX_PS_NUM (32)
#define VOLTE_MAX_PROFILELEVEL_SIZE (32)
#define VOLTE_MAX_EXTMAP_URI_SIZE (256)
#define VOLTE_MAX_EXTMAP_NUM (4) // RFC 5285
typedef char imcf_int8 ;
typedef short int imcf_int16;
typedef int imcf_int32;
typedef unsigned char imcf_uint8 ;
typedef unsigned short int imcf_uint16;
typedef unsigned int imcf_uint32;
#else
#include "volte_vt_event.h"
#include "volte_def.h"
#endif
#define VT_MAX_SDP_PARAMETER_SET_LENGTH VOLTE_MAX_SDP_PARAMETER_SET_LENGTH
#define VT_MAX_SUB_SDP_PARAMETER_SET_LENGTH VOLTE_MAX_SUB_PARAM_LENGTH
#define VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH VOLTE_MAX_SDP_FMTP_TOT_VALUE_LENGTH
#define VT_MAX_SDP_EGBYTE_LENGTH VOLTE_MAX_SDP_EGBYTE_LENGTH
#define VT_MAX_IMAGE_NUM VOLTE_MAX_IMAGE_NUM
#define VT_MAX_RTCP_FB_SIZE VOLTE_MAX_RTCP_FB_SIZE
#define VT_MAX_VIDEO_CAP_NUM VOLTE_MAX_VIDEO_CAP_NUM
#define VT_ADDR_LENGTH VOLTE_IPADDR_LENGTH
#define VT_MAX_PS_NUM VOLTE_MAX_PS_NUM
#define VT_MAX_LEVEL_SIZE VOLTE_MAX_PROFILELEVEL_SIZE
#define VT_MAX_EXTMAP_URI_SIZE VOLTE_MAX_EXTMAP_URI_SIZE
#define VT_MAX_EXTMAP_NUM VOLTE_MAX_EXTMAP_NUM
#define VT_MAX_IF_NAME_LENGTH VOLTE_MAX_IF_NAME_LENGTH
#define IMSVT_PARA_HDR \
PEER_BUFF_HDR \
unsigned int request_id; \
unsigned int data_len;
typedef struct imsvt_para_hdr_struct {
IMSVT_PARA_HDR
} imsvt_para_hdr_struct;
typedef enum vt_srv_imcb_session_modify_type_e {
VT_SRV_IMCB_SESSION_MODIFY_TYPE_CAMERA,
VT_SRV_IMCB_SESSION_MODIFY_TYPE_CALL_TPYE,
VT_SRV_IMCB_SESSION_MODIFY_TYPE_RTP,
VT_SRV_IMCB_SESSION_MODIFY_TYPE_END
} vt_srv_imcb_session_modify_type_t ;
typedef enum vt_srv_imcb_session_modify_result_e {
VT_SRV_IMCB_SESSION_MODIFY_OK = 0,
VT_SRV_IMCB_SESSION_MODIFY_WrongVideoDir, /*wrong video direction cause up/downgrade failed*/
VT_SRV_IMCB_SESSION_MODIFY_InternalError, /*acct or session object broken*/
VT_SRV_IMCB_SESSION_MODIFY_Result_BW_ModifyFailed, /*bandwidth modify require failed*/
VT_SRV_IMCB_SESSION_MODIFY_NotActiveState, /*call session not in active state*/
VT_SRV_IMCB_SESSION_MODIFY_LocalRel, /*local release:Ex.SRVCC,Hungup,call refresh timer timeout,no rpt packets*/
VT_SRV_IMCB_SESSION_MODIFY_IsHold, /*the call at hold state*/
VT_SRV_IMCB_SESSION_MODIFY_NoNeed, /*acorrding the video action state, not need up/downgrade */
VT_SRV_IMCB_SESSION_MODIFY_InvalidPara, /*input parameter invalid*/
VT_SRV_IMCB_SESSION_MODIFY_ReqTimeout, /*SIPTX error,transaction timeout*/
VT_SRV_IMCB_SESSION_MODIFY_RejectByRemote, /*reject by remote*/
VT_SRV_IMCB_SESSION_MODIFY_Canceled, /*canceled by user*/
VT_SRV_IMCB_SESSION_MODIFY_InVideoAction, /*video action is ongoing*/
VT_SRV_IMCB_SESSION_MODIFY_IsReinvite, /*is_reinvite*/
}vt_srv_imcb_session_modify_result_t;
enum vt_srv_imcb_session_modify_cancel_cause_e {
VT_SRV_IMCB_SESSION_MODIFY_CANCEL_CAUSE_cancel= 0,
VT_SRV_IMCB_SESSION_MODIFY_CANCEL_CAUSE_timeout,
};
enum vt_srv_imcb_session_modify_cancel_result_e {
VT_SRV_IMCB_SESSION_MODIFY_CANCEL_success = 0,
VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_downgrade,
VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_normal,
VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_disable,
VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_remote_reject, /*remote reject the upgrade while local cancel*/
VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_internal_error,
VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_local_rel,
VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_bw_modify_fail,
VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_req_timeout,
};
typedef struct rtcp_fb_param_type_s {
imcf_uint16 rtcp_fb_id; // such as "ack","nack","trr-int","ccm","app"
imcf_uint16 rtcp_fb_param; // such as pli"
imcf_int8 rtcp_fb_sub_param[VT_MAX_SUB_SDP_PARAMETER_SET_LENGTH]; //such as smaxpr=120 of tmmbr
}vt_srv_rtcp_fb_param_type_t;
typedef struct vt_srv_image_s {
imcf_uint32 x; ///< RFC6236 image attributes
imcf_uint32 y;
imcf_int8 sar[VT_MAX_SDP_EGBYTE_LENGTH];
imcf_int8 par[VT_MAX_SDP_EGBYTE_LENGTH];
imcf_int8 q[VT_MAX_SDP_EGBYTE_LENGTH];
} vt_srv_image_t;
typedef struct vt_srv_imcb_msg_get_cap_ind_s {
IMSVT_PARA_HDR
imcf_uint8 sim_slot_id; /* start from 0 */
imcf_uint8 pad;
imcf_uint16 operator_code;
} vt_srv_imcb_msg_get_cap_ind_struct, imsvt_imcb_get_cap_ind_struct;
/*******************
** VT_CAP_SETTING **
********************/
typedef struct vt_srv_h264_cap_cfg_s { /* Codec part */
imcf_uint32 profile_level_id; ///< H.264 profile level id. construct by 3 parts
imcf_uint16 max_recv_level; ///< require 2 bytes, reserved.
imcf_uint8 redundant_pic_cap; ///< 0, 1. 0: we do not support yet.
imcf_uint8 pading;
imcf_int8 sprop_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH];
imcf_int8 sprop_level_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH];
imcf_uint32 max_mbps; ///< reserved. VT service provides default value
imcf_uint32 max_smbps; ///< reserved. VT service provides default value
imcf_uint32 max_fs; ///< reserved. VT service provides default value
imcf_uint32 max_cpb; ///< reserved. VT service provides default value
imcf_uint32 max_dpb; ///< reserved. VT service provides default value
imcf_uint32 max_br; ///< reserved. VT service provides default value
imcf_uint32 max_rcmd_nalu_size; ///< reserved. VT service provides default value
imcf_uint8 sar_understood; ///< 0~255, reserved. VT service provides default value
imcf_uint8 sar_supported; ///< 0~255, reserved. VT service provides default value
imcf_uint8 in_band_parameter_sets; //0, 1
imcf_uint8 level_asymmetry_allowed; //0, 1
imcf_uint32 framerate;
imcf_uint32 frame_width;
imcf_uint32 frame_height;
vt_srv_image_t image_send[VT_MAX_IMAGE_NUM];
vt_srv_image_t image_recv[VT_MAX_IMAGE_NUM];
} vt_srv_h264_cap_cfg_t;
typedef struct vt_srv_hevc_cap_cfg_s {
imcf_uint8 profile_space;
imcf_uint8 profile_id;
imcf_uint8 tier_flag;
imcf_uint8 level_id;
imcf_uint8 interop_constraints[6];
imcf_uint8 pad[2];
imcf_uint8 profile_comp_ind[4];
imcf_uint8 sprop_sub_layer_id;
imcf_uint8 recv_sub_layer_id;
imcf_uint8 max_recv_level_id;
imcf_uint8 tx_mode; //"SRST", "MRST" or "MRMT"
imcf_int8 sprop_vps[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
imcf_int8 sprop_sps[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
imcf_int8 sprop_pps[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
imcf_int8 sprop_sei[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
imcf_uint32 max_lsr;
imcf_uint32 max_lps;
imcf_uint32 max_cpb;
imcf_uint32 max_dpb;
imcf_uint32 max_br;
imcf_uint32 max_tr;
imcf_uint32 max_tc;
imcf_uint32 max_fps;
imcf_uint32 sprop_max_don_diff;
imcf_uint32 sprop_depack_buf_nalus;
imcf_uint32 sprop_depack_buf_bytes;
imcf_uint32 depack_buf_cap;
imcf_uint32 sprop_seg_id;
imcf_uint32 sprop_spatial_seg_idc;
imcf_int8 dec_parallel_cap[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
imcf_int8 include_dph[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
imcf_uint32 framerate;
imcf_uint32 frame_width;
imcf_uint32 frame_height;
vt_srv_image_t image_send[VT_MAX_IMAGE_NUM];
vt_srv_image_t image_recv[VT_MAX_IMAGE_NUM];
} vt_srv_hevc_cap_cfg_t;
typedef union vt_srv_video_codec_cap_cfg_u {
vt_srv_h264_cap_cfg_t h264_codec;
vt_srv_hevc_cap_cfg_t hevc_codec;
} vt_srv_video_codec_cap_cfg_t;
typedef struct vt_srv_video_media_bitrate_s {
imcf_uint32 format; ///<H264 or H265
imcf_uint32 profile;
imcf_uint32 level;
imcf_uint32 minbitrate;
imcf_uint32 bitrate;
} vt_srv_video_media_bitrate_t;
typedef struct vt_srv_rtp_ext_map_s {
imcf_uint8 ext_id;
imcf_uint8 direction;
imcf_uint8 reserved[2];
imcf_int8 ext_uri[VT_MAX_EXTMAP_URI_SIZE]; // size 256
} vt_srv_rtp_ext_map_t;
typedef struct vt_srv_h264_ps_s {
imcf_uint32 profile_level_id;
imcf_int8 sprop_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH];
} vt_srv_h264_ps_t;
typedef struct vt_srv_hevc_ps_s {
imcf_uint8 profile_id; ///< Range: 0~31, 1 if not present.
imcf_uint8 level_id; ///< Range: 0~255, 93(level 3.1) if not present.
imcf_uint8 pad[2];
imcf_int8 sprop_vps[VT_MAX_SDP_PARAMETER_SET_LENGTH];
imcf_int8 sprop_sps[VT_MAX_SDP_PARAMETER_SET_LENGTH];
imcf_int8 sprop_pps[VT_MAX_SDP_PARAMETER_SET_LENGTH];
imcf_int8 sprop_sei[VT_MAX_SDP_PARAMETER_SET_LENGTH];
} vt_srv_hevc_ps_t;
typedef struct vt_srv_video_capability_s {
/* old start */
imcf_uint32 profile_level_id; ///< H.264 profile level id. construct by 3 parts
imcf_uint16 max_recv_level; ///< require 2 bytes, reserved.
imcf_uint8 packetization_mode; ///< VoLTE_Event_Packetize_Mode_e
imcf_uint8 redundant_pic_cap; ///< 0, 1. 0: we do not support yet.
imcf_int8 sprop_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH];
imcf_int8 sprop_level_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH];
imcf_uint32 max_mbps; ///< reserved. VT service provides default value
imcf_uint32 max_smbps; ///< reserved. VT service provides default value
imcf_uint32 max_fs ; ///< reserved. VT service provides default value
imcf_uint32 max_cpb ; ///< reserved. VT service provides default value
imcf_uint32 max_dpb ; ///< reserved. VT service provides default value
imcf_uint32 max_br ; ///< reserved. VT service provides default value
imcf_uint32 max_rcmd_nalu_size; ///< reserved. VT service provides default value
imcf_uint8 sar_understood; ///< 0~255, reserved. VT service provides default value
imcf_uint8 sar_supported; ///< 0~255, reserved. VT service provides default value
imcf_uint8 in_band_parameter_sets; //0, 1
imcf_uint8 level_asymmetry_allowed; //0, 1
/* old end */
vt_srv_video_codec_cap_cfg_t codec_cap; // Use mime_Type to judge the codec cap.
/* rtp_rtcp part */
imcf_uint8 media_type; //such as video/audio
imcf_uint8 mime_Type; // such as H.264
//imcf_uint8 video_payload_type;// num such as: 97,98, 100
imcf_uint8 rtp_profile;//supported rtp_profile for special media such as RTP/AVP,RTP/AVPF
imcf_uint8 reserved;
imcf_uint32 sample_rate;//timescale, which use to calculte rtp timestamp
/*@ rtp packet transmission param
*@ contain b=AS,PT,packetization params related to the codec type
*@ ----------------------------------------------------------------------
*@consider the negotiated params also can set through rtp_rtcp_capability
*@ rtp_rtcp_capability must be can for one explicit item
*@ then should not contain alternatives in rtp_packetize_params,such as "packetization-moe=1;packetization-mode=0"
*@ ----------------------------------------------------------------------
*/
//imcf_uint32 video_b_as; //b=AS in kb/s
imcf_uint32 packetize_mode;
imcf_uint32 extmap_num;
vt_srv_rtp_ext_map_t extmap[VT_MAX_EXTMAP_NUM]; //now only CVO support
//imcf_uint32 video_b_rs; //b=RS in bps
//imcf_uint32 video_b_rr; //b=RR in bps
imcf_uint32 rtcp_rsize; //a=rtcp_rsize
/*@ rtcp packet transmission param
*@ contain b=RS,b=RR,and feedback message type
*@ may be serveral feedback message supported like:
*@ ---------sdp--------------
*@ a=rtcp-fb:98 ccm tstr
*@ a=rtcp-fb:98 ccm fir
*@ a=rtcp-fb:* ccm tmmbr smaxpr=120
*@ ---------------------------
*@ so need a array of rtcp_fb_type_t to represent all thest feedback messages
*@ rtcp_fb_param_num represent the size of the array
*/
imcf_uint32 rtcp_fb_param_num;
vt_srv_rtcp_fb_param_type_t rtcp_fb_type[VT_MAX_RTCP_FB_SIZE]; // SIZE 5
} vt_srv_video_capability_t;
typedef struct vt_srv_imcb_msg_vt_cap_setting_s {
IMSVT_PARA_HDR
imcf_int32 accout_id;
imcf_int32 video_cap_num; ///< number of cap.
vt_srv_video_capability_t video_cap[VT_MAX_VIDEO_CAP_NUM]; ///< video capability from MA
vt_srv_h264_ps_t h264_ps[VT_MAX_PS_NUM]; // SIZE 32
vt_srv_hevc_ps_t hevc_ps[VT_MAX_PS_NUM]; // SIZE 32
vt_srv_video_media_bitrate_t bitrate_info[VT_MAX_LEVEL_SIZE]; // SIZE 20
imcf_uint8 sim_slot_id; /* start from 0 */
imcf_uint8 pad2;
imcf_uint16 operator_code;
/* CAUTION: please keep VoLTE_Event_VT_Cap_Setting_t in sync when you want to add elements here,
IMCB is forwarding pointer to this structure and it is casted to VoLTE_Event_VT_Cap_Setting_t */
} vt_srv_imcb_msg_get_cap_rsp_struct, imsvt_imcb_get_cap_rsp_struct,
vt_srv_vt_cap_setting_t;
typedef struct vt_srv_imcb_msg_config_s {
// required by RTP and RTCP session
imcf_uint8 call_id; // identify this call
imcf_uint8 video_payload_type; // RTP payload type
imcf_uint8 remote_addr_type; ///< VoLTE_Event_IP_Version_e
imcf_uint8 rtp_direction; ///< VoLTE_Event_RTP_DIRECTION_e
imcf_uint16 remote_rtp_port;
imcf_uint16 remote_rtcp_port;
imcf_uint16 local_rtcp_port; ///< rtcp port number. we may configure it not rtp_port+1
imcf_uint16 local_rtp_port; ///< rtp port number for media attribute in SDP message
imcf_int8 remote_rtp_address[VT_ADDR_LENGTH];
imcf_int8 remote_rtcp_address[VT_ADDR_LENGTH];
imcf_int8 local_address[VT_ADDR_LENGTH];
imcf_uint32 video_b_as; // RTP bandwidth
imcf_uint32 video_b_rs; // RTCP sender bandwidth
imcf_uint32 video_b_rr; // RTCP receiver bandwidth
imcf_uint8 media_type; //such as video/audio
imcf_uint8 mime_Type; // such as H.264
imcf_uint16 rtcp_rsize;
imcf_uint32 packetize_mode;
imcf_uint32 sample_rate;//timescale, which use to calculte rtp timestamp
imcf_uint32 rtcp_fb_param_num;
vt_srv_rtcp_fb_param_type_t rtcp_fb_type[VT_MAX_RTCP_FB_SIZE]; // SIZE? 32
imcf_uint8 rtp_profile;//supported rtp_profile for special media such as RTP/AVP,RTP/AVPF
imcf_uint8 camera_direction;
imcf_uint8 bHold; //local hold
imcf_uint8 bHeld; //remote hold
vt_srv_rtp_ext_map_t extmap;
/* WFC */
imcf_uint32 video_dscp;
imcf_uint32 video_soc_priority;
/*------ old start --------------*/
imcf_uint16 pad_rtcp_rsize; /* move to new one*/
imcf_uint16 rtcpfb_type; //bitmap, VoLTE_Event_RTCP_FB_Type_e
imcf_int8 id[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
imcf_int8 trr_int[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
imcf_int8 id_app_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
imcf_int8 ack_app_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
imcf_int8 nack_app_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
imcf_int8 tmmbr_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
imcf_int8 vbcm_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
/*------ old end --------------*/
// require by H.264 or H265
vt_srv_video_codec_cap_cfg_t codec_cfg;
/*------ old start --------------*/
// required by H.264 codec, RFC 6184
imcf_uint32 profile_level_id; ///< H.264 profile level id. construct by 3 parts
imcf_uint16 max_recv_level; ///< require 2 bytes, reserved.
imcf_uint8 packetization_mode; ///< VoLTE_Event_Packetize_Mode_e
imcf_uint8 redundant_pic_cap; ///< 0, 1. 0: we do not support yet.
imcf_int8 sprop_parameter_sets[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
imcf_int8 sprop_level_parameter_sets[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
imcf_uint32 max_mbps; ///< reserved. VT service provides default value
imcf_uint32 max_smbps; ///< reserved. VT service provides default value
imcf_uint32 max_fs ; ///< reserved. VT service provides default value
imcf_uint32 max_cpb ; ///< reserved. VT service provides default value
imcf_uint32 max_dpb ; ///< reserved. VT service provides default value
imcf_uint32 max_br ; ///< reserved. VT service provides default value
imcf_uint32 max_rcmd_nalu_size; ///< reserved. VT service provides default value, 0: SDP will not present the value
imcf_uint8 sar_understood; ///< 0~255, reserved. VT service provides default value, 0: SDP will not present the value
imcf_uint8 sar_supported; ///< 0~255, reserved. VT service provides default value, 0: SDP will not present the value
imcf_uint8 in_band_parameter_sets; ///< 0, 1. we only support 0: support SPS, PPS in SDP
imcf_uint8 level_asymmetry_allowed; ///<0, 1. we only support 0: symmetry communication
/*------ old end --------------*/
} vt_srv_imcb_msg_config_t;
typedef struct vt_srv_imcb_msg_setting {
// 0 : inactive (VoLTE)
// 1 : active (ViLTE)
imcf_uint32 mode;
imcf_uint8 ebi; /* drop on 97 MD, set to zero (0) */
imcf_uint8 video_type;
imcf_uint8 pad[2];
imcf_uint32 network_id; /*drop on 93 MD */
// 0 : inactive
// 1 : send_only
// 2 : recv_only
// 3 : send_recv
imcf_uint32 early_media_direction;
/*kbps, please ignore when Wifi access RAT */
/*0: is for un-specified, please DO NOT use this element */
imcf_uint32 nw_assigned_ul_bw;
imcf_uint32 nw_assigned_dl_bw;
imcf_uint8 sim_slot_id; /* start from 0 */
imcf_uint8 pad2[3];
imcf_uint8 if_name[VT_MAX_IF_NAME_LENGTH];
/* 180 - 2 = 178 */
imcf_uint8 bearer_id; // LTE: EPS Bearer Identifier (EBI), NR: 5G QoS Flow Identifier (QFI)
imcf_uint8 pdu_session_id; // LTE: 0, NR: PDU Session ID (1-15)
imcf_uint8 extension[178];
} vt_srv_imcb_msg_setting_t;
typedef struct vt_srv_imcb_msg_param_s {
IMSVT_PARA_HDR
vt_srv_imcb_msg_setting_t setting;
vt_srv_imcb_msg_config_t config;
}
vt_srv_imcb_msg_config_init_ind_struct, imsvt_imcb_config_init_ind_struct,
vt_srv_imcb_msg_config_update_ind_struct, imsvt_imcb_config_update_ind_struct,
vt_srv_imcb_msg_config_deinit_ind_struct, imsvt_imcb_config_deinit_ind_struct,
vt_srv_imcb_msg_param_t
;
typedef struct vt_srv_imcb_msg_session_modify_s {
IMSVT_PARA_HDR
imcf_uint8 call_id; /* identify this call */
// 0 : inactive (VoLTE)
// 1 : active (ViLTE)
imcf_uint8 mode;
// 0 : inactive
// 1 : send_only
// 2 : recv_only
// 3 : send_recv
imcf_uint8 camera_direction;
imcf_uint8 result; /* vt_srv_imcb_session_modify_result_t */
/* remeber to do offset to UA, UA do not contain this one */
imcf_uint8 sim_slot_id; /* start from 0 */
imcf_uint8 pad[3];
}
/*
VT -- req --> UA .... UA -- ind --> VT
VT <- cnf --- UA .... UA <- rsp -- VT
*/
vt_srv_imcb_msg_session_modify_req_struct, imsvt_imcb_modify_session_req_struct,
vt_srv_imcb_msg_session_modify_ind_struct, imsvt_imcb_modify_session_ind_struct,
vt_srv_imcb_msg_session_modify_rsp_struct, imsvt_imcb_modify_session_rsp_struct,
vt_srv_imcb_msg_session_modify_cnf_struct, imsvt_imcb_modify_session_cnf_struct;
typedef struct vt_srv_imcb_msg_session_modify_cancel_req_s {
IMSVT_PARA_HDR
imcf_uint8 call_id; /* identify this call */
/* remeber to do offset to UA, UA do not contain this one */
imcf_uint8 sim_slot_id; /* start from 0 */
imcf_uint8 cause;
imcf_uint8 pad[5];
}vt_srv_imcb_msg_session_modify_cancel_req_struct,imsvt_imcb_modify_session_cancel_req_struct;
typedef struct vt_srv_imcb_msg_session_modify_cancel_cnf_s {
IMSVT_PARA_HDR
imcf_uint8 call_id; /* identify this call */
/* remeber to do offset to UA, UA do not contain this one */
imcf_uint8 sim_slot_id; /* start from 0 */
imcf_uint8 result;
imcf_uint8 pad[5];
}vt_srv_imcb_msg_session_modify_cancel_cnf_struct,imsvt_imcb_modify_session_cancel_cnf_struct;
typedef struct vt_srv_imcb_msg_session_modify_cancel_s {
IMSVT_PARA_HDR
imcf_uint8 call_id; /* identify this call */
/* remeber to do offset to UA, UA do not contain this one */
imcf_uint8 sim_slot_id; /* start from 0 */
imcf_uint8 pad[2];
}
vt_srv_imcb_msg_session_modify_cancel_ind_struct,imsvt_imcb_modify_session_cancel_ind_struct,
vt_srv_imcb_msg_session_modify_local_bw_ready_ind_struct,imsvt_imcb_modify_session_local_bw_ready_ind_struct;
typedef struct vt_srv_imcb_msg_call_progress_ind_s {
IMSVT_PARA_HDR
imcf_uint8 call_id; /* identify this call */
/* remeber to do offset to UA, UA do not contain this one */
imcf_uint8 sim_slot_id; /* start from 0 */
imcf_uint8 call_mode;
imcf_uint8 pad1;
imcf_uint32 ecpi;
imcf_uint32 reserved;
}vt_srv_imcb_msg_call_progress_ind_struct, imsvt_imcb_call_progress_ind_struct;
typedef struct vt_srv_imcb_msg_mod_bw_req_s {
IMSVT_PARA_HDR
imcf_uint8 call_id; /* identify this call */
imcf_uint8 pad[3];
imcf_uint32 video_bandwidth;
imcf_uint8 sim_slot_id; /* start from 0 */
imcf_uint8 pad2[3];
} vt_srv_imcb_msg_mod_bw_req_t, imsvt_imcb_mod_bw_req_struct;
typedef struct {
IMSVT_PARA_HDR
imcf_uint32 error_num;
} imsvt_imcb_comm_error_struct;
typedef struct {
IMSVT_PARA_HDR
imcf_uint8 token;
imcf_uint8 pad[3];
} imsvt_imcb_loop_test_ind_struct;
typedef struct {
IMSVT_PARA_HDR
imcf_uint8 token;
imcf_uint8 pad[3];
} imsvt_imcb_loop_test_rsp_struct;
typedef enum vt_srv_imcb_rat_type_e {
VT_SRV_IMCB_RAT_TYPE_NONE = 0,
VT_SRV_IMCB_RAT_TYPE_2G = VT_SRV_IMCB_RAT_TYPE_NONE,
VT_SRV_IMCB_RAT_TYPE_3G_FDD,
VT_SRV_IMCB_RAT_TYPE_3G_TDD,
VT_SRV_IMCB_RAT_TYPE_4G_FDD,
VT_SRV_IMCB_RAT_TYPE_4G_TDD,
/* WFC */
VT_SRV_IMCB_RAT_TYPE_802_11,
VT_SRV_IMCB_RAT_TYPE_802_11a,
VT_SRV_IMCB_RAT_TYPE_802_11b,
VT_SRV_IMCB_RAT_TYPE_802_11g,
VT_SRV_IMCB_RAT_TYPE_802_11n,
VT_SRV_IMCB_RAT_TYPE_802_11ac,
/* C2K */
VT_SRV_IMCB_RAT_TYPE_1xRTT,
VT_SRV_IMCB_RAT_TYPE_HRPD,
VT_SRV_IMCB_RAT_TYPE_eHRPD,
VT_SRV_IMCB_RAT_TYPE_5G_FDD,
VT_SRV_IMCB_RAT_TYPE_5G_TDD,
VT_SRV_IMCB_RAT_TYPE_MAX = VT_SRV_IMCB_RAT_TYPE_5G_TDD,
VT_SRV_IMCB_RAT_TYPE_UNSPEC = 0x80
} vt_srv_imcb_rat_type;
typedef struct {
IMSVT_PARA_HDR
imcf_uint8 source_rat_type; /* vt_srv_imcb_rat_type enum */
imcf_uint8 target_rat_type; /* vt_srv_imcb_rat_type enum */
imcf_uint8 pad[2];
imcf_uint8 sim_slot_id; /* start from 0 */
imcf_uint8 pad2[3];
} vt_srv_imcb_handover_start_ind_struct, imsvt_imcb_handover_start_ind_struct;
typedef struct {
IMSVT_PARA_HDR
imcf_uint8 source_rat_type; /* vt_srv_imcb_rat_type enum */
imcf_uint8 target_rat_type; /* vt_srv_imcb_rat_type enum */
imcf_uint8 is_success;
imcf_uint8 pad[1];
imcf_uint8 sim_slot_id; /* start from 0 */
imcf_uint8 pad2[3];
} vt_srv_imcb_handover_stop_ind_struct, imsvt_imcb_handover_stop_ind_struct;
typedef struct {
IMSVT_PARA_HDR
imcf_uint8 source_rat_type; /* vt_srv_imcb_rat_type enum */
imcf_uint8 target_rat_type; /* vt_srv_imcb_rat_type enum */
imcf_uint8 sim_slot_id; /* start from 0 */
imcf_uint8 pad;
imcf_uint32 network_id; /* drop on 93MD */
} vt_srv_imcb_pdn_handover_begin_ind_struct, imsvt_imcb_pdn_handover_begin_ind_struct;
typedef struct {
IMSVT_PARA_HDR
imcf_uint8 source_rat_type; /* vt_srv_imcb_rat_type enum */
imcf_uint8 target_rat_type; /* vt_srv_imcb_rat_type enum */
imcf_uint8 is_success;
imcf_uint8 sim_slot_id;
imcf_uint32 network_id; /* drop on 93MD */
} vt_srv_imcb_pdn_handover_end_ind_struct, imsvt_imcb_pdn_handover_end_ind_struct;
#endif