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