blob: f81a35396680ab7f2c8849ab96fce5359ebc4ce5 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2013
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/*****************************************************************************
37 * Filename:
38 * ------------
39 * ims_common_def.h
40 *
41 * Project:
42 * ------------
43 * MOLY
44 *
45 * Description:
46 * ------------
47 * This file defines structures and enums commonly used by IMC, ATP, and xDM.
48 *
49 * Author:
50 * -----------
51 * -------
52 *
53 *===========================================================
54 * $Log$
55 *
56 * 07 07 2022 jasleen.k
57 * [MOLY00846008] [MT6873][Margaux][Q0][R3][JAPAN][SOFTBANK][SA][SIM][Lab][Degrade, CORE_GEN-10n-22-1001] On W22.14.P1, UE kept sending PDU_REQ(for IMS) after received DEREGISTRATION_REQ(re-registration required). Note that W21.51.P3 didn't have this issue.
58 *
59 * .
60 *
61 * 07 05 2022 ot_fei.teng
62 * [MOLY00860159] [FeatureDevelopment][ALPSAR07137638] VzW Visible-SIM requirement gap
63 *
64 * .
65 *
66 * 06 10 2022 yung-liang.tsou
67 * [MOLY00876156] [T750][AT]AT+CLCC????
68 *
69 * .AT+CLCC support in IMS
70 *
71 * 04 28 2022 ot_fei.teng
72 * [MOLY00775781] [FeatureDevelopment][ALPSAR06336232] TMOUS 2022Q1 Requirement Gaps Development - CallUA
73 *
74 * .
75 *
76 * 03 30 2022 uri.chang
77 * [MOLY00795972] [FeatureDevelopment][ALPSAR06495798] VzW 2021OCT IMS part
78 * [patch back][97R3.MP to 97R3.MD700.MP] [VzW][21OCT] requirement gap development
79 * VZ_REQ_5GNRSA_4105999311948016
80 * - start Teps_fb_watchdog when 183
81 * - stop Teps_fb_watchdog when 5QI=1
82 *
83 * VZ_REQ_5GNRSA_4105999311948012
84 * - poweroff_ims_dereg_timer = 4.
85 *
86 * 03 21 2022 ot_gang.zhang
87 * [MOLY00668814] [moto][Ellis][IMS][8/13] support EXTRA_ADDITIONAL_SIP_INVITE_FIELDS for Call Filter VZ_REQ_RCSVOLTE_34736
88 *
89 * .
90 *
91 * 02 24 2022 kai-cheng.chiu
92 * [MOLY00677249] [FIH][FLC][ATT][IQI][IODT]15.13 VoLTE Metric Verification Test (Package Validator)- missing MM02 and MM03
93 *
94 * .
95 *
96 * 02 18 2022 ot_hui.tu
97 * [MOLY00648435] [MT6761][Merlot][R0][MP2][TMO][21Q1][simulator][in-house][R&S][Protocol_IMS & VoLTE][63884][L_IMS_VoLTE_423129]PIDF-LO header Included in INVITE message and has Coordinate , Civic Address and GML shape - Ellipsoid
98 *
99 * .
100 *
101 * 02 10 2022 ying-cen.lai
102 * [MOLY00808473] [Cogin patch back] NR15.R3.MP_Sync_To_NR15.R3.MD700.MP
103 *
104 * CL 17659181 / MOLY00684273
105 *
106 * 01 27 2022 kai-cheng.chiu
107 * [MOLY00803278] [Gen97][MD700] CR patch-back from R3.MP
108 *
109 * .
110 *
111 * 12 16 2021 xin.ni
112 * [MOLY00774161] [mt2735][CS eCall][NG eCall][patch back] ecall patch back from NR15.R3.MD700.MP.ECAll.DEV. IMS interface part
113 *
114 * .
115 *
116 * 12 14 2021 ot_gang.zhang
117 * [MOLY00729679] [MT6873][Margaux][Q0][R3][JAPAN][SOFTBANK][SA][SIM][Lab][Voice-06-01-02] Please help to support OTR-Voice-032069
118 *
119 * .
120 *
121 * 10 22 2021 tong.li
122 * [MOLY00687896] [Gen97][4N SQC-Lite][W2128][SA_Focus][Internal][FT][China][Yinchuan][5GMM][SA][SA_EPSFB Call][SA+NSA_TC_21][static][CMCC+CMCC][IS:CMCC]CMCC card cannot camp on NR when hang up the call 1/100
123 * .
124 *
125 * 08 06 2021 olli.kettunen
126 * [MOLY00632727] [IMS][B210302-3193][B200214-074][IOT Historical][PLAY][IMS] DUT is not able to make a voice call when is under WiFi with no Internet access.
127 *
128 * .
129 *
130 * 07 21 2021 parmod.garg
131 * [MOLY00670633] [MT6891][Petrus-P][Customer FT][Xiaomi][India][SQC Excluded][Hyderabad][Airtel]DUT fails to Receive USSD code reply message after disconnecting the ongoing VOLTE call for Airtel operator.
132 * Handle CS service notification during ongoing IMS call for airtel operator
133 * .
134 *
135 * 05 17 2021 uri.chang
136 * [MOLY00624439] [TMO][Echolocate] TMOUS 21Q2 Echolocate feature
137 * [patch back][97R3 to 97MD700.MP][TMOUS][21Q2] Echolocate - interface.
138 *
139 * 05 14 2021 ot_jiaxin.zhou
140 * [MOLY00550463] [M505][C3M][????][Claro]SDN Requirements_?????7.31???????ALPS05060303????????patch
141 *
142 * .
143 *
144 * 03 24 2021 mika.leinonen
145 * [MOLY00607912] [5G-B] [Elsa] DT???IMS preferred????? ? Follow ALPS05435102
146 * Add WFC profile IMS_PREFERRED
147 *
148 * 03 22 2021 tsung-kun.shih
149 * [MOLY00578311] [US_DEV][TMO][2021Q1] Call UA
150 *
151 * .
152 *
153 * 03 16 2021 ds_nikesh.kumar
154 * [MOLY00605923] [IMS-RTD Test][NewChip-FT][MT6298][Mercury][MP0.5][SQC][FR1][4GMM][TCID:_009_PCSCF_Restoration][Beyond Conformance][India][Airtel]REGISTER sent after call end when PCSCF is changed two times during call
155 *
156 * .
157 *
158 * 11 13 2020 peng.pan
159 * [MOLY00589298] [MT6853][Mouton][VzW][CCP2][LC][HQ][RnS][E911][2.41][UE Without UICC, SIB1 PS 911 Supported and SIB2 Emergency Call Not Barred, UE Recently Acquired List has LTE, PS 911 Call Unsuccessful, 911 call Completes on available System ]911 call on the UMTS fail
160 * support handle invite 407 with "Proxy-Authenticate" header.
161 *
162 * 11 13 2020 peng.pan
163 * [MOLY00589298] [MT6853][Mouton][VzW][CCP2][LC][HQ][RnS][E911][2.41][UE Without UICC, SIB1 PS 911 Supported and SIB2 Emergency Call Not Barred, UE Recently Acquired List has LTE, PS 911 Call Unsuccessful, 911 call Completes on available System ]911 call on the UMTS fail
164 * support handle invite 407 with "Proxy-Authenticate" header.
165 *
166 * 11 13 2020 peng.pan
167 * support handle invite 407 with "Proxy-Authenticate" header.
168 *
169 * 11 05 2020 larry.liu
170 * [MOLY00582425] [CM_TMUS][PROTOCOL] Question about +EIRAT
171 * [IRAT] enum change
172 *
173 * 11 05 2020 kino.wang
174 * [MOLY00584131] [MT6893][Petrus-P][MP6][Post MP][SQC][Internal][FT][China][Shaoxing][5GMM][SA][SA Self-Cer][TCID:SA_Self-Cer_FT_02_005][CMCC+CMCC][IS:SIM1 CMCC][Shengli Road][LAT2]dial EPSFB Call ,but setup at GSM
175 *
176 * .
177 *
178 * 09 29 2020 uri.chang
179 * [MOLY00574194] [copy CR]�iH+�j�icall�j 6889 R2��?�O�_�i�H����IMS?�u??�M�W?��ICD�ƥ�
180 *
181 * [patch back][97R2.TC3.SP to 97R3.MP][Huawei][ICD] add info. in SIP_Message/ new SDP_Nego_Info_Event/ add end call cause in Call_Status_Event.
182 *
183 * 09 18 2020 szu-chieh.chiu
184 * [MOLY00569477] [IMS][Telus] v11.0 requirement and gap
185 * IMC.
186 *
187 * 09 18 2020 savvas.chou
188 * [MOLY00570287] [Gen97] VzW T_VzW and T_eps_fallback timer Implementation
189 * VzW EPSFB and confidence level for geolocation
190 *
191 * 09 18 2020 shu-lin.yang
192 * [MOLY00569420] [US_DEV] VZW 2020JUN IMSUA
193 *
194 * R3 TC3 VLIST.
195 *
196 * 09 18 2020 uri.chang
197 * [MOLY00569695] [US_DEV][VZW][MP7] P-CSCF handling for handover
198 * P-CSCF handling for IP/PCO change - interface part (MPD)
199 * merge IP_CHANGE_NOTIFY, PCSCF_RESTORE, and REQ_REREG to CONDITION_CHANGE_NOTIFY.
200 *
201 * 08 28 2020 jin.liang
202 * [MOLY00562709] [5GHP][feature][Data&Call]game space mode
203 * .
204 *
205 * 08 17 2020 frank-th.chen
206 * [MOLY00556671] [MT6873][Margaux][N3GPPOVERDATA.DEV][VoData(Enable)][RDIT] [INDIA][JIO+AIRTEL] VoData(Enable) RDIT test call_is_still_active_after_aeroplane_mode_ON
207 *
208 * .
209 *
210 * 08 14 2020 frank-th.chen
211 * [MOLY00556671] [MT6873][Margaux][N3GPPOVERDATA.DEV][VoData(Enable)][RDIT] [INDIA][JIO+AIRTEL] VoData(Enable) RDIT test call_is_still_active_after_aeroplane_mode_ON
212 *
213 * .
214 *
215 * 08 14 2020 frank-th.chen
216 * [MOLY00556671] [MT6873][Margaux][N3GPPOVERDATA.DEV][VoData(Enable)][RDIT] [INDIA][JIO+AIRTEL] VoData(Enable) RDIT test call_is_still_active_after_aeroplane_mode_ON
217 * .
218 *
219 * 07 29 2020 jin.liang
220 * [MOLY00550525] [Oppo] Please provide CMCC, CT and CU來電�feature
221 * .
222 *
223 * 07 27 2020 frank-th.chen
224 * [MOLY00549478] [Gen97][HE3.0]N3GPP offload over data feature
225 *
226 * VoData - IMS - IMCB
227 *
228 * 07 27 2020 zhongyong.wang
229 * [MOLY00546974] [MT6873][Margaux][Q0][R3][IOT][Japan][KDDI][CATv2.10.0.A][In-House CAT][L20_3-6_VoLTE_Error_INV_Retry-After]The DUT failed to send INVITE request after 404 response.
230 *
231 * ALPS05245377.
232 *
233 * 07 27 2020 yulong.chang
234 * [MOLY00549478] [Gen97][HE3.0]N3GPP offload over data feature
235 * VoData VDM part
236 *
237 * 07 20 2020 yingfui.hung
238 * [MOLY00546514] [Gen97][CT][hVolte] add SBP to config default hVolte mode as VoPS
239 *
240 * .
241 *
242 * 07 15 2020 jin.liang
243 * [MOLY00517562] [self]503���请��
244 * .
245 *
246 * 07 14 2020 yingfui.hung
247 * [MOLY00545028] [Gen97][L4] revise AT+EIREG
248 *
249 * .
250 *
251 * 07 10 2020 jin.liang
252 * [MOLY00523315] ?�DM?��?��?��?�语?��??��?��?��?��?��??200OK,�?��?�失?
253 *
254 * .
255 *
256 * 07 06 2020 huifeng.jing
257 * [MOLY00529481] [B200526-2172]??????????????5G NV-IOT-SA??SA+NSA??????NSA?????SA?????
258 * NR_recover.
259 *
260 * 07 04 2020 frank-th.chen
261 * [MOLY00538261] [Blocking][CCP2-P0][MT6885][Petrus][TMO-US][MP5][SQC][20Q2][q0][HQ][Keysight][Protocol_Wi-Fi Calling][60474][L-ePDG -97602-7]The msg doesn't contain header field P-Location-Object - Error
262 * +EIMSGEO after AT+ELOCAEN
263 *
264 * 06 30 2020 tsung-kun.shih
265 * [MOLY00508983] [Call UA][TCL][Tokyo Lite TMO][RCS][Android Q]Apply RCS enriched calling feature patch for platform part.
266 *
267 * .
268 *
269 * 06 30 2020 frank-th.chen
270 * [MOLY00526066] ALPS05120134 [TCL][Tokyo Lite TMO]WFC] The "P-LANI TIMESTAMP here" in invite is not correct, it is display the invite timestamp. The time reported is not in UTC or local time for LTE/ 3G/ 2G
271 *
272 * .
273 *
274 * 06 15 2020 frank-th.chen
275 * [MOLY00526066] ALPS05120134 [TCL][Tokyo Lite TMO]WFC] The "P-LANI TIMESTAMP here" in invite is not correct, it is display the invite timestamp. The time reported is not in UTC or local time for LTE/ 3G/ 2G
276 *
277 * .
278 *
279 * 05 27 2020 ari.simonen
280 * [MOLY00527994] [Gen97] SPI Allocation Patchback, IMS Stack part
281 *
282 * MOD_IPSEC assisted SPI allocation support for IMS Stack
283 *
284 * 05 13 2020 tong.li
285 * [MOLY00515430] ??U??IMS`?M????D?\Mf
286 * .
287 *
288 * 05 07 2020 johnson.liu
289 * [MOLY00514296] i19131jiPVTjif??j19131CU+CTD(IMS+IMS)Ad1CUÆ¥dMO3GAv2/20
290 * .
291 *
292 * 04 03 2020 delphine.wang
293 * [MOLY00508252] [MT6889][Petrus][5G FT][5GMM][China][CMCC][SA][IODT][端到端][OPPO Load][Hangzhou][2.1]1314_CMCC+CMCC??1ï¿??????????��???HD???????��?
294 * [MOLY00508252] [MT6889][Petrus][5G FT][5GMM][China][CMCC][SA][IODT][端到端][OPPO Load][Hangzhou][2.1]1314_CMCC+CMCC??1ï¿??????????��???HD???????��?
295 * [MOLY00508252] [MT6889][Petrus][5G FT][5GMM][China][CMCC][SA][IODT][端到端][OPPO Load][Hangzhou][2.1]1314_CMCC+CMCC??1ï¿?????��???HD???????��?
296 *
297 * .
298 *
299 * 03 24 2020 xw.wang
300 * [MOLY00507077] [MT6739][Zion][Q0][WW FT][Turkey][Istanbul][4GMM][IMS][Regression][SQC Excluded][TurkTelekom][VoWiFi] To check the PCNI requirements, Cell Time is showing 0
301 *
302 * .
303 *
304 * 03 03 2020 jianing.zu
305 * [MOLY00502624] [MT6873][Margaux][Q0][MP2][SQC][5G FT][NSA][5GMM][China][CMCC][FT][CMCC FT][RT][Shanghai][5G-FT-NSA-1.3]Call drop happened after upgrade failed
306 * .
307 *
308 * 02 24 2020 shu-lin.yang
309 * [MOLY00501087] [US_DEV][Altice] call ua dev
310 *
311 * .
312 *
313 * 02 03 2020 sami.jutila
314 * [MOLY00481544] [MT6873][Margaux][Q0][MP3][SQC][EE][FT][UK][Cambridge][IMS][TCID:WFC_MIMS_026] SIM2 WFC to VoLTE HO. No audios, call drop.
315 * .
316 *
317 * 01 06 2020 yingfui.hung
318 * [MOLY00469528] [Gen97][VMOLY][SA][hVolte] hVolte revise for SA
319 *
320 * .
321 *
322 * 12 08 2019 chengwen.liu
323 * [MOLY00464287] [VMOLY][Gen97] UA ASSERT Removal & IMCB/UA state unsync handling
324 *
325 * .
326 *
327 * 12 04 2019 yuheng.li
328 * [MOLY00443618] [VMOLY]Gen97 Common Feature : Call and Supplementary Service �� IMSProtoc9-support 607
329 *
330 * .
331 *
332 * 10 29 2019 yuheng.li
333 * [MOLY00443618] [VMOLY]Gen97 Common Feature : Call and Supplementary Service �� IMSProtoc9-support 607
334 * 12 02 2019 szu-chieh.chiu
335 * [MOLY00462969] [VMOLY][Gen97] IMCB ASSERT Removal
336 * IMCB ASSERT Removal -- IMCB/UA state unsync handling.
337 *
338 * 11 26 2019 jianing.zu
339 * [MOLY00461552] [Petrus][Q0] CONF_CALL_MODIFY_WAIT_NOTIFY_TIMER
340 * .
341 *
342 * 11 26 2019 jianing.zu
343 * [MOLY00461552] [Petrus][Q0] CONF_CALL_MODIFY_WAIT_NOTIFY_TIMER
344 * .
345 *
346 * 11 26 2019 jianing.zu
347 * [MOLY00461552] [Petrus][Q0] CONF_CALL_MODIFY_WAIT_NOTIFY_TIMER
348 * .
349 *
350 * 11 21 2019 parmod.garg
351 * [MOLY00460714] [MT6885][Petrus][MP1][SQC][India][Delhi][FT][VoLTE][Airtel][Vodafone][Free Test] DUT fails to give USSD result for SIM2 Vodafone operator when initiating alternately.
352 * wait for BYE 200 OK response for USSD on vodafone India N/W
353 * .
354 *
355 * 11 20 2019 ari.simonen
356 * [MOLY00460381] [MT6885][Petrus][MP1][SQC][IMS][FDD][4GMM][UK][EE][TCID:V-ECC-014]: IMS service aborted permanently if initial registration collides with emergency registration
357 *
358 * Fixed a nal_monitor()/SOCKET_EVENT_IND loop when SIPTX fails to map any connection to the received SOCKET_EVENT_IND.
359 * Also improved SIPTX, Call UA and USSD UA tracing.
360 *
361 * 11 20 2019 tong.li
362 * [MOLY00460516] [Rose][Petrus]BSP+][Q0]SIMB camp on 4G slowly (about 1'30") after set default data in SIMA.
363 * .
364 *
365 * 11 08 2019 mika.leinonen
366 * [MOLY00457775] [MT6885][Petrus][MP1][India][Delhi][FT][VoLTE][JIO][IDEA][Auto][SWIFT][ASSERT] file:mcu/protocol/ims/stack/src/reg/reg.c line:9665
367 * Change Reg UA client field to 64-bit because there can be more than 32 UA contexts
368 *
369 * 11 08 2019 mika.leinonen
370 * [MOLY00457775] [MT6885][Petrus][MP1][India][Delhi][FT][VoLTE][JIO][IDEA][Auto][SWIFT][ASSERT] file:mcu/protocol/ims/stack/src/reg/reg.c line:9665
371 * Change Reg UA client field to 64-bit because there can be more than 32 UA contexts
372 *
373 * 11 06 2019 ari.simonen
374 * [MOLY00457408] [MT6885][Petrus][MP1][SQC][MDST][SWIFT][TW][CHT+CHT][4G MM][ASSERT] file:mcu/protocol/ims/core/src/os/api_mem.c line:122
375 *
376 * Enabled ADM logging option for IMS memory pool
377 *
378 * 11 04 2019 xin.ni
379 * [MOLY00431597] [IMS Interface][version#0x74][MD] add new retry on-going in reg_state
380 *
381 * .
382 *
383 * 11 04 2019 xin.ni
384 * [MOLY00431597] [IMS Interface][version#0x74][MD] add new retry on-going in reg_state
385 *
386 * .
387 *
388 * 09 25 2019 savvas.chou
389 * [MOLY00443561] [Gen97] SCBM
390 * SCBM and VISIBLE SIM
391 *
392 * 09 25 2019 savvas.chou
393 * [MOLY00443561] [Gen97] SCBM
394 * SCBM and VISIBLE SIM
395 *
396 * 09 25 2019 savvas.chou
397 * [MOLY00443561] [Gen97] SCBM
398 * SCBM and VISIBLE SIM
399 *
400 * 09 25 2019 savvas.chou
401 * [MOLY00443561] [Gen97] SCBM
402 * SCBM and VISIBLE SIM
403 *
404 * 09 25 2019 savvas.chou
405 * [MOLY00443561] [Gen97] SCBM
406 * SCBM and VISIBLE SIM
407 *
408 * 09 25 2019 savvas.chou
409 * [MOLY00443561] [Gen97] SCBM
410 * SCBM and VISIBLE SIM
411 *
412 * 09 25 2019 savvas.chou
413 * [MOLY00443561] [Gen97] SCBM
414 * SCBM and VISIBLE SIM
415 *
416 * 09 25 2019 savvas.chou
417 * [MOLY00443561] [Gen97] SCBM
418 * SCBM and VISIBLE SIM
419 *
420 * 09 25 2019 savvas.chou
421 * [MOLY00443561] [Gen97] SCBM
422 * SCBM and VISIBLE SIM
423 *
424 * 09 23 2019 ssu-hsien.wu
425 * [MOLY00438070] [Gen97][IMS] STKCALL and STKUSSD over IMS
426 *
427 * .
428 *
429 * 09 11 2019 joni.huttula
430 * [MOLY00399073] [Submarine]EM debug message not sent as correct ILM messages
431 *
432 * .
433 *
434 * 08 26 2019 jani.manninen
435 * [MOLY00433041] [Gen97][EPSFB] IT related issues
436 *
437 * VMOLY.APOLLO.SQC - IMS 5G Voice Support Changes
438 *
439 * 08 21 2019 jani.manninen
440 * [MOLY00432937] [VONR] LTECSR Changes for 5G Voice Support - LTECSR
441 *
442 * Interface clean up for 5G Voice Support
443 *
444 * 08 14 2019 jani.manninen
445 * [MOLY00431762] [VONR] IWLAN Changes for 5G Voice Support - IWLAN
446 *
447 * VMOLY.V.5GVOICE.DEV - IWLAN (Interface / ATP / IWLAN / UT)
448 *
449 * 07 25 2019 sami.jutila
450 * [MOLY00424277] [Submarine][UT]UT reliability improvement
451 *
452 * [NR] P-Access-Network-Info, Cellular-Network-Info headers
453 *
454 * 07 24 2019 lipak.sen
455 * [MOLY00423057] [IMS][Gen97] [VMOLY] Gen93 R3 to VMOLY Trunk Patch Back
456 *
457 * .
458 * VzW ClientAPI patch back [MOLY00385190] : Gen93 R3 to VMOLY
459 * 1) [MOLY00351936] [VzW][clientAPI : VZ_REQ_RCS_3948 ]RegistrationListener implementation for clientAPI
460 * - EIMSREGURI
461 *
462 * ++
463 *
464 * Fix side effect of Sami's CL 8766583 and 8768193 (UT reliability change)
465 * Should not enforce any AT cmd relay to particular event like EIMSXUI
466 *
467 * 07 23 2019 ari.simonen
468 * [MOLY00402881] [Gen97][Submarine] Submarine M1 VMOLY patch back - IMS
469 *
470 * Fixed IMC_SIM_NUM definition for single-SIM targets
471 *
472 * 07 19 2019 ari.simonen
473 * [MOLY00402881] [Gen97][Submarine] Submarine M1 VMOLY patch back - IMS
474 *
475 * Added __SUPPORT_CLIB_TIME__ for time() calls for Petrus as the function is temporarily unavailable.
476 * Also fixed GEMINI flagging.
477 *
478 * 07 18 2019 chengwen.liu
479 * [MOLY00392539] IMS注�?��?�常??�点??????
480 *
481 * .
482 * MPD
483 *
484 * 07 18 2019 frank-th.chen
485 * [MOLY00422529] VMOLY patch back
486 *
487 * .
488 *
489 * 07 18 2019 frank-th.chen
490 * [MOLY00422529] VMOLY patch back
491 *
492 * .
493 *
494 * 07 17 2019 lipak.sen
495 * [MOLY00422252] [IMS][Gen97] [Submarine] Submarine VMOLY Patch Back
496 *
497 * .
498 * SUBMARINE DEV patch back to VMOLY (MOLY00416875 + MOLY00411449)
499 *
500 * 07 17 2019 rahul.gupta
501 * [MOLY00422520] [VMOLY] patchback for IMS(IMC/IMCB)
502 *
503 * 07 17 2019 tong.li
504 * [MOLY00422101] �i�s¦??��?�j18073 CMCC+CMCC�A�d1��?4G CSFB MT��? 16/50
505 * .
506 *
507 * 07 12 2019 theresa.yang
508 * [MOLY00357356] [US_DEV][VzW][2018_JUN] CALL/SMS UA dev
509 *
510 * Patch back VZW -MOLY00357356.
511 *
512 * [MOLY00357356] 97 Submarine scope patches sync to Submarine DEVs
513 * [MOLY00357356][US_DEV][VzW][2018_JUN] CALL/SMS UA dev
514 * [MOLY00382398][VZW][ZTE][6761] Client API patch back
515 * [MOLY00386977][US_DEV][VzW][2018_OCT] CALLUA dev
516 * [MOLY00394340][US_DEV][MDMI] CALL UA part
517 * [MOLY00395789][US_DEV][VZW][PST tool] phone context uri
518 *
519 * 05 10 2019 shu-lin.yang
520 * [MOLY00357356] [US_DEV][VzW][2018_JUN] CALL/SMS UA dev
521 *
522 * [MOLY00357356] 97 Submarine scope patches sync to Submarine DEVs
523 * [MOLY00357356][US_DEV][VzW][2018_JUN] CALL/SMS UA dev
524 * [MOLY00382398][VZW][ZTE][6761] Client API patch back
525 * [MOLY00386977][US_DEV][VzW][2018_OCT] CALLUA dev
526 * [MOLY00394340][US_DEV][MDMI] CALL UA part
527 * [MOLY00395789][US_DEV][VZW][PST tool] phone context uri
528 *
529 * .
530 * 05 07 2019 savvas.chou
531 * [MOLY00403400] [Submarine] M1 to VMOLY
532 * .
533 *
534 * 04 15 2019 savvas.chou
535 * [MOLY00398799] [MT6297][IMC/IWLAN] changes for 97
536 * IWLAN/IMC re-org
537 *
538 * 11 01 2018 kuan-wei.chen
539 * [MOLY00346647] [MT6297][VDM/L4] changes for 97
540 * [VMOLY][VDM][MPD]
541 *
542 *
543 *
544 *
545 * 07 31 2018 savvas.chou
546 * [MOLY00342215] [Pre-sanity][caseFail][alps-mp-o1.mp1][k63v1us_64_bsp_na_cxp][2018.07.23.11.00][TC_201][userdebug]
547 * RCS feature handler refine
548 *
549 * 07 17 2018 savvas.chou
550 * [MOLY00334020] [IMC][RCS] Support AT+ERCSIMS=3 & 4 for ROI reg. & dereg. events
551 * Support AT+ERCSIMS=3 & 4 for ROI reg. & dereg. events
552 *
553 * 05 21 2018 hsin-jun.tang
554 * [MOLY00325423] [IWLAN] Debug enhancement - A. IWLAN log enhancement, B. KAL legacy API DHL new API
555 * [IWLAN] log enhancemnet -
556 * A. apply DHL new log API
557 * B. log enhancement - primitives number to enum
558 * change:
559 * D2RM, L4C, SDM, ATP
560 * no change:
561 * WO, L4BNW, SIM, L4BPWR, IMC
562 *
563 * ATP:
564 * 1. ESRVSTATE
565 * 2. ECNCFG
566 * 3. EWIFIEN
567 * 4. EWFCPREF
568 * 5. EWIFIASC
569 * 6. Remove EPLWTH, EGREG
570 * 7. EIWLPING
571 * 8. EIRAT
572 *
573 * 05 15 2018 ben.chiu
574 * [MOLY00326014] [Gen95][MSPM] SW changes check in UMOLYE
575 *
576 * SRU2.0 and MPSM (include REG UA/IMCB/IMC part)
577 *
578 * 02 12 2018 ben.chiu
579 * [MOLY00307329] [UMOLYE][Volunteer Patch][IMS]Dual IMS registration enhacement
580 *
581 * UMOLYE, IMS part - Dual IMS registration latency improvement
582 *
583 * 02 12 2018 ben.chiu
584 * [MOLY00307329] [UMOLYE][Volunteer Patch][IMS]Dual IMS registration enhacement
585 * UMOLYE, IMS part - Dual IMS registration latency improvement
586 *
587 * 01 09 2018 ben.chiu
588 * [MOLY00299550] [MP2][MT6763][Bianco][N1][India FT][Chennai][WW FT][IMS][FDD][RJIO][V-ECC_011]Emergency call is getting disconnected when we remove sim card during ECC call - IMS part
589 *
590 * IMS part - ECC call and plug-out SIM
591 *
592 * 11 22 2017 yulong.chang
593 * [MOLY00291144] [VDM][Verizon][WiFi] UE will not select CS domain when T_ePDG_CS is ongoing (VDM part)
594 * VzW_2017June_VZ_REQ_WIFI_2990111 T_ePDG_CS (VDM part)
595 *
596 * 11 22 2017 yulong.chang
597 * [MOLY00290314] [VDM][Hugeland Tool] Enhanced the delay release CS semaphore mechanism (VDM part)
598 *
599 * Enhanced delay release CS semaphore (VDM part)
600 *
601 * 11 22 2017 yulong.chang
602 * [MOLY00290314] [VDM][Hugeland Tool] Enhanced the delay release CS semaphore mechanism (VDM part)
603 * Enhanced delay release CS semaphore (VDM part)
604 *
605 * 11 16 2017 ben.chiu
606 * [MOLY00290015] [LR12A.R2.MP] L+L New Feature: Occupy HPS for IMS RE-REG (IMS common header)
607 *
608 * IMS request HPS for re-reg/re-sub - IMS common interface
609 *
610 * 08 04 2017 ssu-hsien.wu
611 * [MOLY00268620] [VzW][CDMA-less][UMOLYA][Volunteer Patch] IMC patch back.
612 *
613 * 04 07 2017 yingfui.hung
614 * [MOLY00240312] [93] CT VoLTE modem re-architecture
615 *
616 * .
617 *
618 * 01 11 2017 ben.chiu
619 * [MOLY00220510] [93 PREIT_DEV][UMOLYA] Rename IMSP interface/context/API to ATP and reorg folder layout
620 *
621 * [IMC]ATP rename patch back
622 *
623 * 06 24 2016 benjamin.kuo
624 * [MOLY00185907] [MT6293] [ENAS] UMOLY merge to UMOLYA
625 * sync. UMOLY to UMOLYA: common part
626 *
627 * 06 01 2016 kuan-wei.chen
628 * [MOLY00146327] [VzW] hVoLTE implementation
629 * vzw patchback - L4, VDM
630 *
631 * 03 28 2016 shih-che.chou
632 * [MOLY00171298] [RAC] Sync from LR11 to UMOLY
633 * .
634 *
635 * 12 31 2015 ariel.lin
636 * [MOLY00155610] [91VzW] IMS over eHRPD patch back
637 * .
638 *
639 * 12 23 2015 allen.hsu
640 * [MOLY00154513] [MT6755][VzW][chipset][RDIT][Intertek][Sprient][Multi][LTEC2K][iRAT][4.5] IMS abnormal trigger register on MD3 1xRTT or eHRPD
641 *
642 * add RAT_NONE for +EIMSINFO.
643 *
644 * 09 17 2015 ben.chiu
645 * [MOLY00141935] [IMS interface][version#0x39]IMS interface v1.2 check-in
646 * (v1.2)ims interface re-org
647 *
648 * 08 26 2015 ben.chiu
649 * [MOLY00138217] [ViLTE] M0 migration ViLTE feature Interface
650 * ViLTE interface patch back
651 *
652 * 07 31 2015 lexel.yu
653 * [MOLY00085703] [VDM][MT6291] Sync MOLY to UMOLY
654 * [MOLY00090762] [LTE][E911]Device is unable to initiate VoLTE E-911 calls with No SIM card
655 *
656 * 07 30 2015 ariel.lin
657 * [MOLY00125491] [Interface][MPGATE][MT6795][L1][VoLTE][HongKong][FT][Cross-Operators] swap the hold call then hang up one call , UE-A can not unhold the another call
658 * add new call stop cause.
659 *
660 * 07 09 2015 nick.wang
661 * [MOLY00127009] WFC Patch back to UMOLY- interface part
662 * .moly wfc interface patch
663 *
664 * 07 09 2015 nick.wang
665 * [MOLY00127009] WFC Patch back to UMOLY- interface part
666 * .jade interface sync
667 *
668 * 07 03 2015 ariel.lin
669 * [MOLY00125491] [Interface][MPGATE][MT6795][L1][VoLTE][HongKong][FT][Cross-Operators] swap the hold call then hang up one call , UE-A can not unhold the another call
670 * add new call stop cause.
671 *
672 * 06 17 2015 nick.wang
673 * [MOLY00118763] [WFC] feature patch back IMS interface for MD (MP7)
674 * .IMS interface
675 *
676 * 06 09 2015 benjamin.kuo
677 * [MOLY00119265] [WFC] feature patch back for VDM/SDM/ATP - interface/SAP parts
678 * interface - common part.
679 * 04 17 2015 nick.wang
680 * [MOLY00098970] [ALPS01981207] [L][WFC] firt patch feature in
681 * .merge 1224875
682 *
683 * 04 17 2015 ben.chiu
684 * [MOLY00108033] [VoLTE][TMOUS][Volunteer Patch] CALL ERROR CODE HANDLING(CALL PERFORMANCE)
685 * TMOUS MOS patch back
686 * 04 09 2015 nick.wang
687 * [MOLY00098970] [ALPS01981207] [L][WFC] firt patch feature in
688 * .
689 * confirm patched
690 *
691 * 04 02 2015 benjamin.kuo
692 * [MOLY00105813] [WFC] migrate VDM from WFC.FPB to CMCCVOLTE.WFC.FPB
693 * .
694 *
695 * 04 02 2015 benjamin.kuo
696 * [MOLY00105813] [WFC] migrate VDM from WFC.FPB to CMCCVOLTE.WFC.FPB
697 * .interface part
698 *
699 * 04 01 2015 danny.kuo
700 * [MOLY00097520] [WFC] SDM wifi calling support
701 * .
702 *
703 * 04 01 2015 danny.kuo
704 * [MOLY00097520] [WFC] SDM wifi calling support
705 * .
706 *
707 * 04 01 2015 danny.kuo
708 * [MOLY00097520] [WFC] SDM wifi calling support
709 * .
710 *
711 * 03 03 2015 allan.ke
712 * [MOLY00097577] [K2][CMCC][DSDS][VoLTE][HZ][NV-IOT][Conference] 6.4.5.9 VoLTE MT hangup after it happens SRVCC.
713 * .
714 *
715 * 02 13 2015 allan.ke
716 * [MOLY00096007] [L MR1] Transfer call number to CS domain when performing SRVCC
717 * .
718 *
719 * 02 05 2015 allan.ke
720 * [MOLY00095053] [CMCC VoLTE][VDM] Report AP correct call disconnect reason to trigger normal to emergency redial
721 * .
722 *
723 * 02 04 2015 ariel.lin
724 * [MOLY00093808] [VoLTE][Volunteer Patch] Migration from Lrefac/CMCC to MP7 (MR0 --> MR1 activity)
725 * Merge from MP6.CMCC3 to MP7.FPB.
726 *
727 * 02 04 2015 allan.ke
728 * [MOLY00092209] [CMCC VoLTE] @o_Conference call
729 *
730 * 02 04 2015 allan.ke
731 * [MOLY00092209] [CMCC VoLTE] @o_Conference call
732 * .
733 * 04 27 2015 ben.chiu
734 * [MOLY00109234] [VoLTE][Volunteer Patch] MP7.CMCCVOLTE.FPB merge back to MP7/MP7.CMCC
735 * MP7.CMCCVOLTE.FPB merge back to MP7
736 *
737 *
738 * 04 27 2015 ben.chiu
739 * [MOLY00109234] [VoLTE][Volunteer Patch] MP7.CMCCVOLTE.FPB merge back to MP7/MP7.CMCC
740 * MP7.CMCCVOLTE.FPB merge back to MP7
741 *
742 * 12 12 2014 ben.chiu
743 * [MOLY00059341] [6290E1][VoLTE][IT][Volunteer Patch]
744 * CMCC requirement 6.7, 380 handling
745 *
746 * 08 14 2014 jinghan.wang
747 * [MOLY00075286] [VDM] IMS MO call timeout (dedicated bearer setup failure) trigger call retry on CS domain
748 * IMS MO call timeout trigger call retry on CS domain - VDM TRK part
749 *
750 * 08 13 2014 ariel.lin
751 * [MOLY00064412] [VoLTE][Volunteer Patch]
752 * MP6 merge back to TRUNK
753 *
754 * 07 09 2014 ariel.lin
755 * [MOLY00071716] [VoLTE][volunteer patch] Add timer for protect the period of sending INVITE request to bandwidth reservation
756 * link to ALPS01634796
757 *
758 * 07 07 2014 benjamin.kuo
759 * [MOLY00071459] Add Mobility Management for IMS Voice Termination
760 * MMIVT2MP6
761 *
762 * 07 07 2014 benjamin.kuo
763 * [MOLY00071459] Add Mobility Management for IMS Voice Termination
764 * MMIVT2MOLY
765 *
766 * 06 04 2014 ben.chiu
767 * [MOLY00059341] [6290E1][VoLTE][IT][Volunteer Patch]
768 * Integration change for 504 cause
769 *
770 * 06 04 2014 ben.chiu
771 * [MOLY00059341] [6290E1][VoLTE][IT][Volunteer Patch]
772 * 504 cause
773 *
774 * 03 17 2014 ben.chiu
775 * [MOLY00059341] [6290E1][VoLTE][IT][Volunteer Patch]
776 * SRVCC cause mapping to error report
777 *
778 * 03 17 2014 ben.chiu
779 * [MOLY00059341] [6290E1][VoLTE][IT][Volunteer Patch]
780 * Add SRVCC cause
781 *
782 * 02 17 2014 ben.chiu
783 * [MOLY00056189] [6290E2][VoLTE][SRVCC] New feature for SRVCC R10 - IMC part
784 * check-in SRVCC R10 feature for IMC and /modem_interface/ims
785 *
786 * 02 05 2014 benjamin.kuo
787 * [MOLY00055409] [MT6582LTE][VoLTE][AdvIT][MO] NO AT Command Response for AT+CMMIVT? command
788 * Fix build error.
789 *
790 * 01 22 2014 ben.chiu
791 * [MOLY00054726] [6290E2][VoLTE][AdvIT][Emerg] change IMS reg state enum and disable emergency IMS reg state indication to AP
792 * change IMS reg state enum
793 *
794 * 01 14 2014 ben.chiu
795 * [MOLY00053410] [VoLTE][IMC] merge IMC to MOLY TRUNK
796 * AT+CDU=0 feature in
797 *
798 * 01 14 2014 ben.chiu
799 * [MOLY00053410] [VoLTE][IMC] merge IMC to MOLY TRUNK
800 * Add IMC handle for ads ctrl to VDM
801 *
802 * 01 13 2014 ben.chiu
803 * [MOLY00053410] [VoLTE][IMC] merge IMC to MOLY TRUNK
804 * Add ads_ctrl message to VDM for Test Mode
805 *
806 * 12 09 2013 ben.chiu
807 * [MOLY00049586] [6290E1][VoLTE][IT][Volunteer Patch] submit advanced call feature
808 * SS phase2 conferce call check-in
809 * for IMCB pre-checkin (if failed the Basic IT, it will be rollback)
810 *
811 * 12 10 2013 vend_edwin.liu
812 * ATP.
813 *
814 * 11 27 2013 ben.chiu
815 * [MOLY00048108] [MT6582LTE][IMS][VoLTE][Basic IT][Volunteer Patch] IMS enable/disable feature-in
816 * IMS enable/disable feature-in for IMC related part
817 *
818 * 11 27 2013 chinte.chen
819 * [MOLY00048106] [MT6582LTE][IMS][VoLTE][Basic IT][IT3-144] add result to RecvSMSRsp to handle multiple MT SMS simulatously
820 * .
821 *
822 * 11 25 2013 ben.chiu
823 * [MOLY00047708] [6290E1][VoLTE][IT][Volunteer Patch] Add IMS enable/disable feature
824 * pre-checkin ims_dereg_cause_enum
825 *
826 * 09 12 2013 ben.chiu
827 * [MOLY00037010] [6290E1][VoLTE][IT]IMS DEV IMC code check-in
828 * IMC merge code v1, sync to Ben's CBR CL: 258323
829 *****************************************************************************/
830
831#ifndef _IMS_COMMON_DEF_H_
832#define _IMS_COMMON_DEF_H_
833
834#include "kal_general_types.h"
835#include "kal_public_defs.h"
836
837// To use some enums such as ue_mode_enum, voice_domain_preference_enum, ...
838#include "l3_inc_enums.h"
839#include "ps_public_enum.h"
840
841/******************************************************************************
842 * Constant
843 *****************************************************************************/
844#define IMC_SMS_SUCCESS 1
845#define IMC_SMS_FAIL 0
846
847#define IMC_ATCMD_MAX_CMDLINE_LEN (MD_ATCMD_LEN - MD_ATCMD_PREFIX_LEN)
848#define IMC_MAX_ILM_BUFFER_LEN IMC_IPC_BODY_LNE - 4
849#define IMC_IPC_BODY_LNE 3392
850
851#define IMCB_IMC_MAX_SDP_FMTP_SUB_VALUE_LENGTH 16
852#define IMCB_IMC_MAX_RED_LEVEL 3
853#define IMCB_IMC_MAX_RECV_CODEC_LIST_LENGTH 8
854
855#define IMCB_IMC_IPADDR_LENGTH 16
856
857#define IMS_P_ASSERT_URI_LEN 512
858
859#define MAX_CC_ATD_NUM_LEN 81
860#define MAX_C2K_SMS_DA (20+1)
861
862#define MD_ATCMD_LEN 2048
863#define MD_ATCMD_PREFIX_LEN 20
864
865#define VOLTE_MAX_ACCOUNT_NUM 4
866#define VOLTE_MAX_CALL_SESSION (3*VOLTE_MAX_ACCOUNT_NUM)
867#define VOLTE_MAX_ADDRESS_LENGTH 64
868#define VOLTE_MAX_IF_NAME_LENGTH 16
869#define VOLTE_MAX_AUTH_NC 12
870#define VOLTE_MAX_AUTH_NONCE 64
871#define VOLTE_MAX_AUTH_REALM 32
872#define VOLTE_MAX_AUTH_RESPONSE 256
873#define VOLTE_MAX_AUTH_AUTS 256
874#define VOLTE_MAX_AUTH_CK 256
875#define VOLTE_MAX_AUTH_IK 256
876#define VOLTE_MAX_TIME_STAMP_LENGTH 32
877#define VOLTE_MAX_CELL_ID_LENGTH 64
878#define VOLTE_MAX_CALL_ID_LENGTH 128
879#define VOLTE_MAX_REG_CAPABILITY_LENGTH 256
880#define VOLTE_MAX_SSID_LENGTH 32
881#define MD_ATCMD_LEN 2048
882#define MD_ATCMD_PREFIX_LEN 20
883#define VOLTE_MAX_REG_UID_LENGTH 256
884#define VOLTE_MAX_DOMAIN_NAME_LENGTH 256
885#define VOLTE_MAX_ADDRESS_LIST_LENGTH 256
886#define VOLTE_MAX_IMEI_LENGTH 20
887#define VOLTE_MAX_IMEI_SVN_LENGTH 4
888#define VOLTE_MAX_URI_LENGTH 128
889#define VOLTE_MAX_ASSOCIATED_URI (VOLTE_MAX_URI_LENGTH << 2)
890#define VOLTE_MAX_GRUU_LENGTH 128
891#define VOLTE_MAX_SERVICE_ROUTE_LENGTH 256
892#define VOLTE_MAX_TIMESTAMP_LENGTH 256
893#define VOLTE_MAX_SECURIT_VERIFY_LENGTH 768 //6 algo combo
894#define VOLTE_MAX_USER_AGENT_LENGTH 128
895#define VOLTE_MAX_P_ACCESS_NETWORK_INFO_LENGTH 256
896#define VOLTE_MAX_DIGIT_PIDENTIFIER_LENGTH 256
897#define VOLTE_MAX_DIGIT_PPA_LENGTH 4096
898#define VOLTE_REG_MAX_UUID_LENGTH 32
899#define VOLTE_MAX_SDP_PARAMETER_SET_LENGTH 256 // H.264, Spros parameter sets, must align with LTE_VT_SRV_UA_PARAMETER_SIZE_MAX.
900#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.
901#define VOLTE_IPADDR_LENGTH 16
902#define VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH 16
903#define VOLTE_MAX_SDP_EGBYTE_LENGTH 8
904#define VOLTE_MAX_CNAME_LENGTH 52
905#define VOLTE_MAX_REQUEST_LINE_LENGTH 512
906
907
908/*****imc_general_def.h START*****/
909#define IMC_MAX_CELL_ID_LEN 64
910#define IMC_MAX_PLMN_LEN 8 /* WFC four bytes in hex, 6 + '\0' */
911#define IMC_MAX_LAC_LEN 8 /* WFC four bytes in hex, 4 + '\0' */
912#define IMC_MAX_CI_LEN 12 /* WFC four bytes in hex, 8 + '\0' */
913#define IMC_MAX_IMEI_LEN 20
914#define IMC_MAX_IMEI_SVN_LEN 4
915#define IMC_MAX_MNC_MCC_LEN 4
916#define IMC_MAX_IMPU_NUM 5
917#define IMC_MAX_IMPU_LEN 256
918#define IMC_MAX_IMPU_TLV_LEN 2048
919#define IMC_MAX_IMPI_LEN 256
920#define IMC_MAX_DOMAIN_NAME_LEN 256
921#define IMC_MAX_IMSI_LEN 16
922#define IMC_MAX_RESPONSE_LEN 256
923#define IMC_MAX_AUTS_LEN 256
924#define IMC_MAX_CK_LEN 256
925#define IMC_MAX_IK_LEN 256
926#define IMC_MAX_NONCE_LEN 64
927#define IMC_MAX_NC_LEN 12
928#define IMC_MAX_AUTN_LEN 32
929#define IMC_MAX_RAND_LEN 32
930#define IMS_PCSCF_MAX_NUM 16
931#define IMC_MAX_SIM_SMSP_LEN 256
932#define IMC_MAX_USIM_MSISDN_LEN 12
933#define IMC_MAX_USIM_PSISMSC_LEN 256
934#define IMC_MAX_ISIM_PSISMSC_LEN 256
935#define IMC_MAX_XUI_LEN 512
936#define IMC_MAX_CALL_NUM_IN_CONFERENCE 5
937#define IMC_MAX_URI_LENGTH 128
938#define IMC_MAX_ASSERTED_URI (IMC_MAX_URI_LENGTH << 2)
939#define IMC_MAX_CONF_CONTROL_URI_LENGTH 512
940#define IMC_CALL_INVAL_ID 255
941#define IMC_CALL_MAX_NUM 16
942#define IMC_P_ASSERT_URI_LEN 128
943#define IMC_PHONE_NUM_LEN 64
944#define IMC_USSD_LANGUANGE_LEN (32)
945#define IMC_USSD_MAX_MSG_LEN (1000)
946#define IMC_MAX_SMS_TPDA_LEN (21)
947#define IMC_MAX_REASON_TEXT_LENGTH 128
948#define IMC_MAX_EMERGENCY_AID_LEN 32
949#define IMC_MAX_IMS_NOTIFY_EXT_LEN 64
950#define IMC_MAX_IF_NAME_LENGTH 16
951#define IMC_MAX_UUID_LEN 40
952#define IMC_MAX_SSID_LEN 32 // SSID length is in at maximum 32 octets
953
954#define IMC_IPV4_ADDR_LEN 0x04
955#define IMC_IPV6_ADDR_LEN 0x10
956#define IMC_PCSCF_MAX_NUM 10 // PCSCF discovery
957
958/* C2K */
959#define IMC_MAX_SID_LEN 8
960#define IMC_MAX_NID_LEN 8
961#define IMC_MAX_PZID_LEN 4
962#define IMC_MAX_BASE_ID_LEN 8
963#define IMC_MAX_SECTOR_ID_LEN 36
964#define IMC_MAX_SUBNET_LENGTH_LEN 4
965#define IMC_MAX_CARRIER_ID_LEN 8
966
967#ifdef __NG_ECALL_SUPPORT__
968/*ECALL*/
969#define IMS_MAX_MSD_LENGTH 140
970#endif
971
972#define UNIQUE_NAME MAKE_NAME(__LINE__)
973#define MAKE_NAME(line) MAKE_NAME2(line)
974#define MAKE_NAME2(line) constraint_ ## line
975
976#define MAKE_VALUE_TO_STRING(x) #x
977#define MAKE_VALUE(x) MAKE_VALUE_TO_STRING(x)
978#define MAKE_VAR_NAME_VALUE(var) #var "=" MAKE_VALUE(var)
979/*#pragma message(MAKE_VAR_NAME_VALUE(MSG_ID_WRAP_IMSA_IMCB_BEGIN))*/
980
981#define IMC_CHK(expr) enum { UNIQUE_NAME = (1/(expr))};
982
983#define IMC_CHK_STRUCT_SIZE(x,y) IMC_CHK(sizeof(x) == sizeof(y))
984#define IMC_CHK_ENUM(x,y) IMC_CHK((x) == (y))
985
986/* IMS Bearer ID macros */
987#define IMS_PSI_QFI_TO_BID(_psi_, _qfi_) (imcf_bid_t)(((_psi_&0xFF)<<8) | (_qfi_&0xFF))
988#define IMS_EBI_TO_BID(_ebi_) (imcf_bid_t)(_ebi_&0xFF)
989#define IMS_BID_GET_PSI(_bid_) (kal_uint8)((_bid_>>8)&0xFF)
990#define IMS_BID_GET_QFI(_bid_) (kal_uint8)(_bid_&0xFF)
991#define IMS_BID_GET_EBI(_bid_) IMS_BID_GET_QFI(_bid_)
992
993#define IMS_DEFAULT_BID_GET_PDN_ID(_default_bid_) \
994 (kal_uint8)((IMS_BID_GET_PSI(_default_bid_) != 0) ? \
995 IMS_BID_GET_PSI(_default_bid_) : IMS_BID_GET_EBI(_default_bid_))
996
997/* for multiple VoLTE or VoLTE work on SIM2, we should think about another solution */
998#if defined(__MULTIPLE_IMS_SUPPORT__) && defined(__IMC_MULTIPLE_CONTEXT__)
999#define IMC_SIM_NUM (MAX_SIM_NUM)
1000#else
1001#define IMC_SIM_NUM 1
1002#endif
1003/*****imc_general_def.h END*****/
1004
1005#if defined(__MULTIPLE_IMS_SUPPORT__) && defined(__IMC_MULTIPLE_CONTEXT__)
1006#define VOLTE_MAX_SIM_NUM (IMC_SIM_NUM)
1007#else
1008#define VOLTE_MAX_SIM_NUM (1)
1009#endif
1010
1011/* Old definition, don't use */
1012#define VOlTE_MAX_SIM_NUM VOLTE_MAX_SIM_NUM
1013
1014/* we use it overwrighte VOLTE_MAX_ACCOUNT_NUM */
1015#define VOLTE_MAX_UA_ACCOUNT_NUM ((VOLTE_MAX_SIM_NUM) * (IMC_ACCT_TY_MAX))
1016#define VOLTE_MAX_PROFILELEVEL_SIZE (32)
1017#define VOLTE_MAX_EXTMAP_URI_SIZE (256)
1018#define VOLTE_MAX_BYTESTRING_SIZE (256)
1019#define VOLTE_MAX_SUB_PARAM_LENGTH (128)
1020#define VOLTE_MAX_EXTMAP_NUM (4) // RFC 5285
1021#define VOLTE_MAX_RTCP_FB_SIZE (8)
1022#define VOLTE_MAX_IMAGE_NUM (4)
1023#define VOLTE_MAX_PS_NUM (32)
1024#define VOLTE_MAX_VIDEO_CAP_NUM (4)
1025#define VOLTE_MAX_PARAM_SET_SIZE_IN (64)
1026#define VOLTE_INVALID_CALL_ID (255)
1027#define VOLTE_IS_FAKE_CALL_ID(X) ((X>VOLTE_MAX_CALL_SESSION && X<VOLTE_INVALID_CALL_ID)?1:0)
1028#define VOLTE_MAX_REG_RETRY_COUNT (5)
1029#define VOLTE_MAX_SUB_RETRY_COUNT VOLTE_MAX_REG_RETRY_COUNT
1030#define VOLTE_MAX_REG_RETRY_INTERVAL (10)
1031#define VOLTE_MAX_SUB_RETRY_INTERVAL VOLTE_MAX_REG_RETRY_INTERVAL
1032#define VOLTE_KEEP_ALIVE_DFLT_CMCC (3)
1033#define VOLTE_MAX_HIS_INFO_NUM (16)
1034#define VOLTE_MAX_TAG_LENGTH (64)
1035#define VOLTE_MAX_CELL_INFO_AGE_LENGTH (9)
1036#define VOLTE_MAX_SIP_FLOW_LENGTH (512)
1037#define VOLTE_MAX_CODEC_LIST_LENGTH (256)
1038#define VOLTE_MAX_UUID_LENGTH IMC_MAX_UUID_LEN
1039#define VOLTE_MAX_SAME_PCSCF_RETRY_COUNT (3)
1040#define VOLTE_MAX_VT_RTP_PORT_LIST_NUM (32)
1041
1042#define VOLTE_MAX_CALL_SESSION (3*VOLTE_MAX_ACCOUNT_NUM)
1043#define VOLTE_MAX_SRVCC_CALLS (7)
1044#define VOLTE_MAX_CONF_CONTROL_URI_LENGTH (IMC_MAX_CONF_CONTROL_URI_LENGTH)
1045#define VOLTE_MAX_MNC_MCC_LENGTH (4)
1046#define VOLTE_MAX_ASSOCIATED_URI (VOLTE_MAX_URI_LENGTH << 2)
1047#define VOLTE_MAX_ASSERTED_URI (VOLTE_MAX_URI_LENGTH << 2)
1048#define VOLTE_MAX_IP_LENGTH (16)
1049#define VOLTE_MAX_REG_UIDS_LENGTH IMC_MAX_IMPU_TLV_LEN
1050#define VOLTE_MAX_IMSI_LENGTH (16)
1051#define VOLTE_MAX_CALL_CAPABILITY_LENGTH (128)
1052#define VOLTE_MAX_RTP_ADDRESS_LENGTH (64)// shall be align to SDP c attribute
1053//#define VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH (16)// The maximum length of a fmtp specific parameter value
1054#define VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH_IN (32)// The maximum length of a fmtp specific parameter value internal
1055#define VOLTE_MAX_SDP_TWOBYTE_LENGTH (2)
1056//#define VOLTE_MAX_SDP_EGBYTE_LENGTH (8)
1057//#define VOLTE_IPADDR_LENGTH (16) // IP address in binary
1058#define VOLTE_MAX_DATA_TO_UPPER_LENGTH (4000)
1059#define VOLTE_MAX_DATA_TO_IMC_LENGTH (512)
1060#define VOLTE_MAX_SDP_RED_VALUE_LENGTH (16)
1061#define VOLTE_MAX_CALL_NUM_IN_CONF (5)
1062#define VOLTE_MAX_PLANI_LENGTH (256)
1063#define VOLTE_MAX_LEVEL_SIZE (20)
1064//#define VOLTE_MAX_CNAME_LENGTH (52)
1065#define VOLTE_USSD_STRING_MAX_LENGTH (1000)
1066#define VOLTE_USSD_LANGUAGE_MAX_LENGTH (32)
1067#define VOLTE_MAX_MSISDN_LENGTH (20) // dialing number
1068#define VOLTE_MAX_SMS_TPDA_LENGTH (21)
1069#define VOLTE_MAX_REASON_TEXT_LENGTH (128)
1070#define VOLTE_MAX_WARNING_TEXT_LENGTH (128)
1071
1072#define VOLTE_MAX_RECV_CODEC_LIST_LENGTH (IMCB_IMC_MAX_RECV_CODEC_LIST_LENGTH) // max codec list for downlink rtp
1073#define VOLTE_MAX_RED_LEVEL (IMCB_IMC_MAX_RED_LEVEL) // max red level
1074#define VOLTE_MAX_EXTRA_HEADER_SIZE (2048) // The maximum length of a AT command
1075
1076/******************************************************************************
1077 * Enum
1078 *****************************************************************************/
1079#ifdef __MULTIPLE_IMS_SUPPORT__
1080typedef enum
1081{
1082 IMS_MSPM_PROCEDURE_STATUS_STOP = 0,
1083 IMS_MSPM_PROCEDURE_STATUS_START,
1084 IMS_MSPM_PROCEDURE_STATUS_ENUM_NUM
1085} ims_mspm_procedure_status_enum;
1086
1087typedef enum
1088{
1089 IMS_MSPM_PROCEDURE_INIT_REG = 0,
1090 IMS_MSPM_PROCEDURE_INIT_REG_1,
1091 IMS_MSPM_PROCEDURE_INIT_REG_2,
1092 IMS_MSPM_PROCEDURE_INIT_REG_3,
1093 IMS_MSPM_PROCEDURE_RE_REG,
1094 IMS_MSPM_PROCEDURE_RE_REG_1,
1095 IMS_MSPM_PROCEDURE_RE_REG_2,
1096 IMS_MSPM_PROCEDURE_RE_REG_3,
1097 IMS_MSPM_PROCEDURE_SUBSCRIBE,
1098 IMS_MSPM_PROCEDURE_SUBSCRIBE_1,
1099 IMS_MSPM_PROCEDURE_SUBSCRIBE_2,
1100 IMS_MSPM_PROCEDURE_SUBSCRIBE_3,
1101 IMS_MSPM_PROCEDURE_USSD,
1102 IMS_MSPM_PROCEDURE_USSD_1,
1103 IMS_MSPM_PROCEDURE_USSD_2,
1104 IMS_MSPM_PROCEDURE_USSD_3,
1105 IMS_MSPM_PROCEDURE_CONF_SUBSCRIBE,
1106 IMS_MSPM_PROCEDURE_CONF_SUBSCRIBE_1,
1107 IMS_MSPM_PROCEDURE_CONF_SUBSCRIBE_2,
1108 IMS_MSPM_PROCEDURE_CONF_SUBSCRIBE_3,
1109 IMS_MSPM_PROCEDURE_MWI_SUBSCRIBE,
1110 IMS_MSPM_PROCEDURE_MWI_SUBSCRIBE_1,
1111 IMS_MSPM_PROCEDURE_MWI_SUBSCRIBE_2,
1112 IMS_MSPM_PROCEDURE_MWI_SUBSCRIBE_3,
1113 IMS_MSPM_PROCEDURE_CALLPULL_SUBSCRIBE,
1114 IMS_MSPM_PROCEDURE_CALLPULL_SUBSCRIBE_1,
1115 IMS_MSPM_PROCEDURE_CALLPULL_SUBSCRIBE_2,
1116 IMS_MSPM_PROCEDURE_CALLPULL_SUBSCRIBE_3,
1117 IMS_MSPM_PROCEDURE_INIT_REG_LOW,
1118 IMS_MSPM_PROCEDURE_INIT_REG_LOW_1,
1119 IMS_MSPM_PROCEDURE_INIT_REG_LOW_2,
1120 IMS_MSPM_PROCEDURE_INIT_REG_LOW_3,
1121 IMS_MSPM_PROCEDURE_ENUM_NUM
1122} ims_mspm_procedure_enum;
1123#endif
1124
1125typedef enum {
1126 IMS_IRAT_STATUS_IDLE = 0,
1127 IMS_IRAT_STATUS_FROM_4_TO_2,
1128 IMS_IRAT_STATUS_FROM_4_TO_3,
1129 IMS_IRAT_STATUS_FROM_2_TO_4,
1130 IMS_IRAT_STATUS_FROM_3_TO_4,
1131 IMS_IRAT_STATUS_FROM_4_TO_23,
1132 IMS_IRAT_STATUS_FROM_23_TO_4,
1133 IMS_IRAT_STATUS_FROM_5_TO_2 = 7,
1134 IMS_IRAT_STATUS_FROM_5_TO_3,
1135 IMS_IRAT_STATUS_FROM_5_TO_23,
1136 IMS_IRAT_STATUS_FROM_5_TO_4,
1137 IMS_IRAT_STATUS_FROM_2_TO_5,
1138 IMS_IRAT_STATUS_FROM_3_TO_5,
1139 IMS_IRAT_STATUS_FROM_23_TO_5,
1140 IMS_IRAT_STATUS_FROM_4_TO_5 = 14,
1141 IMS_IRAT_STATUS_FROM_2_TO_3,
1142 IMS_IRAT_STATUS_FROM_3_TO_2,
1143 IMS_IRAT_STATUS_FROM_23_TO_2,
1144 IMS_IRAT_STATUS_FROM_2_TO_23,
1145 IMS_IRAT_STATUS_FROM_23_TO_3,
1146 IMS_IRAT_STATUS_FROM_3_TO_23 = 20
1147} ims_irat_status_enum;
1148
1149typedef enum
1150{
1151 IMS_RAT_TYPE_2G = 0,
1152 IMS_RAT_TYPE_3G_FDD,
1153 IMS_RAT_TYPE_3G_TDD,
1154 IMS_RAT_TYPE_4G_FDD,
1155 IMS_RAT_TYPE_4G_TDD,
1156 IMS_RAT_TYPE_5G_FDD,
1157 IMS_RAT_TYPE_5G_TDD,
1158 IMS_RAT_TYPE_NONE = 0xFF
1159} ims_rat_type_enum;
1160
1161typedef enum
1162{
1163 C2K_RAT_TYPE_NONE = 0,
1164 C2K_RAT_TYPE_1XRTT,
1165 C2K_RAT_TYPE_HRPD,
1166 C2K_RAT_TYPE_EHRPD,
1167} c2k_rat_type_enum;
1168
1169typedef enum
1170{
1171 EPSFB_STAT_STARTED = 0,
1172 EPSFB_STAT_SUCCESSFUL = 1,
1173 EPSFB_STAT_FAILURE = 2
1174}epsfb_stat_enum;
1175
1176typedef enum
1177{
1178 EPSFB_TYPE_HANDOVER = 0,
1179 EPSFB_TYPE_REDIRECTION =1
1180}epsfb_type_enum;
1181
1182typedef enum
1183{
1184 IMS_RCODE_OK,
1185 IMS_RCODE_CONNECT,
1186 IMS_RCODE_RING,
1187 IMS_RCODE_NO_CARRIER, //3
1188 IMS_RCODE_ERROR, //4
1189 IMS_RCODE_BUSY = 7,
1190
1191 /* Below are MTK proprietary result codes */
1192 IMS_RCODE_CONNECT_PS = 100,
1193
1194 /* Below are result codes added for IMS */
1195
1196} ims_result_code_enum;
1197
1198typedef enum
1199{
1200 IMS_ERR_PHONE_FAILURE = 0,
1201 IMS_ERR_OPERATION_NOT_ALLOWED_ERR = 3,
1202 IMS_ERR_OPERATION_NOT_SUPPORTED = 4,
1203 IMS_ERR_PH_SIM_PIN_REQUIRED = 5,
1204 IMS_ERR_PH_FSIM_PIN_REQUIRED = 6,
1205 IMS_ERR_PH_FSIM_PUK_REQUIRED = 7,
1206 IMS_ERR_SIM_NOT_INSERTED = 10,
1207 IMS_ERR_SIM_PIN_REQUIRED = 11,
1208 IMS_ERR_SIM_PUK_REQUIRED = 12,
1209 IMS_ERR_SIM_FAILURE = 13,
1210 IMS_ERR_SIM_BUSY = 14,
1211 IMS_ERR_SIM_WRONG = 15,
1212 IMS_ERR_INCORRECT_PASSWD = 16,
1213 IMS_ERR_SIM_PIN2_REQUIRED = 17,
1214 IMS_ERR_SIM_PUK2_REQUIRED = 18,
1215 IMS_ERR_MEM_FULL = 20,
1216 IMS_ERR_INVALID_INDEX = 21,
1217 IMS_ERR_NO_FOUND = 22,
1218 IMS_ERR_TEXT_ERRSTRING_TOO_LONG_ERR = 24,
1219 IMS_ERR_INVALID_CHARACTERS_IN_TEXT_ERRSTRING_ERR = 25,
1220 IMS_ERR_DIAL_ERRSTRING_TOO_LONG_ERR = 26,
1221 IMS_ERR_INVALID_CHARACTERS_IN_DIAL_ERRSTRING_ERR = 27,
1222 IMS_ERR_NO_NW_SERVICE = 30,
1223 IMS_ERR_NETWORK_TIMEOUT = 31,
1224 IMS_ERR_NETWORK_NOT_ALLOWED = 32,
1225 IMS_ERR_NW_PERSON_PIN_REQUIRED = 40,
1226 IMS_ERR_NW_PERSON_PUK_REQUIRED = 41,
1227 IMS_ERR_NW_SUB_PERSON_PIN_REQUIRED = 42,
1228 IMS_ERR_NW_SUB_PERSON_PUK_REQUIRED = 43,
1229 IMS_ERR_SP_PERSON_PIN_REQUIRED = 44,
1230 IMS_ERR_SP_PERSON_PUK_REQUIRED = 45,
1231 IMS_ERR_CORP_PERSON_PIN_REQUIRED = 46,
1232 IMS_ERR_CORP_PERSON_PUK_REQUIRED = 47,
1233 IMS_ERR_UNKNOWN = 100,
1234 IMS_ERR_ILLEGAL_MS = 103,
1235 IMS_ERR_ILLEGAL_ME = 106,
1236 IMS_ERR_GPRS_NOT_ALLOWED = 107,
1237 IMS_ERR_PLMN_NOT_ALLOWED = 111,
1238 IMS_ERR_LA_NOT_ALLOWED = 112,
1239 IMS_ERR_ROAMING_AREA_NOT_ALLOWED = 113,
1240 IMS_ERR_SERV_OPTION_NOT_SUPPORTED = 132,
1241 IMS_ERR_REQ_SERV_OPTION_NOT_SUBSCRIBED = 133,
1242 IMS_ERR_SERV_OPTION_TEMP_OUT_OF_ORDER = 134,
1243 IMS_ERR_GPRS_UNSPECIFIED_ERROR = 148,
1244 IMS_ERR_PDP_AUTH_FAIL = 149,
1245 IMS_ERR_INVALID_MOBILE_CLASS = 150,
1246 IMS_ERR_LINK_NS_SP_PERSON_PIN_REQUIRED = 151,
1247 IMS_ERR_LINK_NS_SP_PERSON_PUK_REQUIRED = 152,
1248 IMS_ERR_LINK_SIM_C_PERSON_PIN_REQUIRED = 153,
1249 IMS_ERR_LINK_SIM_C_PERSON_PUK_REQUIRED = 154,
1250
1251 /* Below are MTK proprietary error codes */
1252 IMS_ERR_COMMAND_CONFLICT = 302,
1253 IMS_NO_ERR = 600,
1254 IMS_ERR_UNRECOGNIZED_CMD = 601,
1255 IMS_ERR_RETURN_ERROR = 602,
1256 IMS_ERR_SYNTEX_ERROR = 603,
1257 IMS_ERR_UNSPECIFIED = 604,
1258 IMS_ERR_DATA_TRANSFER_ALREADY = 605,
1259 IMS_ERR_ACTION_ALREADY = 606,
1260 IMS_ERR_NOT_AT_CMD = 607,
1261 IMS_ERR_MULTI_CMD_TOO_LONG = 608,
1262 IMS_ERR_ABORT_COPS = 609,
1263 IMS_ERR_NO_CALL_DISC = 610,
1264 IMS_ERR_BT_SAP_UNDEFINED = 611,
1265 IMS_ERR_BT_SAP_NOT_ACCESSIBLE = 612,
1266 IMS_ERR_BT_SAP_CARD_REMOVED = 613,
1267 IMS_ERR_AT_NOT_ALLOWED_BY_CUSTOMER = 614
1268} ims_err_id_enum;
1269
1270typedef enum
1271{
1272 IMS_ECPI_DISC_CAUSE_XXX = 0
1273} ims_ecpi_disc_cause_enum;
1274
1275typedef enum
1276{
1277 WFC_PROFILE_CELLULAR_ONLY = 0,
1278 WFC_PROFILE_WIFI_PREFERRED,
1279 WFC_PROFILE_CELLULAR_PREFERRED,
1280 WFC_PROFILE_WIFI_ONLY,
1281 /* In IMS preferred mode voice service preference is: *
1282 * 4G (VoLTE) - WiFi (VoWiFi) - 3G - 2G */
1283 WFC_PROFILE_IMS_PREFERRED,
1284 WFC_PROFILE_NUM
1285} wfc_profile_enum;
1286
1287typedef enum
1288{
1289 IMS_HANDOVER_STATUS_NONE = 0,
1290 IMS_HANDOVER_STATUS_LTE_TO_WIFI,
1291 IMS_HANDOVER_STATUS_WIFI_TO_LTE,
1292 IMS_HANDOVER_STATUS_NR_TO_WIFI,
1293 IMS_HANDOVER_STATUS_WIFI_TO_NR,
1294 IMS_HANDOVER_STATUS_LTE_TO_VODATA,
1295 IMS_HANDOVER_STATUS_VODATA_TO_LTE,
1296 IMS_HANDOVER_STATUS_NR_TO_VODATA,
1297 IMS_HANDOVER_STATUS_VODATA_TO_NR,
1298 IMS_HANDOVER_STATUS_WIFI_TO_VODATA,
1299 IMS_HANDOVER_STATUS_VODATA_TO_WIFI,
1300 IMS_HANDOVER_STATUS_MAX,
1301} ims_handover_status_enum;
1302
1303// For extended DTMF operation commands from ATP to VDM
1304typedef enum
1305{
1306 IMS_DTMF_ACTION_START = 0,
1307 IMS_DTMF_ACTION_STOP
1308} ims_dtmf_action_enum;
1309
1310typedef enum
1311{
1312 IMS_SERVICE_NORMAL_SERVICE = 0, /* NAS registration success */
1313 IMS_SERVICE_LIMITED_SERVICE,
1314 IMS_SERVICE_NO_SERVICE /* plmn loss/idle oos happen */
1315} ims_service_enum;
1316
1317typedef enum
1318{
1319 CELL_NORMAL_SERVICE = 0,
1320 CELL_LIMITED_SERVICE
1321} cell_service_enum;
1322
1323typedef enum
1324{
1325 C2K_CELL_NO_SERVICE = 0,
1326 C2K_CELL_NORMAL_SERVICE
1327} c2k_cell_service_enum;
1328
1329typedef enum
1330{
1331 IMS_URI_TYPE_SIP = 0x01,
1332 IMS_URI_TYPE_TEL = 0x02,
1333 IMS_URI_TYPE_URN = 0x04
1334}ims_uri_type_enum;
1335
1336/**
1337 * MM means generic mobility management
1338 * not for 2G MM module
1339 */
1340typedef enum
1341{
1342 MM_IMS_VOICE_TERMINATION_DISABLED = 1,
1343 MM_IMS_VOICE_TERMINATION_ENABLED
1344} mm_ims_voice_termination;
1345
1346typedef enum
1347{
1348 IMS_SRVCC_CALL_NUM_FORMAT_UNSPECIFIED = 0,
1349 IMS_SRVCC_CALL_NUM_FORMAT_URI = 1,
1350 IMS_SRVCC_CALL_NUM_FORMAT_BCD = 2,
1351 IMS_SRVCC_CALL_NUM_FORMAT_MAX,
1352} ims_srvcc_call_number_format_enum;
1353
1354typedef enum
1355{
1356 HVOLTE_SRLTE_MODE = 0, // call domain in C2K
1357 HVOLTE_VOPS_MODE = 1, // Suspend 1xRTT tune-away, call domain in IMS
1358 HVOLTE_LWG_MODE = 2, // call domain in GW
1359 HVOLTE_UNKNOWN_MODE = 0xFF
1360} hvolte_mode_enum;
1361
1362typedef enum
1363{
1364 HVOLTE_CALL_DOMAIN_C2K = 0,
1365 HVOLTE_CALL_DOMAIN_IMS = 1,
1366} hvolte_call_domain_enum;
1367
1368typedef enum
1369{
1370 HVOLTE_DIAL_NONE = 0,
1371 HVOLTE_DIAL_SILENT_REDIAL,
1372 HVOLTE_DIAL_C2K_DIRECTLY,
1373 HVOLTE_DIAL_MAX
1374} hvolte_dial_type_enum;
1375
1376typedef enum
1377{
1378 HVOLTE_DISABLE = 0,
1379 HVOLTE_AUTO_MODE,//=1
1380 HVOLTE_MANUAL_MODE,//=2
1381 HVOLTE_STATUS_MAX = HVOLTE_MANUAL_MODE
1382} hvolte_enable_status_enum;
1383
1384typedef enum
1385{
1386 IMS_MEDIA_BEARER_DEACTIVATE = 0,
1387 IMS_MEDIA_BEARER_ACTIVATE
1388} ims_media_bearer_status_enum;
1389
1390typedef enum {
1391 IMS_CALL_STATUS_BEGIN = 0,
1392 IMS_CALL_STATUS_CONNECTED,
1393 IMS_CALL_STATUS_END,
1394} ims_call_status_enum;
1395
1396typedef enum _ims_reg_event_enum {
1397 IMS_REG_EVENT_NORMAL = 0, /* default */
1398 IMS_REG_EVENT_PCO_FFOOH_5 = 1,
1399 IMS_REG_EVENT_PCO_FF00H_5 = 1,
1400 IMS_REG_EVENT_MAX
1401} ims_reg_event_enum;
1402
1403typedef enum {
1404 IMS_SPECIAL_EVENT_NORMAL = IMS_REG_EVENT_NORMAL, /* default */
1405 IMS_SPECIAL_EVENT_PCO_FF00H_5 = IMS_REG_EVENT_PCO_FF00H_5,
1406 IMS_SPECIAL_EVENT_CALL_OUTAGE_TEXT,
1407 IMS_SPECIAL_EVENT_MAX
1408} ims_special_event_enum;
1409
1410typedef enum
1411{
1412 TIMER_EPDG_CS_STOP = 0,
1413 TIMER_EPDG_CS_START
1414} timer_epdg_cs_status_enum;
1415
1416typedef enum {
1417 IMS_INET_METHOD_SIP_REGISTER,
1418 IMS_INET_METHOD_SIP_INVITE,
1419 IMS_INET_METHOD_SIP_REFER,
1420 IMS_INET_METHOD_SIP_UPDATE,
1421 IMS_INET_METHOD_SIP_CANCEL,
1422 IMS_INET_METHOD_SIP_MESSAGE,
1423 IMS_INET_METHOD_SIP_ACK,
1424 IMS_INET_METHOD_SIP_BYE,
1425 IMS_INET_METHOD_SIP_OPTIONS,
1426 IMS_INET_METHOD_SIP_SUBSCRIBE,
1427 IMS_INET_METHOD_SIP_NOTIFY,
1428 IMS_INET_METHOD_SIP_PUBLISH,
1429 IMS_INET_METHOD_SIP_INFO,
1430 IMS_INET_METHOD_SIP_PRACK,
1431 IMS_INET_METHOD_HTTP_GET,
1432 IMS_INET_METHOD_HTTP_POST,
1433 IMS_INET_METHOD_HTTP_TRACE,
1434 IMS_INET_METHOD_HTTP_HEAD,
1435 IMS_INET_METHOD_HTTP_PUT,
1436 IMS_INET_METHOD_HTTP_DELETE,
1437 IMS_INET_METHOD_HTTP_CONNECT,
1438 IMS_INET_METHOD_RTSP_OPTIONS,
1439 IMS_INET_METHOD_RTSP_REDIRECT,
1440 IMS_INET_METHOD_RTSP_DESCRIBE,
1441 IMS_INET_METHOD_RTSP_SETUP,
1442 IMS_INET_METHOD_RTSP_PLAY,
1443 IMS_INET_METHOD_RTSP_PAUSE,
1444 IMS_INET_METHOD_RTSP_TEARDOWN,
1445 IMS_INET_METHOD_RTSP_SET_PARAMETER,
1446 IMS_INET_METHOD_PXY_DEBUG,
1447 IMS_INET_METHOD_UNRECOGNIZED,
1448 IMS_INET_METHOD_NUM,
1449}ims_inet_method_enum;
1450
1451/* enum */
1452typedef enum
1453{
1454 EXIT_ECBM_TIMER_EXPIRE, //leave ecbm on timer expiry
1455 EXIT_ECBM_SECOND_CALL, //leave ecbm due to second call
1456 EXIT_ECBM_T911
1457} exit_ecbm_reason_enum;
1458
1459typedef enum {
1460 RCS_REG_FEATURE_OFF = 0,
1461 RCS_REG_FEATURE_ON,
1462 RCS_REG_FEATURE_RE_TRANSMIT,
1463 RCS_REG_STATE_REGISTERED,
1464 RCS_REG_STATE_UNREGISTERED
1465} rcs_reg_state_enum;
1466
1467typedef enum {
1468 IMS_SPECIAL_PROFILE_NONE = 0,
1469 IMS_SPECIAL_PROFILE_VISIBLE_SIM = 1<<1, /*Visible SIM: Legacy*/
1470 IMS_SPECIAL_PROFILE_VISIBLE_SIM_VZ_CORE = 1<<2 /*Visible SIM: VZ Core*/
1471}ims_special_profile_enum;
1472
1473typedef enum {
1474 IMS_EM_REG_ABNORMAL_NONE = 0,
1475 IMS_EM_REG_ABNORMAL_REG_FAIL = 1,
1476 IMS_EM_REG_ABNORMAL_REG_SLOW = 2,
1477 IMS_EM_REG_ABNORMAL_DEREG = 3
1478} ims_em_reg_abnormal_type_enum;
1479
1480typedef enum{
1481 IMS_EM_REG_ABNORMAL_PDN_SLOW = 0,
1482 IMS_EM_REG_ABNORMAL_SIP_SLOW = 1,
1483} ims_em_reg_abnormal_slow_type_enum;
1484
1485
1486typedef enum {
1487 IMS_EM_REG_ABNORMAL_PDN_NOT_TRIGGERED = 0,
1488 IMS_EM_REG_ABNORMAL_PDN_NOT_ESTABLISHED = 1,
1489 IMS_EM_REG_ABNORMAL_SIP_NOT_SENT = 2,
1490 IMS_EM_REG_ABNORMAL_SIP_GOT_ERROR = 3,
1491 IMS_EM_REG_ABNORMAL_HO_REREG_FAIL = 4
1492} ims_em_reg_abnormal_fail_state_enum;
1493
1494typedef enum {
1495 IMS_EM_REG_ABNORMAL_DEREG_CS_NONE = 0,
1496 IMS_EM_REG_ABNORMAL_DEREG_CS_CAP_NOT_SUPPORT = 1,
1497 IMS_EM_REG_ABNORMAL_DEREG_CS_SIM_ERROR = 2,
1498 IMS_EM_REG_ABNORMAL_DEREG_CS_INTERNAL_ERROR = 3,
1499 IMS_EM_REG_ABNORMAL_DEREG_CS_CELL_RAT_NOT_FOUND = 4,
1500} ims_em_reg_abnormal_dereg_cause_enum;
1501
1502typedef enum {
1503 IMS_EM_REG_ABNORMAL_REG_FAIL_REPORT_NONE = 0,
1504 IMS_EM_REG_ABNORMAL_REG_FAIL_REPORT_FIRST_EVENT = 1,
1505 IMS_EM_REG_ABNORMAL_REG_FAIL_REPORT_TIMER_EXPIRE = 2,
1506 IMS_EM_REG_ABNORMAL_REG_FAIL_REPORT_EVENT_CHANGE = 3,
1507} ims_em_reg_abnormal_reg_fail_report_type_enum;
1508
1509typedef enum {
1510 IMC_EMERGENCY_IND_BEARER_UNKNOWN_SERVICE = 0,
1511 IMC_EMERGENCY_IND_BEARER_NOT_FOR_EMERGENCY_SERVICE,
1512 IMC_EMERGENCY_IND_BEARER_FOR_EMERGENCY_SERVICE
1513} imc_emergency_ind_enum;
1514
1515typedef enum {
1516 IMS_UE_SUPPORT = 1 << 0,
1517 IMS_MOBILE_DATA_DISABLE = 1 << 1,
1518 IMS_PDNGW_SUPPORT_IND = 1 << 2,
1519 IMS_PDNGW_SUPPORT = 1 << 3,
1520 IMS_PS_DATA_OFF_ENABLE = 1 << 4,
1521} ims_ps_data_off_status_enum;
1522
1523typedef enum {
1524 IMS_EXEMPT_USSI = 1 << 0,
1525 IMS_EXEMPT_MMTEL_VOICE = 1 << 1,
1526 IMS_EXEMPT_MMTEL_VIDEO = 1 << 2,
1527 IMS_EXEMPT_SMSOIP = 1 << 3,
1528} ims_ps_data_off_exempt_service_enum;
1529
1530typedef enum {
1531 IMC_ACCT_TY_NORMAL = 0,
1532 IMC_ACCT_TY_EMERGENCY = 1,
1533 IMC_ACCT_TY_MAX
1534} imc_acct_type_enum;
1535
1536typedef enum
1537{
1538 IMS_EPSFB_TIMER_START_WHEN_1XX = 1 << 0, //start epsfb_timer when send/recv 1xx response (include 100)
1539 IMS_EPSFB_TIMER_START_WHEN_SDP_ANSWER = 1 << 1, //start epsfb_timer when send/recv initial SDP answer
1540} ims_epsfb_timer_start_enum;
1541
1542typedef enum
1543{
1544 IMS_EPSFB_TIMER_STOP_WHEN_ECPI_6 = 1 << 0, //stop epsfb_timer when call setup complete
1545 IMS_EPSFB_TIMER_STOP_WHEN_RING = 1 << 1, //stop epsfb_timer when ringing/ringback
1546 IMS_EPSFB_TIMER_STOP_WHEN_BW_CNF = 1 << 2, //stop epsfb_timer when BW_CNF
1547 IMS_EPSFB_TIMER_STOP_WHEN_DEDICATED = 1 << 3, //stop epsfb_timer when dedicated baerer setup, e.g. 5QI=1 (not include fallback to default)
1548} ims_epsfb_timer_stop_enum;
1549
1550typedef enum
1551{
1552 IMS_TIMER_THROTTLING = 0,
1553 IMS_TIMER_ESTABLISHMENT,
1554 IMS_TIMER_VZW,
1555 IMS_TIMER_EPSFB
1556} ims_timer_type_enum;
1557
1558typedef enum
1559{
1560 IMS_TIMER_STATUS_START = 0,
1561 IMS_TIMER_STATUS_STOP,
1562 IMS_TIMER_STATUS_EXPIRY
1563} ims_timer_status_enum;
1564
1565typedef enum
1566{
1567 IMS_EM_TIMER_TYPE_UNKNOWN = 0,
1568 IMS_EM_TIMER_TYPE_E1 = 1,
1569 IMS_EM_TIMER_TYPE_E2 = 2,
1570 IMS_EM_TIMER_TYPE_E3 = 3,
1571
1572 IMS_EM_TIMER_TYPE_MAX
1573} ims_em_timer_type_enum;
1574
1575typedef enum imcb_imc_func_class_enum {
1576 IMCB_IMC_FC_RTP = (1<<0),
1577 IMCB_IMC_FC_XMIT = (1<<1),
1578 IMCB_IMC_FC_VOICE = (1<<2),
1579 IMCB_IMC_FC_VIDEO = (1<<3),
1580 IMCB_IMC_FC_DTMF = (1<<4),
1581 IMCB_IMC_FC_CODEC = (1<<5),
1582 /* WFC */
1583 IMCB_IMC_FC_HANDOVER = (1<<6),
1584 /* TTY */
1585 IMCB_IMC_FC_TTY = (1<<7),
1586 IMCB_IMC_FC_ALL = ((IMCB_IMC_FC_TTY<< 1)-1)
1587} imcb_imc_func_class_enum;
1588
1589/* WFC */
1590typedef enum {
1591 IMC_ACCESS_RAT_UNSPEC = 0,
1592 IMC_ACCESS_RAT_LTE,
1593 IMC_ACCESS_RAT_WIFI,
1594 IMC_ACCESS_RAT_EHRPD,
1595 IMC_ACCESS_RAT_GSM,
1596 IMC_ACCESS_RAT_UMTS,
1597 IMC_ACCESS_RAT_NR,
1598 IMC_ACCESS_RAT_DATA_1,
1599 IMC_ACCESS_RAT_DATA_2,
1600 IMC_ACCESS_RAT_DATA_3,
1601 IMC_ACCESS_RAT_DATA_4,
1602 IMC_ACCESS_RAT_NUM, /*MAX */
1603} imc_access_rat_type_enum;
1604
1605typedef enum
1606{
1607 /* Ref: TS27.007 +CIREPH.
1608 * NOTE 1: vSRVCC is a Rel-11 feature
1609 * NOTE 2: Value 3, general non specific failure, might be used
1610 * e.g. in the case of handover cancellation as specified in 3GPP
1611 * TS 24.301 [83] subclause 6.6.2.
1612 */
1613 SRVCC_STATUS_HO_STARTED = 0, // 0: SRVCC handover has started in the CS domain
1614 SRVCC_STATUS_HO_SUCCESSFUL, // 1: SRVCC handover successful
1615 SRVCC_STATUS_HO_FAILED, // 2: SRVCC or vSRVCC handover cancelled ("Handover Failure" sent)
1616 SRVCC_STATUS_HO_CANCELLED, // 3: SRVCC or vSRVCC handover, general non specific failure
1617 SRVCC_STATUS_HO_VSRVCC_STARTED, // 4: vSRVCC handover has started in the CS domain
1618 SRVCC_STATUS_HO_VSRVCC_SUCCESSFUL, // 5: vSRVCC handover successful
1619 SRVCC_STATUS_HO_MAX
1620} srvcc_status_enum;
1621
1622typedef enum
1623{
1624 IMS_ACCESS_RAT_LTE = 0,
1625 IMS_ACCESS_RAT_WIFI,
1626 IMS_ACCESS_RAT_EHRPD,
1627 IMS_ACCESS_RAT_GSM,
1628 IMS_ACCESS_RAT_UMTS,
1629 IMS_ACCESS_RAT_NR,
1630 IMS_ACCESS_RAT_DATA_1,
1631 IMS_ACCESS_RAT_DATA_2,
1632 IMS_ACCESS_RAT_DATA_3,
1633 IMS_ACCESS_RAT_DATA_4,
1634 IMS_ACCESS_RAT_NUM
1635} ims_access_rat_enum;
1636
1637typedef enum
1638{
1639 IMS_REG_STATE_UNREGISTERED = 0,
1640 IMS_REG_STATE_REGISTERED,
1641 IMS_REG_STATE_UNREGISTERED_START,
1642 IMS_REG_STATE_REGISTERED_START
1643} ims_reg_state_enum;
1644
1645typedef enum
1646{
1647 IMS_REG_SUB_STATE_UNSPEC = 0,
1648 IMS_REG_SUB_STATE_UNREGISTERED,
1649 IMS_REG_SUB_STATE_REGISTERED,
1650 IMS_REG_SUB_STATE_UNREGISTERING,
1651 IMS_REG_SUB_STATE_REGISTERING,
1652 IMS_REG_SUB_STATE_REREGISTERING,
1653} ims_reg_sub_state_enum;
1654
1655
1656typedef enum
1657{
1658 IMS_REG_TYPE_NORMAL = 0,
1659 IMS_REG_TYPE_EMERGENCY
1660} ims_reg_type_enum;
1661
1662// Emergency Call Mode Preference
1663typedef enum
1664{
1665 IMS_ECMP_UNSPEC,
1666 IMS_ECMP_3GPP,
1667 IMS_ECMP_WLAN,
1668 IMS_ECMP_MAX
1669} ims_ecmp_enum;
1670
1671typedef enum
1672{
1673/*
1674<ext_info>: numeric value in hexadecimal format. The value range is from 1 to FFFFFFFF. It is a sum of hexadecimal values, each representing a particular IMS capability of the MT. The MT can have IMS capabilites not covered by the below list. This parameter is not present if the IMS registration status is "not registered".
1675 1 RTP-based transfer of voice according to MMTEL, see 3GPP TS 24.173 [87]. This functionality can not be indicated if the UE is not available for voice over PS, see 3GPP TS 24.229 [89].
1676 2 RTP-based transfer of text according to MMTEL, see 3GPP TS 24.173 [87].
1677 4 SMS using IMS functionality, see 3GPP TS 24.341 [101].
1678 8 RTP-based transfer of video according to MMTEL, see 3GPP TS 24.173 [87].
1679The hexadecimal values 10, 20, 40 ?80000 are reserved by the present document.
1680Example: The parameter <ext_info>=5 means that both RTP-based transfer of voice according to MMTEL and SMS using IMS functionality can be used.
1681*/
1682
1683 IMS_REG_SRV_NONE = 0x00,
1684 IMS_REG_SRV_VOICE = 0x01,
1685 IMS_REG_SRV_TXT = 0x02,
1686 IMS_REG_SRV_SMS = 0x04,
1687 IMS_REG_SRV_VIDEO = 0x08,
1688
1689 IMS_REG_SRV_ALL = (IMS_REG_SRV_VOICE |
1690 IMS_REG_SRV_SMS |
1691 IMS_REG_SRV_VIDEO),
1692
1693 IMS_REG_SRV_BOTH = IMS_REG_SRV_VOICE | IMS_REG_SRV_SMS
1694}ims_reg_service_enum;
1695
1696typedef enum {
1697 IMS_REG_SIP_URI_TYPE_MSISDN = 0,
1698 IMS_REG_SIP_URI_TYPE_IMSI = 1,
1699 IMS_REG_SIP_URI_TYPE_MAX
1700} ims_reg_sip_uri_type_enum;
1701
1702typedef enum {
1703 IMC_RAT_TYPE_NONE ,
1704 IMC_RAT_TYPE_2G = IMC_RAT_TYPE_NONE,
1705 IMC_RAT_TYPE_3G_FDD,
1706 IMC_RAT_TYPE_3G_TDD,
1707 IMC_RAT_TYPE_4G_FDD,
1708 IMC_RAT_TYPE_4G_TDD,
1709
1710 /* WFC */
1711 IMC_RAT_TYPE_802_11,
1712 IMC_RAT_TYPE_802_11a,
1713 IMC_RAT_TYPE_802_11b,
1714 IMC_RAT_TYPE_802_11g,
1715 IMC_RAT_TYPE_802_11n,
1716 IMC_RAT_TYPE_802_11ac,
1717
1718 /* C2K */
1719 IMC_RAT_TYPE_1xRTT,
1720 IMC_RAT_TYPE_HRPD,
1721 IMC_RAT_TYPE_eHRPD,
1722
1723 IMC_RAT_TYPE_5G_FDD,
1724 IMC_RAT_TYPE_5G_TDD,
1725
1726 IMC_RAT_TYPE_DATA_1,
1727 IMC_RAT_TYPE_DATA_2,
1728 IMC_RAT_TYPE_DATA_3,
1729 IMC_RAT_TYPE_DATA_4,
1730
1731 IMC_RAT_TYPE_MAX = IMC_RAT_TYPE_DATA_4,
1732 IMC_RAT_TYPE_UNSPEC = 0x80,
1733} imc_rat_type_enum;
1734
1735typedef enum {
1736 IMS_SMS_CAP_NONE = 0x0000,
1737 IMS_SMS_CAP_3GPP = 0x0001,
1738 IMS_SMS_CAP_N3GPP = 0x0002
1739} ims_sms_cap_enum;
1740
1741typedef enum
1742{
1743 IMS_SMS_CATEGORY_NORMAL = 0,
1744 IMS_SMS_CATEGORY_EMERGENCY
1745} ims_sms_category_enum;
1746
1747#define VOLTE_NETWORK_TYPE_IS_WIFI(net_type) \
1748 ((net_type >= VoLTE_Event_Network_Type_802_11) && \
1749 (net_type <= VoLTE_Event_Network_Type_802_11ac))
1750
1751#define VOLTE_NETWORK_TYPE_IS_23G(net_type) \
1752 ((net_type >= VoLTE_Event_Network_Type_GERAN) && \
1753 (net_type <= VoLTE_Event_Network_Type_UTRAN_TDD))
1754
1755#define VOLTE_NETWORK_TYPE_IS_LTE(net_type) \
1756 ((net_type >= VoLTE_Event_Network_Type_E_UTRAN_FDD) && \
1757 (net_type <= VoLTE_Event_Network_Type_E_UTRAN_TDD))
1758
1759#define VOLTE_NETWORK_TYPE_IS_NR(net_type) \
1760 ((net_type == VoLTE_Event_Network_Type_NR_FDD) || \
1761 (net_type == VoLTE_Event_Network_Type_NR_TDD))
1762
1763#define VOLTE_NETWORK_TYPE_IS_DATA(net_type) \
1764 ((net_type >= VoLTE_Event_Network_Type_Data_1) && \
1765 (net_type <= VoLTE_Event_Network_Type_Data_4))
1766
1767enum VoLTE_Event_Network_Type_e {
1768 VoLTE_Event_Network_Type_Unspec = 0,
1769 VoLTE_Event_Network_Type_Unknown = 1,
1770 VoLTE_Event_Network_Type_802_11 = 2,
1771 VoLTE_Event_Network_Type_802_11a = 3,
1772 VoLTE_Event_Network_Type_802_11b = 4,
1773 VoLTE_Event_Network_Type_802_11g = 5,
1774 VoLTE_Event_Network_Type_802_11n = 6,
1775 VoLTE_Event_Network_Type_802_11ac = 7,
1776 VoLTE_Event_Network_Type_GERAN = 8,
1777 VoLTE_Event_Network_Type_UTRAN_FDD = 9,
1778 VoLTE_Event_Network_Type_UTRAN_TDD =10,
1779 VoLTE_Event_Network_Type_CDMA2000 =11,
1780 VoLTE_Event_Network_Type_E_UTRAN_FDD =12,
1781 VoLTE_Event_Network_Type_E_UTRAN_TDD =13,
1782 VoLTE_Event_Network_Type_NR_FDD =14,
1783 VoLTE_Event_Network_Type_NR_TDD =15,
1784 /*C2K*/
1785 VoLTE_Event_Network_Type_C2K_1xRTT =16,
1786 VoLTE_Event_Network_Type_C2K_HRPD =17,
1787 VoLTE_Event_Network_Type_C2K_eHRPD =18,
1788 /*VoData*/
1789 VoLTE_Event_Network_Type_Data_1 =19,
1790 VoLTE_Event_Network_Type_Data_2 =20,
1791 VoLTE_Event_Network_Type_Data_3 =21,
1792 VoLTE_Event_Network_Type_Data_4 =22,
1793 /*add here*/
1794 VoLTE_Event_Network_Type_Max,
1795};
1796
1797enum VoLTE_Event_Network_State_e {
1798 VoLTE_Event_Network_State_Connected = 1,
1799 VoLTE_Event_Network_State_Disconnected = 2,
1800 VoLTE_Event_Network_State_Refresh = 3,
1801 VoLTE_Event_Network_State_Lost = 4,
1802 VoLTE_Event_Network_State_OOS_Start = 5,
1803 VoLTE_Event_Network_State_OOS_End = 6,
1804 /*add here*/
1805 VoLTE_Event_Network_State_OOS_Max,
1806};
1807
1808typedef enum {
1809 IMS_STK_SETUP_CALL_IF_NO_ANOTHER_CALL,
1810 IMS_STK_SETUP_CALL_WITH_REDIAL_IF_NO_ANOTHER_CALL,
1811 IMS_STK_SETUP_CALL_PUT_ANOTHER_HOLD,
1812 IMS_STK_SETUP_CALL_WITH_REDIAL_PUT_ANOTHER_HOLD,
1813 IMS_STK_SETUP_CALL_DISCON_ANOTHER,
1814 IMS_STK_SETUP_CALL_WITH_REDIAL_DISCON_ANOTHER,
1815 IMS_STK_SETUP_CALL_MAX
1816} ims_stk_setup_call_enum;
1817
1818typedef enum {
1819 IMS_STK_CALL_SETUP = 0,
1820 IMS_STK_CALL_SETUP_BUT_ICON_COULD_NOT_DSPL = 4
1821} ims_stk_type_enum;
1822
1823enum VoLTE_Setting_Type_e {
1824 /* ------------------------------------------------ */
1825 /* System */
1826 /* ------------------------------------------------ */
1827 VoLTE_Setting_System_Start_Code = 0,
1828 VoLTE_Setting_System_Operator_ID = VoLTE_Setting_System_Start_Code + 1, // data type int
1829 VoLTE_Setting_System_GENERAL_SETTING = VoLTE_Setting_System_Start_Code + 2,
1830
1831 /* ------------------------------------------------ */
1832 /* Network Information */
1833 /* ------------------------------------------------ */
1834 VoLTE_Setting_Network_Information_Start_Code = 1000,
1835 VoLTE_Setting_Net_Local_Address = VoLTE_Setting_Network_Information_Start_Code + 1, // data type is string
1836 VoLTE_Setting_Net_Local_Port = VoLTE_Setting_Network_Information_Start_Code + 2, // data type int
1837 VoLTE_Setting_Net_Local_Protocol_Type = VoLTE_Setting_Network_Information_Start_Code + 3, // UDP: 0, TCP: 1
1838 VoLTE_Setting_Net_Local_Protocol_Version = VoLTE_Setting_Network_Information_Start_Code + 4, // IPv4: 1, IPv6: 2
1839 VoLTE_Setting_Net_Local_IPSec_Port_Start = VoLTE_Setting_Network_Information_Start_Code + 5,
1840 VoLTE_Setting_Net_Local_IPSec_Port_Range = VoLTE_Setting_Network_Information_Start_Code + 6,
1841 VoLTE_Setting_Net_Local_RTP_RTCP_Port_Start = VoLTE_Setting_Network_Information_Start_Code + 7,
1842 VoLTE_Setting_Net_Local_RTP_RTCP_Port_Range = VoLTE_Setting_Network_Information_Start_Code + 8,
1843 VoLTE_Setting_Net_IPSec = VoLTE_Setting_Network_Information_Start_Code + 9, // Disable: 0, Enable: 1
1844 VoLTE_Setting_Net_Cell_ID = VoLTE_Setting_Network_Information_Start_Code + 10, // data type is string
1845 VoLTE_Setting_Net_RTP_DSCP = VoLTE_Setting_Network_Information_Start_Code + 11, // For build pass, need to remove
1846 VoLTE_Setting_Net_IF_Name = VoLTE_Setting_Network_Information_Start_Code + 12, // data type is string
1847 VoLTE_Setting_Net_Network_Id = VoLTE_Setting_Network_Information_Start_Code + 13, // data type is integer
1848 VoLTE_Setting_Net_SIP_Dscp = VoLTE_Setting_Network_Information_Start_Code + 14, // data type is integer
1849 VoLTE_Setting_Net_RTP_Voice_Dscp = VoLTE_Setting_Network_Information_Start_Code + 15, // data type is integer
1850 VoLTE_Setting_Net_RTP_Video_Dscp = VoLTE_Setting_Network_Information_Start_Code + 16, // data type is integer
1851 VoLTE_Setting_Net_SIP_Soc_Priority = VoLTE_Setting_Network_Information_Start_Code + 17, // data type is integer
1852 VoLTE_Setting_Net_SIP_Soc_Tcp_Mss = VoLTE_Setting_Network_Information_Start_Code + 18, // data type is integer
1853 VoLTE_Setting_Net_RTP_Voice_Soc_Priority = VoLTE_Setting_Network_Information_Start_Code + 19, // data type is integer
1854 VoLTE_Setting_Net_RTP_Video_Soc_Priority = VoLTE_Setting_Network_Information_Start_Code + 20, // data type is integer
1855 VoLTE_Setting_Net_LBS_Location_Info = VoLTE_Setting_Network_Information_Start_Code + 21, // data type is integer
1856 VoLTE_Setting_Net_Security = VoLTE_Setting_Network_Information_Start_Code + 22,
1857 VoLTE_Setting_Net_Authentication = VoLTE_Setting_Network_Information_Start_Code + 23,
1858 VoLTE_Setting_Net_PCSCF_Port = VoLTE_Setting_Network_Information_Start_Code + 24,
1859 VoLTE_Setting_Net_Emergency_AID = VoLTE_Setting_Network_Information_Start_Code + 25,
1860
1861 /* ------------------------------------------------ */
1862 /* Account Settings */
1863 /* ------------------------------------------------ */
1864 VoLTE_Setting_Account_Settings_Start_Code = 2000,
1865 VoLTE_Setting_Account_Public_UID = VoLTE_Setting_Account_Settings_Start_Code + 1, // data type is string
1866 VoLTE_Setting_Account_Private_UID = VoLTE_Setting_Account_Settings_Start_Code + 2, // data type is string
1867 VoLTE_Setting_Account_Home_URI = VoLTE_Setting_Account_Settings_Start_Code + 3, // data type is string
1868 VoLTE_Setting_Account_IMEI = VoLTE_Setting_Account_Settings_Start_Code + 4, // data type is string
1869 VoLTE_Setting_Account_ConfFactoryURI = VoLTE_Setting_Account_Settings_Start_Code + 5,
1870 VoLTE_Setting_Account_IMSI_MNC = VoLTE_Setting_Account_Settings_Start_Code + 6,
1871 VoLTE_Setting_Account_IMSI_MCC = VoLTE_Setting_Account_Settings_Start_Code + 7,
1872 VoLTE_Setting_Account_MSISDN = VoLTE_Setting_Account_Settings_Start_Code + 8,
1873
1874 /* ------------------------------------------------ */
1875 /* Server Settings */
1876 /* ------------------------------------------------ */
1877 VoLTE_Setting_Server_Settings_Start_Code = 3000,
1878 VoLTE_Setting_Server_PCSCF_List = VoLTE_Setting_Server_Settings_Start_Code + 1, // data type is string
1879
1880 /* ------------------------------------------------ */
1881 /* VoLTE Service Settings */
1882 /* ------------------------------------------------ */
1883 VoLTE_Setting_VoLTE_Service_Start_Code = 10000,
1884
1885 /* ------------------------------------------------ */
1886 /* VoLTE Call Settings */
1887 /* ------------------------------------------------ */
1888 VoLTE_Setting_VoLTE_Call_Start_Code = 11000,
1889 VoLTE_Setting_VoLTE_Call_Session_Flag = VoLTE_Setting_VoLTE_Call_Start_Code + 1,
1890 VoLTE_Setting_VoLTE_Call_Session_Timer = VoLTE_Setting_VoLTE_Call_Start_Code + 2, // in seconds
1891 VoLTE_Setting_VoLTE_Call_Session_MinSE = VoLTE_Setting_VoLTE_Call_Start_Code + 3, // in seconds
1892 VoLTE_Setting_VoLTE_Call_Privacy = VoLTE_Setting_VoLTE_Call_Start_Code + 4,
1893 VoLTE_Setting_VoLTE_Call_Capability = VoLTE_Setting_VoLTE_Call_Start_Code + 5, // data type is ::VoLTE_Call_Capability_Type_e
1894 VoLTE_Setting_VoLTE_Call_RTCP_Interval = VoLTE_Setting_VoLTE_Call_Start_Code + 6, // in ms
1895 VoLTE_Setting_VoLTE_Early_Media = VoLTE_Setting_VoLTE_Call_Start_Code + 7, // If the incoming call support Early Media, shall we require it to play?
1896 VoLTE_Setting_VoLTE_Call_CodecOrder1 = VoLTE_Setting_VoLTE_Call_Start_Code + 8, // voip_codec_enum
1897 VoLTE_Setting_VoLTE_Call_CodecOrder2 = VoLTE_Setting_VoLTE_Call_Start_Code + 9, // voip_codec_enum
1898 VoLTE_Setting_VoLTE_Call_CodecOrder3 = VoLTE_Setting_VoLTE_Call_Start_Code + 10, // voip_codec_enum
1899 VoLTE_Setting_VoLTE_Call_def_max_ptime = VoLTE_Setting_VoLTE_Call_Start_Code + 11,
1900 VoLTE_Setting_VoLTE_Call_def_ptime = VoLTE_Setting_VoLTE_Call_Start_Code + 12,
1901 VoLTE_Setting_VoLTE_Call_G711_ptime = VoLTE_Setting_VoLTE_Call_Start_Code + 13,
1902 VoLTE_Setting_VoLTE_Call_G726_ptime = VoLTE_Setting_VoLTE_Call_Start_Code + 14,
1903 VoLTE_Setting_VoLTE_Call_G729_ptime = VoLTE_Setting_VoLTE_Call_Start_Code + 15,
1904 VoLTE_Setting_VoLTE_Call_amr_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 16,
1905 VoLTE_Setting_VoLTE_Call_amr_wb_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 17,
1906 VoLTE_Setting_VoLTE_Call_h264_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 18,
1907 VoLTE_Setting_VoLTE_Call_G729_annexB = VoLTE_Setting_VoLTE_Call_Start_Code + 19,
1908 VoLTE_Setting_VoLTE_Call_TelEvt = VoLTE_Setting_VoLTE_Call_Start_Code + 20,
1909 VoLTE_Setting_VoLTE_Call_TelEvt_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 21,
1910 VoLTE_Setting_VoLTE_Call_Priority = VoLTE_Setting_VoLTE_Call_Start_Code + 22,
1911 VoLTE_Setting_VoLTE_Call_UserAgent = VoLTE_Setting_VoLTE_Call_Start_Code + 23, // VOLTE_MAX_ADDRESS_LENGTH
1912 VoLTE_Setting_VoLTE_Call_RejCode = VoLTE_Setting_VoLTE_Call_Start_Code + 24,
1913 VoLTE_Setting_VoLTE_Call_noResourceCode = VoLTE_Setting_VoLTE_Call_Start_Code + 25,
1914 VoLTE_Setting_VoLTE_Call_RejMediaCode = VoLTE_Setting_VoLTE_Call_Start_Code + 26,
1915 VoLTE_Setting_VoLTE_Call_RejbyUserCode = VoLTE_Setting_VoLTE_Call_Start_Code + 27,
1916 VoLTE_Setting_VoLTE_Call_Conf_SubTimer = VoLTE_Setting_VoLTE_Call_Start_Code + 28,
1917 VoLTE_Setting_VoLTE_Call_amr_mode_set = VoLTE_Setting_VoLTE_Call_Start_Code + 29,
1918 VoLTE_Setting_VoLTE_Call_amr_wb_mode_set = VoLTE_Setting_VoLTE_Call_Start_Code + 30,
1919 VoLTE_Setting_VoLTE_Call_amr_fmt_variant = VoLTE_Setting_VoLTE_Call_Start_Code + 31,
1920 VoLTE_Setting_VoLTE_Call_precondition = VoLTE_Setting_VoLTE_Call_Start_Code + 32,
1921 VoLTE_Setting_VoLTE_Call_MO_Invite_To_BWCNF_Time = VoLTE_Setting_VoLTE_Call_Start_Code + 33,
1922 VoLTE_Setting_VoLTE_Call_h264_pt2 = VoLTE_Setting_VoLTE_Call_Start_Code + 34,
1923 VoLTE_Setting_VoLTE_Call_h265_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 35,
1924 VoLTE_Setting_VoLTE_Call_h265_pt2 = VoLTE_Setting_VoLTE_Call_Start_Code + 36,
1925 VoLTE_Setting_VoLTE_Call_amr_oct_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 37,
1926 VoLTE_Setting_VoLTE_Call_amr_open_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 38,
1927 VoLTE_Setting_VoLTE_Call_amr_wb_oct_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 39,
1928 VoLTE_Setting_VoLTE_Call_TelEvt_wb_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 40,
1929 VoLTE_Setting_VoLTE_Call_CONTACT_WITH_USERNAME_INCALL = VoLTE_Setting_VoLTE_Call_Start_Code + 41,
1930 VoLTE_Setting_VoLTE_Call_SENDRECV_BEFORE_PRCD = VoLTE_Setting_VoLTE_Call_Start_Code + 42,
1931 VoLTE_Setting_VoLTE_Call_ALWAYS_USE_UPDATE_FOR_PRCD = VoLTE_Setting_VoLTE_Call_Start_Code + 43,
1932 VoLTE_Setting_VoLTE_Call_MERGE_NEED_SWAP = VoLTE_Setting_VoLTE_Call_Start_Code + 44,
1933 VoLTE_Setting_VoLTE_Call_ALWAYS_USE_SIP_URI_FOR_MO_CALL = VoLTE_Setting_VoLTE_Call_Start_Code + 45,
1934 VoLTE_Setting_VoLTE_Call_SET_STRENGTH_MANDATORY = VoLTE_Setting_VoLTE_Call_Start_Code + 46,
1935 VoLTE_Setting_VoLTE_Call_SEND_REFER_TO_PEER = VoLTE_Setting_VoLTE_Call_Start_Code + 47,
1936 VoLTE_Setting_VoLTE_Call_ADD_3GPP_IMS_IN_ACCEPT = VoLTE_Setting_VoLTE_Call_Start_Code + 48,
1937 VoLTE_Setting_VoLTE_Call_TERMINAL_BASED_CW = VoLTE_Setting_VoLTE_Call_Start_Code + 49,
1938 VoLTE_Setting_VoLTE_Call_REFER_DIALOG_TO_SERVER = VoLTE_Setting_VoLTE_Call_Start_Code + 50,
1939 VoLTE_Setting_VoLTE_Call_CHECK_REASON_PHRASE = VoLTE_Setting_VoLTE_Call_Start_Code + 51,
1940 VoLTE_Setting_VoLTE_Call_MERGE_SEND_BYE = VoLTE_Setting_VoLTE_Call_Start_Code + 52,
1941 VoLTE_Setting_VoLTE_Call_WHEN_STOP_TCALL = VoLTE_Setting_VoLTE_Call_Start_Code + 53,
1942 VoLTE_Setting_VoLTE_Call_SET_RTCP_0 = VoLTE_Setting_VoLTE_Call_Start_Code + 54,
1943 VoLTE_Setting_VoLTE_Call_CHECK_CONTACT_380 = VoLTE_Setting_VoLTE_Call_Start_Code + 55,
1944 VoLTE_Setting_VoLTE_Call_CONF_PARTICIPANT_NOT_SUBSCRIBE = VoLTE_Setting_VoLTE_Call_Start_Code + 56,
1945 VoLTE_Setting_VoLTE_Call_ADD_SDP_IN_180_FOR_NON_PRECOND = VoLTE_Setting_VoLTE_Call_Start_Code + 57,
1946 VoLTE_Setting_VoLTE_Call_ADD_PRECONDITION_IN_HOLD_UNHOLD_SDP = VoLTE_Setting_VoLTE_Call_Start_Code + 58,
1947 VoLTE_Setting_VoLTE_Call_USE_ORG_SDP_FOR_INVITE_WITHOUT_SDP = VoLTE_Setting_VoLTE_Call_Start_Code + 59,
1948 VoLTE_Setting_VoLTE_Call_OIR_PRIVACY_TO_HEADER = VoLTE_Setting_VoLTE_Call_Start_Code + 60,
1949 VoLTE_Setting_VoLTE_Call_REGISTER_CAP_WHENEVER = VoLTE_Setting_VoLTE_Call_Start_Code + 61,
1950 VoLTE_Setting_VoLTE_Call_NO_AUTO_RETRY_FOR_MO_CALL = VoLTE_Setting_VoLTE_Call_Start_Code + 62,
1951 VoLTE_Setting_VoLTE_Call_USE_EPS_PREFIX_IN_PHONE_CONTEXT = VoLTE_Setting_VoLTE_Call_Start_Code + 63,
1952 VoLTE_Setting_VoLTE_Call_FOLLOW_NW_IMS_VOPS_SUPPORT = VoLTE_Setting_VoLTE_Call_Start_Code + 64,
1953 VoLTE_Setting_VoLTE_Call_ATTEMPT_REG_WHEN_RECEIVE403 = VoLTE_Setting_VoLTE_Call_Start_Code + 65,
1954 VoLTE_Setting_VoLTE_Call_WAITING_487_FOR_CANCEL_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 66,
1955 VoLTE_Setting_VoLTE_Call_BCSFB_FEATURE_ENABLE = VoLTE_Setting_VoLTE_Call_Start_Code + 67,
1956 VoLTE_Setting_VoLTE_Call_SEND_183_WHEN_PRCD_NONE = VoLTE_Setting_VoLTE_Call_Start_Code + 68,
1957 VoLTE_Setting_VoLTE_Call_CALL_ID_WITH_HOST_INCALL = VoLTE_Setting_VoLTE_Call_Start_Code + 69,
1958 VoLTE_Setting_VoLTE_Call_ADD_RTCP_PORT_INTO_SDP = VoLTE_Setting_VoLTE_Call_Start_Code + 70,
1959 VoLTE_Setting_VoLTE_Call_ECC_SESSION_TIMER_ENABLE = VoLTE_Setting_VoLTE_Call_Start_Code + 71,
1960 VoLTE_Setting_VoLTE_Call_SUBSCRIBE_DIALOG_TO_SERVER = VoLTE_Setting_VoLTE_Call_Start_Code + 72,
1961 VoLTE_Setting_VoLTE_Call_CHECK_CONFERENCE_SUBSCRIBE = VoLTE_Setting_VoLTE_Call_Start_Code + 73,
1962 VoLTE_Setting_VoLTE_Call_CONFERENCE_SUBSCRIBE_TIMING = VoLTE_Setting_VoLTE_Call_Start_Code + 74,
1963 VoLTE_Setting_VoLTE_Call_GENERAL_AMR_NB_WB = VoLTE_Setting_VoLTE_Call_Start_Code + 75,
1964 VoLTE_Setting_VoLTE_Call_DISABLE_CONF_CALL_PRCD = VoLTE_Setting_VoLTE_Call_Start_Code + 76,
1965 VoLTE_Setting_VoLTE_Call_WAIT_CANCEL_IN_SRVCC_END = VoLTE_Setting_VoLTE_Call_Start_Code + 77,
1966 VoLTE_Setting_VoLTE_Call_REJECT_1W_IF_1A1H = VoLTE_Setting_VoLTE_Call_Start_Code + 78,
1967 VoLTE_Setting_VoLTE_Call_NO_AUTO_RETRY_FOR_DCM_MO_CALL = VoLTE_Setting_VoLTE_Call_Start_Code + 79,
1968 VoLTE_Setting_VoLTE_Call_JOIN_SEND_BYE = VoLTE_Setting_VoLTE_Call_Start_Code + 80,
1969 VoLTE_Setting_VoLTE_Call_SET_ZERO_CELL_ID_IN_WIFI = VoLTE_Setting_VoLTE_Call_Start_Code + 81,
1970 VoLTE_Setting_VoLTE_Call_REJECT_MTCALL_BY_VOPS = VoLTE_Setting_VoLTE_Call_Start_Code + 82,
1971 VoLTE_Setting_VoLTE_Call_REJECT_MTCALL_WHEN_VILTE = VoLTE_Setting_VoLTE_Call_Start_Code + 83,
1972 VoLTE_Setting_VoLTE_Call_NOT_ADD_SDP_IN_OPTIONS = VoLTE_Setting_VoLTE_Call_Start_Code + 84,
1973 VoLTE_Setting_VoLTE_Call_PCSCF_ERROR_WHEN663 = VoLTE_Setting_VoLTE_Call_Start_Code + 85,
1974 VoLTE_Setting_VoLTE_Call_REL_CONF_IF_NO_PARTICIPANT = VoLTE_Setting_VoLTE_Call_Start_Code + 86,
1975 VoLTE_Setting_VoLTE_Call_ADD_NO_FORK = VoLTE_Setting_VoLTE_Call_Start_Code + 87,
1976 VoLTE_Setting_VoLTE_Call_TMO_SPECIFIC_SDP = VoLTE_Setting_VoLTE_Call_Start_Code + 88,
1977 VoLTE_Setting_VoLTE_Call_CALL_RINGING_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 89,
1978 VoLTE_Setting_VoLTE_Call_CALL_RINGBACK_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 90,
1979 VoLTE_Setting_VoLTE_Call_CALL_TCALL_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 91,
1980 VoLTE_Setting_VoLTE_Call_REJECT_CODE_IN23G = VoLTE_Setting_VoLTE_Call_Start_Code + 92,
1981 VoLTE_Setting_VoLTE_Call_CALL_REFRESHCALL_TIMER_EXPIRE = VoLTE_Setting_VoLTE_Call_Start_Code + 93,
1982 VoLTE_Setting_VoLTE_Call_CALL_CALLEND_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 94,
1983 VoLTE_Setting_VoLTE_Call_WAITING_MT_CNF_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 95,
1984 VoLTE_Setting_VoLTE_Call_CONF_SUB_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 96,
1985 VoLTE_Setting_VoLTE_Call_MO_INVITE_TO_BW_CNF_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 97,
1986 VoLTE_Setting_VoLTE_Call_SRVCC_CAPABILITY = VoLTE_Setting_VoLTE_Call_Start_Code + 98,
1987 VoLTE_Setting_VoLTE_Call_EVS_SUPPORT = VoLTE_Setting_VoLTE_Call_Start_Code + 99,
1988 VoLTE_Setting_VoLTE_Call_EVS_MODE_SWITCH = VoLTE_Setting_VoLTE_Call_Start_Code + 100,
1989 VoLTE_Setting_VoLTE_Call_HF_ONLY = VoLTE_Setting_VoLTE_Call_Start_Code + 101,
1990 VoLTE_Setting_VoLTE_Call_DTX = VoLTE_Setting_VoLTE_Call_Start_Code + 102,
1991 VoLTE_Setting_VoLTE_Call_DTX_RECV = VoLTE_Setting_VoLTE_Call_Start_Code + 103,
1992 VoLTE_Setting_VoLTE_Call_BR_BEGIN = VoLTE_Setting_VoLTE_Call_Start_Code + 104,
1993 VoLTE_Setting_VoLTE_Call_BR_END = VoLTE_Setting_VoLTE_Call_Start_Code + 105,
1994 VoLTE_Setting_VoLTE_Call_BR_SEND_BEGIN = VoLTE_Setting_VoLTE_Call_Start_Code + 106,
1995 VoLTE_Setting_VoLTE_Call_BR_SEND_END = VoLTE_Setting_VoLTE_Call_Start_Code + 107,
1996 VoLTE_Setting_VoLTE_Call_BR_RECV_BEGIN = VoLTE_Setting_VoLTE_Call_Start_Code + 108,
1997 VoLTE_Setting_VoLTE_Call_BR_RECV_END = VoLTE_Setting_VoLTE_Call_Start_Code + 109,
1998 VoLTE_Setting_VoLTE_Call_BW_BEGIN = VoLTE_Setting_VoLTE_Call_Start_Code + 110,
1999 VoLTE_Setting_VoLTE_Call_BW_END = VoLTE_Setting_VoLTE_Call_Start_Code + 111,
2000 VoLTE_Setting_VoLTE_Call_BW_SEND_BEGIN = VoLTE_Setting_VoLTE_Call_Start_Code + 112,
2001 VoLTE_Setting_VoLTE_Call_BW_SEND_END = VoLTE_Setting_VoLTE_Call_Start_Code + 113,
2002 VoLTE_Setting_VoLTE_Call_BW_RECV_BEGIN = VoLTE_Setting_VoLTE_Call_Start_Code + 114,
2003 VoLTE_Setting_VoLTE_Call_BW_RECV_END = VoLTE_Setting_VoLTE_Call_Start_Code + 115,
2004 VoLTE_Setting_VoLTE_Call_CH_SEND = VoLTE_Setting_VoLTE_Call_Start_Code + 116,
2005 VoLTE_Setting_VoLTE_Call_CH_RECV = VoLTE_Setting_VoLTE_Call_Start_Code + 117,
2006 VoLTE_Setting_VoLTE_Call_CH_AW_RECV = VoLTE_Setting_VoLTE_Call_Start_Code + 118,
2007 VoLTE_Setting_VoLTE_Call_CMR = VoLTE_Setting_VoLTE_Call_Start_Code + 119,
2008
2009 /* ------------------------------------------------ */
2010 /* VoLTE MWI Settings */
2011 /* ------------------------------------------------ */
2012 VoLTE_Setting_VoLTE_MWI_Start_Code = VoLTE_Setting_VoLTE_Call_Start_Code + 900,
2013 VoLTE_Setting_VoLTE_MWI_License = VoLTE_Setting_VoLTE_MWI_Start_Code + 1, // Disable: 0, Enable: 1
2014
2015 /* ------------------------------------------------ */
2016 /* VoLTE SMS Settings */
2017 /* ------------------------------------------------ */
2018 VoLTE_Setting_VoLTE_SMS_Start_Code = 12000,
2019 VoLTE_Setting_VoLTE_SMS_Capability = VoLTE_Setting_VoLTE_SMS_Start_Code + 1, // data type is boolean (1 or 0)
2020 VoLTE_Setting_VoLTE_SMS_3GPP_SMS_PSI = VoLTE_Setting_VoLTE_SMS_Start_Code + 2, // data type is string
2021 VoLTE_Setting_VoLTE_SMS_PSISMSC_FROM_USER = VoLTE_Setting_VoLTE_SMS_Start_Code + 3,
2022 VoLTE_Setting_VoLTE_SMS_FORCE_PSI_SCHEME_TO_TEL = VoLTE_Setting_VoLTE_SMS_Start_Code + 4,
2023 VoLTE_Setting_VoLTE_SMS_ADD_USER_PHONE = VoLTE_Setting_VoLTE_SMS_Start_Code + 5,
2024 VoLTE_Setting_VoLTE_SMS_UPDATE_CALL_ID_WITH_HOST = VoLTE_Setting_VoLTE_SMS_Start_Code + 6,
2025 VoLTE_Setting_VoLTE_SMS_ADD_NO_FORK_IN_SMS = VoLTE_Setting_VoLTE_SMS_Start_Code + 7,
2026 VoLTE_Setting_VoLTE_SMS_NSN_SPECIFIC = VoLTE_Setting_VoLTE_SMS_Start_Code + 8,
2027 VoLTE_Setting_VoLTE_SMS_MO_RETRY_AFTER_504 = VoLTE_Setting_VoLTE_SMS_Start_Code + 9,
2028 VoLTE_Setting_VoLTE_SMS_SEND_TIMERF_EXPIRY = VoLTE_Setting_VoLTE_SMS_Start_Code + 10,
2029 VoLTE_Setting_VoLTE_SMS_IMSI_REGED_DISABLE_SMS = VoLTE_Setting_VoLTE_SMS_Start_Code + 11,
2030
2031 /* ------------------------------------------------ */
2032 /* VoLTE XDM Settings */
2033 /* ------------------------------------------------ */
2034 VoLTE_Setting_VoLTE_XDM_Start_Code = 13000,
2035
2036 /* ------------------------------------------------ */
2037 /* VoLTE REG Settings */
2038 /* ------------------------------------------------ */
2039 VoLTE_Setting_VoLTE_REG_Start_Code = 14000,
2040 VoLTE_Setting_Reg_Register_Expiry = VoLTE_Setting_VoLTE_REG_Start_Code + 1, // data type is int
2041 VoLTE_Setting_Reg_Event_Subscribe = VoLTE_Setting_VoLTE_REG_Start_Code + 2, // Disable: 0, Enable: 1
2042 VoLTE_Setting_Reg_Emergency = VoLTE_Setting_VoLTE_REG_Start_Code + 3, // Disable: 0, Enable: 1
2043 VoLTE_Setting_Reg_Retry_First_Time = VoLTE_Setting_VoLTE_REG_Start_Code + 4, // data type is int
2044 VoLTE_Setting_Reg_Retry_Base_Time = VoLTE_Setting_VoLTE_REG_Start_Code + 5, // data type is int
2045 VoLTE_Setting_Reg_Retry_Max_Time = VoLTE_Setting_VoLTE_REG_Start_Code + 6, // data type is int
2046 VoLTE_Setting_Reg_Contact_With_UserName = VoLTE_Setting_VoLTE_REG_Start_Code + 7, // Disable: 0, Enable: 1
2047 VoLTE_Setting_Reg_URI_With_Port = VoLTE_Setting_VoLTE_REG_Start_Code + 8, // Disable: 0, Enable: 1
2048 VoLTE_Setting_Reg_IPSec_Algo_Set = VoLTE_Setting_VoLTE_REG_Start_Code + 9, // data type is int
2049 VoLTE_Setting_Reg_Enable_HTTP_Digest = VoLTE_Setting_VoLTE_REG_Start_Code + 10, // Disable: 0, Enable: 1
2050 VoLTE_Setting_Reg_Auth_Name = VoLTE_Setting_VoLTE_REG_Start_Code + 11, // data type is string
2051 VoLTE_Setting_Reg_Auth_Password = VoLTE_Setting_VoLTE_REG_Start_Code + 12, // data type is string
2052 VoLTE_Setting_Reg_Specific_IPSec_Algo = VoLTE_Setting_VoLTE_REG_Start_Code + 13, // data type is int
2053 VoLTE_Setting_Reg_CONTACT_WITH_TRANSPORT = VoLTE_Setting_VoLTE_REG_Start_Code + 14,
2054 VoLTE_Setting_Reg_CONTACT_WITH_REGID = VoLTE_Setting_VoLTE_REG_Start_Code + 15,
2055 VoLTE_Setting_Reg_CONTACT_WITH_MOBILITY = VoLTE_Setting_VoLTE_REG_Start_Code + 16,
2056 VoLTE_Setting_Reg_CONTACT_WITH_EXPIRES = VoLTE_Setting_VoLTE_REG_Start_Code + 17,
2057 VoLTE_Setting_Reg_AUTHORIZATION_WITH_ALGO = VoLTE_Setting_VoLTE_REG_Start_Code + 18,
2058 VoLTE_Setting_Reg_REREG_IN_RAT_CHANGE = VoLTE_Setting_VoLTE_REG_Start_Code + 19,
2059 VoLTE_Setting_Reg_REREG_IN_OOS_END = VoLTE_Setting_VoLTE_REG_Start_Code + 20,
2060 VoLTE_Setting_Reg_DE_SUBSCRIBE = VoLTE_Setting_VoLTE_REG_Start_Code + 21,
2061 VoLTE_Setting_Reg_USE_SPECIFIC_IPSEC_ALGO = VoLTE_Setting_VoLTE_REG_Start_Code + 22,
2062 VoLTE_Setting_Reg_TRY_NEXT_PCSCF = VoLTE_Setting_VoLTE_REG_Start_Code + 23,
2063 VoLTE_Setting_Reg_DEREG_CLEAR_IPSEC = VoLTE_Setting_VoLTE_REG_Start_Code + 24,
2064 VoLTE_Setting_Reg_INITIAL_REG_WITHOUT_PANI = VoLTE_Setting_VoLTE_REG_Start_Code + 25,
2065 VoLTE_Setting_Reg_DEREG_RESET_TCP_CLIENT = VoLTE_Setting_VoLTE_REG_Start_Code + 26,
2066 VoLTE_Setting_Reg_TREG = VoLTE_Setting_VoLTE_REG_Start_Code + 27,
2067 VoLTE_Setting_Reg_REREG_23G4 = VoLTE_Setting_VoLTE_REG_Start_Code + 28,
2068 VoLTE_Setting_Reg_RESUB_23G4 = VoLTE_Setting_VoLTE_REG_Start_Code + 29,
2069 VoLTE_Setting_Reg_NOT_AUTO_REG_403 = VoLTE_Setting_VoLTE_REG_Start_Code + 30,
2070 VoLTE_Setting_Reg_CALL_ID_WITH_HOST_INREG = VoLTE_Setting_VoLTE_REG_Start_Code + 31,
2071 VoLTE_Setting_Reg_KEEP_ALIVE_MODE = VoLTE_Setting_VoLTE_REG_Start_Code + 32,
2072 VoLTE_Setting_Reg_TCP_CONNECT_MAX_TIME_INVITE = VoLTE_Setting_VoLTE_REG_Start_Code + 33,
2073 VoLTE_Setting_Reg_EMS_MODE_IND = VoLTE_Setting_VoLTE_REG_Start_Code + 34,
2074 VoLTE_Setting_Reg_CONTACT_WITH_ACCESSTYPE = VoLTE_Setting_VoLTE_REG_Start_Code + 35,
2075 VoLTE_Setting_Reg_WFC_WITH_PLANI = VoLTE_Setting_VoLTE_REG_Start_Code + 36,
2076 VoLTE_Setting_Reg_USE_UDP_ON_TCP_FAIL = VoLTE_Setting_VoLTE_REG_Start_Code + 37,
2077 VoLTE_Setting_Reg_IPSEC_FAIL_ALLOWED = VoLTE_Setting_VoLTE_REG_Start_Code + 38,
2078 VoLTE_Setting_Reg_CONTACT_WITH_VIDEO_FEATURE_TAG_IN_SUBSCRIBE = VoLTE_Setting_VoLTE_REG_Start_Code + 39,
2079 VoLTE_Setting_Reg_VIA_WITHOUT_RPORT = VoLTE_Setting_VoLTE_REG_Start_Code + 40,
2080 VoLTE_Setting_Reg_REG_ROUTE_HDR = VoLTE_Setting_VoLTE_REG_Start_Code + 41,
2081 VoLTE_Setting_Reg_VIA_URI_WITH_DEFAULT_PORT = VoLTE_Setting_VoLTE_REG_Start_Code + 42,
2082 VoLTE_Setting_Reg_NOTIFY_SMS_NOTIFY_DONE = VoLTE_Setting_VoLTE_REG_Start_Code + 43,
2083 VoLTE_Setting_Reg_EMERGENCY_USE_IMSI = VoLTE_Setting_VoLTE_REG_Start_Code + 44,
2084 VoLTE_Setting_Reg_CHECK_MSISDN = VoLTE_Setting_VoLTE_REG_Start_Code + 45,
2085 VoLTE_Setting_Reg_RETRY_INTERVAL_AFTER_403 = VoLTE_Setting_VoLTE_REG_Start_Code + 46,
2086 VoLTE_Setting_Reg_SUPPORT_THROTTLING_ALGO = VoLTE_Setting_VoLTE_REG_Start_Code + 47,
2087 VoLTE_Setting_Reg_REG_AFTER_NW_DEREG_60S = VoLTE_Setting_VoLTE_REG_Start_Code + 48,
2088 VoLTE_Setting_Reg_SUB_CONTACT_WITH_SIP_INSTANCE = VoLTE_Setting_VoLTE_REG_Start_Code + 49,
2089 VoLTE_Setting_Reg_STOP_REG_MD_LOWER_LAYER_ERR = VoLTE_Setting_VoLTE_REG_Start_Code + 50,
2090 VoLTE_Setting_Reg_REG_GRUU_SUPPORT = VoLTE_Setting_VoLTE_REG_Start_Code + 51,
2091
2092 /* ------------------------------------------------ */
2093 /* VoLTE SIP Settings */
2094 /* ------------------------------------------------ */
2095 VoLTE_Setting_VoLTE_SIP_Start_Code = 15000,
2096 VoLTE_Setting_SIP_T1_Timer = VoLTE_Setting_VoLTE_SIP_Start_Code + 1, // data type is int
2097 VoLTE_Setting_SIP_T2_Timer = VoLTE_Setting_VoLTE_SIP_Start_Code + 2, // data type is int
2098 VoLTE_Setting_SIP_T4_Timer = VoLTE_Setting_VoLTE_SIP_Start_Code + 3, // data type is int
2099 VoLTE_Setting_SIP_Keep_Alive = VoLTE_Setting_VoLTE_SIP_Start_Code + 4, // data type is int
2100 VoLTE_Setting_SIP_Force_Use_UDP = VoLTE_Setting_VoLTE_SIP_Start_Code + 5, // Disable: 0, Enable: 1
2101 VoLTE_Setting_SIP_TCP_On_Demand = VoLTE_Setting_VoLTE_SIP_Start_Code + 6, // Disable: 0, Enable: 1
2102 VoLTE_Setting_SIP_TCP_MTU_Size = VoLTE_Setting_VoLTE_SIP_Start_Code + 7, // data type is int
2103 VoLTE_Setting_SIP_Reg_Timestamp = VoLTE_Setting_VoLTE_SIP_Start_Code + 8, // data type is string, for WFC PLANI header
2104 VoLTE_Setting_SIP_Transaction_Timer = VoLTE_Setting_VoLTE_SIP_Start_Code + 9, // data type is int
2105 VoLTE_Setting_SIP_Registered_Timestamp = VoLTE_Setting_VoLTE_SIP_Start_Code + 10, // data type is string, for WFC PCNI header
2106 VoLTE_Setting_SIP_Cell_Camped_Timestamp = VoLTE_Setting_VoLTE_SIP_Start_Code + 11, // data type is string, for WFC PCNI header
2107
2108 /* ------------------------------------------------ */
2109 /* VoLTE USSD Settings */
2110 /* ------------------------------------------------ */
2111 VoLTE_Setting_VoLTE_USSD_Start_Code = 16000,
2112 VoLTE_Setting_USSD_NW_Timeout_Timer = VoLTE_Setting_VoLTE_USSD_Start_Code + 1, // data type is uint8 */
2113 VoLTE_Setting_USSD_Setup_Timeout_Timer = VoLTE_Setting_VoLTE_USSD_Start_Code + 2, // data type is uint8 */
2114 VoLTE_Setting_USSD_Capability = VoLTE_Setting_VoLTE_USSD_Start_Code + 3, // data type is uint8 */
2115};
2116
2117enum VoLTE_Event_MD_Lower_Layer_Err_e {
2118 VoLTE_Event_MD_Lower_Layer_Err_AC_Barred = 0,
2119 VoLTE_Event_MD_Lower_Layer_Err_NW_REJ_CONN = 1,
2120 VoLTE_Event_MD_Lower_Layer_Err_T3346_START = 2,
2121 VoLTE_Event_MD_Lower_Layer_Err_T3346_STOP = 3,
2122 VoLTE_Event_MD_Lower_Layer_Err_T3346_EXPIRY = 4,
2123 VoLTE_Event_MD_Lower_Layer_Err_CONN_FAI = 5,
2124 VoLTE_Event_MD_Lower_Layer_Err_T3525_START = 6,
2125 VoLTE_Event_MD_Lower_Layer_Err_T3540_START = 7,
2126
2127 VoLTE_Event_MD_Lower_Layer_Non_ESRFAIL_Err = 100,
2128 VoLTE_Event_MD_Lower_Layer_Non_ESRFAIL_Err_TAU_FAIL = 101,
2129 VoLTE_Event_MD_Lower_Layer_Non_ESRFAIL_Err_EPSFB_FAIL = 102,
2130
2131 /*add here*/
2132 VoLTE_Event_MD_Lower_Layer_Err_Max,
2133};
2134
2135enum VoLTE_Event_MD_Lower_Layer_TYPE_e {
2136 VoLTE_Event_MD_Lower_Layer_TYPE_HANDOVER = 0,
2137 VoLTE_Event_MD_Lower_Layer_TYPE_REDIRECTION =1
2138};
2139
2140enum VoLTE_Query_Type_e {
2141 VoLTE_Query_Cell_ID = 1, // current cell id
2142 VoLTE_Query_Call_State = 2, // current call state
2143};
2144
2145typedef enum
2146{
2147 IMS_CC_MO_DISCONNECT_CAUSE_NONE = 0,
2148 IMS_CC_MO_DISCONNECT_CAUSE_NO_COVERAGE,
2149 IMS_CC_MO_DISCONNECT_CAUSE_LOW_BATTERY,
2150 IMS_CC_MO_DISCONNECT_CAUSE_FORWARD,
2151 IMS_CC_MO_DISCONNECT_CAUSE_SPECIAL_HANGUP,
2152 IMS_CC_MO_DISCONNECT_CAUSE_607_UNWANTED,
2153 IMS_CC_MO_DISCONNECT_CAUSE_END
2154} ims_cc_mo_disconnect_cause_enum;
2155
2156typedef enum {
2157 IMCB_TRANSACTION_STATE_INIT = 0,
2158 IMCB_TRANSACTION_STATE_ALLOC,
2159} imcb_transaction_state_enum;
2160
2161/* IMCB FSM state */
2162typedef enum {
2163 IMCB_FSM_STATE_BEARER_DEACTIVE = 0,
2164 IMCB_FSM_STATE_BEARER_ACTIVATING,
2165 IMCB_FSM_STATE_PCSCF_ACTIVATING,
2166 IMCB_FSM_STATE_PCSCF_ACTIVE,
2167 IMCB_FSM_STATE_CONNECTED,
2168 IMCB_FSM_STATE_REGISTERED,
2169 IMCB_FSM_STATE_BEARER_DEACTIVATING
2170} imcb_fsm_state_enum;
2171
2172typedef enum {
2173 IMCB_PCSCF_TYPE_NONE,
2174 IMCB_PCSCF_TYPE_DHCP,
2175 IMCB_PCSCF_TYPE_PCO,
2176 IMCB_PCSCF_TYPE_SIM,
2177 IMCB_PCSCF_TYPE_MO,
2178 IMCB_PCSCF_TYPE_MANUAL,
2179
2180 IMCB_PCSCF_TYPE_END
2181} imcb_pcscf_type_enum;
2182
2183typedef enum imc_pcscf_acquire_method_enum {
2184 IMC_PCSCF_ACQUIRE_BY_NONE = 0,
2185 /** acquire *P-CSCF* address by query type III **SIM**. */
2186 IMC_PCSCF_ACQUIRE_BY_SIM = 1,
2187 /** acquire *P-CSCF* address by type IV **Management Object**. */
2188 IMC_PCSCF_ACQUIRE_BY_MO = 2,
2189 /** acquire *P-CSCF* address by type II **ESM/SM PCO**. */
2190 IMC_PCSCF_ACQUIRE_BY_PCO = 3,
2191 /** acquire *P-CSCF* address by type I using **DHCPv4(?)**. */
2192 IMC_PCSCF_ACQUIRE_BY_DHCPv4 = 4,
2193 /** acquire *P-CSCF* address by type I using **DHCPv6**. */
2194 IMC_PCSCF_ACQUIRE_BY_DHCPv6 = 5,
2195 /** acquire *P-CSCF* address by using **User Configure **. */
2196 IMC_PCSCF_ACQUIRE_BY_MANUAL = 6,
2197 /** **end** of enum. */
2198 IMC_PCSCF_ACQUIRE_METHOD_END
2199} imc_pcscf_acquire_method_enum;
2200
2201
2202typedef enum{
2203 IMC_PS_CAUSE_NONE = 0,
2204 /* SM/ESM/5GSM cause - TS24.301/24.501 Annex B */
2205 IMC_PS_CAUSE_OPERATOR_DETERMINED_BARRING = 8,
2206 IMC_PS_CAUSE_INSUFFICIENT_RESOURCES = 26,
2207 IMC_PS_CAUSE_UNKNOWN_OR_MISSING_ACCESS_POINT_OR_DATA_NETWORK_NAME = 27,
2208 IMC_PS_CAUSE_UNKNOWN_PDN_OR_PDU_SESSION_TYPE = 28,
2209 IMC_PS_CAUSE_USER_AUTHENTICATION_FAILED = 29,
2210 IMC_PS_CAUSE_REQUEST_REJECTED_BY_SERVING_GW_OR_PDN_GW = 30,
2211 IMC_PS_CAUSE_REQUEST_REJECTED_UNSPECIFIED = 31,
2212 IMC_PS_CAUSE_SERVICE_OPTION_NOT_SUPPORTED = 32,
2213 IMC_PS_CAUSE_REQUESTED_SERVICE_OPTION_NOT_SUBSCRIBED = 33,
2214 IMC_PS_CAUSE_SERVICE_OPTION_TEMPORARILY_OUT_OF_ORDER = 34,
2215 IMC_PS_CAUSE_PTI_ALREADY_IN_USE = 35,
2216 IMC_PS_CAUSE_REGULAR_DEACTIVATION = 36,
2217 IMC_PS_CAUSE_EPS_QOS_NOT_ACCEPTED = 37,
2218 IMC_PS_CAUSE_NETWORK_FAILURE = 38,
2219 IMC_PS_CAUSE_REACTIVATION_REQUESTED = 39,
2220 IMC_PS_CAUSE_SEMANTIC_ERROR_IN_THE_TFT_OPERATION = 41,
2221 IMC_PS_CAUSE_SYNTACTICAL_ERROR_IN_THE_TFT_OPERATION = 42,
2222 IMC_PS_CAUSE_INVALID_EPS_BEARER_OR_PDU_SESSION_IDENTITY = 43,
2223 IMC_PS_CAUSE_SEMANTIC_ERRORS_IN_PACKET_FILTER = 44,
2224 IMC_PS_CAUSE_SYNTACTICAL_ERROR_IN_PACKET_FILTER = 45,
2225 IMC_PS_CAUSE_OUT_OF_LAND_SERVICE_AREA = 46,
2226 IMC_PS_CAUSE_PTI_MISMATCH = 47,
2227 IMC_PS_CAUSE_LAST_PDN_DISCONNECTION_NOT_ALLOWED = 49,
2228 IMC_PS_CAUSE_PDN_TYPE_IPV4_ONLY_ALLOWED = 50,
2229 IMC_PS_CAUSE_PDN_TYPE_IPV6_ONLY_ALLOWED = 51,
2230 IMC_PS_CAUSE_SINGLE_ADDRESS_BEARERS_ONLY_ALLOWED = 52,
2231 IMC_PS_CAUSE_ESM_INFORMATION_NOT_RECEIVED = 53,
2232 IMC_PS_CAUSE_PDN_CONNECTION_OR_PDU_SESSION_DOES_NOT_EXIST = 54,
2233 IMC_PS_CAUSE_MULTIPLE_PDN_CONNECTIONS_FOR_A_GIVEN_APN_NOT_ALLOWED = 55,
2234 IMC_PS_CAUSE_COLLISION_WITH_NETWORK_INITIATED_REQUEST = 56,
2235 IMC_PS_CAUSE_UNSUPPORTED_QCI_VALUE = 59,
2236 IMC_PS_CAUSE_BEARER_HANDLING_NOT_SUPPORTED = 60,
2237 IMC_PS_CAUSE_INSUFFICIENT_RESOURCES_FOR_SPECIFIC_SLICE_AND_DNN = 67,
2238 IMC_PS_CAUSE_NOT_SUPPORTED_SSC_MODE = 68,
2239 IMC_PS_CAUSE_INSUFFICIENT_RESOURCES_FOR_SPECIFIC_SLICE = 69,
2240 IMC_PS_CAUSE_MISSING_OR_UNKNOWN_DNN_IN_A_SLICE = 70,
2241 IMC_PS_CAUSE_INVALID_PTI_VALUE = 81,
2242 IMC_PS_CAUSE_MAX_DATA_RATE_PER_UE_FOR_USER_PLANE_INTGRITY_PROTECTION_IS_TO_LOW = 82,
2243 IMC_PS_CAUSE_SEMANTIC_ERROR_IN_THE_QOS_OPERATION = 83,
2244 IMC_PS_CAUSE_SYNTACTICAL_ERROR_IN_THE_QOS_OPERATION = 84,
2245 IMC_PS_CAUSE_SEMANTICALLY_INCORRECT_MESSAGE = 95,
2246 IMC_PS_CAUSE_INVALID_MANDATORY_INFORMATION = 96,
2247 IMC_PS_CAUSE_MESSAGE_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENTED = 97,
2248 IMC_PS_CAUSE_MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 98,
2249 IMC_PS_CAUSE_INFORMATION_ELEMENT_NON_EXISTENT_OR_NOT_IMPLEMENTED = 99,
2250 IMC_PS_CAUSE_CONDITIONAL_IE_ERROR = 100,
2251 IMC_PS_CAUSE_MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 101,
2252 IMC_PS_CAUSE_PROTOCO_ERROR_UNSPECIFIED = 111,
2253 IMC_PS_CAUSE_APN_RESTRICTION_VALUE_INCOMPATIBLE_WITH_ACTIVE_EPS_BEARER_CONTEXT = 112,
2254 IMC_PS_CAUSE_REQUEST_REJECTED_CORE_TX_FAILURE = 113,
2255
2256 /* WFC */
2257 IMC_PS_CAUSE_REMAP = 200,
2258
2259 /* C2K */
2260 IMC_PS_CAUSE_VSNCP_CONFIGURATION_FAILURE = 210,
2261 IMC_PS_CAUSE_IPV6_OBTAIN_FAILURE = 211,
2262 IMC_PS_CAUSE_VSNCP_TERMINATED = 212,
2263
2264 /* Internal reject cause */
2265 IMC_PS_CAUSE_INTERNAL_REJ_START = 220,
2266 IMC_PS_CAUSE_SINGLE_PDN_ACT_FAILED = IMC_PS_CAUSE_INTERNAL_REJ_START, //220
2267 IMC_PS_CAUSE_IMS_SERVICE_NOT_READY = IMC_PS_CAUSE_INTERNAL_REJ_START + 1, //221
2268 IMC_PS_CAUSE_TCM_ESM_DEATCH_REATTACH = IMC_PS_CAUSE_INTERNAL_REJ_START + 2, //222
2269 IMC_PS_CAUSE_IMS_SERVICE_NR_RECOVER = IMC_PS_CAUSE_INTERNAL_REJ_START + 3, //223
2270 IMC_PS_CAUSE_INTERNAL_REJ_END = IMC_PS_CAUSE_INTERNAL_REJ_START + 15, //235
2271
2272 /* IRAT */
2273 IMC_PS_CAUSE_IMS_BEARER_INTERRAT_HANDOVER = 250,
2274
2275 IMC_PS_CAUSE_END
2276}imc_ps_cause_enum;
2277
2278
2279typedef enum imcb_bearer_msg_cause_enum {
2280 IMCB_BR_MSG_CS_NONE,
2281
2282 IMCB_BR_MSG_CS_OK,
2283 IMCB_BR_MSG_CS_NEED_WAIT,
2284
2285 /* internal reject start */
2286 IMCB_BR_MSG_CS_REJ_START,
2287 IMCB_BR_MSG_CS_REJ_NO_FREE_TID,
2288 IMCB_BR_MSG_CS_REJ_NO_RESOURCE,
2289 IMCB_BR_MSG_CS_REJ_ERROR_PARM,
2290 IMCB_BR_MSG_CS_REJ_BY_NW_RETAIN_TMO,
2291 IMCB_BR_MSG_CS_REJ_BY_STATE_CONFLICT,
2292 IMCB_BR_MSG_CS_REJ_BY_BEARER_DEL,
2293 IMCB_BR_MSG_CS_REJ_BY_PS,
2294 IMCB_BR_MSG_CS_REJ_BY_SGN_MATCH_FAIL,
2295 IMCB_BR_MSG_CS_REJECT, /* need to be remove if reject is defined */
2296 IMCB_BR_MSG_CS_REJ_END,
2297 /* internal reject end */
2298
2299 IMCB_BR_MSG_CS_MOD_START,
2300 IMCB_BR_MSG_CS_MOD_BEARER_REMAP,
2301 IMCB_BR_MSG_CS_MOD_BEARER_HANDOVER,
2302 IMCB_BR_MSG_CS_MOD_BEARER_QOS,
2303 IMCB_BR_MSG_CS_MOD_END,
2304
2305
2306 IMCB_BR_MSG_CS_OTHER_FAIL,
2307
2308 IMCB_BR_MSG_CS_PS_CAUSE_START = (IMCB_BR_MSG_CS_OTHER_FAIL + IMC_PS_CAUSE_NONE),
2309 IMCB_BR_MSG_CS_PS_CAUSE_END = (IMCB_BR_MSG_CS_OTHER_FAIL + IMC_PS_CAUSE_END),
2310
2311 IMCB_BR_MSG_CS_LAST
2312} imcb_bearer_msg_cause_enum ;
2313
2314/** Bearer FSM states. */
2315typedef enum {
2316 IMCB_BR_FSM_STATE_INACTIVE = 0,
2317 /*IMCB_BR_FSM_STATE_ACTIVATING,*/
2318 IMCB_BR_FSM_STATE_ACTIVE,
2319 /*IMCB_BR_FSM_STATE_DEACTIVATING, */
2320 IMCB_BR_FSM_STATE_ALL
2321} imcb_bearer_fsm_state_enum;
2322
2323typedef enum imcb_bearer_msg_id_enum {
2324 IMCB_BR_MSG_ID_NONE,
2325
2326 IMCB_BR_MSG_ID_SGN_ACT_REQ,
2327 IMCB_BR_MSG_ID_SGN_ACT_CNF,
2328 IMCB_BR_MSG_ID_SGN_MOD_IND,
2329
2330 /* IMCB_BR_MSG_ID_SGN_MOD_IND, currently not used */
2331
2332 IMCB_BR_MSG_ID_SGN_DEACT_REQ,
2333 IMCB_BR_MSG_ID_SGN_DEACT_CNF,
2334 IMCB_BR_MSG_ID_SGN_DEACT_IND,
2335 IMCB_BR_MSG_ID_SGN_RAT_CHANGE_IND,
2336 IMCB_BR_MSG_ID_SGN_BID_CHANGE_IND,
2337
2338 IMCB_BR_MSG_ID_MEDIA_ADD_REQ,
2339 IMCB_BR_MSG_ID_MEDIA_ADD_CNF,
2340 /* IMCB_BR_MSG_ID_MEDIA_ADD_IND, currently not used */
2341
2342 IMCB_BR_MSG_ID_MEDIA_MOD_REQ,
2343 IMCB_BR_MSG_ID_MEDIA_MOD_CNF,
2344 IMCB_BR_MSG_ID_MEDIA_MOD_IND,
2345
2346 IMCB_BR_MSG_ID_MEDIA_DEL_REQ,
2347 IMCB_BR_MSG_ID_MEDIA_DEL_CNF,
2348 IMCB_BR_MSG_ID_MEDIA_DEL_IND,
2349
2350 /* internal triggerred
2351 IMCB_BR_MSG_ID_STREAM_MODIFY_REQ,
2352 IMCB_BR_MSG_ID_STREAM_DEACT_REQ,
2353 */
2354
2355 /* for Bearer filter */
2356 IMCB_BR_MSG_ID_SET_BEARER_FILTER_IND,
2357 /* for ip change */
2358 IMCB_BR_MSG_ID_IP_CHANGE_IND,
2359 /* irat event from imsm */
2360 IMCB_BR_MSG_ID_IRAT_WITHOUT_IP_CHANGE_IND,
2361
2362 IMCB_BR_MSG_ID_PCSCF_DIS_REQ,
2363 IMCB_BR_MSG_ID_PCSCF_DIS_CNF,
2364 IMCB_BR_MSG_ID_PCSCF_MOD_IND,
2365
2366 /* for UT used */
2367 IMCB_BR_CBK_ID_SGN_ACT_CNF,
2368 IMCB_BR_CBK_ID_SGN_DEACT_CNF,
2369 IMCB_BR_CBK_ID_MEDIA_ADD_CNF,
2370 IMCB_BR_CBK_ID_MEDIA_MOD_CNF,
2371 IMCB_BR_CBK_ID_MEDIA_DEL_CNF,
2372
2373 IMCB_BR_MSG_ID_END
2374} imcb_bearer_msg_id_enum;
2375
2376typedef enum {
2377 IMS_CAP_RAT_NONE = 0,
2378 IMS_CAP_RAT_LTE = 1,
2379 IMS_CAP_RAT_NR = 2,
2380 IMS_CAP_RAT_LTE_NR = 3,
2381 IMS_CAP_RAT_UTRAN = 4,
2382 IMS_CAP_RAT_UTRAN_LTE = 5,
2383 IMS_CAP_RAT_UTRAN_NR = 6,
2384 IMS_CAP_RAT_UTRAN_LTE_NR = 7,
2385} ims_cap_rat_enum;
2386
2387typedef enum
2388{
2389 LTECSR_RAT_LTE = 0,
2390 LTECSR_RAT_WIFI = 1,
2391 LTECSR_RAT_NR = 2,
2392 LTECSR_RAT_DATA = 3
2393}ltecsr_rat_enum;
2394
2395typedef enum {
2396 IMS_ENH_VOLTE_SI_OFF = 0,
2397 IMS_ENH_VOLTE_SI_LEVEL1,
2398 IMS_ENH_VOLTE_SI_LEVEL2,
2399 IMS_ENH_VOLTE_SI_LEVEL3,
2400 IMS_ENH_VOLTE_SI_LEVEL4,
2401 IMS_ENH_VOLTE_SI_NUM
2402}enh_volte_si_enum;
2403
2404typedef enum {
2405 IMS_CALL_STATUS_NONE =0,
2406 IMS_CALL_STATUS_CHANGE_TO_NORMAL_CALL =1,
2407}ims_enh_volte_si_call_status_enum;
2408
2409typedef enum imcb_pdn_req_type_enum{
2410 IMCB_PDN_REQ_TYPE_NONE = 0,
2411 IMCB_PDN_REQ_TYPE_EMERGENCY,
2412 IMCB_PDN_REQ_TYPE_INITIAL,
2413 IMCB_PDN_REQ_TYPE_HANDOVER,
2414 IMCB_PDN_REQ_TYPE_HANDOVER_OF_EMERGENCY,
2415 IMCB_PDN_REQ_TYPE_MAX
2416} imcb_pdn_req_type_enum;
2417
2418typedef enum imcb_ip_change_type_enum{
2419 IMCB_IP_CHANGE_TYPE_NONE = 0,
2420 IMCB_IP_CHANGE_TYPE_IPV4 = 1 << 0,
2421 IMCB_IP_CHANGE_TYPE_IPV6 = 1 << 1,
2422 IMCB_IP_CHANGE_TYPE_IPV4_IPV6 = IMCB_IP_CHANGE_TYPE_IPV4 | IMCB_IP_CHANGE_TYPE_IPV6,
2423 IMCB_IP_CHANGE_TYPE_MAX
2424} imcb_ip_change_type_enum;
2425
2426typedef enum {
2427 IMCB_PCSCF_LIST_NO_CHANGE,
2428 IMCB_PCSCF_LIST_CURRENT_ACTIVE_PCSCF_PRESENT,
2429 IMCB_PCSCF_LIST_CURRENT_ACTIVE_PCSCF_NOT_PRESENT,
2430 IMCB_PCSCF_LIST_NO_CHANGE_AT_FIRST_PLACE
2431} imcb_pcscf_list_change_enum;
2432
2433/******************************************************************************
2434 * Basic type definitions
2435 *****************************************************************************/
2436
2437#define IMCF_FALSE KAL_FALSE
2438#define IMCF_TRUE KAL_TRUE
2439
2440typedef kal_char imcf_char;
2441typedef kal_wchar imcf_wchar;
2442
2443typedef kal_bool imcf_bool;
2444typedef kal_int8 imcf_int8;
2445typedef kal_int16 imcf_int16;
2446typedef kal_int32 imcf_int32;
2447typedef kal_int64 imcf_int64;
2448
2449typedef kal_uint8 imcf_uint8;
2450typedef kal_uint16 imcf_uint16;
2451typedef kal_uint32 imcf_uint32;
2452typedef kal_uint64 imcf_uint64;
2453
2454typedef module_type imcf_user_spec_t;
2455
2456typedef imcf_uint8 imc_sim_id_t;
2457typedef imcf_uint8 imc_acct_id_t;
2458
2459typedef kal_uint16 imcf_bid_t;
2460
2461typedef enum {
2462 IMS_TYPE_H_PLMN = 0,
2463 IMS_TYPE_V_PLMN,
2464 IMS_TYPE_UNKNOWN,
2465} plmn_type_enum;
2466
2467/******************************************************************************
2468 * Struct
2469 *****************************************************************************/
2470// <pau> field of +ECPI
2471typedef struct
2472{
2473 kal_uint8 p_asserted_uri[IMS_P_ASSERT_URI_LEN];
2474} pau_info_struct;
2475
2476typedef struct {
2477 imcf_uint8 protocol_type;
2478 imcf_uint8 pad[1];
2479 imcf_uint16 port_num;
2480
2481 imcf_uint8 addr[IMC_IPV4_ADDR_LEN];
2482} imc_pcscf_ipv4_struct;
2483
2484typedef struct {
2485 imcf_uint8 protocol_type;
2486 imcf_uint8 pad[1];
2487 imcf_uint16 port_num;
2488
2489 imcf_uint8 addr[IMC_IPV6_ADDR_LEN];
2490} imc_pcscf_ipv6_struct;
2491
2492typedef struct {
2493 imcf_uint8 num_of_ipv4_pcscf_addr;
2494 imcf_uint8 pad[3];
2495
2496 imc_pcscf_ipv4_struct pcscf_v4[IMC_PCSCF_MAX_NUM];
2497
2498 imcf_uint8 num_of_ipv6_pcscf_addr;
2499 imcf_uint8 pad2[3];
2500
2501 imc_pcscf_ipv6_struct pcscf_v6[IMC_PCSCF_MAX_NUM];
2502} imc_pcscf_list_struct;
2503
2504typedef struct
2505{
2506 imcf_int8 mode_set[IMCB_IMC_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
2507
2508 imcf_uint8 is_octet_align; //0:default, bandwidth-efficient, 1: octet_align, 2: VzW for general
2509 imcf_uint8 mode_change_period; //the period should be N. but currently only 1(default) or 2.
2510 imcf_uint8 mode_change_cap; //1(default) or 2(recommended to support)
2511 imcf_uint8 mode_change_neighbor;//0(default) or 1
2512
2513 imcf_uint8 crc; //0 or 1. Not support yet.
2514 imcf_uint8 robust; //0 or 1. Not support yet.
2515 imcf_uint8 interleaving; //the maximum number of frame-blocks. 0: not present. Not support yet.
2516 imcf_uint8 channel; // the number of audio channel
2517
2518 imcf_uint16 max_red; // the maximum duration in ms. Not support yet.
2519 imcf_uint8 padding[2]; //< padding byte for 4bytes align
2520} imcb_imc_ltecsr_amr_info_struct;
2521
2522typedef struct
2523{
2524 imcf_int8 mode_set[IMCB_IMC_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
2525
2526 imcf_uint8 evs_support;
2527 imcf_uint8 evs_mode_switch;
2528 imcf_uint8 hf_only;
2529 imcf_uint8 dtx;
2530
2531 imcf_uint8 dtx_recv;
2532 imcf_uint8 ch_send;
2533 imcf_uint8 ch_recv;
2534 imcf_uint8 channel; // the number of audio channel
2535
2536 imcf_uint8 br[2]; ///< VoLTE_EVS_Codec_Bitrate_e
2537 imcf_uint8 br_send[2]; ///< VoLTE_EVS_Codec_Bitrate_e
2538 imcf_uint8 br_recv[2]; ///< VoLTE_EVS_Codec_Bitrate_e
2539 imcf_uint8 bw[2]; ///< VoLTE_EVS_Bandwidth_e
2540 imcf_uint8 bw_send[2]; ///< VoLTE_EVS_Bandwidth_e
2541 imcf_uint8 bw_recv[2]; ///< VoLTE_EVS_Bandwidth_e
2542
2543 imcf_uint8 mode_change_period; //the period should be N. but currently only 1(default) or 2.
2544 imcf_uint8 mode_change_cap; //1(default) or 2(recommended to support)
2545 imcf_uint8 mode_change_neighbor;//0(default) or 1
2546 imcf_int8 ch_aw_recv;
2547
2548 imcf_int8 cmr;
2549 imcf_uint8 padding[1]; ///< padding byte for 4 bytes align
2550 imcf_uint16 max_red; // the maximum duration in ms. Not support yet.
2551} imcb_imc_ltecsr_evs_info_struct;
2552
2553typedef struct {
2554 imcf_uint8 red_level;
2555 imcf_uint8 red_codec_list[IMCB_IMC_MAX_RED_LEVEL];
2556} imcb_imc_ltecsr_red_info_struct;
2557
2558typedef struct {
2559 imcf_uint8 payload_type; ///< payload type
2560 imcf_uint8 codec; ///< voip_codec_enum in codec_def.h
2561 imcf_uint8 clock_rate; ///< dynamic rate, clock rate, see VoLTE_Event_Clock_Rate_e
2562 imcf_uint8 g723_bitrate; ///< VoLTE_Event_G7231_BitRate_e
2563 imcf_uint8 is_g723_annexAYES; ///< G.723.1 annexA Yes:1, No:0
2564 imcf_uint8 is_g729_annexBYES; ///< G.729 annexB Yes:1, No:0
2565 imcf_uint8 ilbc_mode; ///< VoLTE_Event_iLBC_Rate_e
2566 imcf_uint8 text_cps; ///<
2567
2568 imcf_uint32 ptime; ///< play time
2569 imcf_uint32 max_ptime; ///< maximum play time
2570
2571 imcb_imc_ltecsr_amr_info_struct amr_fmtp;
2572 imcb_imc_ltecsr_evs_info_struct evs_fmtp;
2573 imcb_imc_ltecsr_red_info_struct red_fmtp;
2574} imcb_imc_ltecsr_media_codec_struct;
2575
2576typedef enum {
2577 IMC_SIP_CAUSE_UNSPECIFIED = 0,
2578 IMC_SIP_CAUSE_300_MULTIPLE_CHOICES = 300,
2579 IMC_SIP_CAUSE_301_MOVED_PERMANENTLY = 301,
2580 IMC_SIP_CAUSE_302_MOVED_TEMPORARILY = 302,
2581 IMC_SIP_CAUSE_305_USE_PROXY = 305,
2582 IMC_SIP_CAUSE_380_ALTERNATIVE_SERVICE = 380,
2583 IMC_SIP_CAUSE_400_BAD_REQUEST = 400,
2584 IMC_SIP_CAUSE_401_UNAUTHORIZED = 401,
2585 IMC_SIP_CAUSE_402_PAYMENT_REQUIRED = 402,
2586 IMC_SIP_CAUSE_403_FORBIDDEN = 403,
2587 IMC_SIP_CAUSE_404_NOT_FOUND = 404,
2588 IMC_SIP_CAUSE_405_METHOD_NOT_ALLOWED = 405,
2589 IMC_SIP_CAUSE_406_NOT_ACCEPTABLE = 406,
2590 IMC_SIP_CAUSE_407_PROXY_AUTHENTICATION_REQUIRED = 407,
2591 IMC_SIP_CAUSE_408_REQUEST_TIMEOUT = 408,
2592 IMC_SIP_CAUSE_410_GONE = 410,
2593 IMC_SIP_CAUSE_413_REQUEST_ENTITY_TOO_LARGE = 413,
2594 IMC_SIP_CAUSE_414_REQUEST_URI_TOO_LARGE = 414,
2595 IMC_SIP_CAUSE_415_UNSUPPORTED_MEDIA_TYPE = 415,
2596 IMC_SIP_CAUSE_416_UNSUPPORTED_URI_SCHEME = 416,
2597 IMC_SIP_CAUSE_420_BAD_EXTENSION = 420,
2598 IMC_SIP_CAUSE_421_EXTENSION_REQUIRED = 421,
2599 IMC_SIP_CAUSE_423_INTERVAL_TOO_BRIEF = 423,
2600 IMC_SIP_CAUSE_480_TEMPORARILY_NOT_AVAILABLE = 480,
2601 IMC_SIP_CAUSE_481_CALL_LEG_TRANSACTION_DOES_NOT_EXIST = 481,
2602 IMC_SIP_CAUSE_482_LOOP_DETECTED = 482,
2603 IMC_SIP_CAUSE_483_TOO_MANY_HOPS = 483,
2604 IMC_SIP_CAUSE_484_ADDRESS_INCOMPLETE = 484,
2605 IMC_SIP_CAUSE_485_AMBIGUOUS = 485,
2606 IMC_SIP_CAUSE_486_BUSY_HERE = 486,
2607 IMC_SIP_CAUSE_487_REQUEST_TERMINATED = 487,
2608 IMC_SIP_CAUSE_488_NOT_ACCEPTABLE_HERE = 488,
2609 IMC_SIP_CAUSE_491_REQUEST_PENDING = 491,
2610 IMC_SIP_CAUSE_493_UNDECIPHERABLE = 493,
2611 IMC_SIP_CAUSE_494_SECURITY_AGREEMENT_REQUIRED = 494,
2612 IMC_SIP_CAUSE_500_SERVER_INT_ERROR = 500,
2613 IMC_SIP_CAUSE_501_NOT_IMPLEMENTED = 501,
2614 IMC_SIP_CAUSE_502_BAD_GATEWAY = 502,
2615 IMC_SIP_CAUSE_503_SERVICE_UNAVAILABLE = 503,
2616 IMC_SIP_CAUSE_504_SERVER_TIME_OUT = 504,
2617 IMC_SIP_CAUSE_505_SIP_VERSION_NOT_SUPPORTED = 505,
2618 IMC_SIP_CAUSE_513_MESSAGE_TOO_LARGE = 513,
2619 IMC_SIP_CAUSE_580_PRECONDITION_FAILURE = 580,
2620 IMC_SIP_CAUSE_600_BUSY_EVERYWHERE = 600,
2621 IMC_SIP_CAUSE_603_DECLINE = 603,
2622 IMC_SIP_CAUSE_604_DOES_NOT_EXIST_ANYWHERE = 604,
2623 IMC_SIP_CAUSE_606_NOT_ACCEPTABLE = 606,
2624 IMC_SIP_CAUSE_700_INTERNAL_REQUEST_TIMEOUT = 700, //no sip error response 700 actually exist , this is for Internal timeout
2625 IMC_SIP_CAUSE_UNKNOWN = 800,
2626 IMC_SIP_CAUSE_MAX = IMC_SIP_CAUSE_UNKNOWN,
2627} imcb_imc_sip_cause_enum;
2628
2629typedef struct {
2630 imcf_uint8 len;
2631 imcf_uint8 pad[3];
2632 imcf_uint8 data[256];
2633} ims_sim_usim_data_struct;
2634
2635typedef struct {
2636 imcf_uint8 len;
2637 imcf_uint8 pad[3];
2638 imcf_uint8 data[256];
2639} ims_isim_data_struct;
2640
2641typedef struct volte_event_media_config {
2642 kal_uint8 local_address[VOLTE_IPADDR_LENGTH];
2643
2644 // RTP and RTCP session for audio and video
2645 kal_uint32 audio_b_as; // RTP bandwidth
2646 kal_uint32 audio_b_rs; // RTCP sender bandwidth
2647 kal_uint32 audio_b_rr; // RTCP receiver bandwidth
2648 kal_uint16 audio_remote_rtp_port;
2649 kal_uint16 audio_remote_rtcp_port;
2650 kal_uint16 audio_local_rtcp_port; ///< rtcp port number. we may configure it not rtp_port+1
2651 kal_uint16 audio_local_rtp_port; ///< rtp port number for media attribute in SDP message
2652 kal_uint8 audio_remote_rtp_address[VOLTE_IPADDR_LENGTH];
2653 kal_uint8 audio_remote_rtcp_address[VOLTE_IPADDR_LENGTH];
2654
2655 kal_uint32 video_b_as; // RTP bandwidth
2656 kal_uint32 video_b_rs; // RTCP sender bandwidth
2657 kal_uint32 video_b_rr; // RTCP receiver bandwidth
2658 kal_uint16 video_remote_rtp_port;
2659 kal_uint16 video_remote_rtcp_port;
2660 kal_uint16 video_local_rtcp_port; ///< rtcp port number. we may configure it not rtp_port+1
2661 kal_uint16 video_local_rtp_port; ///< rtp port number for media attribute in SDP message
2662 kal_uint8 video_remote_rtp_address[VOLTE_IPADDR_LENGTH];
2663 kal_uint8 video_remote_rtcp_address[VOLTE_IPADDR_LENGTH];
2664
2665 kal_uint8 remote_addr_type; ///< VoLTE_Event_IP_Version_e, apply to RTP audio & video session, RTCP audio & video session
2666 kal_uint8 audio_rtp_direction; ///< VoLTE_Event_RTP_DIRECTION_e
2667 kal_uint8 video_rtp_direction; ///< VoLTE_Event_RTP_DIRECTION_e
2668 // required by video codec
2669 kal_uint8 video_payload_type;
2670
2671 kal_uint32 rtcp_interval; ///< IMCB will get value from NVRAM. Used by data plane.
2672 kal_uint32 dscp; ///< IMCB will get value from NVRAM. Used by data plane.
2673 kal_uint32 video_dscp; ///< IMCB will get value from NVRAM. Used by data plane.
2674 kal_uint32 voice_soc_priority; ///< IMCB will get value from NVRAM. Used by data plane.
2675 kal_uint32 video_soc_priority; ///< IMCB will get value from NVRAM. Used by data plane.
2676
2677 // required by voice codec driver
2678 kal_uint8 audio_codec; ///< voip_codec_enum in codec_def.h
2679 kal_uint8 audio_payload_type; ///< payload type
2680 kal_uint8 audio_clock_rate; ///< dynamic rate, clock rate, see VoLTE_Event_Clock_Rate_e
2681 kal_uint8 is_dtmf; ///< is dtmf tone useing telephony event
2682
2683 kal_uint8 tele_evt_payload_type; ///< telephony event payload type
2684 kal_uint8 tele_evt_clock_rate; ///< telephony event rate
2685 kal_uint8 g723_bitrate; ///< VoLTE_Event_G7231_BitRate_e
2686 kal_uint8 is_g723_annexAYES; ///< G.723.1 annexA Yes:1, No:0
2687
2688 kal_uint8 is_g729_annexBYES; ///< G.729 annexB Yes:1, No:0
2689 kal_uint8 ilbc_mode; ///< VoLTE_Event_iLBC_Rate_e
2690 // required by RFC 6679 ECN
2691 kal_uint8 ecn_capable_rtp_method; ///< VoLTE_Event_ECN_RTP_METHOD_e
2692 kal_uint8 ecn_capable_ect; //0, 1
2693
2694 kal_uint32 ptime; ///< ptime of the codec
2695 kal_uint32 max_ptime; ///< max ptime is the buffer size for data plane. may not the same to ptime
2696 // required by AMR and AMR WB codec
2697 kal_int8 mode_set[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
2698
2699 kal_uint8 is_octet_align; ///< 0:default, bandwidth-efficient, 1: octet_align
2700 kal_uint8 mode_change_period; ///< the period should be N. but currently only 1(default) or 2.
2701 kal_uint8 mode_change_cap; ///< 1(default) or 2(recommended to support)
2702 kal_uint8 mode_change_neighbor;///< 0(default) or 1
2703
2704 kal_uint8 crc; ///< 0 or 1
2705 kal_uint8 robust; ///< 0 or 1
2706 kal_uint8 interleaving; ///< the maximum number of frame-blocks. 0: not present
2707 kal_uint8 channel; ///< the number of audio channel. must be 1 currently
2708 kal_uint16 max_red; // the maximum duration in ms
2709// required by RTCP FB
2710 kal_uint16 rtcp_rsize;
2711 kal_uint32 rtcpfb_type; ///< bitmap, VoLTE_Event_RTCP_FB_Type_e
2712 kal_uint32 network_id;
2713 kal_char id[VOLTE_MAX_SDP_EGBYTE_LENGTH];
2714 kal_char trr_int[VOLTE_MAX_SDP_EGBYTE_LENGTH];
2715 kal_char id_app_string[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
2716 kal_char ack_app_string[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
2717 kal_char nack_app_string[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
2718 kal_char tmmbr_string[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
2719 kal_char vbcm_string[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
2720 kal_char cname_string[VOLTE_MAX_CNAME_LENGTH];
2721
2722 /* EVS Support */
2723 kal_uint8 evs_support;
2724 kal_uint8 evs_mode_switch; ///< 0(default) or 1
2725 kal_uint8 hf_only; ///< 0(default) or 1
2726 kal_uint8 dtx; ///< 0 or 1(default)
2727 kal_uint8 dtx_recv; ///< 0 or 1(default)
2728 kal_uint8 pading[3];
2729 kal_uint8 br[2]; ///< VoLTE_EVS_Codec_Bitrate_e
2730 kal_uint8 br_send[2]; ///< VoLTE_EVS_Codec_Bitrate_e
2731 kal_uint8 br_recv[2]; ///< VoLTE_EVS_Codec_Bitrate_e
2732 kal_uint8 bw[2]; ///< VoLTE_EVS_Bandwidth_e
2733 kal_uint8 bw_send[2]; ///< VoLTE_EVS_Bandwidth_e
2734 kal_uint8 bw_recv[2]; ///< VoLTE_EVS_Bandwidth_e
2735 kal_uint8 ch_send; ///< number of channel number, 1 for default
2736 kal_uint8 ch_recv; ///< number of channel number, 1 for default
2737 kal_int8 ch_aw_recv; ///< -1, 0(default), 2, 3, 5, or 7
2738 kal_int8 cmr; ///< 0(default), 1, or -1
2739
2740 /* RTCP-XR */
2741 kal_uint16 rtcp_xr_format;
2742 kal_uint16 rtcp_xr_loss_maxsize;
2743 kal_uint16 rtcp_xr_dup_maxsize;
2744 kal_uint16 rtcp_xr_rcpt_maxsize;
2745 kal_uint16 rtcp_xr_rtt_maxsize;
2746 kal_uint8 rtcp_xr_rtt_mode;
2747 kal_uint8 rtcp_xr_stat_flags;
2748
2749 /* TTY */
2750 kal_uint32 text_b_as; // RTP bandwidth
2751 kal_uint32 text_b_rs; // RTCP sender bandwidth
2752 kal_uint32 text_b_rr; // RTCP receiver bandwidth
2753 kal_uint16 text_remote_rtp_port;
2754 kal_uint16 text_remote_rtcp_port;
2755 kal_uint16 text_local_rtcp_port; ///< rtcp port number. we may configure it not rtp_port+1
2756 kal_uint16 text_local_rtp_port; ///< rtp port number for media attribute in SDP message
2757 kal_int8 text_remote_rtp_address[IMCB_IMC_IPADDR_LENGTH];
2758 kal_int8 text_remote_rtcp_address[IMCB_IMC_IPADDR_LENGTH];
2759 kal_uint8 text_rtp_direction; ///< VoLTE_Event_RTP_DIRECTION_e
2760 kal_uint8 text_t140_payload_type; ///< payload type
2761 kal_uint8 text_red_payload_type; ///< payload type
2762 kal_uint8 text_red_level; ///< T140 Red level
2763 kal_uint8 text_cps; ///< T140 Red level
2764 /* ALTC ================================================================================*/
2765 kal_uint8 text_addr_type;
2766 kal_uint8 text_pad[2];
2767
2768 /* 1940 - 4 = 1936*/
2769 /* offline define feature flag */
2770 /* ex. used by ALTC feautre */
2771 kal_uint32 feature_flag;
2772
2773 /* ALTC 1936 - 16 = 1920 */
2774 /* ======================================================================================*/
2775 kal_uint8 text_local_address[IMCB_IMC_IPADDR_LENGTH];
2776 /* ======================================================================================*/
2777
2778 /* Asymmetric RTP payload type support 1920 - 4 - 736*8 = 1180 */
2779 kal_uint32 recv_codec_num;
2780 imcb_imc_ltecsr_media_codec_struct recv_codec_list[IMCB_IMC_MAX_RECV_CODEC_LIST_LENGTH];
2781
2782 kal_uint8 resv[1180];
2783} VoLTE_Event_Media_config_t,
2784volte_event_media_config_struct;
2785
2786typedef struct {
2787 imcf_uint32 type; // imcb_imc_tlv_para_enum
2788 imcf_uint32 len;
2789 imcf_uint8 value[0];
2790} imcb_imc_tlv_struct;
2791
2792typedef struct {
2793 LOCAL_PARA_HDR
2794 imcf_uint32 acct_id;
2795 imcf_uint64 ua_id; // reg client information
2796 imcf_uint32 total_len;
2797 imcf_uint32 total_num;
2798 imcf_uint32 tlv_dst;
2799 imcf_uint8 data[IMC_MAX_ILM_BUFFER_LEN-16]; // imcb_imc_tlv_struct
2800} imcb_imc_tlv_para_setting_ind_struct,
2801imcb_imc_tlv_para_setting_req_struct,
2802VoLTE_Event_Tlv_Para_Setting_t;
2803
2804typedef struct _VoLTE_Event_ATCmd_Relay_t {
2805 LOCAL_PARA_HDR
2806 imcf_uint32 account_id; // Account ID, normal account of the SIM
2807 imcf_uint64 ua_id; // reg client information
2808 imcf_uint32 atcmd_id; // VoLTE_ATCmd_Id_t
2809 imcf_uint32 pad; // pad
2810 imcf_uint32 pad2; // pad
2811 imcf_char cmdline[IMC_ATCMD_MAX_CMDLINE_LEN];
2812} VoLTE_Event_ATCmd_Relay_t;
2813
2814typedef enum {
2815 IMCB_IMC_TLV_TO_UNSPECIFIC = 0,
2816 IMCB_IMC_TLV_TO_UA = 1,
2817 IMCB_IMC_TLV_TO_IMCB = 2,
2818 IMCB_IMC_TLV_TO_IMC = 3
2819} imcb_imc_tlv_dst_enum;
2820
2821enum VoLTE_EIMSCAI_MODE_e {
2822 VoLTE_EIMSCAI_MODE_unspecific = 0,
2823 VoLTE_EIMSCAI_MODE_original_ims_call = 1,
2824 VoLTE_EIMSCAI_MODE_client_api = 2,
2825 VoLTE_EIMSCAI_MODE_enrich_calling = 3,
2826 VoLTE_EIMSCAI_MODE_max
2827};
2828
2829enum VoLTE_EIMSCAI_TYPE_e {
2830 VoLTE_EIMSCAI_TYPE_unspecific = 0,
2831 VoLTE_EIMSCAI_TYPE_header = 1,
2832 VoLTE_EIMSCAI_TYPE_location = 2,
2833 VoLTE_EIMSCAI_TYPE_max
2834};
2835
2836typedef enum _VoLTE_ATCmd_Id_e {
2837 VoLTE_ATCMD_NONE = 0,
2838 VoLTE_ATCMD_EIMSXUI = 1, /* +EIMSXUI:<account_id>,<broadcast_flag>,<xui_info> */
2839 VoLTE_ATCMD_EIMSEVTPKG = 2, /* +EIMSEVTPKG: <call_id>,<type>,<urc_index>,<total_urc_count>,<data> */
2840 VoLTE_ATCMD_EIMSGEO = 3, /* AT+EIMSGEO=/+EIMSGEO:<account_id>,<broadcast_flag>,<latitude>,<longitude>,<accurate>,<method>,<city>,<state>,<zip>,<country> */
2841 VoLTE_ATCMD_EIMSPDIS = 4, /* +EIMSPDIS: <transaction_id>,<em_id>,<method>,<nw_if_name[]> ; AT+EIMSPDIS= <transaction_id>,<method>,<is_success> */
2842 VoLTE_ATCMD_EIMSPCSCF = 5, /* AT+EIMSPCSCF= <transaction_id>,<method>, <protocol_type>, <port_num>, <addr> */
2843 VoLTE_ATCMD_PRTTCALL = 6, /* +PRTTCALL: <call_id>, <op> ; AT+PRTTCALL: <call_id>, <result> */
2844 VoLTE_ATCMD_DIGITLINE = 7, /* AT+DIGITLINE=<account_id>,<serial_number>,<is_logout>,<has_next>,<is_native>,<msisdn>,"<token>"
2845 * +DIGITLINE=<account_id>,<serial_number>,<msisdn_num>,<msisdn>,<is_active> */
2846 VoLTE_ATCMD_EIMSREGURI = 8, /* AT+EIMSREGURI=<account_id>,<profileURI>,<expiryTime>*/
2847 VoLTE_ATCMD_EIMSREGRESP = 9, /* AT+EIMSREGRESP=<account_id>,<profileURI>,<errorCode>,<errorMessage>"*/
2848 VoLTE_ATCMD_EIMSHEADER = 10, /* AT+EIMSHEADER=<call_id>,<header_type> */
2849 /* +EIMSHEADER:<call_id>,<header_type>,<totalcount>,<index>,"<value>"*/
2850 VoLTE_ATCMD_EIMSCALLMODE = 11, /* AT+EIMSCALLMODE=<op>*/
2851 VoLTE_ATCMD_ESIPREGINFO = 12, /* +ESIPREGINFO : <account_id>,<direction>,<SIP_msg_type>,<method>,<response_code>,"reason_phrase", <warn_text> */
2852 VoLTE_ATCMD_EIMSCAI = 13, /* AT+EIMSCAI: <mode>, <type>, <total>, <index>, <count>, [additional Info] */
2853 /* +EIMSCAI: <call_id>, <mode>, <type>, <total>, <index>, <count>, [additional Info] */
2854 VoLTE_ATCMD_ELOCAEN = 14, /* AT+ELOCAEN=<op> */
2855 VoLTE_ATCMD_CECN = 15, /* +CECN:<data_type> 0: updated MSD transfered; 1: request update MSD;
2856 * 100: request in-band MSD transfer; 101: request in-band MSD transfer for SRVCC; 102: MSD transfered fail*/
2857 VoLTE_ATCMD_ERCSMTINV = 16, /* +ERCSMTINV: <from number>, <total count>, <index>, <MT SIP INVITE> */
2858 VoLTE_ATCMD_MAX,
2859} VoLTE_ATCmd_Id_e, VoLTE_ATCmd_Id_t;
2860
2861/* location info */
2862typedef struct _VoLTE_Event_LBS_Location_ {
2863 kal_int32 lat[2]; /* [0..8388607], 23 bits field */
2864 kal_int32 lng[2]; /* [-8388608..8388607], 24 bits field */
2865 kal_int32 acc;
2866 kal_uint8 timestamp[VOLTE_MAX_TIME_STAMP_LENGTH]; // VOLTE_MAX_TIME_STAMP_LENGTH =32
2867} VoLTE_Event_LBS_Location_t;
2868
2869#define IMS_MAX_TIME_STAMP_LENGTH 32
2870typedef struct
2871{
2872 imcf_int32 lat[2]; //double lat
2873 imcf_int32 lng[2]; //double lng
2874 imcf_int32 acc;
2875 imcf_uint8 timestamp[IMS_MAX_TIME_STAMP_LENGTH]; //32
2876} imcb_imc_loc_ts_struct;
2877
2878typedef struct _VoLTE_Event_Setting_TLV_ {
2879 kal_int32 type; // VoLTE_Setting_Type_e
2880 kal_int32 len; // length of data
2881 kal_int32 value[0]; // data
2882} VoLTE_Event_Setting_TLV_t;
2883
2884typedef struct _VoLTE_Event_Setting_ {
2885 LOCAL_PARA_HDR
2886 kal_int32 id; ///< account id
2887 kal_uint64 ua_id; // reg client information
2888 kal_int32 len; ///< the length of data
2889 kal_int32 num; ///< the number of settings
2890#if defined(WIN32)
2891 kal_uint8 data[0]; ///< data
2892#else
2893 VoLTE_Event_Setting_TLV_t data[0]; ///< data
2894#endif
2895} VoLTE_Event_Setting_t;
2896
2897typedef struct _VoLTE_Event_MD_Lower_Layer_Err {
2898 LOCAL_PARA_HDR
2899 kal_int32 acct_id;
2900 kal_uint64 ua_id; // reg client information
2901 kal_uint32 call_id; // unused
2902 kal_uint32 cause; // VoLTE_Event_MD_Lower_Layer_Err_e
2903 kal_uint32 type; // VoLTE_Event_MD_Lower_Layer_TYPE_e
2904} VoLTE_Event_MD_Lower_Layer_Err_t;
2905
2906typedef struct _VoLTE_Event_Query_State {
2907 LOCAL_PARA_HDR
2908 kal_int32 id; // account id
2909 kal_uint64 ua_id; // reg client information
2910 kal_int32 type; // refer to ::VoLTE_Query_Type_e
2911} VoLTE_Event_Query_State_t;
2912
2913typedef struct _VoLTE_Event_Update_PLANI_Time {
2914 LOCAL_PARA_HDR
2915 kal_int32 id; // account id
2916 kal_uint64 ua_id; // reg client information
2917 kal_char timestamp[VOLTE_MAX_TIME_STAMP_LENGTH]; // VOLTE_MAX_TIME_STAMP_LENGTH =32
2918} VoLTE_Event_Update_PLANI_Time_t;
2919
2920typedef struct _VoLTE_AutoTesting_Info_ {
2921 LOCAL_PARA_HDR
2922 kal_uint32 id;
2923} VoLTE_AutoTesting_Info_t;
2924
2925typedef struct _VoLTE_Event_Logging_Event_Notify_ {
2926 LOCAL_PARA_HDR
2927 kal_uint32 id;
2928 kal_uint64 ua_id; // reg client information
2929 kal_uint32 type;
2930} VoLTE_Event_Logging_Event_Notify_t;
2931
2932typedef struct _VoLTE_Event_PS_DATA_OFF_Req_ {
2933 LOCAL_PARA_HDR
2934 kal_int32 id;
2935 kal_uint64 ua_id; // reg client information
2936 kal_int32 psdataoff_status;
2937 kal_int32 exempt_service;
2938} VoLTE_Event_PS_DATA_OFF_Req_t;
2939
2940typedef struct _VoLTE_Event_Network_Change_ {
2941 LOCAL_PARA_HDR
2942 kal_int32 id; // account id
2943 kal_uint64 ua_id; // reg client information
2944 kal_int32 state; // refer to ::VoLTE_Event_Network_State_e
2945 kal_int32 type; // refer to ::VoLTE_Event_Network_Type_e
2946 kal_int32 sub_type; // refer to ::VoLTE_Event_Network_Type_e (for VoData only)
2947 kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH]; // the current cell id from the modem PS
2948 VoLTE_Event_LBS_Location_t loc_info;
2949} VoLTE_Event_Network_Change_t;
2950
2951typedef struct _VoLTE_Event_Rat_Change_ {
2952 LOCAL_PARA_HDR
2953 kal_int32 id; // account id
2954 kal_uint64 ua_id; // reg client information
2955 kal_int32 type; // refer to ::VoLTE_Event_Network_Type_e
2956 kal_int32 sub_type; // refer to ::VoLTE_Event_Network_Type_e (for VoData only)
2957 kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH]; // current cell id from the modem PS
2958 VoLTE_Event_LBS_Location_t loc_info;
2959 kal_uint8 ssid[VOLTE_MAX_SSID_LENGTH];
2960 kal_int32 mtu;
2961} VoLTE_Event_Rat_Change_t;
2962
2963typedef struct _VoLTE_Event_3gpp_Rat_Change_ {
2964 LOCAL_PARA_HDR
2965 kal_int32 id; // account id
2966 kal_uint64 ua_id; // reg client information
2967 kal_int32 old_rat_type; // refer to ::VoLTE_Event_Network_Type_e
2968 kal_uint8 old_cell_id[VOLTE_MAX_CELL_ID_LENGTH]; // current cell id from the modem PS
2969 kal_int32 new_rat_type; // refer to ::VoLTE_Event_Network_Type_e
2970 kal_uint8 new_cell_id[VOLTE_MAX_CELL_ID_LENGTH]; // current cell id from the modem PS
2971 VoLTE_Event_LBS_Location_t loc_info;
2972} VoLTE_Event_3gpp_Rat_Change_t;
2973
2974typedef struct _VoLTE_Event_IP_Change_Notify {
2975 LOCAL_PARA_HDR
2976 kal_int32 acct_id;
2977 kal_uint64 ua_id; // reg client information
2978} VoLTE_Event_IP_Change_Notify_t;
2979
2980typedef struct _VoLTE_Event_iRat_without_IP_Change {
2981 LOCAL_PARA_HDR
2982 kal_int32 acct_id;
2983 kal_int32 old_rat_type; // refer to ::VoLTE_Event_Network_Type_e
2984 kal_int32 new_rat_type; // refer to ::VoLTE_Event_Network_Type_e
2985} VoLTE_Event_iRat_without_IP_Change_t;
2986
2987typedef struct _VoLTE_Event_Condition_Change_Notify {
2988 LOCAL_PARA_HDR
2989 kal_int32 acct_id;
2990 kal_uint64 ua_id; // reg client information
2991 kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH]; // the current cell id from the modem PS
2992 kal_int32 pdn_req_type; // refer to ::imcb_pdn_req_type_enum
2993 kal_int32 is_ip_change;
2994 kal_int32 is_pcscf_list_change; // refer to ::imcb_pcscf_list_change_enum
2995 VoLTE_Event_LBS_Location_t loc_info;
2996} VoLTE_Event_Condition_Change_Notify_t;
2997
2998typedef struct _VoLTE_Event_FF00H_Update {
2999 LOCAL_PARA_HDR
3000 kal_int32 acct_id;
3001 kal_uint64 ua_id; // reg client information
3002 kal_int32 ff00h;
3003} VoLTE_Event_FF00H_Update_t;
3004
3005typedef struct _VoLTE_Event_Timer {
3006 LOCAL_PARA_HDR
3007 kal_uint32 id;
3008 kal_uint32 timer_id;
3009 kal_uint32 timeout;
3010 kal_uint32 user_data;
3011} VoLTE_Event_Timer_t;
3012
3013typedef struct _VoLTE_Event_UA_Msg_Hdr {
3014 kal_int32 id; // account id
3015 kal_uint8 handshake; // 0: one-way, 1: two-way
3016 kal_uint8 resv[3];
3017 kal_uint8 data[0];
3018} VoLTE_Event_UA_Msg_Hdr_t ;
3019
3020typedef struct _VoLTE_Event_Geolocation_Info {
3021 LOCAL_PARA_HDR
3022 kal_uint32 type_id; // same as msg id
3023 kal_uint64 ua_id; // reg client information
3024 kal_char latitude[16];
3025 kal_char longitude[16];
3026 kal_char accuracy[8];
3027 kal_char method[16];
3028 kal_char city[32];
3029 kal_char state[32];
3030 kal_char zip[8];
3031 kal_char country_code[8];
3032 kal_char wifi_mac[20];
3033 kal_char confidence[8];
3034 kal_char altitude[16];
3035 kal_char accuracy_semiMajorAxis[16];
3036 kal_char accuracy_semiMinorAxis[16];
3037 kal_char accuracy_verticalAxis[16];
3038 VoLTE_Event_UA_Msg_Hdr_t ua_msg_hdr; /* contains a zero-length array, so must be in the end */
3039} VoLTE_Event_Geolocation_Info_t;
3040
3041typedef struct _VoLTE_Event_AP_Location_status {
3042 LOCAL_PARA_HDR
3043 kal_uint64 ua_id; // reg client information
3044 kal_int32 acct_id;
3045 kal_uint32 status;
3046} VoLTE_Event_AP_Location_status_t;
3047
3048/*
3049[+CLCC: <id1>,<dir>,<stat>,<mode>,<mpty>[,
3050<number>,<type>]
3051[<CR><LF>+CLCC: <id2>,<dir>,<stat>,<mode>,<mpty>[,
3052<number>,<type>]
3053*/
3054typedef struct _VoLTE_Event_List_one_call {
3055 kal_int32 acct_id;
3056 kal_uint32 call_id;
3057 kal_uint8 is_mt_call;
3058 kal_uint8 stat_of_the_call;
3059 kal_uint8 mode; // VOLTE_LIST_CALL_CNF:+CLCC VOLTE_CNF_REG_QUERY_CALL_STATE:VoLTE_Event_Call_Mode_e
3060 kal_uint8 is_conference_call;
3061 kal_char phone_number[VOLTE_MAX_URI_LENGTH];
3062 kal_uint32 is_international; // 0: no, 1: the phone number is a national number
3063} VoLTE_Event_List_one_call_t;
3064
3065enum VoLTE_Event_RTP_DIRECTION_e {
3066 VoLTE_Event_RTP_DIRECTION_INACTIVE = 0, ///< RTP session suspends. Inactive also is default value.
3067 VoLTE_Event_RTP_DIRECTION_SENDONLY, ///< Send only
3068 VoLTE_Event_RTP_DIRECTION_RECVONLY, ///< Receive only
3069 VoLTE_Event_RTP_DIRECTION_SENDRECV, ///< Send and Receive
3070 /*add here*/
3071 VoLTE_Event_RTP_DIRECTION_Max,
3072};
3073
3074enum VoLTE_Event_Feature_Sync_e {
3075 VoLTE_Event_Feature_Sync_Unknown = 0,
3076 VoLTE_Event_Feature_Sync_Reset_Throttling_Para_Criteria = 1,
3077 /*add here*/
3078 VoLTE_Event_Feature_Sync_Max,
3079};
3080
3081typedef struct _VoLTE_Event_Feature_Sync_ {
3082 LOCAL_PARA_HDR
3083 kal_uint32 id;
3084 kal_uint32 feature; //VoLTE_Event_Feature_Sync_e
3085} VoLTE_Event_Feature_Sync_t;
3086
3087typedef struct _VoLTE_Event_3gpp_OOS_Ind_ {
3088 LOCAL_PARA_HDR
3089 kal_int32 id; ///< the account id
3090 kal_uint64 ua_id; // reg client information
3091 kal_int32 oos_state; ///< VoLTE_Event_3gpp_OOS_State_e
3092 kal_int32 oos_timestamp; ///< 3gpp OOS unix timestamp
3093} VoLTE_Event_3gpp_OOS_Ind_t;
3094
3095typedef struct _VoLTE_Event_Notify {
3096 LOCAL_PARA_HDR
3097 kal_int32 acct_id;
3098 kal_uint64 ua_id; // reg client information
3099 kal_int32 data;
3100} VoLTE_Event_Notify_t;
3101
3102enum VoLTE_Event_Auth_Result_e {
3103 VoLTE_Event_Auth_Result_Accept = 0,
3104 VoLTE_Event_Auth_Result_Reject = 1,
3105 /*add here*/
3106 VoLTE_Event_Auth_Result_Max,
3107};
3108
3109typedef struct _VoLTE_Event_Reg_Auth_Resp {
3110 LOCAL_PARA_HDR
3111 kal_int32 id; // account id
3112 kal_int32 result; // refer to ::VoLTE_Event_Auth_Result_e
3113 kal_char nc[VOLTE_MAX_AUTH_NC]; // nc
3114 kal_char response[VOLTE_MAX_AUTH_RESPONSE]; // response
3115 kal_char auts[VOLTE_MAX_AUTH_AUTS]; // auts
3116 kal_char ck_esp[VOLTE_MAX_AUTH_CK]; // ck_esp for ipsec encryption key
3117 kal_char ik_esp[VOLTE_MAX_AUTH_IK]; // ik_esp for ipsec intergrity key
3118 kal_uint8 ck_bin[IMC_MAX_CK_LEN];
3119 kal_uint8 ik_bin[IMC_MAX_IK_LEN];
3120 kal_uint8 ck_len;
3121 kal_uint8 ik_len;
3122 kal_uint32 user_data; // user data for UA
3123} VoLTE_Event_Reg_Auth_Resp_t;
3124
3125typedef struct {
3126 LOCAL_PARA_HDR
3127 kal_uint32 acct_id;
3128 kal_uint32 sys_time[2]; ///< system time, in ms
3129 kal_uint8 src_ip[VOLTE_MAX_ADDRESS_LENGTH]; ///< SIP message source IP addr
3130 kal_uint8 dst_ip[VOLTE_MAX_ADDRESS_LENGTH]; ///< SIP message destination IP addr
3131 kal_uint32 direction; ///< refer to ::ims_dbg_direction_enum
3132 kal_uint32 transaction_id; ///< map to ts_id of transaction_layer
3133 kal_uint32 transport_protocol; ///< refer to ::ims_dbg_transport_enum
3134 kal_uint32 msg_type; ///< refer to ::ims_dbg_msg_type_enum
3135 kal_uint32 method_type; ///< refer to ::ims_dbg_method_enum
3136 kal_uint32 cseq; ///< cseq
3137 kal_int32 network_id; ///< network id
3138 kal_uint32 access_rat; ///< access RAT
3139 kal_uint16 rsp_code; ///< SIP response code
3140 kal_char request_line[VOLTE_MAX_REQUEST_LINE_LENGTH]; ///< First Line of a SIP message (Request-Line/Status-Line)
3141 kal_uint8 call_id[VOLTE_MAX_CALL_ID_LENGTH]; ///< call id
3142 kal_char reason_text[VOLTE_MAX_REASON_TEXT_LENGTH]; ///< reason header field
3143 kal_char warning_text[VOLTE_MAX_WARNING_TEXT_LENGTH]; ///< warning header field
3144 kal_char user_agent_text[VOLTE_MAX_USER_AGENT_LENGTH]; ///< user agent header field
3145 kal_char codec_info[VOLTE_MAX_CODEC_LIST_LENGTH]; ///< codec list
3146 kal_uint16 audio_port; ///< audio port number
3147 kal_uint16 video_port; ///< video port number
3148 kal_uint16 audio_as; ///< audioAS
3149 kal_uint16 video_as; ///< videoAS
3150 kal_uint16 session_as; ///< sessionAS
3151 kal_uint16 sip_msg_len; ///< SIP msg length
3152 kal_uint8 sip_msg_data[0]; ///< dynamic buffer for SIP msg
3153} ims_dbg_sip_info_ind_struct,
3154sip_dbg_sip_info_ind_struct;
3155
3156typedef struct {
3157 LOCAL_PARA_HDR
3158 kal_uint32 is_acct_id_valid;
3159 kal_uint32 acct_id;
3160
3161 kal_uint32 is_emergency_type_valid;
3162 kal_uint32 emergency_type;
3163
3164 kal_uint32 is_reg_state_valid;
3165 kal_uint32 reg_state;
3166
3167 kal_uint32 is_private_uid_valid;
3168 kal_uint8 private_uid[VOLTE_MAX_REG_UID_LENGTH];
3169
3170 kal_uint32 is_public_uid_valid;
3171 kal_uint8 public_uid[VOLTE_MAX_REG_UID_LENGTH];
3172
3173 kal_uint32 is_associated_uri_valid;
3174 kal_uint8 associated_uri[VOLTE_MAX_ASSOCIATED_URI];
3175
3176 kal_uint32 is_em_reg_timestamp_valid;
3177 kal_uint8 em_reg_timestamp[VOLTE_MAX_TIME_STAMP_LENGTH];
3178
3179 kal_uint32 is_reg_expires_valid;
3180 kal_uint32 reg_expires;
3181
3182/** Removal of IPSEC Attribute
3183 * ipsec_status not used or set in REG UA,
3184 * and not consistent with the interface of
3185 * em_imc_reg_info_ind_struct in em_imc_public_struct.h
3186 *
3187 * the change also makes the interface match the EM document
3188 **/
3189#if 0
3190/* under construction !*/
3191/* under construction !*/
3192#endif
3193
3194 kal_uint32 is_ems_mode_valid;
3195 kal_uint32 ems_mode;
3196
3197 kal_uint32 is_last_sip_cause_valid;
3198 kal_uint32 last_sip_cause;
3199
3200 kal_uint32 is_att_dm_type_valid;
3201 kal_uint32 att_dm_type;
3202
3203
3204 kal_uint32 is_att_reg_type_valid;
3205 kal_uint32 att_reg_type;
3206
3207 kal_uint32 is_att_direction_valid;
3208 kal_uint32 att_direction;
3209
3210 kal_uint32 is_att_call_id_valid;
3211#define _SIP_MSG_MAX_EM_CALLID_LEN 100
3212 kal_uint8 att_call_id[_SIP_MSG_MAX_EM_CALLID_LEN];
3213
3214 kal_uint32 is_att_request_uri_valid;
3215 kal_uint8 att_request_uri[VOLTE_MAX_URI_LENGTH];
3216
3217 kal_uint32 is_att_to_valid;
3218 kal_uint8 att_to[VOLTE_MAX_URI_LENGTH];
3219
3220 kal_uint32 is_att_reg_state_valid;
3221 kal_uint32 att_reg_state;
3222
3223 kal_uint32 is_att_reg_result_valid;
3224 kal_uint32 att_reg_result;
3225} ims_dbg_em_reg_info_ind_struct;
3226
3227
3228
3229enum VoLTE_Stack_IPSec_Encry_Algo_e {
3230 VoLTE_Stack_IPSec_Encry_Algo_NULL = 0,
3231 VoLTE_Stack_IPSec_Encry_Algo_3DES_CBC = 1,
3232 VoLTE_Stack_IPSec_Encry_Algo_AES_CBC = 2
3233};
3234
3235enum VoLTE_Stack_IPSec_Integrity_Algo_e {
3236 VoLTE_Stack_IPSec_Integrity_Algo_HMAC_MD5 = 0,
3237 VoLTE_Stack_IPSec_Integrity_Algo_HMAC_SHA1 = 1
3238};
3239
3240typedef struct _VoLTE_Event_UA_State_ {
3241 LOCAL_PARA_HDR
3242 kal_uint32 conn_info; ///< REG connection information
3243 kal_uint8 ua_type; ///< UA type
3244 kal_uint8 ua_enabled; ///< UA enabled
3245} VoLTE_Event_UA_State_t;
3246
3247/* Teardown Flow for IMCB/REG State un-sync */
3248typedef struct {
3249 LOCAL_PARA_HDR
3250 kal_int32 id; // account id
3251 kal_int32 ua_id; // reg client information
3252 kal_int32 imcb_current_state; // refer to ::imcb_fsm_state_enum
3253 kal_int32 receiving_ua_state; // refer to ::VoLTE_Event_Reg_State_e
3254} imsua_imcb_unexpected_state_ind_struct;
3255
3256typedef imsua_imcb_unexpected_state_ind_struct imsua_ims_stack_unexpected_state_req_struct;
3257
3258/* REGUA-IMC MSG_ID_REGUA_IMC_REMAIN_TIME_IND */
3259typedef struct {
3260 LOCAL_PARA_HDR
3261 kal_uint8 rereg_flag; // send rereg_time or not
3262 kal_int32 rereg_remain_time; // rereg_time
3263 kal_uint8 resub_flag; // send resub_time or not
3264 kal_int32 resub_remain_time; // resub_time
3265} regua_imc_remain_time_ind_struct;
3266
3267// Constant
3268#define MAX_CC_CDU_URI_LEN MAX_CC_ATD_NUM_LEN
3269#define MAX_CC_ECPI_NUM_LEN MAX_CC_ATD_NUM_LEN
3270#define MAX_CC_EAIC_NUM_LEN MAX_CC_ATD_NUM_LEN
3271
3272#define IMS_MAX_CALL_NUM 7
3273#define IMS_MAX_CONFERENCE_CALL_NUM 5
3274#define IMS_MAX_CALL_NUM_IN_CONF 5
3275#define MAX_SS_NOTIFY_DATA_LEN 512
3276
3277#define IMS_USSD_MAX_MSG_LEN (1000)
3278#define IMS_USSD_LANGUANGE_LEN (32)
3279
3280typedef enum
3281{
3282 IMS_CALL_CATEGORY_NORMAL = 0,
3283 IMS_CALL_CATEGORY_EMERGENCY
3284} ims_call_category_enum;
3285
3286typedef enum
3287{
3288 IMS_CC_RESULT_SUCCESS = 0,
3289 IMS_CC_RESULT_FAILURE,
3290 IMS_CC_RESULT_INVALID
3291} ims_cc_result_enum;
3292
3293typedef enum
3294{
3295 // Source: UA
3296 IMS_CC_CAUSE_NORMAL = 0, /* receive BYE request, MO hangup, or User reject to receive the all. mapping to CS NORMAL_CLEARING = 16. */
3297 IMS_CC_CAUSE_ABNORMAL, /* memory allocation failed, or no resource for call session in the very first begin!!! VDM can require CS to make call, mapping to CS RESOURCE_UNAVAILABLE = 47*/
3298 IMS_CC_CAUSE_NONUMBER, /* no dialing number for MO call. mapping to CS Unassigned/Unobtainable number, VDM can require CS to make call. UNOBTAINABLE_NUMBER = 1*/
3299 IMS_CC_CAUSE_UNREGISTERED, /* account is not registered, VDM can require CS to make call, mapping to CS NORMAL_UNSPECIFIED = 31*/
3300 IMS_CC_CAUSE_DISCONNECT, /* register state go to disconnect state, mapping to CS BEARER_NOT_AVAIL = 58, play congestion tone*/
3301 IMS_CC_CAUSE_BECANCEL, /* we cancel the call, which is receive MO_HANGUP_REQ from AP side. Mapping to CS_NORMAL_CLEANING = 16*/
3302 IMS_CC_CAUSE_BEREJECT, /* receive 4xx,5xx,6xx from the peer side to cancel request, mapping to CS USER_BUSY = 17, play busy tone*/
3303 IMS_CC_CAUSE_BEREJECT_380, /* receive 380 alternative service, mapping to CS SERVICE_NOT_AVAILABLE = 63. VDM can require CS to make call */
3304 IMS_CC_CAUSE_BEREJECT_380_EMERGENCY_TO_CS, /* receive 380 alternative service, mapping to CS SERVICE_NOT_AVAILABLE = 63. VDM can require CS to make call */
3305 IMS_CC_CAUSE_BEREJECT_380_EMERGENCY_REREG, /* receive 380 alternative service with reason, mapping to CS SERVICE_NOT_AVAILABLE = 63. VDM can require CS to make call */
3306 IMS_CC_CAUSE_BEREJECT_380_EMERGENCY_TO_NORMAL_CS, /* receive 380 alternative service, mapping to CS SERVICE_NOT_AVAILABLE = 63. VDM can require CS to make a normal call */
3307 IMS_CC_CAUSE_BEREJECT_480, /* receive 480, mapping to CS TEMPORARY_FAILURE = 41, play congestion tone*/
3308 IMS_CC_CAUSE_BEREJECT_503, /* receive 503 Service Unavailable, retry-after time period is reported. In this time period, UE cannot use VoLTE to make call. mapping to CS SERVICE_NOT_AVAILABLE = 63.*/
3309 IMS_CC_CAUSE_TX_TIMEOUT, /* receive internal error from SIPTX, or AP side do not send confirmation for this MT call until we timeout, we abort the MT call presentation. mapping to CS SERVICE_NOT_AVAILABLE = 63.*/
3310 IMS_CC_CAUSE_NO_PRIVACY, /* network cannot support privacy service when user requires critical level. mapping to CS BEARER_NOT_AVAIL = 58, play congestion tone */
3311 IMS_CC_CAUSE_PRECONDFAIL, /* receive 580 precondition failure, mapping to CS BEARER_NOT_AVAIL = 58, play congestion tone*/
3312 IMS_CC_CAUSE_SECONDCALL, /* receive second call request, VDM can have its policy, mapping to CS NORMAL_UNSPECIFIED = 31*/
3313 IMS_CC_CAUSE_NOMEDIACONTENT, /* peer side do not provide SDP for media content or receive 488, mapping to CS QOS_NOT_AVAIL = 49, play congestion tone*/
3314 IMS_CC_CAUSE_INVALIDMSG, /*SIP message is not valid, so that the related SS command cannot be executed. This happens in SS function. mapping to CS FACILITY_REJECTED = 29. no tone.*/
3315 IMS_CC_CAUSE_INVALIDCMD, /*The command cannot be executed since no related call session is existed. This happens in SS function. cannot mapping to CS, AP side require to send 0. no tone.*/
3316 IMS_CC_CAUSE_INVALIDIDX, /* cannot find the acct_id or call_id in the Request command, we send Confirmation with failure result and this cause. mapping to CS NORMAL_UNSPECIFIED = 31 */
3317 IMS_CC_CAUSE_SRVCC, /* Add for SRVCC, mapping to CS NORMAL_UNSPECIFIED = 31 */
3318 IMS_CC_CAUSE_FACILITY_REJECTED, /* receive 504 with XML body for Registration Restoration. Mapping to CS FACILILITY_REJECTED = 29 */
3319 IMS_CC_CAUSE_DEDICATED_BEARER_TIMEOUT, /* for MO call, send INVITE but no response and timeout, send indication to VDM and VDM can use CS (TMO, CMCC requirement) */
3320 IMS_CC_CAUSE_GENERIC_RETRY_CS,
3321 IMS_CC_CAUSE_GENERIC_NO_RETRY,
3322 IMS_CC_CAUSE_GENERIC_RETRY_IMS_CS,
3323 IMS_CC_CAUSE_ABORTED,
3324 IMS_CC_CAUSE_TIMER_B_EXPIRY,
3325 IMS_CC_CAUSE_ECT_TIMEOUT,
3326 IMS_CC_CAUSE_TIMER_VZW_EXPIRY,
3327 IMS_CC_CAUSE_AC_BARRED,
3328 IMS_CC_CAUSE_NW_REJ_CONN,
3329 IMS_CC_CAUSE_BEREJECT_503_OUTAGE_TEXT,
3330 IMS_CC_CAUSE_GENERIC_CHANGE_PCSCF,
3331 IMS_CC_CAUSE_RTT_EMC_FAIL,
3332 IMS_CC_CAUSE_BEREJECT_380_EMERGENCY_NORMAL_CS_TO_IMS, /* receive 380 alternative service, VDM can require CS to make a normal CS call or new IMS call */
3333 IMS_CC_CAUSE_BEREJECT_380_EMERGENCY_ACTION_ELEM_UNKNOWN, /* receive 380 alternative service, without contact header, XML type is emergency but unknown or missing action element. */
3334 IMS_CC_CAUSE_RETRY_IMS_VIDEO_TO_VOICE,
3335 IMS_CC_CAUSE_NO_RETRY_BAR_IMS, /*Huawei's requirement, bar IMS for some specific scenarios, then VDM will only try CS during a time period*/
3336 IMS_CC_CAUSE_BEREJECT_380_FLIGHTMODE_CS, /* For Claro requirement , UI should pop-up message when receive 380 alternative service during FlightMode, mapping to CS SERVICE_NOT_AVAILABLE = 380. Other behavior is same as Bereject_380 (cause = 7)*/
3337 IMS_CC_CAUSE_UA_MAX,
3338
3339 // Source: IMC
3340 IMS_CC_CAUSE_UNAVAILABLE_OF_CALLS, /* unavailable of IMS Voice Service */
3341 IMS_CC_CAUSE_EMERG_REG_TIMEOUT, /* AT&T <CDR-LTE-2424>, CS domain search after emerg-reg-timer expires */
3342 IMS_CC_CAUSE_RAT_MISMATCH,
3343 IMS_CC_CAUSE_RECOVERY_FOR_IMS_REG,
3344 // Do not assign 0xC8 for new error code because it is used by VDM_CC_CAUSE_RESEL_IMS_FOR_ECC for VDM/L4 workaround
3345
3346 IMS_CC_CAUSE_MAX
3347} ims_cc_cause_enum;
3348
3349typedef enum
3350{
3351 IMS_CC_EAIC_ALLOWED = 0,
3352 IMS_CC_EAIC_NOT_ALLOWED
3353} ims_cc_eaic_result_enum;
3354
3355typedef enum
3356{
3357 IMS_CC_MT_NORMAL = 0,
3358 IMS_CC_MT_SSAC_BARRING
3359} ims_cc_mt_reason_enum;
3360
3361typedef enum
3362{
3363 IMS_CALL_RELATED_SS_TYPE_REL_HELD_OR_UDUB, // AT+CHLD=0
3364 IMS_CALL_RELATED_SS_TYPE_REL_ACTIVE_AND_ACCEPT, // AT+CHLD=1
3365 IMS_CALL_RELATED_SS_TYPE_REL_SPECIFIC_CALL, // AT+CHLD=1x
3366 IMS_CALL_RELATED_SS_TYPE_HOLD_ACTIVE_AND_ACCEPT, // AT+CHLD=2
3367 IMS_CALL_RELATED_SS_TYPE_HOLD_ACTIVE_EXCEPT_SPECIFIC_CALL, // AT+CHLD=2x
3368 IMS_CALL_RELATED_SS_TYPE_ADD_HELD_CALL, // AT+CHLD=3
3369 IMS_CALL_RELATED_SS_TYPE_EXPLICIT_CALL_TRANSFER, // AT+CHLD=4
3370 IMS_CALL_RELATED_SS_TYPE_ACTIVATE_CCBS_CALL, // AT+CHLD=5
3371 IMS_CALL_RELATED_SS_TYPE_REL_ALL, // AT+CHLD=6
3372 IMS_CALL_RELATED_SS_TYPE_REL_CALL_REJECT, // AT+CHLD=8
3373 IMS_CALL_RELATED_SS_TYPE_VT_FALL_TO_VOICE, // AT+CHLD=9x
3374 IMS_CALL_RELATED_SS_TYPE_INVALID
3375} ims_call_related_ss_type_enum;
3376
3377typedef enum
3378{
3379/* values 1-127 can be found in 3GPP TS 24.008 Annex H. */
3380 /* H.1.1 Cause No. 1 "unassigned (unallocated) number" */
3381 IMS_EXT_ERROR_REPORT_UNOBTAINABLE_NUMBER = 1,
3382 /* H.1.2 Cause No. 3 "no route to destination" */
3383 IMS_EXT_ERROR_REPORT_NO_ROUTE_TO_DEST = 3,
3384 /* H.1.3 Cause No. 6 "channel unacceptable" */
3385 IMS_EXT_ERROR_REPORT_CHANNEL_UNACCEPTABLE = 6,
3386 /* H.1.4 Cause No. 8 "operator determined barring" */
3387 IMS_EXT_ERROR_OPERATOR_DETERMINED_BARRING = 8,
3388 /* H.1.5 Cause No. 16 "normal call clearing" */
3389 IMS_EXT_ERROR_REPORT_NORMAL_CLEARING = 16,
3390 /* H.1.6 Cause No. 17 "user busy" */
3391 IMS_EXT_ERROR_REPORT_USER_BUSY = 17,
3392 /* H.1.7 Cause No. 18 "no user responding" */
3393 IMS_EXT_ERROR_REPORT_NO_USER_RESPONDING = 18,
3394 /* H.1.8 Cause No. 19 "user alerting, no answer" */
3395 IMS_EXT_ERROR_REPORT_NO_ANSWER = 19,
3396 /* H.1.9 Cause No. 21 "call rejected" */
3397 IMS_EXT_ERROR_REPORT_CALL_REJECTED = 21,
3398 /* H.1.10 Cause No. 22 "number changed" */
3399 IMS_EXT_ERROR_REPORT_NUMBER_CHANGED = 22,
3400 /* H.1.10a Cause No. 24 "call rejected due to feature at the destination" */
3401 IMS_EXT_ERROR_REPORT_CELL_REJECTED_DUE_FEAT = 24,
3402 /* H.1.11 Cause No. 25 "pre-emption" */
3403 IMS_EXT_ERROR_REPORT_PRE_EMPTION = 25,
3404 /* H.1.12 Cause No. 26 "Non-selected user clearing" */
3405 IMS_EXT_ERROR_REPORT_NONSELECTED_USER_CLEARING = 26,
3406 /* H.1.13 Cause No. 27 "Destination out of order" */
3407 IMS_EXT_ERROR_REPORT_DESTINATION_OUT_OF_OREDER = 27,
3408 /* H.1.14 Cause No. 28 "Invalid number format (incomplete number) " */
3409 IMS_EXT_ERROR_REPORT_INVALID_NUMBER_FORMAT = 28,
3410 /* H.1.15 Cause No. 29 "Facility rejected" */
3411 IMS_EXT_ERROR_REPORT_FACILITY_REJECTED = 29,
3412 /* H.1.16 Cause No. 30 "response to STATUS ENQUIRY" */
3413 IMS_EXT_ERROR_REPORT_RESP_TO_STATUS_ENQUIRY = 30,
3414 /* H.1.17 Cause No. 31 "normal, unspecified */
3415 IMS_EXT_ERROR_REPORT_NORMAL_UNSPECIFIED = 31,
3416 /* H.2.1 Cause No. 34 "no circuit/channel available" */
3417 IMS_EXT_ERROR_REPORT_NO_CHANNEL_AVAILABLE = 34,
3418 /* H.2.2 Cause No. 38 "network out of order" */
3419 IMS_EXT_ERROR_REPORT_NWK_OUT_OF_ORDER = 38,
3420 /* H.2.3 Cause No. 41 "temporary failure" */
3421 IMS_EXT_ERROR_REPORT_TEMPORARY_FAILURE = 41,
3422 /* H.2.4 Cause No. 42 "switching equipment congestion" */
3423 IMS_EXT_ERROR_REPORT_SWITCHING_CONGESTION = 42,
3424 /* H.2.5 Cause No. 43 "access information discarded" */
3425 IMS_EXT_ERROR_REPORT_ACCESS_INFO_DISCARDER = 43,
3426 /* H.2.6 Cause No. 44 "requested channel not available" */
3427 IMS_EXT_ERROR_REPORT_REQUESTED_CHANNEL_NOT_AVAIL = 44,
3428 /* H.2.7 Cause No. 47 "resource unavailable, unspecified" */
3429 IMS_EXT_ERROR_REPORT_RESOURCE_UNAVAILABLE = 47,
3430 /* H.3.1 Cause No. 49 "quality of service unavailable" */
3431 IMS_EXT_ERROR_REPORT_QOS_NOT_AVAIL = 49,
3432 /* H.3.2 Cause No. 50 "Requested facility not subscribed" */
3433 IMS_EXT_ERROR_REPORT_REQ_FACILITY_NOT_SUBSCRIBED = 50,
3434 /* H.3.3 Cause No. 55 "Incoming calls barred within the CUG" */
3435 IMS_EXT_ERROR_REPORT_INCOMING_CALLS_BARRED_IN_CUG = 55,
3436 /* H.3.4 Cause No. 57 "Bearer capability not authorized" */
3437 IMS_EXT_ERROR_REPORT_BEARER_CAP_NOT_AUTHORIZED = 57,
3438 /* H.3.5 Cause No. 58 "Bearer capability not presently available" */
3439 IMS_EXT_ERROR_REPORT_BEARER_NOT_AVAIL = 58,
3440 /* H.3.6 Cause No. 63 "Service or option not available, unspecified" */
3441 IMS_EXT_ERROR_REPORT_SERVICE_NOT_AVAILABLE = 63,
3442 /* H.3.7 Cause No. 68 "ACM equal to or greater than ACMmax" */
3443 IMS_EXT_ERROR_REPORT_ACM_GREATER_THAN_ACMMAX = 68,
3444 /* H.4.1 Cause No. 65 "bearer service not implemented" */
3445 IMS_EXT_ERROR_REPORT_BEARER_SERVICE_NOT_IMPLEMENTED = 65,
3446 /* H.4.2 Cause No. 69 "request facility not implemented" */
3447 IMS_EXT_ERROR_REPORT_REQ_FACILITY_NOT_IMPLEMENTED = 69,
3448 /* H.4.3 Cause No. 70 "only restricted digital information bearer capability is available" */
3449 IMS_EXT_ERROR_REPORT_ONLY_DIGITAL_INFO_BEARER = 70,
3450 /* H.4.4 Cause No. 79 "service or option not implemented, unspecified" */
3451 IMS_EXT_ERROR_REPORT_SERVICE_NOT_IMPLEMENTED = 79,
3452 /* H.5.1 Cause No. 81 "invalid transaction identified value" */
3453 IMS_EXT_ERROR_REPORT_INVALID_TRANSACTION_IDENTIFIER = 80,
3454 /* H.5.2 Cause No. 87 "user not member of CUG" */
3455 IMS_EXT_ERROR_REPORT_USER_NOT_MEMBER_OF_CUG = 87,
3456 /* H.5.3 Cause No. 88 "incompatible destination" */
3457 IMS_EXT_ERROR_REPORT_INCOMPATIBLE_DESTINATION = 88,
3458 /* H.5.4 Cause No. 91 "invalid transit network selection" */
3459 IMS_EXT_ERROR_REPORT_INVALID_TRANSIT_NWK_SELECTION = 91,
3460 /* H.5.5 Cause No. 95 "semantically incorrect message" */
3461 IMS_EXT_ERROR_REPORT_SEMANTICALLY_INCORRECT_MSG = 95,
3462 /* H.6.1 Cause No. 96 "invalid mandatory information" */
3463 IMS_EXT_ERROR_REPORT_INVALID_MANDATORY_INFORMATION = 96,
3464 /* H.6.2 Cause No. 97 "message type non-existent or not implemented" */
3465 IMS_EXT_ERROR_REPORT_MSG_TYPE_NON_EXISTENT = 97,
3466 /* H.6.3 Cause No. 98 "message type not compatible with protocol state" */
3467 IMS_EXT_ERROR_REPORT_MSG_TYPE_NOT_COMP_WITH_STATE = 98,
3468 /* H.6.4 Cause No. 99 "information element non-existent or not implemented" */
3469 IMS_EXT_ERROR_REPORT_INFO_ELEMENT_NON_EXISTENT = 99,
3470 /* H.6.5 Cause No. 100 "conditional IE error" */
3471 IMS_EXT_ERROR_REPORT_CONDITIOANL_IE_ERROR = 100,
3472 /* H.6.6 Cause No. 101 "message not compatible with protocol state" */
3473 IMS_EXT_ERROR_MSG_NOT_COMP_WITH_STATE = 101,
3474 /* H.6.7 Cause No. 102 "recovery on timer expiry" */
3475 IMS_EXT_ERROR_RECOVERY_ON_TIMER_EXPIRY = 102,
3476 /* H.6.8 Cause No. 111 "protocol error, unspecified" */
3477 IMS_EXT_ERROR_REPORT_PROTOCOL_ERROR_UNSPECIFIED = 111,
3478 /* H.7.1 Cause No. 127 "interworking, unspecified" */
3479 IMS_EXT_ERROR_REPORT_INTERWORKING_UNSPECIFIED = 127,
3480
3481/* other error causes */
3482 IMC_EXT_ERROR_REPORT_INVALID_CMD = 0,
3483 IMS_EXT_ERROR_REPORT_FDN_RESTRICTION = 2600, // refer to ps_cause_enum
3484 IMS_EXT_ERROR_REPORT_ECT_TIMEOUT = 899,
3485 IMS_EXT_ERROR_REPORT_DEDICATED_BEARER_TIMEOUT = 1000, // may reselect CS domain
3486 IMS_EXT_ERROR_REPORT_GENERIC_RETRY_CS = 1001, // may reselect CS domain
3487 IMS_EXT_ERROR_REPORT_GENERIC_NO_RETRY = 1002,
3488 IMS_EXT_ERROR_REPORT_GENERIC_RETRY_IMS_CS = 1003, // may retry IMS once, then CS domain
3489 IMS_EXT_ERROR_REPORT_TIMER_B_EXPIRY = 1004,
3490 IMS_EXT_ERROR_REPORT_GENERIC_RETRY_IMS_VIDEO_TO_VOICE = 1005, // always retry IMS.
3491 IMS_EXT_ERROR_REPORT_NO_RETRY_BAR_IMS = 1006, // VDM will only try CS when barring IMS
3492 IMS_EXT_ERROR_REPORT_NON_UE_DETECT_EMERG = 380, // report to AP to trigger normal to ecc redial
3493 IMS_EXT_ERROR_REPORT_SILENT_REDIAL_3GPP2 = 2001,
3494 IMS_EXT_ERROR_REPORT_DIAL_1XRTT_DIRECTLY = 2002,
3495 IMS_EXT_ERROR_REPORT_NEED_GLOBAL_MODE_FOR_EMERG = 2003,
3496 IMS_EXT_ERROR_REPORT_SSAC_BAR = 2004,
3497 IMS_EXT_ERROR_REPORT_RTT_EMC_FAIL = 2005
3498} ims_ext_error_report_enum;
3499
3500/* Deprecated: do not use after IMS interface 0x55 taken in use */
3501#define IMS_EXT_ERROR_REPORT_TEMPORTARY_FAILURE IMS_EXT_ERROR_REPORT_TEMPORARY_FAILURE
3502
3503
3504typedef ims_ext_error_report_enum ims_disc_cause_enum;
3505
3506typedef enum
3507{
3508 IMS_SUB_EVENT_UNKNOWN = 0,
3509 IMS_SUB_EVENT_CONF = 1,
3510 IMS_SUB_EVENT_MAX,
3511}ims_ss_sub_event_enum;
3512
3513typedef enum
3514{
3515 IMS_DEREG_CAUSE_UNSPECIFIED = 0,
3516 IMS_DEREG_CAUSE_PWR_OFF = 1,
3517 IMS_DEREG_CAUSE_RF_OFF = 2,
3518 IMS_DEREG_CAUSE_IMS_PLMN_BLOCKED = 3,
3519 IMS_DEREG_CAUSE_IMS_3402_BLOCKED = 4,
3520 IMS_DEREG_CAUSE_APN_CHANGE = 5,
3521 IMS_DEREG_CAUSE_IMS_VOICE_NOT_AVAIL = 6,
3522 IMS_DEREG_CAUSE_IMS_SIM_NOT_READY = 7,
3523 IMS_DRREG_CAUSE_CAUSE_IGNORE_CHANGE = 8,
3524 IMS_DEREG_CAUSE_MAX
3525}ims_dereg_cause_enum;
3526
3527typedef enum
3528{
3529 VOICE_ADS_CTRL_AUTO = 0, // VDM apply domain selection
3530 VOICE_ADS_CTRL_IMS_ALWAYS // VDM select IMS domain as long as IMS Registered
3531} voice_ads_ctrl_enum;
3532
3533typedef enum
3534{
3535 IMS_SRVCC_CALL_MODE_VOICE = 0,
3536 IMS_SRVCC_CALL_MODE_VIDEO,
3537 IMS_SRVCC_CALL_MODE_EMERGENCY,
3538 IMS_SRVCC_CALL_MODE_VOICE_CONFERENCE,
3539 IMS_SRVCC_CALL_MODE_VIDEO_CONFERENCE,
3540 IMS_SRVCC_CALL_MODE_VOICE_CONFERENCE_PARTS, // voice conference call participant
3541 IMS_SRVCC_CALL_MODE_VIDEO_CONFERENCE_PARTS, // video conference call participant
3542 IMS_SRVCC_CALL_MODE_MAX
3543} ims_srvcc_call_mode_enum;
3544
3545typedef enum
3546{
3547 IMS_SRVCC_CALL_DIRECTION_MO = 0,
3548 IMS_SRVCC_CALL_DIRECTION_MT,
3549 IMS_SRVCC_CALL_DIRECTION_MAX,
3550} ims_srvcc_call_direction_enum;
3551
3552typedef enum
3553{
3554 IMS_SRVCC_CALL_STATE_EARLY = 0,
3555 IMS_SRVCC_CALL_STATE_EARLY_WITH_MEDIA,
3556 IMS_SRVCC_CALL_STATE_ACTIVE,
3557 IMS_SRVCC_CALL_STATE_ON_HOLD,
3558 IMS_SRVCC_CALL_STATE_PRE_ALERTING,
3559 IMS_SRVCC_CALL_STATE_PRE_ALERTING_WITH_MEDIA,
3560 IMS_SRVCC_CALL_STATE_ACTIVE_RETRY_CC_CONNECT,
3561 IMS_SRVCC_CALL_STATE_MAX
3562} ims_srvcc_call_state_enum;
3563
3564typedef enum
3565{
3566 IMS_SRVCC_CALL_ECC_CTGY_UNSPECIFIED = 0,
3567 IMS_SRVCC_CALL_ECC_CTGY_POLICE = 0x1,
3568 IMS_SRVCC_CALL_ECC_CTGY_AMBULANCE = 0x2,
3569 IMS_SRVCC_CALL_ECC_CTGY_FIRE = 0x4,
3570 IMS_SRVCC_CALL_ECC_CTGY_MARINE = 0x8,
3571 IMS_SRVCC_CALL_ECC_CTGY_MOUNTAIN = 0x10,
3572 IMS_SRVCC_CALL_ECC_CTGY_MANUALLY = 0x40,
3573 IMS_SRVCC_CALL_ECC_CTGY_AUTO = 0x80,
3574 IMS_SRVCC_CALL_ECC_CTGY_GAS = 0x100,
3575 IMS_SRVCC_CALL_ECC_CTGY_ANIMAL = 0x200,
3576 IMS_SRVCC_CALL_ECC_CTGY_PHYSICIAN = 0x400,
3577 IMS_SRVCC_CALL_ECC_CTGY_POISON = 0x800,
3578 IMS_SRVCC_CALL_ECC_CTGY_TRAFFIC = 0x1000,
3579 IMS_SRVCC_CALL_ECC_CTGY_COUNTRY_SPECIFIC = 0x2000,
3580 IMS_SRVCC_CALL_ECC_CTGY_UNRECOGNIZED = 0x8000,
3581
3582 /*Korea TTA special emergency Ctgy*/
3583 IMS_SRVCC_CALL_ECC_CTGY_KR_SPIES = 0x3,
3584 IMS_SRVCC_CALL_ECC_CTGY_KR_INTELLIGENCE = 0x6,
3585 IMS_SRVCC_CALL_ECC_CTGY_KR_SMUGGLING = 0x9,
3586 IMS_SRVCC_CALL_ECC_CTGY_KR_SCHOOL_VIOLENCE = 0x12,
3587 IMS_SRVCC_CALL_ECC_CTGY_KR_CYBERTERRORISM = 0x13,
3588 IMS_SRVCC_CALL_ECC_CTGY_MAX = 0xFFFF
3589}ims_srvcc_call_ecc_category_enum;
3590
3591typedef enum
3592{
3593 IMS_CC_EVTA_MODE_UNKNOWN = 0,
3594 IMS_CC_EVTA_MODE_ACCEPT_AS_VOICE = 1,
3595 IMS_CC_EVTA_MODE_ACCEPT_AS_ONE_WAY_VIDEO_RX = 2,
3596 IMS_CC_EVTA_MODE_ACCEPT_AS_ONE_WAY_VIDEO_TX = 3,
3597 IMS_CC_EVTA_MODE_MAX,
3598} ims_cc_evta_mode_enum;
3599
3600typedef enum
3601{
3602 IMS_CALL_TYPE_NATIONAL = 129,
3603 IMS_CALL_TYPE_INTERNATIONAL = 145,
3604} ims_call_type_enum;
3605
3606typedef enum
3607{
3608 IMS_CALL_DIR_MO_CALL = 0,
3609 IMS_CALL_DIR_MT_CALL = 1,
3610} ims_call_dir_enum;
3611
3612typedef enum
3613{
3614 IMS_CALL_STATE_ACTIVE = 0,
3615 IMS_CALL_STATE_HELD = 1,
3616 IMS_CALL_STATE_MO_DIALING = 2,
3617 IMS_CALL_STATE_MO_ALERTING = 3,
3618 IMS_CALL_STATE_MT_INCOMING = 4,
3619 IMS_CALL_STATE_MT_WAITING = 5,
3620} ims_call_state_enum;
3621
3622typedef enum
3623{
3624 IMS_CALL_MODE_CS_DOMAIN_BEGIN = 0,
3625 IMS_CALL_MODE_CS_VOICE_CALL = IMS_CALL_MODE_CS_DOMAIN_BEGIN,
3626 IMS_CALL_MODE_CS_DATA_CALL,
3627 IMS_CALL_MODE_CS_FAX_CALL,
3628 IMS_CALL_MODE_CS_VFD_VOICE, /* voice followed by data, voice mode */
3629 IMS_CALL_MODE_CS_AVD_VOICE, /* alternating voice/data, voice mode */
3630 IMS_CALL_MODE_CS_AVF_VOICE, /* alternating voice/fax, voice mode */
3631 IMS_CALL_MODE_CS_VFD_DATA, /* voice followed by data, data mode */
3632 IMS_CALL_MODE_CS_AVD_DATA, /* alternating voice/data, data mode */
3633 IMS_CALL_MODE_CS_AVF_FAX, /* alternating voice/fax, fax mode */
3634 IMS_CALL_MODE_CS_UNKNOWN_MODE,
3635 IMS_CALL_MODE_CS_VIDEO_CALL,
3636
3637 IMS_CALL_MODE_IMS_DOMAIN_BEGIN = 20,
3638 IMS_CALL_MODE_IMS_VOICE_CALL = IMS_CALL_MODE_IMS_DOMAIN_BEGIN,
3639 IMS_CALL_MODE_IMS_VIDEO_CALL,
3640 IMS_CALL_MODE_IMS_VOICE_CONF,
3641 IMS_CALL_MODE_IMS_VIDEO_CONF,
3642 IMS_CALL_MODE_IMS_VOICE_CONF_PARTS, // voice conference call participant
3643 IMS_CALL_MODE_IMS_VIDEO_CONF_PARTS, // video conference call participant
3644 IMS_CALL_MODE_IMS_DOMAIN_END = 39
3645} ims_call_mode_enum;
3646
3647typedef enum
3648{
3649 IMCSMS_MS_NW_RP_DATA =0,
3650 IMCSMS_NW_MS_RP_DATA,
3651 IMCSMS_MS_NW_RP_ACK,
3652 IMCSMS_NW_MS_RP_ACK,
3653 IMCSMS_MS_NW_RP_ERROR,
3654 IMCSMS_NW_MS_RP_ERROR,
3655 IMCSMS_MS_NW_RP_SMMA
3656} imcsms_rp_msg_type_enum;
3657
3658typedef enum
3659{
3660 SC_UNSPECIFIED = (0<<0),
3661 SC_POLICE = (1<<0),
3662 SC_AMBULANCE = (1<<1),
3663 SC_FIRE = (1<<2),
3664 SC_MARINE = (1<<3),
3665 SC_MOUNTAIN = (1<<4),
3666 SC_MANUALLY_INITIATED_ECALL = (1<<5),
3667 SC_AUTOMATICALLY_INITIATED_ECALL = (1<<6),
3668 SC_RESERVED = (1<<7),
3669 SC_GAS = (1<<8),
3670 SC_ANIMAL = (1<<9),
3671 SC_PHYSICAL = (1<<10),
3672 SC_POISON = (1<<11),
3673 SC_TRAFFIC = (1<<12),
3674 SC_COUNTRY_SPECIFIC = (1<<13),
3675 SC_UNRECOGNIZED = (1<<14),
3676 /*Korea TTA special emergency category */
3677 SC_TTA_SPIES = 0x3,
3678 SC_TTA_INTELLIGENCE = 0x6,
3679 SC_TTA_SMUGGLING = 0x9,
3680 SC_TTA_SCHOOL_VIOLENCE = 0x12,
3681 SC_TTA_CYBERTERRORISM = 0x13,
3682} ims_ecc_category_enum;
3683
3684typedef struct
3685{
3686 /* +ECPI:<call_id>,<msg_type>,<is_ibt>,<is_tch>,<dir>,
3687 * <call_mode>,[<number>,<type>],[<disc_cause>],[<pau>]
3688 */
3689 kal_bool is_ibt;
3690 kal_bool is_tch;
3691 ims_call_dir_enum call_dir;
3692 ims_call_mode_enum call_mode;
3693 kal_bool is_number_call_type_present;
3694 kal_uint8 number[MAX_CC_ECPI_NUM_LEN];
3695 ims_call_type_enum call_type;
3696 kal_bool is_disc_cause_present;
3697 ims_disc_cause_enum disc_cause;
3698} ims_ecpi_info_struct;
3699
3700typedef struct
3701{
3702 kal_uint8 call_id; /* call_id_ims = call_id_ap */
3703 ims_srvcc_call_mode_enum call_mode;
3704 ims_srvcc_call_direction_enum call_direction;
3705 ims_srvcc_call_state_enum call_state;
3706 ims_srvcc_call_ecc_category_enum call_ecc_category;
3707 kal_uint8 num_of_conf_parts;
3708 kal_uint8 call_number[MAX_CC_ATD_NUM_LEN];
3709} ims_srvcc_call_ctxt_struct;
3710
3711typedef struct {
3712 kal_uint8 number[MAX_CC_ECPI_NUM_LEN];
3713 ims_call_type_enum call_type;
3714 ims_call_mode_enum call_mode;
3715 kal_uint8 digit_to_line_number[IMC_MAX_URI_LENGTH];
3716} ims_cc_eaic_info_struct;
3717
3718/* +CLCC:<idx>,<dir>,<stat>,<mode>,<mpty>,[<number>,<type>]... */
3719typedef struct {
3720 kal_uint8 call_id;
3721 ims_call_dir_enum dir;
3722 ims_call_state_enum call_state;
3723 ims_call_mode_enum call_mode;
3724 kal_bool mpty; // FALSE: is NOT conference call, TRUE: is conference call
3725 ims_call_type_enum call_type;
3726 kal_uint8 number[MAX_CC_ATD_NUM_LEN];
3727 kal_uint8 cli_validity;
3728} ims_call_list_struct;
3729
3730/* ViLTE */
3731typedef enum
3732{
3733 IMS_CC_CAMERA_INACTIVE = 0,
3734 IMS_CC_CAMERA_SEND_ONLY = 1,
3735 IMS_CC_CAMERA_RECV_ONLY = 2,
3736 IMS_CC_CAMERA_SEND_RECV = 3,
3737 IMS_CC_CAMERA_MAX,
3738} ims_cc_camera_direction_enum;
3739
3740typedef enum
3741{
3742 IMS_SEND_USSD_RESULT_SUCCESS = 0,
3743 IMS_SEND_USSD_RESULT_FAILURE = 1,
3744 IMS_SEND_USSD_RESULT_MAX,
3745} ims_send_ussd_result_enum;
3746
3747typedef enum
3748{
3749 IMCSMS_C2K_SUBMIT = 0, //C2K SMS triggered by AP (AT+C2KCMGS)
3750 IMCSMS_C2K_ACKNOWLEDGE = 1,
3751 IMCSMS_CDMA_SUBMIT //C2K SMS triggered by MD3 (SDM_VAL_C2K_IND)
3752} imcsms_c2k_msg_type_enum;
3753
3754typedef enum
3755{
3756 IMCSMS_C2K_CLASS_NONE =0, //No error
3757 IMCSMS_C2K_CLASS_RESERVED, //Reserved
3758 IMCSMS_C2K_CLASS_TEMPORARY, //Temporary error
3759 IMCSMS_C2K_CLASS_PERMANENT //Permanent error
3760} imcsms_c2k_error_class_enum;
3761
3762typedef enum
3763{
3764 IMCSMS_C2K_CAUSE_START = 0,
3765 IMCSMS_C2K_CAUSE_NWRES = 2,
3766 IMCSMS_C2K_CAUSE_NWFAIL = 3,
3767 IMCSMS_C2K_CAUSE_OTHER_GENERAL_PROBLEM = 107,
3768 IMCSMS_C2K_CAUSE_OK = 32768,
3769 IMCSMS_C2K_CAUSE_END = 32780,
3770} imcsms_c2k_cause_code_enum;
3771
3772typedef enum
3773{
3774 IMCSMS_CS_NETWORK_NOT_AVAILABLE = 0,
3775 IMCSMS_CS_NETWORK_HOME,
3776 IMCSMS_CS_NETWORK_ROAMING
3777} imcsms_cs_network_status_enum;
3778
3779typedef enum {
3780 CALL_UNKNOWN_TIMER = 99,
3781 CALL_REFRESH_TIMER = 100, ///< session timer / 2. When it times out, we shall send re-INVITE or UPDATE to refresh the session.
3782 CALL_REFRESHCALL_TIMEOUT_TIMER, ///< session timer. When it times out, we shall terminate the session.
3783 CALL_TCALL_TIMER, ///< examine the call progress for waiting 100 trying in MO call. If call is stopped because SIP message is not received and this timer is timeout, we will CANCEL this call.
3784 CALL_CALLEND_TIMER, ///< examine the call cancel progress. To prevent we wait too long for CANCEL call; or used in OOS_END to wait NW cancel the ringing call, timeout will send reject code by UE
3785 CALL_UPDATE_PRECOND_TIMER,
3786 CALL_WAITING_MT_CALL_CNF_TIMER, ///< waiting MSG_ID_VOLTE_MT_CALL_PRESENT_RSP from AP side
3787 CALL_SERVICE_UNAVAILA_TIMER, ///< Receive 503 Service Unavailable, then we cannot make call in the time duration
3788 CALL_RINGBACK_END_TIMER, ///< for NSN NVIOT MO internal timer for MT not accept
3789 CALL_RINGING_END_TIMER, ///< for CAT MT internal timer
3790 CALL_MO_INVITE_TO_BWCNF_TIMER, ///<examine the call progress from send invite to receive bw_cnf, will tigger csfb when timeout and not receive bw_cnf
3791 CALL_WAITING_487_TIMER, ///< for force release call when no 487 received after send CANCEL
3792 CALL_HOLD_RETRY_TIMER, ///< Hold retry timer. When it times out, hold is retried once as specified in RFC 3261. Otherwise hold fails.
3793 CALL_UNHOLD_RETRY_TIMER, ///< Unhold retry timer. When it times out, unhold is retried once as specified in RFC 3261. Otherwise unhold fails.
3794 CALL_ABORT_INVITE_TIMER, ///< Abort INVITE timer. When it times out, UE should abort the INVITE transaction.
3795 CALL_SECOND_INVITE_TIMER, ///< For RJIL hold/unhold timer, there is an another INVITE transaction after hold/unhold so we need to start a timer to wait the second INVITE transaction completed.
3796 CALL_SDP_ANS_ACK_TIMER, ///< For KDDI, we need to start timer for waiting PRACK.
3797 CALL_MT_PROCESSING_TIMER, ///< For KDDI, we need to start timer after receiving initial INVITE.
3798 CALL_ECT_NOTIFY_TIMER, ///< NOTIFY guard timer for Assured ECT
3799 CALL_SESSION_MODIFY_RETRY_TIMER, ///< RJIL IOT upgrade have to retry after Retry-After value
3800 CALL_MOD_SESSION_RSP_TIMER, ///< For MSG_ID_VOLTE_MOD_SESSION_IND guard timer. When it timeout, aussme reject.
3801 CALL_CELL_ID_VALID_TIMER, ///< cell id is stored in acct.c before it is considered too old
3802 CALL_TEXT_WAIT_TIMER, ///< For VZW, if receive normal MT call but gtt on, need wait 2s, if no empty reINVITE, send reINVITE
3803 CALL_LTE_EMC_TIMER, ///< Examine the call progress for waiting 200 OK in MO LTE emergency call. If 1xx received but no 200 OK received within the timer, we will CANCEL this call.
3804 CALL_EMC_RTT_CB_TIMER, ///< For TMOUS RTT, When receiving a voice call after an EMC RTT call is terminated, we need automatically add text component (voice to RTT call upgrade)
3805 CALL_E2_EMC_INIT_TIMER, ///< For TMOUS EMC, E2 Emergency setup initiation
3806 CALL_E3_EMC_CATCH_ALL_H_TIMER, ///< For TMOUS EMC, E3 Emergency setup catch all for home
3807 CALL_E3_EMC_CATCH_ALL_V_TIMER, ///< For TMOUS EMC, E3 Emergency setup catch all for roaming
3808 CALL_MEDIA_OFF_GUARD_TIMER, ///< ignore media on / off pingpang. silent drop media off when timer existed
3809 CALL_NORMAL_CLEAR_TIMER, ///< timeout, DISC change to NULL state
3810 CALL_TCW_MT_CALL_TIMER, ///for telcel ,waiting communication,when it time out send 480 response to MO
3811 CALL_EMERGENCY_OPTION_TIMER, ///< For Sprint EMC, send a SIP OPTIONS Method with an updated PIDF-LO
3812 CALL_ROAMING_EPS_ONLY_TIMER, ///< For TMOUS, when eps-only attach to roaming plmn, no cancel or CSFB for no dedicated bearer. And drop call when timer expiry.
3813 CALL_TERMINATION_TIMER, ///< Terminate session after timeout
3814 CALL_ECT_DELAY_TARGET_UNHOLD_TIMER, ///< Delay abort guard timer for consultative ECT when unexpected BYE is received from transferee
3815 CALL_IGNORE_REPEATE_180_TIMER, ///< When timer running, ignore repeated 180
3816 CALL_ANBR_RETRY_TIMER, ///< Recv L2 ANBR but cannot handle immeediately, timeout retry it
3817 CALL_ANBR_GUARD_TIMER, ///< During guard time, L2 ANBR message will be delay to timeout
3818 CALL_WAIT_PRACK_FOR_183_TIMER, ///< After timerout,MT will send BW IND
3819 CALL_MOD_SESSION_REQ_TIMER, ///< For VOLTE_MOD_SESSION_REQ guard timer. When it timeout, aussme reject
3820 CALL_EMC_CLEAR_TIMER, ///< For TMOUS EMC, timeout, DISC change to NULL state
3821 CALL_MO_B1_TIMER, ///< For TMOUS, UE MO Timer B1, GID-MTRREQ-459360
3822 CALL_LCFS_MT_CALL_TIMER, ///< for TMOUS, (last come first served) the UE shall accept network paging message (from LTE) to take the 2nd call in 2G/3G prior to sending 180 ringing or any final response (2xx, 4xx-6xx).
3823 CALL_PENDING_ECPI133_TIMER, ///< MT don't answer the call,MO hangup, delay ECPI133 1s to confirm ACK have recv TCP ACK.
3824 CONF_CALL_FINAL_NOTIFY_TIMER, ///< For REFER NOTIFY operation complete or not.
3825 CONF_CALL_MODIFY_WAIT_NOTIFY_TIMER, ///< In order to wait NOTIFY(conference call SUBSCRIBE), start CONF_CALL_MODIFY_WAIT_NOTIFY_TIMER.
3826 CALL_UPGRADE_BW_FAIL_AUTO_DOWNGRADE_TIMER, ///< When call upgrade fail, in order to avoid mo and mt send reINVITE at the same time for auto downgrade, start CALL_UPGRADE_BW_FAIL_AUTO_DOWNGRADE_TIMER(mo 3s, mt 1s).
3827 CALL_DOWNGRADE_WAITING_FINAL_RESP_TIMER, ///< Huawei's requirement, during this timer running, MD will not accept any call operation request (including local and remote)
3828 CALL_MO_INVITE_TO_18x_TIMER, ///< examine the call progress for waiting 18x in MO call. If timer is timeout, we will CANCEL this call.
3829 CALL_MO_INVITE_RETRY_AFTER_TIMER, ///For KDDI, UE retry MO Call in retry-after if final response with the header
3830 CALL_WAIT_AUDIO_RTP_FOR_CRS_TIMER, ///< To check if UA could receive audio rtp after the negoiation for video crs has been finished. If not, then need to notify AP when timer has expiried.
3831 CALL_EVOLTESI_RINGING_TIMER, ///< A specific MT Ringing timer for enhanced volte si (short interruption) feature
3832 CALL_EMC_PUBLISH_TIMER, ///< PUBLISH refresh timer for EMC Current Location Discovery
3833 CALL_CS_SERVICE_NOTIFY_RSP_TIMER, /////For Airtel, during ongoing IMS call, handles CS service response delay timer
3834 CALL_INVITE_NO_RSP_RAN_PRIO_REQ_TIMER, ///<Timer for waiting INVITE response in WiFi call and trigger MSG_ID_IMC_IWLAN_REG_RAN_PRIO_UPDATE_REQ to IWLAN to trigger possible HO to LTE..>
3835} ims_call_timer_type_enum;
3836
3837typedef enum {
3838 USSD_UNKNOWN_TIMER = 50,
3839 USSD_REFRESH_TIMER, ///< session timer / 2. When it times out, we shall send re-INVITE or UPDATE to refresh the session.
3840 USSD_REFRESHCALL_TIMEOUT_TIMER, ///< session timer. When it times out, we shall terminate the session.
3841 USSD_TCALL_TIMER, ///< examine the call progress for waiting 200 OK in MO call. If call is stopped because SIP message is not received and this timer is timeout, we will CANCEL this call.
3842 USSD_WAITING_487_TIMER, ///< for force release call when no 487 received after send CANCEL
3843 USSD_NW_TIMEOUT_TIMER, ///< for local release when NW not send resonse for 1 min
3844 USSD_WAIT_BYE_200_OK_TIMER, ///< wait for BYE 200 OK from N/W
3845} ims_ussd_timer_type_enum;
3846
3847
3848//*****************************
3849//*** UA LEGACY TYPE DEFINE ***
3850//*****************************
3851
3852#define UA_IMCB_MAP_STRUCT(ua, imcb) \
3853 typedef VoLTE_Event_ ## ua ## _t ua_imcb_ ## imcb ## _struct, volte_ ## imcb ## _struct; \
3854
3855#define UA_VOLTE_ILM_MAP_STRUCT(ua, ilm) \
3856 typedef VoLTE_Event_ ## ua ## _t volte_ ## ilm ## _struct; \
3857
3858
3859UA_IMCB_MAP_STRUCT(Network_Change, req_network_change) // message: MSG_ID_VOLTE_REQ_NETWORK_CHANGE
3860UA_IMCB_MAP_STRUCT(Rat_Change, req_rat_change) // message: MSG_ID_VOLTE_REQ_RAT_CHANGE
3861UA_IMCB_MAP_STRUCT(3gpp_Rat_Change, req_3gpp_rat_change) // message: MSG_ID_VOLTE_REQ_3GPP_RAT_CHANGE
3862UA_IMCB_MAP_STRUCT(3gpp_OOS_Ind, req_3gpp_oos_ind) // message: MSG_ID_VOLTE_REQ_3GPP_OOS_IND
3863
3864/***** UA QUERY CELL ID *****/
3865UA_IMCB_MAP_STRUCT(Query_State, ind_query_state) /* message: MSG_ID_VOLTE_IND_QUERY_STATE */
3866
3867/**** Logging Notify ****/
3868UA_IMCB_MAP_STRUCT(Logging_Event_Notify, logging_event_notify_req) /* message: MSG_ID_VOLTE_REQ_LOGGING_EVENT_NOTIFY */
3869typedef VoLTE_Event_Logging_Event_Notify_t volte_req_logging_event_notify_struct;
3870
3871/***** FF00H to UA *****/
3872UA_IMCB_MAP_STRUCT(FF00H_Update, ff00h_update) /* message: FF00H_UPDATE MSG_ID_VOLTE_REQ_FF00H_UPDATE */
3873typedef VoLTE_Event_FF00H_Update_t volte_req_ff00h_update_struct;
3874
3875/***** IP Change Notify to UA *****/
3876UA_IMCB_MAP_STRUCT(IP_Change_Notify, ip_change_notify) /* message: IP_CHANGE_NOTIFY MSG_ID_VOLTE_REQ_IP_CHANGE_NOTIFY */
3877
3878/***** iRat Change PDN success to UA *****/
3879UA_IMCB_MAP_STRUCT(iRat_without_IP_Change, irat_without_ip_change) /* message: IRAT_WIOUTH_IP_CHANGE VOLTE_REQ_IRAT_WIOUTH_IP_CHANGE */
3880typedef VoLTE_Event_iRat_without_IP_Change_t volte_req_irat_without_ip_change_struct;
3881
3882/***** Feature Sync *****/
3883UA_IMCB_MAP_STRUCT(Feature_Sync, feature_sync_req) /* message: FEATURE_SYNC_REQ VOLTE_REQ_FEATURE_SYNC */
3884typedef VoLTE_Event_Feature_Sync_t volte_req_feature_sync_struct;
3885
3886UA_IMCB_MAP_STRUCT(PS_DATA_OFF_Req, req_ps_data_off) // message: MSG_ID_VOLTE_REQ_PS_DATA_OFF
3887
3888UA_IMCB_MAP_STRUCT(Tlv_Para_Setting, tlv_para_ind) /* mseeage: MSG_ID_VOLTE_IND_TLV_PARA */
3889typedef VoLTE_Event_Tlv_Para_Setting_t volte_ind_tlv_para_struct;
3890
3891#if 0
3892/* under construction !*/
3893#else
3894// message: MSG_ID_VOLTE_REQ_UPDATE_RT_SETTING
3895typedef VoLTE_Event_Setting_t ua_imcb_req_update_rt_setting_header_struct, volte_req_update_rt_setting_struct;
3896typedef struct ua_imcb_req_update_rt_setting_struct {
3897 imcf_uint8 data[1000];
3898} ua_imcb_req_update_rt_setting_struct;
3899#endif
3900
3901UA_IMCB_MAP_STRUCT(MD_Lower_Layer_Err, req_md_lower_layer_err) // message: MSG_ID_VOLTE_REQ_MD_LOWER_LAYER_ERR
3902
3903/***** UA TIMER -> should be removed after gen97 *****/
3904UA_IMCB_MAP_STRUCT(Timer, ind_timer_start) /* message: MSG_ID_VOLTE_IND_TIMER_START */
3905UA_IMCB_MAP_STRUCT(Timer, ind_timer_cancel) /* message: MSG_ID_VOLTE_IND_TIMER_CANCEL */
3906UA_IMCB_MAP_STRUCT(Timer, cnf_timer_expiry) /* message: MSG_ID_VOLTE_CNF_TIMER_EXPIRY */
3907
3908typedef struct _VoLTE_Event_ATCmd_Relay_t ua_imcb_atcmd_relay_struct, volte_req_atcmd_relay, volte_ind_atcmd_relay; /* message: MSG_ID_VOLTE_REQ_ATCMD_RELAY -> should be removed after gen97?? */
3909
3910/***** Condition Change Notify to UA *****/
3911UA_IMCB_MAP_STRUCT(Condition_Change_Notify, condition_change_notify) /* message: CONDITION_CHANGE_NOTIFY MSG_ID_VOLTE_REQ_CONDITION_CHANGE_NOTIFY */
3912
3913
3914#endif /* _IMS_COMMON_DEF_H_ */