blob: 2af11697ef880c347faeab4109cc4d6038556a6d [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001#ifndef __IMSVT_IMCB_STRUCT_H__
2#define __IMSVT_IMCB_STRUCT_H__
3
4#include "kal_public_defs.h"
5
6#if __IMCF_NO_UA__
7
8#define VOLTE_MAX_SDP_PARAMETER_SET_LENGTH (256) // H.264, Spros parameter sets, must align with LTE_VT_SRV_UA_PARAMETER_SIZE_MAX.
9#define VOLTE_MAX_SUB_PARAM_LENGTH (128)
10#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.
11#define VOLTE_MAX_SDP_EGBYTE_LENGTH (8)
12#define VOLTE_IPADDR_LENGTH (16) // IP address in binary
13#define IMC_MAX_IF_NAME_LENGTH (16)
14#define VOLTE_MAX_IF_NAME_LENGTH (IMC_MAX_IF_NAME_LENGTH)
15
16#define VOLTE_MAX_IMAGE_NUM (4)
17#define VOLTE_MAX_RTCP_FB_SIZE (8)
18#define VOLTE_MAX_VIDEO_CAP_NUM (4)
19#define VOLTE_MAX_PS_NUM (32)
20#define VOLTE_MAX_PROFILELEVEL_SIZE (32)
21#define VOLTE_MAX_EXTMAP_URI_SIZE (256)
22#define VOLTE_MAX_EXTMAP_NUM (4) // RFC 5285
23
24typedef char imcf_int8 ;
25typedef short int imcf_int16;
26typedef int imcf_int32;
27
28typedef unsigned char imcf_uint8 ;
29typedef unsigned short int imcf_uint16;
30typedef unsigned int imcf_uint32;
31
32#else
33#include "volte_vt_event.h"
34#include "volte_def.h"
35#endif
36
37#define VT_MAX_SDP_PARAMETER_SET_LENGTH VOLTE_MAX_SDP_PARAMETER_SET_LENGTH
38#define VT_MAX_SUB_SDP_PARAMETER_SET_LENGTH VOLTE_MAX_SUB_PARAM_LENGTH
39#define VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH VOLTE_MAX_SDP_FMTP_TOT_VALUE_LENGTH
40#define VT_MAX_SDP_EGBYTE_LENGTH VOLTE_MAX_SDP_EGBYTE_LENGTH
41#define VT_MAX_IMAGE_NUM VOLTE_MAX_IMAGE_NUM
42#define VT_MAX_RTCP_FB_SIZE VOLTE_MAX_RTCP_FB_SIZE
43#define VT_MAX_VIDEO_CAP_NUM VOLTE_MAX_VIDEO_CAP_NUM
44#define VT_ADDR_LENGTH VOLTE_IPADDR_LENGTH
45#define VT_MAX_PS_NUM VOLTE_MAX_PS_NUM
46#define VT_MAX_LEVEL_SIZE VOLTE_MAX_PROFILELEVEL_SIZE
47#define VT_MAX_EXTMAP_URI_SIZE VOLTE_MAX_EXTMAP_URI_SIZE
48#define VT_MAX_EXTMAP_NUM VOLTE_MAX_EXTMAP_NUM
49#define VT_MAX_IF_NAME_LENGTH VOLTE_MAX_IF_NAME_LENGTH
50
51#define IMSVT_PARA_HDR \
52 PEER_BUFF_HDR \
53 unsigned int request_id; \
54 unsigned int data_len;
55
56typedef struct imsvt_para_hdr_struct {
57 IMSVT_PARA_HDR
58} imsvt_para_hdr_struct;
59
60typedef enum vt_srv_imcb_session_modify_type_e {
61 VT_SRV_IMCB_SESSION_MODIFY_TYPE_CAMERA,
62 VT_SRV_IMCB_SESSION_MODIFY_TYPE_CALL_TPYE,
63 VT_SRV_IMCB_SESSION_MODIFY_TYPE_RTP,
64 VT_SRV_IMCB_SESSION_MODIFY_TYPE_END
65} vt_srv_imcb_session_modify_type_t ;
66
67typedef enum vt_srv_imcb_session_modify_result_e {
68 VT_SRV_IMCB_SESSION_MODIFY_OK = 0,
69 VT_SRV_IMCB_SESSION_MODIFY_WrongVideoDir, /*wrong video direction cause up/downgrade failed*/
70 VT_SRV_IMCB_SESSION_MODIFY_InternalError, /*acct or session object broken*/
71 VT_SRV_IMCB_SESSION_MODIFY_Result_BW_ModifyFailed, /*bandwidth modify require failed*/
72 VT_SRV_IMCB_SESSION_MODIFY_NotActiveState, /*call session not in active state*/
73 VT_SRV_IMCB_SESSION_MODIFY_LocalRel, /*local release:Ex.SRVCC,Hungup,call refresh timer timeout,no rpt packets*/
74 VT_SRV_IMCB_SESSION_MODIFY_IsHold, /*the call at hold state*/
75 VT_SRV_IMCB_SESSION_MODIFY_NoNeed, /*acorrding the video action state, not need up/downgrade */
76 VT_SRV_IMCB_SESSION_MODIFY_InvalidPara, /*input parameter invalid*/
77 VT_SRV_IMCB_SESSION_MODIFY_ReqTimeout, /*SIPTX error,transaction timeout*/
78 VT_SRV_IMCB_SESSION_MODIFY_RejectByRemote, /*reject by remote*/
79 VT_SRV_IMCB_SESSION_MODIFY_Canceled, /*canceled by user*/
80 VT_SRV_IMCB_SESSION_MODIFY_InVideoAction, /*video action is ongoing*/
81 VT_SRV_IMCB_SESSION_MODIFY_IsReinvite, /*is_reinvite*/
82}vt_srv_imcb_session_modify_result_t;
83
84enum vt_srv_imcb_session_modify_cancel_cause_e {
85 VT_SRV_IMCB_SESSION_MODIFY_CANCEL_CAUSE_cancel= 0,
86 VT_SRV_IMCB_SESSION_MODIFY_CANCEL_CAUSE_timeout,
87};
88
89enum vt_srv_imcb_session_modify_cancel_result_e {
90 VT_SRV_IMCB_SESSION_MODIFY_CANCEL_success = 0,
91 VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_downgrade,
92 VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_normal,
93 VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_disable,
94 VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_remote_reject, /*remote reject the upgrade while local cancel*/
95 VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_internal_error,
96 VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_local_rel,
97 VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_bw_modify_fail,
98 VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_req_timeout,
99};
100
101
102typedef struct rtcp_fb_param_type_s {
103 imcf_uint16 rtcp_fb_id; // such as "ack","nack","trr-int","ccm","app"
104 imcf_uint16 rtcp_fb_param; // such as pli"
105 imcf_int8 rtcp_fb_sub_param[VT_MAX_SUB_SDP_PARAMETER_SET_LENGTH]; //such as smaxpr=120 of tmmbr
106}vt_srv_rtcp_fb_param_type_t;
107
108typedef struct vt_srv_image_s {
109 imcf_uint32 x; ///< RFC6236 image attributes
110 imcf_uint32 y;
111 imcf_int8 sar[VT_MAX_SDP_EGBYTE_LENGTH];
112 imcf_int8 par[VT_MAX_SDP_EGBYTE_LENGTH];
113 imcf_int8 q[VT_MAX_SDP_EGBYTE_LENGTH];
114} vt_srv_image_t;
115
116typedef struct vt_srv_imcb_msg_get_cap_ind_s {
117 IMSVT_PARA_HDR
118 imcf_uint8 sim_slot_id; /* start from 0 */
119 imcf_uint8 pad;
120 imcf_uint16 operator_code;
121} vt_srv_imcb_msg_get_cap_ind_struct, imsvt_imcb_get_cap_ind_struct;
122
123/*******************
124** VT_CAP_SETTING **
125********************/
126
127typedef struct vt_srv_h264_cap_cfg_s { /* Codec part */
128 imcf_uint32 profile_level_id; ///< H.264 profile level id. construct by 3 parts
129
130 imcf_uint16 max_recv_level; ///< require 2 bytes, reserved.
131 imcf_uint8 redundant_pic_cap; ///< 0, 1. 0: we do not support yet.
132 imcf_uint8 pading;
133
134 imcf_int8 sprop_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH];
135 imcf_int8 sprop_level_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH];
136 imcf_uint32 max_mbps; ///< reserved. VT service provides default value
137 imcf_uint32 max_smbps; ///< reserved. VT service provides default value
138 imcf_uint32 max_fs; ///< reserved. VT service provides default value
139 imcf_uint32 max_cpb; ///< reserved. VT service provides default value
140 imcf_uint32 max_dpb; ///< reserved. VT service provides default value
141 imcf_uint32 max_br; ///< reserved. VT service provides default value
142 imcf_uint32 max_rcmd_nalu_size; ///< reserved. VT service provides default value
143
144 imcf_uint8 sar_understood; ///< 0~255, reserved. VT service provides default value
145 imcf_uint8 sar_supported; ///< 0~255, reserved. VT service provides default value
146 imcf_uint8 in_band_parameter_sets; //0, 1
147 imcf_uint8 level_asymmetry_allowed; //0, 1
148 imcf_uint32 framerate;
149 imcf_uint32 frame_width;
150 imcf_uint32 frame_height;
151 vt_srv_image_t image_send[VT_MAX_IMAGE_NUM];
152 vt_srv_image_t image_recv[VT_MAX_IMAGE_NUM];
153} vt_srv_h264_cap_cfg_t;
154
155typedef struct vt_srv_hevc_cap_cfg_s {
156 imcf_uint8 profile_space;
157 imcf_uint8 profile_id;
158 imcf_uint8 tier_flag;
159 imcf_uint8 level_id;
160
161 imcf_uint8 interop_constraints[6];
162 imcf_uint8 pad[2];
163
164 imcf_uint8 profile_comp_ind[4];
165
166 imcf_uint8 sprop_sub_layer_id;
167 imcf_uint8 recv_sub_layer_id;
168 imcf_uint8 max_recv_level_id;
169 imcf_uint8 tx_mode; //"SRST", "MRST" or "MRMT"
170
171 imcf_int8 sprop_vps[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
172 imcf_int8 sprop_sps[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
173 imcf_int8 sprop_pps[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
174 imcf_int8 sprop_sei[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
175
176 imcf_uint32 max_lsr;
177 imcf_uint32 max_lps;
178 imcf_uint32 max_cpb;
179 imcf_uint32 max_dpb;
180 imcf_uint32 max_br;
181 imcf_uint32 max_tr;
182 imcf_uint32 max_tc;
183 imcf_uint32 max_fps;
184 imcf_uint32 sprop_max_don_diff;
185 imcf_uint32 sprop_depack_buf_nalus;
186 imcf_uint32 sprop_depack_buf_bytes;
187 imcf_uint32 depack_buf_cap;
188 imcf_uint32 sprop_seg_id;
189 imcf_uint32 sprop_spatial_seg_idc;
190
191 imcf_int8 dec_parallel_cap[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
192 imcf_int8 include_dph[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
193 imcf_uint32 framerate;
194 imcf_uint32 frame_width;
195 imcf_uint32 frame_height;
196 vt_srv_image_t image_send[VT_MAX_IMAGE_NUM];
197 vt_srv_image_t image_recv[VT_MAX_IMAGE_NUM];
198} vt_srv_hevc_cap_cfg_t;
199
200typedef union vt_srv_video_codec_cap_cfg_u {
201 vt_srv_h264_cap_cfg_t h264_codec;
202 vt_srv_hevc_cap_cfg_t hevc_codec;
203} vt_srv_video_codec_cap_cfg_t;
204
205typedef struct vt_srv_video_media_bitrate_s {
206 imcf_uint32 format; ///<H264 or H265
207 imcf_uint32 profile;
208 imcf_uint32 level;
209 imcf_uint32 minbitrate;
210 imcf_uint32 bitrate;
211} vt_srv_video_media_bitrate_t;
212
213typedef struct vt_srv_rtp_ext_map_s {
214 imcf_uint8 ext_id;
215 imcf_uint8 direction;
216 imcf_uint8 reserved[2];
217 imcf_int8 ext_uri[VT_MAX_EXTMAP_URI_SIZE]; // size 256
218} vt_srv_rtp_ext_map_t;
219
220typedef struct vt_srv_h264_ps_s {
221 imcf_uint32 profile_level_id;
222 imcf_int8 sprop_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH];
223} vt_srv_h264_ps_t;
224
225typedef struct vt_srv_hevc_ps_s {
226 imcf_uint8 profile_id; ///< Range: 0~31, 1 if not present.
227 imcf_uint8 level_id; ///< Range: 0~255, 93(level 3.1) if not present.
228 imcf_uint8 pad[2];
229 imcf_int8 sprop_vps[VT_MAX_SDP_PARAMETER_SET_LENGTH];
230 imcf_int8 sprop_sps[VT_MAX_SDP_PARAMETER_SET_LENGTH];
231 imcf_int8 sprop_pps[VT_MAX_SDP_PARAMETER_SET_LENGTH];
232 imcf_int8 sprop_sei[VT_MAX_SDP_PARAMETER_SET_LENGTH];
233} vt_srv_hevc_ps_t;
234
235typedef struct vt_srv_video_capability_s {
236 /* old start */
237 imcf_uint32 profile_level_id; ///< H.264 profile level id. construct by 3 parts
238
239 imcf_uint16 max_recv_level; ///< require 2 bytes, reserved.
240 imcf_uint8 packetization_mode; ///< VoLTE_Event_Packetize_Mode_e
241 imcf_uint8 redundant_pic_cap; ///< 0, 1. 0: we do not support yet.
242
243 imcf_int8 sprop_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH];
244 imcf_int8 sprop_level_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH];
245 imcf_uint32 max_mbps; ///< reserved. VT service provides default value
246 imcf_uint32 max_smbps; ///< reserved. VT service provides default value
247 imcf_uint32 max_fs ; ///< reserved. VT service provides default value
248 imcf_uint32 max_cpb ; ///< reserved. VT service provides default value
249 imcf_uint32 max_dpb ; ///< reserved. VT service provides default value
250 imcf_uint32 max_br ; ///< reserved. VT service provides default value
251 imcf_uint32 max_rcmd_nalu_size; ///< reserved. VT service provides default value
252
253 imcf_uint8 sar_understood; ///< 0~255, reserved. VT service provides default value
254 imcf_uint8 sar_supported; ///< 0~255, reserved. VT service provides default value
255 imcf_uint8 in_band_parameter_sets; //0, 1
256 imcf_uint8 level_asymmetry_allowed; //0, 1
257 /* old end */
258
259 vt_srv_video_codec_cap_cfg_t codec_cap; // Use mime_Type to judge the codec cap.
260
261 /* rtp_rtcp part */
262 imcf_uint8 media_type; //such as video/audio
263 imcf_uint8 mime_Type; // such as H.264
264 //imcf_uint8 video_payload_type;// num such as: 97,98, 100
265 imcf_uint8 rtp_profile;//supported rtp_profile for special media such as RTP/AVP,RTP/AVPF
266 imcf_uint8 reserved;
267 imcf_uint32 sample_rate;//timescale, which use to calculte rtp timestamp
268
269 /*@ rtp packet transmission param
270 *@ contain b=AS,PT,packetization params related to the codec type
271 *@ ----------------------------------------------------------------------
272 *@consider the negotiated params also can set through rtp_rtcp_capability
273 *@ rtp_rtcp_capability must be can for one explicit item
274 *@ then should not contain alternatives in rtp_packetize_params,such as "packetization-moe=1;packetization-mode=0"
275 *@ ----------------------------------------------------------------------
276 */
277 //imcf_uint32 video_b_as; //b=AS in kb/s
278 imcf_uint32 packetize_mode;
279 imcf_uint32 extmap_num;
280 vt_srv_rtp_ext_map_t extmap[VT_MAX_EXTMAP_NUM]; //now only CVO support
281
282 //imcf_uint32 video_b_rs; //b=RS in bps
283 //imcf_uint32 video_b_rr; //b=RR in bps
284 imcf_uint32 rtcp_rsize; //a=rtcp_rsize
285
286 /*@ rtcp packet transmission param
287 *@ contain b=RS,b=RR,and feedback message type
288 *@ may be serveral feedback message supported like:
289 *@ ---------sdp--------------
290 *@ a=rtcp-fb:98 ccm tstr
291 *@ a=rtcp-fb:98 ccm fir
292 *@ a=rtcp-fb:* ccm tmmbr smaxpr=120
293 *@ ---------------------------
294 *@ so need a array of rtcp_fb_type_t to represent all thest feedback messages
295 *@ rtcp_fb_param_num represent the size of the array
296 */
297 imcf_uint32 rtcp_fb_param_num;
298 vt_srv_rtcp_fb_param_type_t rtcp_fb_type[VT_MAX_RTCP_FB_SIZE]; // SIZE 5
299} vt_srv_video_capability_t;
300
301typedef struct vt_srv_imcb_msg_vt_cap_setting_s {
302 IMSVT_PARA_HDR
303 imcf_int32 accout_id;
304 imcf_int32 video_cap_num; ///< number of cap.
305 vt_srv_video_capability_t video_cap[VT_MAX_VIDEO_CAP_NUM]; ///< video capability from MA
306 vt_srv_h264_ps_t h264_ps[VT_MAX_PS_NUM]; // SIZE 32
307 vt_srv_hevc_ps_t hevc_ps[VT_MAX_PS_NUM]; // SIZE 32
308 vt_srv_video_media_bitrate_t bitrate_info[VT_MAX_LEVEL_SIZE]; // SIZE 20
309
310 imcf_uint8 sim_slot_id; /* start from 0 */
311 imcf_uint8 pad2;
312 imcf_uint16 operator_code;
313
314 /* CAUTION: please keep VoLTE_Event_VT_Cap_Setting_t in sync when you want to add elements here,
315 IMCB is forwarding pointer to this structure and it is casted to VoLTE_Event_VT_Cap_Setting_t */
316} vt_srv_imcb_msg_get_cap_rsp_struct, imsvt_imcb_get_cap_rsp_struct,
317vt_srv_vt_cap_setting_t;
318
319typedef struct vt_srv_imcb_msg_config_s {
320 // required by RTP and RTCP session
321 imcf_uint8 call_id; // identify this call
322 imcf_uint8 video_payload_type; // RTP payload type
323 imcf_uint8 remote_addr_type; ///< VoLTE_Event_IP_Version_e
324 imcf_uint8 rtp_direction; ///< VoLTE_Event_RTP_DIRECTION_e
325
326 imcf_uint16 remote_rtp_port;
327 imcf_uint16 remote_rtcp_port;
328 imcf_uint16 local_rtcp_port; ///< rtcp port number. we may configure it not rtp_port+1
329 imcf_uint16 local_rtp_port; ///< rtp port number for media attribute in SDP message
330 imcf_int8 remote_rtp_address[VT_ADDR_LENGTH];
331 imcf_int8 remote_rtcp_address[VT_ADDR_LENGTH];
332 imcf_int8 local_address[VT_ADDR_LENGTH];
333 imcf_uint32 video_b_as; // RTP bandwidth
334 imcf_uint32 video_b_rs; // RTCP sender bandwidth
335 imcf_uint32 video_b_rr; // RTCP receiver bandwidth
336
337 imcf_uint8 media_type; //such as video/audio
338 imcf_uint8 mime_Type; // such as H.264
339 imcf_uint16 rtcp_rsize;
340 imcf_uint32 packetize_mode;
341 imcf_uint32 sample_rate;//timescale, which use to calculte rtp timestamp
342 imcf_uint32 rtcp_fb_param_num;
343 vt_srv_rtcp_fb_param_type_t rtcp_fb_type[VT_MAX_RTCP_FB_SIZE]; // SIZE? 32
344
345 imcf_uint8 rtp_profile;//supported rtp_profile for special media such as RTP/AVP,RTP/AVPF
346 imcf_uint8 camera_direction;
347 imcf_uint8 bHold; //local hold
348 imcf_uint8 bHeld; //remote hold
349
350 vt_srv_rtp_ext_map_t extmap;
351
352 /* WFC */
353 imcf_uint32 video_dscp;
354 imcf_uint32 video_soc_priority;
355
356 /*------ old start --------------*/
357 imcf_uint16 pad_rtcp_rsize; /* move to new one*/
358 imcf_uint16 rtcpfb_type; //bitmap, VoLTE_Event_RTCP_FB_Type_e
359 imcf_int8 id[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
360 imcf_int8 trr_int[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
361 imcf_int8 id_app_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
362 imcf_int8 ack_app_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
363 imcf_int8 nack_app_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
364 imcf_int8 tmmbr_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
365 imcf_int8 vbcm_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
366 /*------ old end --------------*/
367
368 // require by H.264 or H265
369 vt_srv_video_codec_cap_cfg_t codec_cfg;
370
371 /*------ old start --------------*/
372 // required by H.264 codec, RFC 6184
373 imcf_uint32 profile_level_id; ///< H.264 profile level id. construct by 3 parts
374
375 imcf_uint16 max_recv_level; ///< require 2 bytes, reserved.
376 imcf_uint8 packetization_mode; ///< VoLTE_Event_Packetize_Mode_e
377 imcf_uint8 redundant_pic_cap; ///< 0, 1. 0: we do not support yet.
378
379 imcf_int8 sprop_parameter_sets[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
380 imcf_int8 sprop_level_parameter_sets[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
381 imcf_uint32 max_mbps; ///< reserved. VT service provides default value
382 imcf_uint32 max_smbps; ///< reserved. VT service provides default value
383 imcf_uint32 max_fs ; ///< reserved. VT service provides default value
384 imcf_uint32 max_cpb ; ///< reserved. VT service provides default value
385 imcf_uint32 max_dpb ; ///< reserved. VT service provides default value
386 imcf_uint32 max_br ; ///< reserved. VT service provides default value
387 imcf_uint32 max_rcmd_nalu_size; ///< reserved. VT service provides default value, 0: SDP will not present the value
388
389 imcf_uint8 sar_understood; ///< 0~255, reserved. VT service provides default value, 0: SDP will not present the value
390 imcf_uint8 sar_supported; ///< 0~255, reserved. VT service provides default value, 0: SDP will not present the value
391 imcf_uint8 in_band_parameter_sets; ///< 0, 1. we only support 0: support SPS, PPS in SDP
392 imcf_uint8 level_asymmetry_allowed; ///<0, 1. we only support 0: symmetry communication
393 /*------ old end --------------*/
394} vt_srv_imcb_msg_config_t;
395
396typedef struct vt_srv_imcb_msg_setting {
397 // 0 : inactive (VoLTE)
398 // 1 : active (ViLTE)
399 imcf_uint32 mode;
400
401 imcf_uint8 ebi; /* drop on 97 MD, set to zero (0) */
402 imcf_uint8 video_type;
403 imcf_uint8 pad[2];
404 imcf_uint32 network_id; /*drop on 93 MD */
405
406 // 0 : inactive
407 // 1 : send_only
408 // 2 : recv_only
409 // 3 : send_recv
410
411 imcf_uint32 early_media_direction;
412
413 /*kbps, please ignore when Wifi access RAT */
414 /*0: is for un-specified, please DO NOT use this element */
415 imcf_uint32 nw_assigned_ul_bw;
416 imcf_uint32 nw_assigned_dl_bw;
417
418 imcf_uint8 sim_slot_id; /* start from 0 */
419 imcf_uint8 pad2[3];
420
421 imcf_uint8 if_name[VT_MAX_IF_NAME_LENGTH];
422
423 /* 180 - 2 = 178 */
424 imcf_uint8 bearer_id; // LTE: EPS Bearer Identifier (EBI), NR: 5G QoS Flow Identifier (QFI)
425 imcf_uint8 pdu_session_id; // LTE: 0, NR: PDU Session ID (1-15)
426
427 imcf_uint8 extension[178];
428
429} vt_srv_imcb_msg_setting_t;
430
431typedef struct vt_srv_imcb_msg_param_s {
432 IMSVT_PARA_HDR
433 vt_srv_imcb_msg_setting_t setting;
434 vt_srv_imcb_msg_config_t config;
435}
436 vt_srv_imcb_msg_config_init_ind_struct, imsvt_imcb_config_init_ind_struct,
437 vt_srv_imcb_msg_config_update_ind_struct, imsvt_imcb_config_update_ind_struct,
438 vt_srv_imcb_msg_config_deinit_ind_struct, imsvt_imcb_config_deinit_ind_struct,
439 vt_srv_imcb_msg_param_t
440;
441
442typedef struct vt_srv_imcb_msg_session_modify_s {
443 IMSVT_PARA_HDR
444 imcf_uint8 call_id; /* identify this call */
445
446 // 0 : inactive (VoLTE)
447 // 1 : active (ViLTE)
448 imcf_uint8 mode;
449
450 // 0 : inactive
451 // 1 : send_only
452 // 2 : recv_only
453 // 3 : send_recv
454 imcf_uint8 camera_direction;
455
456 imcf_uint8 result; /* vt_srv_imcb_session_modify_result_t */
457
458 /* remeber to do offset to UA, UA do not contain this one */
459 imcf_uint8 sim_slot_id; /* start from 0 */
460 imcf_uint8 pad[3];
461}
462
463/*
464 VT -- req --> UA .... UA -- ind --> VT
465 VT <- cnf --- UA .... UA <- rsp -- VT
466
467*/
468 vt_srv_imcb_msg_session_modify_req_struct, imsvt_imcb_modify_session_req_struct,
469 vt_srv_imcb_msg_session_modify_ind_struct, imsvt_imcb_modify_session_ind_struct,
470 vt_srv_imcb_msg_session_modify_rsp_struct, imsvt_imcb_modify_session_rsp_struct,
471 vt_srv_imcb_msg_session_modify_cnf_struct, imsvt_imcb_modify_session_cnf_struct;
472
473typedef struct vt_srv_imcb_msg_session_modify_cancel_req_s {
474 IMSVT_PARA_HDR
475 imcf_uint8 call_id; /* identify this call */
476 /* remeber to do offset to UA, UA do not contain this one */
477 imcf_uint8 sim_slot_id; /* start from 0 */
478 imcf_uint8 cause;
479 imcf_uint8 pad[5];
480}vt_srv_imcb_msg_session_modify_cancel_req_struct,imsvt_imcb_modify_session_cancel_req_struct;
481
482typedef struct vt_srv_imcb_msg_session_modify_cancel_cnf_s {
483 IMSVT_PARA_HDR
484 imcf_uint8 call_id; /* identify this call */
485 /* remeber to do offset to UA, UA do not contain this one */
486 imcf_uint8 sim_slot_id; /* start from 0 */
487 imcf_uint8 result;
488 imcf_uint8 pad[5];
489}vt_srv_imcb_msg_session_modify_cancel_cnf_struct,imsvt_imcb_modify_session_cancel_cnf_struct;
490
491typedef struct vt_srv_imcb_msg_session_modify_cancel_s {
492 IMSVT_PARA_HDR
493 imcf_uint8 call_id; /* identify this call */
494 /* remeber to do offset to UA, UA do not contain this one */
495 imcf_uint8 sim_slot_id; /* start from 0 */
496 imcf_uint8 pad[2];
497}
498vt_srv_imcb_msg_session_modify_cancel_ind_struct,imsvt_imcb_modify_session_cancel_ind_struct,
499vt_srv_imcb_msg_session_modify_local_bw_ready_ind_struct,imsvt_imcb_modify_session_local_bw_ready_ind_struct;
500
501typedef struct vt_srv_imcb_msg_call_progress_ind_s {
502 IMSVT_PARA_HDR
503 imcf_uint8 call_id; /* identify this call */
504 /* remeber to do offset to UA, UA do not contain this one */
505 imcf_uint8 sim_slot_id; /* start from 0 */
506 imcf_uint8 call_mode;
507 imcf_uint8 pad1;
508
509 imcf_uint32 ecpi;
510 imcf_uint32 reserved;
511}vt_srv_imcb_msg_call_progress_ind_struct, imsvt_imcb_call_progress_ind_struct;
512
513typedef struct vt_srv_imcb_msg_mod_bw_req_s {
514 IMSVT_PARA_HDR
515 imcf_uint8 call_id; /* identify this call */
516 imcf_uint8 pad[3];
517
518 imcf_uint32 video_bandwidth;
519
520 imcf_uint8 sim_slot_id; /* start from 0 */
521 imcf_uint8 pad2[3];
522} vt_srv_imcb_msg_mod_bw_req_t, imsvt_imcb_mod_bw_req_struct;
523
524typedef struct {
525 IMSVT_PARA_HDR
526 imcf_uint32 error_num;
527} imsvt_imcb_comm_error_struct;
528
529typedef struct {
530 IMSVT_PARA_HDR
531 imcf_uint8 token;
532 imcf_uint8 pad[3];
533} imsvt_imcb_loop_test_ind_struct;
534
535typedef struct {
536 IMSVT_PARA_HDR
537 imcf_uint8 token;
538 imcf_uint8 pad[3];
539} imsvt_imcb_loop_test_rsp_struct;
540
541typedef enum vt_srv_imcb_rat_type_e {
542 VT_SRV_IMCB_RAT_TYPE_NONE = 0,
543 VT_SRV_IMCB_RAT_TYPE_2G = VT_SRV_IMCB_RAT_TYPE_NONE,
544 VT_SRV_IMCB_RAT_TYPE_3G_FDD,
545 VT_SRV_IMCB_RAT_TYPE_3G_TDD,
546 VT_SRV_IMCB_RAT_TYPE_4G_FDD,
547 VT_SRV_IMCB_RAT_TYPE_4G_TDD,
548
549 /* WFC */
550 VT_SRV_IMCB_RAT_TYPE_802_11,
551 VT_SRV_IMCB_RAT_TYPE_802_11a,
552 VT_SRV_IMCB_RAT_TYPE_802_11b,
553 VT_SRV_IMCB_RAT_TYPE_802_11g,
554 VT_SRV_IMCB_RAT_TYPE_802_11n,
555 VT_SRV_IMCB_RAT_TYPE_802_11ac,
556
557 /* C2K */
558 VT_SRV_IMCB_RAT_TYPE_1xRTT,
559 VT_SRV_IMCB_RAT_TYPE_HRPD,
560 VT_SRV_IMCB_RAT_TYPE_eHRPD,
561
562 VT_SRV_IMCB_RAT_TYPE_5G_FDD,
563 VT_SRV_IMCB_RAT_TYPE_5G_TDD,
564
565 VT_SRV_IMCB_RAT_TYPE_MAX = VT_SRV_IMCB_RAT_TYPE_5G_TDD,
566 VT_SRV_IMCB_RAT_TYPE_UNSPEC = 0x80
567} vt_srv_imcb_rat_type;
568
569
570typedef struct {
571 IMSVT_PARA_HDR
572 imcf_uint8 source_rat_type; /* vt_srv_imcb_rat_type enum */
573 imcf_uint8 target_rat_type; /* vt_srv_imcb_rat_type enum */
574 imcf_uint8 pad[2];
575
576 imcf_uint8 sim_slot_id; /* start from 0 */
577 imcf_uint8 pad2[3];
578} vt_srv_imcb_handover_start_ind_struct, imsvt_imcb_handover_start_ind_struct;
579
580typedef struct {
581 IMSVT_PARA_HDR
582 imcf_uint8 source_rat_type; /* vt_srv_imcb_rat_type enum */
583 imcf_uint8 target_rat_type; /* vt_srv_imcb_rat_type enum */
584 imcf_uint8 is_success;
585 imcf_uint8 pad[1];
586
587 imcf_uint8 sim_slot_id; /* start from 0 */
588 imcf_uint8 pad2[3];
589} vt_srv_imcb_handover_stop_ind_struct, imsvt_imcb_handover_stop_ind_struct;
590
591typedef struct {
592 IMSVT_PARA_HDR
593 imcf_uint8 source_rat_type; /* vt_srv_imcb_rat_type enum */
594 imcf_uint8 target_rat_type; /* vt_srv_imcb_rat_type enum */
595 imcf_uint8 sim_slot_id; /* start from 0 */
596 imcf_uint8 pad;
597 imcf_uint32 network_id; /* drop on 93MD */
598} vt_srv_imcb_pdn_handover_begin_ind_struct, imsvt_imcb_pdn_handover_begin_ind_struct;
599
600typedef struct {
601 IMSVT_PARA_HDR
602 imcf_uint8 source_rat_type; /* vt_srv_imcb_rat_type enum */
603 imcf_uint8 target_rat_type; /* vt_srv_imcb_rat_type enum */
604 imcf_uint8 is_success;
605 imcf_uint8 sim_slot_id;
606 imcf_uint32 network_id; /* drop on 93MD */
607} vt_srv_imcb_pdn_handover_end_ind_struct, imsvt_imcb_pdn_handover_end_ind_struct;
608
609#endif