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