blob: ccf2d7453dad504e263ed89eb5f9b244f6b64f9a [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
yu.donge372c322023-08-30 20:25:04 -0700901#define VOLTE_MAX_SERVICE_ROUTE_LENGTH 512
rjw6c1fd8f2022-11-30 14:33:01 +0800902#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
yu.donge372c322023-08-30 20:25:04 -0700915#define VOLTE_MAX_ERROR_RESPONSE_LIST 21
rjw6c1fd8f2022-11-30 14:33:01 +0800916#define VOLTE_MAX_REQUEST_LINE_LENGTH 512
yu.donge372c322023-08-30 20:25:04 -0700917#define VOLTE_SUB_SERVICE_LENGTH 128 //for emergency extended sub_service
rjw6c1fd8f2022-11-30 14:33:01 +0800918
919
920/*****imc_general_def.h START*****/
921#define IMC_MAX_CELL_ID_LEN 64
922#define IMC_MAX_PLMN_LEN 8 /* WFC four bytes in hex, 6 + '\0' */
923#define IMC_MAX_LAC_LEN 8 /* WFC four bytes in hex, 4 + '\0' */
924#define IMC_MAX_CI_LEN 12 /* WFC four bytes in hex, 8 + '\0' */
925#define IMC_MAX_IMEI_LEN 20
926#define IMC_MAX_IMEI_SVN_LEN 4
927#define IMC_MAX_MNC_MCC_LEN 4
928#define IMC_MAX_IMPU_NUM 5
929#define IMC_MAX_IMPU_LEN 256
930#define IMC_MAX_IMPU_TLV_LEN 2048
931#define IMC_MAX_IMPI_LEN 256
932#define IMC_MAX_DOMAIN_NAME_LEN 256
933#define IMC_MAX_IMSI_LEN 16
934#define IMC_MAX_RESPONSE_LEN 256
935#define IMC_MAX_AUTS_LEN 256
936#define IMC_MAX_CK_LEN 256
937#define IMC_MAX_IK_LEN 256
938#define IMC_MAX_NONCE_LEN 64
939#define IMC_MAX_NC_LEN 12
940#define IMC_MAX_AUTN_LEN 32
941#define IMC_MAX_RAND_LEN 32
942#define IMS_PCSCF_MAX_NUM 16
943#define IMC_MAX_SIM_SMSP_LEN 256
944#define IMC_MAX_USIM_MSISDN_LEN 12
945#define IMC_MAX_USIM_PSISMSC_LEN 256
946#define IMC_MAX_ISIM_PSISMSC_LEN 256
947#define IMC_MAX_XUI_LEN 512
948#define IMC_MAX_CALL_NUM_IN_CONFERENCE 5
949#define IMC_MAX_URI_LENGTH 128
950#define IMC_MAX_ASSERTED_URI (IMC_MAX_URI_LENGTH << 2)
951#define IMC_MAX_CONF_CONTROL_URI_LENGTH 512
952#define IMC_CALL_INVAL_ID 255
953#define IMC_CALL_MAX_NUM 16
954#define IMC_P_ASSERT_URI_LEN 128
955#define IMC_PHONE_NUM_LEN 64
rjw6c1fd8f2022-11-30 14:33:01 +0800956#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
yu.donge372c322023-08-30 20:25:04 -0700968#define IMC_SUB_SERVICE_LENGTH 128 //for emergency extended sub_service
969
rjw6c1fd8f2022-11-30 14:33:01 +0800970/* C2K */
971#define IMC_MAX_SID_LEN 8
972#define IMC_MAX_NID_LEN 8
973#define IMC_MAX_PZID_LEN 4
974#define IMC_MAX_BASE_ID_LEN 8
975#define IMC_MAX_SECTOR_ID_LEN 36
976#define IMC_MAX_SUBNET_LENGTH_LEN 4
977#define IMC_MAX_CARRIER_ID_LEN 8
978
979#ifdef __NG_ECALL_SUPPORT__
980/*ECALL*/
981#define IMS_MAX_MSD_LENGTH 140
982#endif
983
984#define UNIQUE_NAME MAKE_NAME(__LINE__)
985#define MAKE_NAME(line) MAKE_NAME2(line)
986#define MAKE_NAME2(line) constraint_ ## line
987
988#define MAKE_VALUE_TO_STRING(x) #x
989#define MAKE_VALUE(x) MAKE_VALUE_TO_STRING(x)
990#define MAKE_VAR_NAME_VALUE(var) #var "=" MAKE_VALUE(var)
991/*#pragma message(MAKE_VAR_NAME_VALUE(MSG_ID_WRAP_IMSA_IMCB_BEGIN))*/
992
993#define IMC_CHK(expr) enum { UNIQUE_NAME = (1/(expr))};
994
995#define IMC_CHK_STRUCT_SIZE(x,y) IMC_CHK(sizeof(x) == sizeof(y))
996#define IMC_CHK_ENUM(x,y) IMC_CHK((x) == (y))
997
998/* IMS Bearer ID macros */
999#define IMS_PSI_QFI_TO_BID(_psi_, _qfi_) (imcf_bid_t)(((_psi_&0xFF)<<8) | (_qfi_&0xFF))
1000#define IMS_EBI_TO_BID(_ebi_) (imcf_bid_t)(_ebi_&0xFF)
1001#define IMS_BID_GET_PSI(_bid_) (kal_uint8)((_bid_>>8)&0xFF)
1002#define IMS_BID_GET_QFI(_bid_) (kal_uint8)(_bid_&0xFF)
1003#define IMS_BID_GET_EBI(_bid_) IMS_BID_GET_QFI(_bid_)
1004
1005#define IMS_DEFAULT_BID_GET_PDN_ID(_default_bid_) \
1006 (kal_uint8)((IMS_BID_GET_PSI(_default_bid_) != 0) ? \
1007 IMS_BID_GET_PSI(_default_bid_) : IMS_BID_GET_EBI(_default_bid_))
1008
1009/* for multiple VoLTE or VoLTE work on SIM2, we should think about another solution */
1010#if defined(__MULTIPLE_IMS_SUPPORT__) && defined(__IMC_MULTIPLE_CONTEXT__)
1011#define IMC_SIM_NUM (MAX_SIM_NUM)
1012#else
1013#define IMC_SIM_NUM 1
1014#endif
1015/*****imc_general_def.h END*****/
1016
1017#if defined(__MULTIPLE_IMS_SUPPORT__) && defined(__IMC_MULTIPLE_CONTEXT__)
1018#define VOLTE_MAX_SIM_NUM (IMC_SIM_NUM)
1019#else
1020#define VOLTE_MAX_SIM_NUM (1)
1021#endif
1022
1023/* Old definition, don't use */
1024#define VOlTE_MAX_SIM_NUM VOLTE_MAX_SIM_NUM
1025
1026/* we use it overwrighte VOLTE_MAX_ACCOUNT_NUM */
1027#define VOLTE_MAX_UA_ACCOUNT_NUM ((VOLTE_MAX_SIM_NUM) * (IMC_ACCT_TY_MAX))
1028#define VOLTE_MAX_PROFILELEVEL_SIZE (32)
1029#define VOLTE_MAX_EXTMAP_URI_SIZE (256)
1030#define VOLTE_MAX_BYTESTRING_SIZE (256)
1031#define VOLTE_MAX_SUB_PARAM_LENGTH (128)
1032#define VOLTE_MAX_EXTMAP_NUM (4) // RFC 5285
1033#define VOLTE_MAX_RTCP_FB_SIZE (8)
1034#define VOLTE_MAX_IMAGE_NUM (4)
1035#define VOLTE_MAX_PS_NUM (32)
1036#define VOLTE_MAX_VIDEO_CAP_NUM (4)
1037#define VOLTE_MAX_PARAM_SET_SIZE_IN (64)
1038#define VOLTE_INVALID_CALL_ID (255)
1039#define VOLTE_IS_FAKE_CALL_ID(X) ((X>VOLTE_MAX_CALL_SESSION && X<VOLTE_INVALID_CALL_ID)?1:0)
1040#define VOLTE_MAX_REG_RETRY_COUNT (5)
1041#define VOLTE_MAX_SUB_RETRY_COUNT VOLTE_MAX_REG_RETRY_COUNT
1042#define VOLTE_MAX_REG_RETRY_INTERVAL (10)
1043#define VOLTE_MAX_SUB_RETRY_INTERVAL VOLTE_MAX_REG_RETRY_INTERVAL
1044#define VOLTE_KEEP_ALIVE_DFLT_CMCC (3)
1045#define VOLTE_MAX_HIS_INFO_NUM (16)
1046#define VOLTE_MAX_TAG_LENGTH (64)
1047#define VOLTE_MAX_CELL_INFO_AGE_LENGTH (9)
1048#define VOLTE_MAX_SIP_FLOW_LENGTH (512)
1049#define VOLTE_MAX_CODEC_LIST_LENGTH (256)
1050#define VOLTE_MAX_UUID_LENGTH IMC_MAX_UUID_LEN
1051#define VOLTE_MAX_SAME_PCSCF_RETRY_COUNT (3)
1052#define VOLTE_MAX_VT_RTP_PORT_LIST_NUM (32)
1053
1054#define VOLTE_MAX_CALL_SESSION (3*VOLTE_MAX_ACCOUNT_NUM)
1055#define VOLTE_MAX_SRVCC_CALLS (7)
1056#define VOLTE_MAX_CONF_CONTROL_URI_LENGTH (IMC_MAX_CONF_CONTROL_URI_LENGTH)
1057#define VOLTE_MAX_MNC_MCC_LENGTH (4)
1058#define VOLTE_MAX_ASSOCIATED_URI (VOLTE_MAX_URI_LENGTH << 2)
1059#define VOLTE_MAX_ASSERTED_URI (VOLTE_MAX_URI_LENGTH << 2)
1060#define VOLTE_MAX_IP_LENGTH (16)
1061#define VOLTE_MAX_REG_UIDS_LENGTH IMC_MAX_IMPU_TLV_LEN
1062#define VOLTE_MAX_IMSI_LENGTH (16)
1063#define VOLTE_MAX_CALL_CAPABILITY_LENGTH (128)
1064#define VOLTE_MAX_RTP_ADDRESS_LENGTH (64)// shall be align to SDP c attribute
1065//#define VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH (16)// The maximum length of a fmtp specific parameter value
1066#define VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH_IN (32)// The maximum length of a fmtp specific parameter value internal
1067#define VOLTE_MAX_SDP_TWOBYTE_LENGTH (2)
1068//#define VOLTE_MAX_SDP_EGBYTE_LENGTH (8)
1069//#define VOLTE_IPADDR_LENGTH (16) // IP address in binary
1070#define VOLTE_MAX_DATA_TO_UPPER_LENGTH (4000)
1071#define VOLTE_MAX_DATA_TO_IMC_LENGTH (512)
1072#define VOLTE_MAX_SDP_RED_VALUE_LENGTH (16)
1073#define VOLTE_MAX_CALL_NUM_IN_CONF (5)
1074#define VOLTE_MAX_PLANI_LENGTH (256)
1075#define VOLTE_MAX_LEVEL_SIZE (20)
1076//#define VOLTE_MAX_CNAME_LENGTH (52)
yu.donge372c322023-08-30 20:25:04 -07001077#define VOLTE_USSD_STRING_MAX_LENGTH (1500)
rjw6c1fd8f2022-11-30 14:33:01 +08001078#define VOLTE_USSD_LANGUAGE_MAX_LENGTH (32)
1079#define VOLTE_MAX_MSISDN_LENGTH (20) // dialing number
1080#define VOLTE_MAX_SMS_TPDA_LENGTH (21)
1081#define VOLTE_MAX_REASON_TEXT_LENGTH (128)
1082#define VOLTE_MAX_WARNING_TEXT_LENGTH (128)
1083
1084#define VOLTE_MAX_RECV_CODEC_LIST_LENGTH (IMCB_IMC_MAX_RECV_CODEC_LIST_LENGTH) // max codec list for downlink rtp
1085#define VOLTE_MAX_RED_LEVEL (IMCB_IMC_MAX_RED_LEVEL) // max red level
1086#define VOLTE_MAX_EXTRA_HEADER_SIZE (2048) // The maximum length of a AT command
1087
1088/******************************************************************************
1089 * Enum
1090 *****************************************************************************/
1091#ifdef __MULTIPLE_IMS_SUPPORT__
1092typedef enum
1093{
1094 IMS_MSPM_PROCEDURE_STATUS_STOP = 0,
1095 IMS_MSPM_PROCEDURE_STATUS_START,
1096 IMS_MSPM_PROCEDURE_STATUS_ENUM_NUM
1097} ims_mspm_procedure_status_enum;
1098
1099typedef enum
1100{
1101 IMS_MSPM_PROCEDURE_INIT_REG = 0,
1102 IMS_MSPM_PROCEDURE_INIT_REG_1,
1103 IMS_MSPM_PROCEDURE_INIT_REG_2,
1104 IMS_MSPM_PROCEDURE_INIT_REG_3,
1105 IMS_MSPM_PROCEDURE_RE_REG,
1106 IMS_MSPM_PROCEDURE_RE_REG_1,
1107 IMS_MSPM_PROCEDURE_RE_REG_2,
1108 IMS_MSPM_PROCEDURE_RE_REG_3,
1109 IMS_MSPM_PROCEDURE_SUBSCRIBE,
1110 IMS_MSPM_PROCEDURE_SUBSCRIBE_1,
1111 IMS_MSPM_PROCEDURE_SUBSCRIBE_2,
1112 IMS_MSPM_PROCEDURE_SUBSCRIBE_3,
1113 IMS_MSPM_PROCEDURE_USSD,
1114 IMS_MSPM_PROCEDURE_USSD_1,
1115 IMS_MSPM_PROCEDURE_USSD_2,
1116 IMS_MSPM_PROCEDURE_USSD_3,
1117 IMS_MSPM_PROCEDURE_CONF_SUBSCRIBE,
1118 IMS_MSPM_PROCEDURE_CONF_SUBSCRIBE_1,
1119 IMS_MSPM_PROCEDURE_CONF_SUBSCRIBE_2,
1120 IMS_MSPM_PROCEDURE_CONF_SUBSCRIBE_3,
1121 IMS_MSPM_PROCEDURE_MWI_SUBSCRIBE,
1122 IMS_MSPM_PROCEDURE_MWI_SUBSCRIBE_1,
1123 IMS_MSPM_PROCEDURE_MWI_SUBSCRIBE_2,
1124 IMS_MSPM_PROCEDURE_MWI_SUBSCRIBE_3,
1125 IMS_MSPM_PROCEDURE_CALLPULL_SUBSCRIBE,
1126 IMS_MSPM_PROCEDURE_CALLPULL_SUBSCRIBE_1,
1127 IMS_MSPM_PROCEDURE_CALLPULL_SUBSCRIBE_2,
1128 IMS_MSPM_PROCEDURE_CALLPULL_SUBSCRIBE_3,
1129 IMS_MSPM_PROCEDURE_INIT_REG_LOW,
1130 IMS_MSPM_PROCEDURE_INIT_REG_LOW_1,
1131 IMS_MSPM_PROCEDURE_INIT_REG_LOW_2,
1132 IMS_MSPM_PROCEDURE_INIT_REG_LOW_3,
1133 IMS_MSPM_PROCEDURE_ENUM_NUM
1134} ims_mspm_procedure_enum;
1135#endif
1136
1137typedef enum {
1138 IMS_IRAT_STATUS_IDLE = 0,
1139 IMS_IRAT_STATUS_FROM_4_TO_2,
1140 IMS_IRAT_STATUS_FROM_4_TO_3,
1141 IMS_IRAT_STATUS_FROM_2_TO_4,
1142 IMS_IRAT_STATUS_FROM_3_TO_4,
1143 IMS_IRAT_STATUS_FROM_4_TO_23,
1144 IMS_IRAT_STATUS_FROM_23_TO_4,
1145 IMS_IRAT_STATUS_FROM_5_TO_2 = 7,
1146 IMS_IRAT_STATUS_FROM_5_TO_3,
1147 IMS_IRAT_STATUS_FROM_5_TO_23,
1148 IMS_IRAT_STATUS_FROM_5_TO_4,
1149 IMS_IRAT_STATUS_FROM_2_TO_5,
1150 IMS_IRAT_STATUS_FROM_3_TO_5,
1151 IMS_IRAT_STATUS_FROM_23_TO_5,
1152 IMS_IRAT_STATUS_FROM_4_TO_5 = 14,
1153 IMS_IRAT_STATUS_FROM_2_TO_3,
1154 IMS_IRAT_STATUS_FROM_3_TO_2,
1155 IMS_IRAT_STATUS_FROM_23_TO_2,
1156 IMS_IRAT_STATUS_FROM_2_TO_23,
1157 IMS_IRAT_STATUS_FROM_23_TO_3,
1158 IMS_IRAT_STATUS_FROM_3_TO_23 = 20
1159} ims_irat_status_enum;
1160
1161typedef enum
1162{
1163 IMS_RAT_TYPE_2G = 0,
1164 IMS_RAT_TYPE_3G_FDD,
1165 IMS_RAT_TYPE_3G_TDD,
1166 IMS_RAT_TYPE_4G_FDD,
1167 IMS_RAT_TYPE_4G_TDD,
1168 IMS_RAT_TYPE_5G_FDD,
1169 IMS_RAT_TYPE_5G_TDD,
1170 IMS_RAT_TYPE_NONE = 0xFF
1171} ims_rat_type_enum;
1172
1173typedef enum
1174{
1175 C2K_RAT_TYPE_NONE = 0,
1176 C2K_RAT_TYPE_1XRTT,
1177 C2K_RAT_TYPE_HRPD,
1178 C2K_RAT_TYPE_EHRPD,
1179} c2k_rat_type_enum;
1180
1181typedef enum
1182{
1183 EPSFB_STAT_STARTED = 0,
1184 EPSFB_STAT_SUCCESSFUL = 1,
1185 EPSFB_STAT_FAILURE = 2
1186}epsfb_stat_enum;
1187
1188typedef enum
1189{
1190 EPSFB_TYPE_HANDOVER = 0,
1191 EPSFB_TYPE_REDIRECTION =1
1192}epsfb_type_enum;
1193
1194typedef enum
1195{
1196 IMS_RCODE_OK,
1197 IMS_RCODE_CONNECT,
1198 IMS_RCODE_RING,
1199 IMS_RCODE_NO_CARRIER, //3
1200 IMS_RCODE_ERROR, //4
1201 IMS_RCODE_BUSY = 7,
1202
1203 /* Below are MTK proprietary result codes */
1204 IMS_RCODE_CONNECT_PS = 100,
1205
1206 /* Below are result codes added for IMS */
1207
1208} ims_result_code_enum;
1209
1210typedef enum
1211{
1212 IMS_ERR_PHONE_FAILURE = 0,
1213 IMS_ERR_OPERATION_NOT_ALLOWED_ERR = 3,
1214 IMS_ERR_OPERATION_NOT_SUPPORTED = 4,
1215 IMS_ERR_PH_SIM_PIN_REQUIRED = 5,
1216 IMS_ERR_PH_FSIM_PIN_REQUIRED = 6,
1217 IMS_ERR_PH_FSIM_PUK_REQUIRED = 7,
1218 IMS_ERR_SIM_NOT_INSERTED = 10,
1219 IMS_ERR_SIM_PIN_REQUIRED = 11,
1220 IMS_ERR_SIM_PUK_REQUIRED = 12,
1221 IMS_ERR_SIM_FAILURE = 13,
1222 IMS_ERR_SIM_BUSY = 14,
1223 IMS_ERR_SIM_WRONG = 15,
1224 IMS_ERR_INCORRECT_PASSWD = 16,
1225 IMS_ERR_SIM_PIN2_REQUIRED = 17,
1226 IMS_ERR_SIM_PUK2_REQUIRED = 18,
1227 IMS_ERR_MEM_FULL = 20,
1228 IMS_ERR_INVALID_INDEX = 21,
1229 IMS_ERR_NO_FOUND = 22,
1230 IMS_ERR_TEXT_ERRSTRING_TOO_LONG_ERR = 24,
1231 IMS_ERR_INVALID_CHARACTERS_IN_TEXT_ERRSTRING_ERR = 25,
1232 IMS_ERR_DIAL_ERRSTRING_TOO_LONG_ERR = 26,
1233 IMS_ERR_INVALID_CHARACTERS_IN_DIAL_ERRSTRING_ERR = 27,
1234 IMS_ERR_NO_NW_SERVICE = 30,
1235 IMS_ERR_NETWORK_TIMEOUT = 31,
1236 IMS_ERR_NETWORK_NOT_ALLOWED = 32,
1237 IMS_ERR_NW_PERSON_PIN_REQUIRED = 40,
1238 IMS_ERR_NW_PERSON_PUK_REQUIRED = 41,
1239 IMS_ERR_NW_SUB_PERSON_PIN_REQUIRED = 42,
1240 IMS_ERR_NW_SUB_PERSON_PUK_REQUIRED = 43,
1241 IMS_ERR_SP_PERSON_PIN_REQUIRED = 44,
1242 IMS_ERR_SP_PERSON_PUK_REQUIRED = 45,
1243 IMS_ERR_CORP_PERSON_PIN_REQUIRED = 46,
1244 IMS_ERR_CORP_PERSON_PUK_REQUIRED = 47,
1245 IMS_ERR_UNKNOWN = 100,
1246 IMS_ERR_ILLEGAL_MS = 103,
1247 IMS_ERR_ILLEGAL_ME = 106,
1248 IMS_ERR_GPRS_NOT_ALLOWED = 107,
1249 IMS_ERR_PLMN_NOT_ALLOWED = 111,
1250 IMS_ERR_LA_NOT_ALLOWED = 112,
1251 IMS_ERR_ROAMING_AREA_NOT_ALLOWED = 113,
1252 IMS_ERR_SERV_OPTION_NOT_SUPPORTED = 132,
1253 IMS_ERR_REQ_SERV_OPTION_NOT_SUBSCRIBED = 133,
1254 IMS_ERR_SERV_OPTION_TEMP_OUT_OF_ORDER = 134,
1255 IMS_ERR_GPRS_UNSPECIFIED_ERROR = 148,
1256 IMS_ERR_PDP_AUTH_FAIL = 149,
1257 IMS_ERR_INVALID_MOBILE_CLASS = 150,
1258 IMS_ERR_LINK_NS_SP_PERSON_PIN_REQUIRED = 151,
1259 IMS_ERR_LINK_NS_SP_PERSON_PUK_REQUIRED = 152,
1260 IMS_ERR_LINK_SIM_C_PERSON_PIN_REQUIRED = 153,
1261 IMS_ERR_LINK_SIM_C_PERSON_PUK_REQUIRED = 154,
1262
1263 /* Below are MTK proprietary error codes */
1264 IMS_ERR_COMMAND_CONFLICT = 302,
1265 IMS_NO_ERR = 600,
1266 IMS_ERR_UNRECOGNIZED_CMD = 601,
1267 IMS_ERR_RETURN_ERROR = 602,
1268 IMS_ERR_SYNTEX_ERROR = 603,
1269 IMS_ERR_UNSPECIFIED = 604,
1270 IMS_ERR_DATA_TRANSFER_ALREADY = 605,
1271 IMS_ERR_ACTION_ALREADY = 606,
1272 IMS_ERR_NOT_AT_CMD = 607,
1273 IMS_ERR_MULTI_CMD_TOO_LONG = 608,
1274 IMS_ERR_ABORT_COPS = 609,
1275 IMS_ERR_NO_CALL_DISC = 610,
1276 IMS_ERR_BT_SAP_UNDEFINED = 611,
1277 IMS_ERR_BT_SAP_NOT_ACCESSIBLE = 612,
1278 IMS_ERR_BT_SAP_CARD_REMOVED = 613,
1279 IMS_ERR_AT_NOT_ALLOWED_BY_CUSTOMER = 614
1280} ims_err_id_enum;
1281
1282typedef enum
1283{
1284 IMS_ECPI_DISC_CAUSE_XXX = 0
1285} ims_ecpi_disc_cause_enum;
1286
1287typedef enum
1288{
1289 WFC_PROFILE_CELLULAR_ONLY = 0,
1290 WFC_PROFILE_WIFI_PREFERRED,
1291 WFC_PROFILE_CELLULAR_PREFERRED,
1292 WFC_PROFILE_WIFI_ONLY,
1293 /* In IMS preferred mode voice service preference is: *
1294 * 4G (VoLTE) - WiFi (VoWiFi) - 3G - 2G */
1295 WFC_PROFILE_IMS_PREFERRED,
1296 WFC_PROFILE_NUM
1297} wfc_profile_enum;
1298
1299typedef enum
1300{
1301 IMS_HANDOVER_STATUS_NONE = 0,
1302 IMS_HANDOVER_STATUS_LTE_TO_WIFI,
1303 IMS_HANDOVER_STATUS_WIFI_TO_LTE,
1304 IMS_HANDOVER_STATUS_NR_TO_WIFI,
1305 IMS_HANDOVER_STATUS_WIFI_TO_NR,
1306 IMS_HANDOVER_STATUS_LTE_TO_VODATA,
1307 IMS_HANDOVER_STATUS_VODATA_TO_LTE,
1308 IMS_HANDOVER_STATUS_NR_TO_VODATA,
1309 IMS_HANDOVER_STATUS_VODATA_TO_NR,
1310 IMS_HANDOVER_STATUS_WIFI_TO_VODATA,
1311 IMS_HANDOVER_STATUS_VODATA_TO_WIFI,
1312 IMS_HANDOVER_STATUS_MAX,
1313} ims_handover_status_enum;
1314
1315// For extended DTMF operation commands from ATP to VDM
1316typedef enum
1317{
1318 IMS_DTMF_ACTION_START = 0,
1319 IMS_DTMF_ACTION_STOP
1320} ims_dtmf_action_enum;
1321
1322typedef enum
1323{
1324 IMS_SERVICE_NORMAL_SERVICE = 0, /* NAS registration success */
1325 IMS_SERVICE_LIMITED_SERVICE,
1326 IMS_SERVICE_NO_SERVICE /* plmn loss/idle oos happen */
1327} ims_service_enum;
1328
1329typedef enum
1330{
1331 CELL_NORMAL_SERVICE = 0,
1332 CELL_LIMITED_SERVICE
1333} cell_service_enum;
1334
1335typedef enum
1336{
1337 C2K_CELL_NO_SERVICE = 0,
1338 C2K_CELL_NORMAL_SERVICE
1339} c2k_cell_service_enum;
1340
1341typedef enum
1342{
1343 IMS_URI_TYPE_SIP = 0x01,
1344 IMS_URI_TYPE_TEL = 0x02,
1345 IMS_URI_TYPE_URN = 0x04
1346}ims_uri_type_enum;
1347
1348/**
1349 * MM means generic mobility management
1350 * not for 2G MM module
1351 */
1352typedef enum
1353{
1354 MM_IMS_VOICE_TERMINATION_DISABLED = 1,
1355 MM_IMS_VOICE_TERMINATION_ENABLED
1356} mm_ims_voice_termination;
1357
1358typedef enum
1359{
1360 IMS_SRVCC_CALL_NUM_FORMAT_UNSPECIFIED = 0,
1361 IMS_SRVCC_CALL_NUM_FORMAT_URI = 1,
1362 IMS_SRVCC_CALL_NUM_FORMAT_BCD = 2,
1363 IMS_SRVCC_CALL_NUM_FORMAT_MAX,
1364} ims_srvcc_call_number_format_enum;
1365
1366typedef enum
1367{
1368 HVOLTE_SRLTE_MODE = 0, // call domain in C2K
1369 HVOLTE_VOPS_MODE = 1, // Suspend 1xRTT tune-away, call domain in IMS
1370 HVOLTE_LWG_MODE = 2, // call domain in GW
1371 HVOLTE_UNKNOWN_MODE = 0xFF
1372} hvolte_mode_enum;
1373
1374typedef enum
1375{
1376 HVOLTE_CALL_DOMAIN_C2K = 0,
1377 HVOLTE_CALL_DOMAIN_IMS = 1,
1378} hvolte_call_domain_enum;
1379
1380typedef enum
1381{
1382 HVOLTE_DIAL_NONE = 0,
1383 HVOLTE_DIAL_SILENT_REDIAL,
1384 HVOLTE_DIAL_C2K_DIRECTLY,
1385 HVOLTE_DIAL_MAX
1386} hvolte_dial_type_enum;
1387
1388typedef enum
1389{
1390 HVOLTE_DISABLE = 0,
1391 HVOLTE_AUTO_MODE,//=1
1392 HVOLTE_MANUAL_MODE,//=2
1393 HVOLTE_STATUS_MAX = HVOLTE_MANUAL_MODE
1394} hvolte_enable_status_enum;
1395
1396typedef enum
1397{
1398 IMS_MEDIA_BEARER_DEACTIVATE = 0,
1399 IMS_MEDIA_BEARER_ACTIVATE
1400} ims_media_bearer_status_enum;
1401
1402typedef enum {
1403 IMS_CALL_STATUS_BEGIN = 0,
1404 IMS_CALL_STATUS_CONNECTED,
1405 IMS_CALL_STATUS_END,
1406} ims_call_status_enum;
1407
1408typedef enum _ims_reg_event_enum {
1409 IMS_REG_EVENT_NORMAL = 0, /* default */
1410 IMS_REG_EVENT_PCO_FFOOH_5 = 1,
1411 IMS_REG_EVENT_PCO_FF00H_5 = 1,
1412 IMS_REG_EVENT_MAX
1413} ims_reg_event_enum;
1414
1415typedef enum {
1416 IMS_SPECIAL_EVENT_NORMAL = IMS_REG_EVENT_NORMAL, /* default */
1417 IMS_SPECIAL_EVENT_PCO_FF00H_5 = IMS_REG_EVENT_PCO_FF00H_5,
1418 IMS_SPECIAL_EVENT_CALL_OUTAGE_TEXT,
1419 IMS_SPECIAL_EVENT_MAX
1420} ims_special_event_enum;
1421
1422typedef enum
1423{
1424 TIMER_EPDG_CS_STOP = 0,
1425 TIMER_EPDG_CS_START
1426} timer_epdg_cs_status_enum;
1427
1428typedef enum {
1429 IMS_INET_METHOD_SIP_REGISTER,
1430 IMS_INET_METHOD_SIP_INVITE,
1431 IMS_INET_METHOD_SIP_REFER,
1432 IMS_INET_METHOD_SIP_UPDATE,
1433 IMS_INET_METHOD_SIP_CANCEL,
1434 IMS_INET_METHOD_SIP_MESSAGE,
1435 IMS_INET_METHOD_SIP_ACK,
1436 IMS_INET_METHOD_SIP_BYE,
1437 IMS_INET_METHOD_SIP_OPTIONS,
1438 IMS_INET_METHOD_SIP_SUBSCRIBE,
1439 IMS_INET_METHOD_SIP_NOTIFY,
1440 IMS_INET_METHOD_SIP_PUBLISH,
1441 IMS_INET_METHOD_SIP_INFO,
1442 IMS_INET_METHOD_SIP_PRACK,
1443 IMS_INET_METHOD_HTTP_GET,
1444 IMS_INET_METHOD_HTTP_POST,
1445 IMS_INET_METHOD_HTTP_TRACE,
1446 IMS_INET_METHOD_HTTP_HEAD,
1447 IMS_INET_METHOD_HTTP_PUT,
1448 IMS_INET_METHOD_HTTP_DELETE,
1449 IMS_INET_METHOD_HTTP_CONNECT,
1450 IMS_INET_METHOD_RTSP_OPTIONS,
1451 IMS_INET_METHOD_RTSP_REDIRECT,
1452 IMS_INET_METHOD_RTSP_DESCRIBE,
1453 IMS_INET_METHOD_RTSP_SETUP,
1454 IMS_INET_METHOD_RTSP_PLAY,
1455 IMS_INET_METHOD_RTSP_PAUSE,
1456 IMS_INET_METHOD_RTSP_TEARDOWN,
1457 IMS_INET_METHOD_RTSP_SET_PARAMETER,
1458 IMS_INET_METHOD_PXY_DEBUG,
1459 IMS_INET_METHOD_UNRECOGNIZED,
1460 IMS_INET_METHOD_NUM,
1461}ims_inet_method_enum;
1462
1463/* enum */
1464typedef enum
1465{
1466 EXIT_ECBM_TIMER_EXPIRE, //leave ecbm on timer expiry
1467 EXIT_ECBM_SECOND_CALL, //leave ecbm due to second call
1468 EXIT_ECBM_T911
1469} exit_ecbm_reason_enum;
1470
1471typedef enum {
1472 RCS_REG_FEATURE_OFF = 0,
1473 RCS_REG_FEATURE_ON,
1474 RCS_REG_FEATURE_RE_TRANSMIT,
1475 RCS_REG_STATE_REGISTERED,
1476 RCS_REG_STATE_UNREGISTERED
1477} rcs_reg_state_enum;
1478
1479typedef enum {
1480 IMS_SPECIAL_PROFILE_NONE = 0,
1481 IMS_SPECIAL_PROFILE_VISIBLE_SIM = 1<<1, /*Visible SIM: Legacy*/
1482 IMS_SPECIAL_PROFILE_VISIBLE_SIM_VZ_CORE = 1<<2 /*Visible SIM: VZ Core*/
1483}ims_special_profile_enum;
1484
1485typedef enum {
1486 IMS_EM_REG_ABNORMAL_NONE = 0,
1487 IMS_EM_REG_ABNORMAL_REG_FAIL = 1,
1488 IMS_EM_REG_ABNORMAL_REG_SLOW = 2,
1489 IMS_EM_REG_ABNORMAL_DEREG = 3
1490} ims_em_reg_abnormal_type_enum;
1491
1492typedef enum{
1493 IMS_EM_REG_ABNORMAL_PDN_SLOW = 0,
1494 IMS_EM_REG_ABNORMAL_SIP_SLOW = 1,
1495} ims_em_reg_abnormal_slow_type_enum;
1496
1497
1498typedef enum {
1499 IMS_EM_REG_ABNORMAL_PDN_NOT_TRIGGERED = 0,
1500 IMS_EM_REG_ABNORMAL_PDN_NOT_ESTABLISHED = 1,
1501 IMS_EM_REG_ABNORMAL_SIP_NOT_SENT = 2,
1502 IMS_EM_REG_ABNORMAL_SIP_GOT_ERROR = 3,
1503 IMS_EM_REG_ABNORMAL_HO_REREG_FAIL = 4
1504} ims_em_reg_abnormal_fail_state_enum;
1505
1506typedef enum {
1507 IMS_EM_REG_ABNORMAL_DEREG_CS_NONE = 0,
1508 IMS_EM_REG_ABNORMAL_DEREG_CS_CAP_NOT_SUPPORT = 1,
1509 IMS_EM_REG_ABNORMAL_DEREG_CS_SIM_ERROR = 2,
1510 IMS_EM_REG_ABNORMAL_DEREG_CS_INTERNAL_ERROR = 3,
1511 IMS_EM_REG_ABNORMAL_DEREG_CS_CELL_RAT_NOT_FOUND = 4,
1512} ims_em_reg_abnormal_dereg_cause_enum;
1513
1514typedef enum {
1515 IMS_EM_REG_ABNORMAL_REG_FAIL_REPORT_NONE = 0,
1516 IMS_EM_REG_ABNORMAL_REG_FAIL_REPORT_FIRST_EVENT = 1,
1517 IMS_EM_REG_ABNORMAL_REG_FAIL_REPORT_TIMER_EXPIRE = 2,
1518 IMS_EM_REG_ABNORMAL_REG_FAIL_REPORT_EVENT_CHANGE = 3,
1519} ims_em_reg_abnormal_reg_fail_report_type_enum;
1520
1521typedef enum {
1522 IMC_EMERGENCY_IND_BEARER_UNKNOWN_SERVICE = 0,
1523 IMC_EMERGENCY_IND_BEARER_NOT_FOR_EMERGENCY_SERVICE,
1524 IMC_EMERGENCY_IND_BEARER_FOR_EMERGENCY_SERVICE
1525} imc_emergency_ind_enum;
1526
1527typedef enum {
1528 IMS_UE_SUPPORT = 1 << 0,
1529 IMS_MOBILE_DATA_DISABLE = 1 << 1,
1530 IMS_PDNGW_SUPPORT_IND = 1 << 2,
1531 IMS_PDNGW_SUPPORT = 1 << 3,
1532 IMS_PS_DATA_OFF_ENABLE = 1 << 4,
1533} ims_ps_data_off_status_enum;
1534
1535typedef enum {
1536 IMS_EXEMPT_USSI = 1 << 0,
1537 IMS_EXEMPT_MMTEL_VOICE = 1 << 1,
1538 IMS_EXEMPT_MMTEL_VIDEO = 1 << 2,
1539 IMS_EXEMPT_SMSOIP = 1 << 3,
1540} ims_ps_data_off_exempt_service_enum;
1541
1542typedef enum {
1543 IMC_ACCT_TY_NORMAL = 0,
1544 IMC_ACCT_TY_EMERGENCY = 1,
1545 IMC_ACCT_TY_MAX
1546} imc_acct_type_enum;
1547
1548typedef enum
1549{
1550 IMS_EPSFB_TIMER_START_WHEN_1XX = 1 << 0, //start epsfb_timer when send/recv 1xx response (include 100)
1551 IMS_EPSFB_TIMER_START_WHEN_SDP_ANSWER = 1 << 1, //start epsfb_timer when send/recv initial SDP answer
1552} ims_epsfb_timer_start_enum;
1553
1554typedef enum
1555{
1556 IMS_EPSFB_TIMER_STOP_WHEN_ECPI_6 = 1 << 0, //stop epsfb_timer when call setup complete
1557 IMS_EPSFB_TIMER_STOP_WHEN_RING = 1 << 1, //stop epsfb_timer when ringing/ringback
1558 IMS_EPSFB_TIMER_STOP_WHEN_BW_CNF = 1 << 2, //stop epsfb_timer when BW_CNF
1559 IMS_EPSFB_TIMER_STOP_WHEN_DEDICATED = 1 << 3, //stop epsfb_timer when dedicated baerer setup, e.g. 5QI=1 (not include fallback to default)
1560} ims_epsfb_timer_stop_enum;
1561
1562typedef enum
1563{
1564 IMS_TIMER_THROTTLING = 0,
1565 IMS_TIMER_ESTABLISHMENT,
1566 IMS_TIMER_VZW,
1567 IMS_TIMER_EPSFB
1568} ims_timer_type_enum;
1569
1570typedef enum
1571{
1572 IMS_TIMER_STATUS_START = 0,
1573 IMS_TIMER_STATUS_STOP,
1574 IMS_TIMER_STATUS_EXPIRY
1575} ims_timer_status_enum;
1576
1577typedef enum
1578{
1579 IMS_EM_TIMER_TYPE_UNKNOWN = 0,
1580 IMS_EM_TIMER_TYPE_E1 = 1,
1581 IMS_EM_TIMER_TYPE_E2 = 2,
1582 IMS_EM_TIMER_TYPE_E3 = 3,
1583
1584 IMS_EM_TIMER_TYPE_MAX
1585} ims_em_timer_type_enum;
1586
1587typedef enum imcb_imc_func_class_enum {
1588 IMCB_IMC_FC_RTP = (1<<0),
1589 IMCB_IMC_FC_XMIT = (1<<1),
1590 IMCB_IMC_FC_VOICE = (1<<2),
1591 IMCB_IMC_FC_VIDEO = (1<<3),
1592 IMCB_IMC_FC_DTMF = (1<<4),
1593 IMCB_IMC_FC_CODEC = (1<<5),
1594 /* WFC */
1595 IMCB_IMC_FC_HANDOVER = (1<<6),
1596 /* TTY */
1597 IMCB_IMC_FC_TTY = (1<<7),
1598 IMCB_IMC_FC_ALL = ((IMCB_IMC_FC_TTY<< 1)-1)
1599} imcb_imc_func_class_enum;
1600
1601/* WFC */
1602typedef enum {
1603 IMC_ACCESS_RAT_UNSPEC = 0,
1604 IMC_ACCESS_RAT_LTE,
1605 IMC_ACCESS_RAT_WIFI,
1606 IMC_ACCESS_RAT_EHRPD,
1607 IMC_ACCESS_RAT_GSM,
1608 IMC_ACCESS_RAT_UMTS,
1609 IMC_ACCESS_RAT_NR,
1610 IMC_ACCESS_RAT_DATA_1,
1611 IMC_ACCESS_RAT_DATA_2,
1612 IMC_ACCESS_RAT_DATA_3,
1613 IMC_ACCESS_RAT_DATA_4,
1614 IMC_ACCESS_RAT_NUM, /*MAX */
1615} imc_access_rat_type_enum;
1616
1617typedef enum
1618{
1619 /* Ref: TS27.007 +CIREPH.
1620 * NOTE 1: vSRVCC is a Rel-11 feature
1621 * NOTE 2: Value 3, general non specific failure, might be used
1622 * e.g. in the case of handover cancellation as specified in 3GPP
1623 * TS 24.301 [83] subclause 6.6.2.
1624 */
1625 SRVCC_STATUS_HO_STARTED = 0, // 0: SRVCC handover has started in the CS domain
1626 SRVCC_STATUS_HO_SUCCESSFUL, // 1: SRVCC handover successful
1627 SRVCC_STATUS_HO_FAILED, // 2: SRVCC or vSRVCC handover cancelled ("Handover Failure" sent)
1628 SRVCC_STATUS_HO_CANCELLED, // 3: SRVCC or vSRVCC handover, general non specific failure
1629 SRVCC_STATUS_HO_VSRVCC_STARTED, // 4: vSRVCC handover has started in the CS domain
1630 SRVCC_STATUS_HO_VSRVCC_SUCCESSFUL, // 5: vSRVCC handover successful
1631 SRVCC_STATUS_HO_MAX
1632} srvcc_status_enum;
1633
1634typedef enum
1635{
1636 IMS_ACCESS_RAT_LTE = 0,
1637 IMS_ACCESS_RAT_WIFI,
1638 IMS_ACCESS_RAT_EHRPD,
1639 IMS_ACCESS_RAT_GSM,
1640 IMS_ACCESS_RAT_UMTS,
1641 IMS_ACCESS_RAT_NR,
1642 IMS_ACCESS_RAT_DATA_1,
1643 IMS_ACCESS_RAT_DATA_2,
1644 IMS_ACCESS_RAT_DATA_3,
1645 IMS_ACCESS_RAT_DATA_4,
1646 IMS_ACCESS_RAT_NUM
1647} ims_access_rat_enum;
1648
1649typedef enum
1650{
1651 IMS_REG_STATE_UNREGISTERED = 0,
1652 IMS_REG_STATE_REGISTERED,
1653 IMS_REG_STATE_UNREGISTERED_START,
1654 IMS_REG_STATE_REGISTERED_START
1655} ims_reg_state_enum;
1656
1657typedef enum
1658{
1659 IMS_REG_SUB_STATE_UNSPEC = 0,
1660 IMS_REG_SUB_STATE_UNREGISTERED,
1661 IMS_REG_SUB_STATE_REGISTERED,
1662 IMS_REG_SUB_STATE_UNREGISTERING,
1663 IMS_REG_SUB_STATE_REGISTERING,
1664 IMS_REG_SUB_STATE_REREGISTERING,
1665} ims_reg_sub_state_enum;
1666
1667
1668typedef enum
1669{
1670 IMS_REG_TYPE_NORMAL = 0,
1671 IMS_REG_TYPE_EMERGENCY
1672} ims_reg_type_enum;
1673
1674// Emergency Call Mode Preference
1675typedef enum
1676{
1677 IMS_ECMP_UNSPEC,
1678 IMS_ECMP_3GPP,
1679 IMS_ECMP_WLAN,
1680 IMS_ECMP_MAX
1681} ims_ecmp_enum;
1682
1683typedef enum
1684{
1685/*
1686<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".
1687 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].
1688 2 RTP-based transfer of text according to MMTEL, see 3GPP TS 24.173 [87].
1689 4 SMS using IMS functionality, see 3GPP TS 24.341 [101].
1690 8 RTP-based transfer of video according to MMTEL, see 3GPP TS 24.173 [87].
1691The hexadecimal values 10, 20, 40 ?80000 are reserved by the present document.
1692Example: The parameter <ext_info>=5 means that both RTP-based transfer of voice according to MMTEL and SMS using IMS functionality can be used.
1693*/
1694
1695 IMS_REG_SRV_NONE = 0x00,
1696 IMS_REG_SRV_VOICE = 0x01,
1697 IMS_REG_SRV_TXT = 0x02,
1698 IMS_REG_SRV_SMS = 0x04,
1699 IMS_REG_SRV_VIDEO = 0x08,
1700
1701 IMS_REG_SRV_ALL = (IMS_REG_SRV_VOICE |
1702 IMS_REG_SRV_SMS |
1703 IMS_REG_SRV_VIDEO),
1704
1705 IMS_REG_SRV_BOTH = IMS_REG_SRV_VOICE | IMS_REG_SRV_SMS
1706}ims_reg_service_enum;
1707
1708typedef enum {
1709 IMS_REG_SIP_URI_TYPE_MSISDN = 0,
1710 IMS_REG_SIP_URI_TYPE_IMSI = 1,
1711 IMS_REG_SIP_URI_TYPE_MAX
1712} ims_reg_sip_uri_type_enum;
1713
1714typedef enum {
1715 IMC_RAT_TYPE_NONE ,
1716 IMC_RAT_TYPE_2G = IMC_RAT_TYPE_NONE,
1717 IMC_RAT_TYPE_3G_FDD,
1718 IMC_RAT_TYPE_3G_TDD,
1719 IMC_RAT_TYPE_4G_FDD,
1720 IMC_RAT_TYPE_4G_TDD,
1721
1722 /* WFC */
1723 IMC_RAT_TYPE_802_11,
1724 IMC_RAT_TYPE_802_11a,
1725 IMC_RAT_TYPE_802_11b,
1726 IMC_RAT_TYPE_802_11g,
1727 IMC_RAT_TYPE_802_11n,
1728 IMC_RAT_TYPE_802_11ac,
1729
1730 /* C2K */
1731 IMC_RAT_TYPE_1xRTT,
1732 IMC_RAT_TYPE_HRPD,
1733 IMC_RAT_TYPE_eHRPD,
1734
1735 IMC_RAT_TYPE_5G_FDD,
1736 IMC_RAT_TYPE_5G_TDD,
1737
1738 IMC_RAT_TYPE_DATA_1,
1739 IMC_RAT_TYPE_DATA_2,
1740 IMC_RAT_TYPE_DATA_3,
1741 IMC_RAT_TYPE_DATA_4,
1742
1743 IMC_RAT_TYPE_MAX = IMC_RAT_TYPE_DATA_4,
1744 IMC_RAT_TYPE_UNSPEC = 0x80,
1745} imc_rat_type_enum;
1746
1747typedef enum {
1748 IMS_SMS_CAP_NONE = 0x0000,
1749 IMS_SMS_CAP_3GPP = 0x0001,
1750 IMS_SMS_CAP_N3GPP = 0x0002
1751} ims_sms_cap_enum;
1752
1753typedef enum
1754{
1755 IMS_SMS_CATEGORY_NORMAL = 0,
1756 IMS_SMS_CATEGORY_EMERGENCY
1757} ims_sms_category_enum;
1758
1759#define VOLTE_NETWORK_TYPE_IS_WIFI(net_type) \
1760 ((net_type >= VoLTE_Event_Network_Type_802_11) && \
1761 (net_type <= VoLTE_Event_Network_Type_802_11ac))
1762
1763#define VOLTE_NETWORK_TYPE_IS_23G(net_type) \
1764 ((net_type >= VoLTE_Event_Network_Type_GERAN) && \
1765 (net_type <= VoLTE_Event_Network_Type_UTRAN_TDD))
1766
1767#define VOLTE_NETWORK_TYPE_IS_LTE(net_type) \
1768 ((net_type >= VoLTE_Event_Network_Type_E_UTRAN_FDD) && \
1769 (net_type <= VoLTE_Event_Network_Type_E_UTRAN_TDD))
1770
1771#define VOLTE_NETWORK_TYPE_IS_NR(net_type) \
1772 ((net_type == VoLTE_Event_Network_Type_NR_FDD) || \
1773 (net_type == VoLTE_Event_Network_Type_NR_TDD))
1774
1775#define VOLTE_NETWORK_TYPE_IS_DATA(net_type) \
1776 ((net_type >= VoLTE_Event_Network_Type_Data_1) && \
1777 (net_type <= VoLTE_Event_Network_Type_Data_4))
1778
1779enum VoLTE_Event_Network_Type_e {
1780 VoLTE_Event_Network_Type_Unspec = 0,
1781 VoLTE_Event_Network_Type_Unknown = 1,
1782 VoLTE_Event_Network_Type_802_11 = 2,
1783 VoLTE_Event_Network_Type_802_11a = 3,
1784 VoLTE_Event_Network_Type_802_11b = 4,
1785 VoLTE_Event_Network_Type_802_11g = 5,
1786 VoLTE_Event_Network_Type_802_11n = 6,
1787 VoLTE_Event_Network_Type_802_11ac = 7,
1788 VoLTE_Event_Network_Type_GERAN = 8,
1789 VoLTE_Event_Network_Type_UTRAN_FDD = 9,
1790 VoLTE_Event_Network_Type_UTRAN_TDD =10,
1791 VoLTE_Event_Network_Type_CDMA2000 =11,
1792 VoLTE_Event_Network_Type_E_UTRAN_FDD =12,
1793 VoLTE_Event_Network_Type_E_UTRAN_TDD =13,
1794 VoLTE_Event_Network_Type_NR_FDD =14,
1795 VoLTE_Event_Network_Type_NR_TDD =15,
1796 /*C2K*/
1797 VoLTE_Event_Network_Type_C2K_1xRTT =16,
1798 VoLTE_Event_Network_Type_C2K_HRPD =17,
1799 VoLTE_Event_Network_Type_C2K_eHRPD =18,
1800 /*VoData*/
1801 VoLTE_Event_Network_Type_Data_1 =19,
1802 VoLTE_Event_Network_Type_Data_2 =20,
1803 VoLTE_Event_Network_Type_Data_3 =21,
1804 VoLTE_Event_Network_Type_Data_4 =22,
1805 /*add here*/
1806 VoLTE_Event_Network_Type_Max,
1807};
1808
1809enum VoLTE_Event_Network_State_e {
1810 VoLTE_Event_Network_State_Connected = 1,
1811 VoLTE_Event_Network_State_Disconnected = 2,
1812 VoLTE_Event_Network_State_Refresh = 3,
1813 VoLTE_Event_Network_State_Lost = 4,
1814 VoLTE_Event_Network_State_OOS_Start = 5,
1815 VoLTE_Event_Network_State_OOS_End = 6,
1816 /*add here*/
1817 VoLTE_Event_Network_State_OOS_Max,
1818};
1819
1820typedef enum {
1821 IMS_STK_SETUP_CALL_IF_NO_ANOTHER_CALL,
1822 IMS_STK_SETUP_CALL_WITH_REDIAL_IF_NO_ANOTHER_CALL,
1823 IMS_STK_SETUP_CALL_PUT_ANOTHER_HOLD,
1824 IMS_STK_SETUP_CALL_WITH_REDIAL_PUT_ANOTHER_HOLD,
1825 IMS_STK_SETUP_CALL_DISCON_ANOTHER,
1826 IMS_STK_SETUP_CALL_WITH_REDIAL_DISCON_ANOTHER,
1827 IMS_STK_SETUP_CALL_MAX
1828} ims_stk_setup_call_enum;
1829
1830typedef enum {
1831 IMS_STK_CALL_SETUP = 0,
1832 IMS_STK_CALL_SETUP_BUT_ICON_COULD_NOT_DSPL = 4
1833} ims_stk_type_enum;
1834
1835enum VoLTE_Setting_Type_e {
1836 /* ------------------------------------------------ */
1837 /* System */
1838 /* ------------------------------------------------ */
1839 VoLTE_Setting_System_Start_Code = 0,
1840 VoLTE_Setting_System_Operator_ID = VoLTE_Setting_System_Start_Code + 1, // data type int
1841 VoLTE_Setting_System_GENERAL_SETTING = VoLTE_Setting_System_Start_Code + 2,
1842
1843 /* ------------------------------------------------ */
1844 /* Network Information */
1845 /* ------------------------------------------------ */
1846 VoLTE_Setting_Network_Information_Start_Code = 1000,
1847 VoLTE_Setting_Net_Local_Address = VoLTE_Setting_Network_Information_Start_Code + 1, // data type is string
1848 VoLTE_Setting_Net_Local_Port = VoLTE_Setting_Network_Information_Start_Code + 2, // data type int
1849 VoLTE_Setting_Net_Local_Protocol_Type = VoLTE_Setting_Network_Information_Start_Code + 3, // UDP: 0, TCP: 1
1850 VoLTE_Setting_Net_Local_Protocol_Version = VoLTE_Setting_Network_Information_Start_Code + 4, // IPv4: 1, IPv6: 2
1851 VoLTE_Setting_Net_Local_IPSec_Port_Start = VoLTE_Setting_Network_Information_Start_Code + 5,
1852 VoLTE_Setting_Net_Local_IPSec_Port_Range = VoLTE_Setting_Network_Information_Start_Code + 6,
1853 VoLTE_Setting_Net_Local_RTP_RTCP_Port_Start = VoLTE_Setting_Network_Information_Start_Code + 7,
1854 VoLTE_Setting_Net_Local_RTP_RTCP_Port_Range = VoLTE_Setting_Network_Information_Start_Code + 8,
1855 VoLTE_Setting_Net_IPSec = VoLTE_Setting_Network_Information_Start_Code + 9, // Disable: 0, Enable: 1
1856 VoLTE_Setting_Net_Cell_ID = VoLTE_Setting_Network_Information_Start_Code + 10, // data type is string
1857 VoLTE_Setting_Net_RTP_DSCP = VoLTE_Setting_Network_Information_Start_Code + 11, // For build pass, need to remove
1858 VoLTE_Setting_Net_IF_Name = VoLTE_Setting_Network_Information_Start_Code + 12, // data type is string
1859 VoLTE_Setting_Net_Network_Id = VoLTE_Setting_Network_Information_Start_Code + 13, // data type is integer
1860 VoLTE_Setting_Net_SIP_Dscp = VoLTE_Setting_Network_Information_Start_Code + 14, // data type is integer
1861 VoLTE_Setting_Net_RTP_Voice_Dscp = VoLTE_Setting_Network_Information_Start_Code + 15, // data type is integer
1862 VoLTE_Setting_Net_RTP_Video_Dscp = VoLTE_Setting_Network_Information_Start_Code + 16, // data type is integer
1863 VoLTE_Setting_Net_SIP_Soc_Priority = VoLTE_Setting_Network_Information_Start_Code + 17, // data type is integer
1864 VoLTE_Setting_Net_SIP_Soc_Tcp_Mss = VoLTE_Setting_Network_Information_Start_Code + 18, // data type is integer
1865 VoLTE_Setting_Net_RTP_Voice_Soc_Priority = VoLTE_Setting_Network_Information_Start_Code + 19, // data type is integer
1866 VoLTE_Setting_Net_RTP_Video_Soc_Priority = VoLTE_Setting_Network_Information_Start_Code + 20, // data type is integer
1867 VoLTE_Setting_Net_LBS_Location_Info = VoLTE_Setting_Network_Information_Start_Code + 21, // data type is integer
1868 VoLTE_Setting_Net_Security = VoLTE_Setting_Network_Information_Start_Code + 22,
1869 VoLTE_Setting_Net_Authentication = VoLTE_Setting_Network_Information_Start_Code + 23,
1870 VoLTE_Setting_Net_PCSCF_Port = VoLTE_Setting_Network_Information_Start_Code + 24,
1871 VoLTE_Setting_Net_Emergency_AID = VoLTE_Setting_Network_Information_Start_Code + 25,
1872
1873 /* ------------------------------------------------ */
1874 /* Account Settings */
1875 /* ------------------------------------------------ */
1876 VoLTE_Setting_Account_Settings_Start_Code = 2000,
1877 VoLTE_Setting_Account_Public_UID = VoLTE_Setting_Account_Settings_Start_Code + 1, // data type is string
1878 VoLTE_Setting_Account_Private_UID = VoLTE_Setting_Account_Settings_Start_Code + 2, // data type is string
1879 VoLTE_Setting_Account_Home_URI = VoLTE_Setting_Account_Settings_Start_Code + 3, // data type is string
1880 VoLTE_Setting_Account_IMEI = VoLTE_Setting_Account_Settings_Start_Code + 4, // data type is string
1881 VoLTE_Setting_Account_ConfFactoryURI = VoLTE_Setting_Account_Settings_Start_Code + 5,
1882 VoLTE_Setting_Account_IMSI_MNC = VoLTE_Setting_Account_Settings_Start_Code + 6,
1883 VoLTE_Setting_Account_IMSI_MCC = VoLTE_Setting_Account_Settings_Start_Code + 7,
1884 VoLTE_Setting_Account_MSISDN = VoLTE_Setting_Account_Settings_Start_Code + 8,
1885
1886 /* ------------------------------------------------ */
1887 /* Server Settings */
1888 /* ------------------------------------------------ */
1889 VoLTE_Setting_Server_Settings_Start_Code = 3000,
1890 VoLTE_Setting_Server_PCSCF_List = VoLTE_Setting_Server_Settings_Start_Code + 1, // data type is string
1891
1892 /* ------------------------------------------------ */
1893 /* VoLTE Service Settings */
1894 /* ------------------------------------------------ */
1895 VoLTE_Setting_VoLTE_Service_Start_Code = 10000,
1896
1897 /* ------------------------------------------------ */
1898 /* VoLTE Call Settings */
1899 /* ------------------------------------------------ */
1900 VoLTE_Setting_VoLTE_Call_Start_Code = 11000,
1901 VoLTE_Setting_VoLTE_Call_Session_Flag = VoLTE_Setting_VoLTE_Call_Start_Code + 1,
1902 VoLTE_Setting_VoLTE_Call_Session_Timer = VoLTE_Setting_VoLTE_Call_Start_Code + 2, // in seconds
1903 VoLTE_Setting_VoLTE_Call_Session_MinSE = VoLTE_Setting_VoLTE_Call_Start_Code + 3, // in seconds
1904 VoLTE_Setting_VoLTE_Call_Privacy = VoLTE_Setting_VoLTE_Call_Start_Code + 4,
1905 VoLTE_Setting_VoLTE_Call_Capability = VoLTE_Setting_VoLTE_Call_Start_Code + 5, // data type is ::VoLTE_Call_Capability_Type_e
1906 VoLTE_Setting_VoLTE_Call_RTCP_Interval = VoLTE_Setting_VoLTE_Call_Start_Code + 6, // in ms
1907 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?
1908 VoLTE_Setting_VoLTE_Call_CodecOrder1 = VoLTE_Setting_VoLTE_Call_Start_Code + 8, // voip_codec_enum
1909 VoLTE_Setting_VoLTE_Call_CodecOrder2 = VoLTE_Setting_VoLTE_Call_Start_Code + 9, // voip_codec_enum
1910 VoLTE_Setting_VoLTE_Call_CodecOrder3 = VoLTE_Setting_VoLTE_Call_Start_Code + 10, // voip_codec_enum
1911 VoLTE_Setting_VoLTE_Call_def_max_ptime = VoLTE_Setting_VoLTE_Call_Start_Code + 11,
1912 VoLTE_Setting_VoLTE_Call_def_ptime = VoLTE_Setting_VoLTE_Call_Start_Code + 12,
1913 VoLTE_Setting_VoLTE_Call_G711_ptime = VoLTE_Setting_VoLTE_Call_Start_Code + 13,
1914 VoLTE_Setting_VoLTE_Call_G726_ptime = VoLTE_Setting_VoLTE_Call_Start_Code + 14,
1915 VoLTE_Setting_VoLTE_Call_G729_ptime = VoLTE_Setting_VoLTE_Call_Start_Code + 15,
1916 VoLTE_Setting_VoLTE_Call_amr_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 16,
1917 VoLTE_Setting_VoLTE_Call_amr_wb_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 17,
1918 VoLTE_Setting_VoLTE_Call_h264_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 18,
1919 VoLTE_Setting_VoLTE_Call_G729_annexB = VoLTE_Setting_VoLTE_Call_Start_Code + 19,
1920 VoLTE_Setting_VoLTE_Call_TelEvt = VoLTE_Setting_VoLTE_Call_Start_Code + 20,
1921 VoLTE_Setting_VoLTE_Call_TelEvt_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 21,
1922 VoLTE_Setting_VoLTE_Call_Priority = VoLTE_Setting_VoLTE_Call_Start_Code + 22,
1923 VoLTE_Setting_VoLTE_Call_UserAgent = VoLTE_Setting_VoLTE_Call_Start_Code + 23, // VOLTE_MAX_ADDRESS_LENGTH
1924 VoLTE_Setting_VoLTE_Call_RejCode = VoLTE_Setting_VoLTE_Call_Start_Code + 24,
1925 VoLTE_Setting_VoLTE_Call_noResourceCode = VoLTE_Setting_VoLTE_Call_Start_Code + 25,
1926 VoLTE_Setting_VoLTE_Call_RejMediaCode = VoLTE_Setting_VoLTE_Call_Start_Code + 26,
1927 VoLTE_Setting_VoLTE_Call_RejbyUserCode = VoLTE_Setting_VoLTE_Call_Start_Code + 27,
1928 VoLTE_Setting_VoLTE_Call_Conf_SubTimer = VoLTE_Setting_VoLTE_Call_Start_Code + 28,
1929 VoLTE_Setting_VoLTE_Call_amr_mode_set = VoLTE_Setting_VoLTE_Call_Start_Code + 29,
1930 VoLTE_Setting_VoLTE_Call_amr_wb_mode_set = VoLTE_Setting_VoLTE_Call_Start_Code + 30,
1931 VoLTE_Setting_VoLTE_Call_amr_fmt_variant = VoLTE_Setting_VoLTE_Call_Start_Code + 31,
1932 VoLTE_Setting_VoLTE_Call_precondition = VoLTE_Setting_VoLTE_Call_Start_Code + 32,
1933 VoLTE_Setting_VoLTE_Call_MO_Invite_To_BWCNF_Time = VoLTE_Setting_VoLTE_Call_Start_Code + 33,
1934 VoLTE_Setting_VoLTE_Call_h264_pt2 = VoLTE_Setting_VoLTE_Call_Start_Code + 34,
1935 VoLTE_Setting_VoLTE_Call_h265_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 35,
1936 VoLTE_Setting_VoLTE_Call_h265_pt2 = VoLTE_Setting_VoLTE_Call_Start_Code + 36,
1937 VoLTE_Setting_VoLTE_Call_amr_oct_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 37,
1938 VoLTE_Setting_VoLTE_Call_amr_open_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 38,
1939 VoLTE_Setting_VoLTE_Call_amr_wb_oct_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 39,
1940 VoLTE_Setting_VoLTE_Call_TelEvt_wb_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 40,
1941 VoLTE_Setting_VoLTE_Call_CONTACT_WITH_USERNAME_INCALL = VoLTE_Setting_VoLTE_Call_Start_Code + 41,
1942 VoLTE_Setting_VoLTE_Call_SENDRECV_BEFORE_PRCD = VoLTE_Setting_VoLTE_Call_Start_Code + 42,
1943 VoLTE_Setting_VoLTE_Call_ALWAYS_USE_UPDATE_FOR_PRCD = VoLTE_Setting_VoLTE_Call_Start_Code + 43,
1944 VoLTE_Setting_VoLTE_Call_MERGE_NEED_SWAP = VoLTE_Setting_VoLTE_Call_Start_Code + 44,
1945 VoLTE_Setting_VoLTE_Call_ALWAYS_USE_SIP_URI_FOR_MO_CALL = VoLTE_Setting_VoLTE_Call_Start_Code + 45,
1946 VoLTE_Setting_VoLTE_Call_SET_STRENGTH_MANDATORY = VoLTE_Setting_VoLTE_Call_Start_Code + 46,
1947 VoLTE_Setting_VoLTE_Call_SEND_REFER_TO_PEER = VoLTE_Setting_VoLTE_Call_Start_Code + 47,
1948 VoLTE_Setting_VoLTE_Call_ADD_3GPP_IMS_IN_ACCEPT = VoLTE_Setting_VoLTE_Call_Start_Code + 48,
1949 VoLTE_Setting_VoLTE_Call_TERMINAL_BASED_CW = VoLTE_Setting_VoLTE_Call_Start_Code + 49,
1950 VoLTE_Setting_VoLTE_Call_REFER_DIALOG_TO_SERVER = VoLTE_Setting_VoLTE_Call_Start_Code + 50,
1951 VoLTE_Setting_VoLTE_Call_CHECK_REASON_PHRASE = VoLTE_Setting_VoLTE_Call_Start_Code + 51,
1952 VoLTE_Setting_VoLTE_Call_MERGE_SEND_BYE = VoLTE_Setting_VoLTE_Call_Start_Code + 52,
1953 VoLTE_Setting_VoLTE_Call_WHEN_STOP_TCALL = VoLTE_Setting_VoLTE_Call_Start_Code + 53,
1954 VoLTE_Setting_VoLTE_Call_SET_RTCP_0 = VoLTE_Setting_VoLTE_Call_Start_Code + 54,
1955 VoLTE_Setting_VoLTE_Call_CHECK_CONTACT_380 = VoLTE_Setting_VoLTE_Call_Start_Code + 55,
1956 VoLTE_Setting_VoLTE_Call_CONF_PARTICIPANT_NOT_SUBSCRIBE = VoLTE_Setting_VoLTE_Call_Start_Code + 56,
1957 VoLTE_Setting_VoLTE_Call_ADD_SDP_IN_180_FOR_NON_PRECOND = VoLTE_Setting_VoLTE_Call_Start_Code + 57,
1958 VoLTE_Setting_VoLTE_Call_ADD_PRECONDITION_IN_HOLD_UNHOLD_SDP = VoLTE_Setting_VoLTE_Call_Start_Code + 58,
1959 VoLTE_Setting_VoLTE_Call_USE_ORG_SDP_FOR_INVITE_WITHOUT_SDP = VoLTE_Setting_VoLTE_Call_Start_Code + 59,
1960 VoLTE_Setting_VoLTE_Call_OIR_PRIVACY_TO_HEADER = VoLTE_Setting_VoLTE_Call_Start_Code + 60,
1961 VoLTE_Setting_VoLTE_Call_REGISTER_CAP_WHENEVER = VoLTE_Setting_VoLTE_Call_Start_Code + 61,
1962 VoLTE_Setting_VoLTE_Call_NO_AUTO_RETRY_FOR_MO_CALL = VoLTE_Setting_VoLTE_Call_Start_Code + 62,
1963 VoLTE_Setting_VoLTE_Call_USE_EPS_PREFIX_IN_PHONE_CONTEXT = VoLTE_Setting_VoLTE_Call_Start_Code + 63,
1964 VoLTE_Setting_VoLTE_Call_FOLLOW_NW_IMS_VOPS_SUPPORT = VoLTE_Setting_VoLTE_Call_Start_Code + 64,
1965 VoLTE_Setting_VoLTE_Call_ATTEMPT_REG_WHEN_RECEIVE403 = VoLTE_Setting_VoLTE_Call_Start_Code + 65,
1966 VoLTE_Setting_VoLTE_Call_WAITING_487_FOR_CANCEL_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 66,
1967 VoLTE_Setting_VoLTE_Call_BCSFB_FEATURE_ENABLE = VoLTE_Setting_VoLTE_Call_Start_Code + 67,
1968 VoLTE_Setting_VoLTE_Call_SEND_183_WHEN_PRCD_NONE = VoLTE_Setting_VoLTE_Call_Start_Code + 68,
1969 VoLTE_Setting_VoLTE_Call_CALL_ID_WITH_HOST_INCALL = VoLTE_Setting_VoLTE_Call_Start_Code + 69,
1970 VoLTE_Setting_VoLTE_Call_ADD_RTCP_PORT_INTO_SDP = VoLTE_Setting_VoLTE_Call_Start_Code + 70,
1971 VoLTE_Setting_VoLTE_Call_ECC_SESSION_TIMER_ENABLE = VoLTE_Setting_VoLTE_Call_Start_Code + 71,
1972 VoLTE_Setting_VoLTE_Call_SUBSCRIBE_DIALOG_TO_SERVER = VoLTE_Setting_VoLTE_Call_Start_Code + 72,
1973 VoLTE_Setting_VoLTE_Call_CHECK_CONFERENCE_SUBSCRIBE = VoLTE_Setting_VoLTE_Call_Start_Code + 73,
1974 VoLTE_Setting_VoLTE_Call_CONFERENCE_SUBSCRIBE_TIMING = VoLTE_Setting_VoLTE_Call_Start_Code + 74,
1975 VoLTE_Setting_VoLTE_Call_GENERAL_AMR_NB_WB = VoLTE_Setting_VoLTE_Call_Start_Code + 75,
1976 VoLTE_Setting_VoLTE_Call_DISABLE_CONF_CALL_PRCD = VoLTE_Setting_VoLTE_Call_Start_Code + 76,
1977 VoLTE_Setting_VoLTE_Call_WAIT_CANCEL_IN_SRVCC_END = VoLTE_Setting_VoLTE_Call_Start_Code + 77,
1978 VoLTE_Setting_VoLTE_Call_REJECT_1W_IF_1A1H = VoLTE_Setting_VoLTE_Call_Start_Code + 78,
1979 VoLTE_Setting_VoLTE_Call_NO_AUTO_RETRY_FOR_DCM_MO_CALL = VoLTE_Setting_VoLTE_Call_Start_Code + 79,
1980 VoLTE_Setting_VoLTE_Call_JOIN_SEND_BYE = VoLTE_Setting_VoLTE_Call_Start_Code + 80,
1981 VoLTE_Setting_VoLTE_Call_SET_ZERO_CELL_ID_IN_WIFI = VoLTE_Setting_VoLTE_Call_Start_Code + 81,
1982 VoLTE_Setting_VoLTE_Call_REJECT_MTCALL_BY_VOPS = VoLTE_Setting_VoLTE_Call_Start_Code + 82,
1983 VoLTE_Setting_VoLTE_Call_REJECT_MTCALL_WHEN_VILTE = VoLTE_Setting_VoLTE_Call_Start_Code + 83,
1984 VoLTE_Setting_VoLTE_Call_NOT_ADD_SDP_IN_OPTIONS = VoLTE_Setting_VoLTE_Call_Start_Code + 84,
1985 VoLTE_Setting_VoLTE_Call_PCSCF_ERROR_WHEN663 = VoLTE_Setting_VoLTE_Call_Start_Code + 85,
1986 VoLTE_Setting_VoLTE_Call_REL_CONF_IF_NO_PARTICIPANT = VoLTE_Setting_VoLTE_Call_Start_Code + 86,
1987 VoLTE_Setting_VoLTE_Call_ADD_NO_FORK = VoLTE_Setting_VoLTE_Call_Start_Code + 87,
1988 VoLTE_Setting_VoLTE_Call_TMO_SPECIFIC_SDP = VoLTE_Setting_VoLTE_Call_Start_Code + 88,
1989 VoLTE_Setting_VoLTE_Call_CALL_RINGING_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 89,
1990 VoLTE_Setting_VoLTE_Call_CALL_RINGBACK_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 90,
1991 VoLTE_Setting_VoLTE_Call_CALL_TCALL_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 91,
1992 VoLTE_Setting_VoLTE_Call_REJECT_CODE_IN23G = VoLTE_Setting_VoLTE_Call_Start_Code + 92,
1993 VoLTE_Setting_VoLTE_Call_CALL_REFRESHCALL_TIMER_EXPIRE = VoLTE_Setting_VoLTE_Call_Start_Code + 93,
1994 VoLTE_Setting_VoLTE_Call_CALL_CALLEND_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 94,
1995 VoLTE_Setting_VoLTE_Call_WAITING_MT_CNF_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 95,
1996 VoLTE_Setting_VoLTE_Call_CONF_SUB_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 96,
1997 VoLTE_Setting_VoLTE_Call_MO_INVITE_TO_BW_CNF_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 97,
1998 VoLTE_Setting_VoLTE_Call_SRVCC_CAPABILITY = VoLTE_Setting_VoLTE_Call_Start_Code + 98,
1999 VoLTE_Setting_VoLTE_Call_EVS_SUPPORT = VoLTE_Setting_VoLTE_Call_Start_Code + 99,
2000 VoLTE_Setting_VoLTE_Call_EVS_MODE_SWITCH = VoLTE_Setting_VoLTE_Call_Start_Code + 100,
2001 VoLTE_Setting_VoLTE_Call_HF_ONLY = VoLTE_Setting_VoLTE_Call_Start_Code + 101,
2002 VoLTE_Setting_VoLTE_Call_DTX = VoLTE_Setting_VoLTE_Call_Start_Code + 102,
2003 VoLTE_Setting_VoLTE_Call_DTX_RECV = VoLTE_Setting_VoLTE_Call_Start_Code + 103,
2004 VoLTE_Setting_VoLTE_Call_BR_BEGIN = VoLTE_Setting_VoLTE_Call_Start_Code + 104,
2005 VoLTE_Setting_VoLTE_Call_BR_END = VoLTE_Setting_VoLTE_Call_Start_Code + 105,
2006 VoLTE_Setting_VoLTE_Call_BR_SEND_BEGIN = VoLTE_Setting_VoLTE_Call_Start_Code + 106,
2007 VoLTE_Setting_VoLTE_Call_BR_SEND_END = VoLTE_Setting_VoLTE_Call_Start_Code + 107,
2008 VoLTE_Setting_VoLTE_Call_BR_RECV_BEGIN = VoLTE_Setting_VoLTE_Call_Start_Code + 108,
2009 VoLTE_Setting_VoLTE_Call_BR_RECV_END = VoLTE_Setting_VoLTE_Call_Start_Code + 109,
2010 VoLTE_Setting_VoLTE_Call_BW_BEGIN = VoLTE_Setting_VoLTE_Call_Start_Code + 110,
2011 VoLTE_Setting_VoLTE_Call_BW_END = VoLTE_Setting_VoLTE_Call_Start_Code + 111,
2012 VoLTE_Setting_VoLTE_Call_BW_SEND_BEGIN = VoLTE_Setting_VoLTE_Call_Start_Code + 112,
2013 VoLTE_Setting_VoLTE_Call_BW_SEND_END = VoLTE_Setting_VoLTE_Call_Start_Code + 113,
2014 VoLTE_Setting_VoLTE_Call_BW_RECV_BEGIN = VoLTE_Setting_VoLTE_Call_Start_Code + 114,
2015 VoLTE_Setting_VoLTE_Call_BW_RECV_END = VoLTE_Setting_VoLTE_Call_Start_Code + 115,
2016 VoLTE_Setting_VoLTE_Call_CH_SEND = VoLTE_Setting_VoLTE_Call_Start_Code + 116,
2017 VoLTE_Setting_VoLTE_Call_CH_RECV = VoLTE_Setting_VoLTE_Call_Start_Code + 117,
2018 VoLTE_Setting_VoLTE_Call_CH_AW_RECV = VoLTE_Setting_VoLTE_Call_Start_Code + 118,
2019 VoLTE_Setting_VoLTE_Call_CMR = VoLTE_Setting_VoLTE_Call_Start_Code + 119,
2020
2021 /* ------------------------------------------------ */
2022 /* VoLTE MWI Settings */
2023 /* ------------------------------------------------ */
2024 VoLTE_Setting_VoLTE_MWI_Start_Code = VoLTE_Setting_VoLTE_Call_Start_Code + 900,
2025 VoLTE_Setting_VoLTE_MWI_License = VoLTE_Setting_VoLTE_MWI_Start_Code + 1, // Disable: 0, Enable: 1
2026
2027 /* ------------------------------------------------ */
2028 /* VoLTE SMS Settings */
2029 /* ------------------------------------------------ */
2030 VoLTE_Setting_VoLTE_SMS_Start_Code = 12000,
2031 VoLTE_Setting_VoLTE_SMS_Capability = VoLTE_Setting_VoLTE_SMS_Start_Code + 1, // data type is boolean (1 or 0)
2032 VoLTE_Setting_VoLTE_SMS_3GPP_SMS_PSI = VoLTE_Setting_VoLTE_SMS_Start_Code + 2, // data type is string
2033 VoLTE_Setting_VoLTE_SMS_PSISMSC_FROM_USER = VoLTE_Setting_VoLTE_SMS_Start_Code + 3,
2034 VoLTE_Setting_VoLTE_SMS_FORCE_PSI_SCHEME_TO_TEL = VoLTE_Setting_VoLTE_SMS_Start_Code + 4,
2035 VoLTE_Setting_VoLTE_SMS_ADD_USER_PHONE = VoLTE_Setting_VoLTE_SMS_Start_Code + 5,
2036 VoLTE_Setting_VoLTE_SMS_UPDATE_CALL_ID_WITH_HOST = VoLTE_Setting_VoLTE_SMS_Start_Code + 6,
2037 VoLTE_Setting_VoLTE_SMS_ADD_NO_FORK_IN_SMS = VoLTE_Setting_VoLTE_SMS_Start_Code + 7,
2038 VoLTE_Setting_VoLTE_SMS_NSN_SPECIFIC = VoLTE_Setting_VoLTE_SMS_Start_Code + 8,
2039 VoLTE_Setting_VoLTE_SMS_MO_RETRY_AFTER_504 = VoLTE_Setting_VoLTE_SMS_Start_Code + 9,
2040 VoLTE_Setting_VoLTE_SMS_SEND_TIMERF_EXPIRY = VoLTE_Setting_VoLTE_SMS_Start_Code + 10,
2041 VoLTE_Setting_VoLTE_SMS_IMSI_REGED_DISABLE_SMS = VoLTE_Setting_VoLTE_SMS_Start_Code + 11,
2042
2043 /* ------------------------------------------------ */
2044 /* VoLTE XDM Settings */
2045 /* ------------------------------------------------ */
2046 VoLTE_Setting_VoLTE_XDM_Start_Code = 13000,
2047
2048 /* ------------------------------------------------ */
2049 /* VoLTE REG Settings */
2050 /* ------------------------------------------------ */
2051 VoLTE_Setting_VoLTE_REG_Start_Code = 14000,
2052 VoLTE_Setting_Reg_Register_Expiry = VoLTE_Setting_VoLTE_REG_Start_Code + 1, // data type is int
2053 VoLTE_Setting_Reg_Event_Subscribe = VoLTE_Setting_VoLTE_REG_Start_Code + 2, // Disable: 0, Enable: 1
2054 VoLTE_Setting_Reg_Emergency = VoLTE_Setting_VoLTE_REG_Start_Code + 3, // Disable: 0, Enable: 1
2055 VoLTE_Setting_Reg_Retry_First_Time = VoLTE_Setting_VoLTE_REG_Start_Code + 4, // data type is int
2056 VoLTE_Setting_Reg_Retry_Base_Time = VoLTE_Setting_VoLTE_REG_Start_Code + 5, // data type is int
2057 VoLTE_Setting_Reg_Retry_Max_Time = VoLTE_Setting_VoLTE_REG_Start_Code + 6, // data type is int
2058 VoLTE_Setting_Reg_Contact_With_UserName = VoLTE_Setting_VoLTE_REG_Start_Code + 7, // Disable: 0, Enable: 1
2059 VoLTE_Setting_Reg_URI_With_Port = VoLTE_Setting_VoLTE_REG_Start_Code + 8, // Disable: 0, Enable: 1
2060 VoLTE_Setting_Reg_IPSec_Algo_Set = VoLTE_Setting_VoLTE_REG_Start_Code + 9, // data type is int
2061 VoLTE_Setting_Reg_Enable_HTTP_Digest = VoLTE_Setting_VoLTE_REG_Start_Code + 10, // Disable: 0, Enable: 1
2062 VoLTE_Setting_Reg_Auth_Name = VoLTE_Setting_VoLTE_REG_Start_Code + 11, // data type is string
2063 VoLTE_Setting_Reg_Auth_Password = VoLTE_Setting_VoLTE_REG_Start_Code + 12, // data type is string
2064 VoLTE_Setting_Reg_Specific_IPSec_Algo = VoLTE_Setting_VoLTE_REG_Start_Code + 13, // data type is int
2065 VoLTE_Setting_Reg_CONTACT_WITH_TRANSPORT = VoLTE_Setting_VoLTE_REG_Start_Code + 14,
2066 VoLTE_Setting_Reg_CONTACT_WITH_REGID = VoLTE_Setting_VoLTE_REG_Start_Code + 15,
2067 VoLTE_Setting_Reg_CONTACT_WITH_MOBILITY = VoLTE_Setting_VoLTE_REG_Start_Code + 16,
2068 VoLTE_Setting_Reg_CONTACT_WITH_EXPIRES = VoLTE_Setting_VoLTE_REG_Start_Code + 17,
2069 VoLTE_Setting_Reg_AUTHORIZATION_WITH_ALGO = VoLTE_Setting_VoLTE_REG_Start_Code + 18,
2070 VoLTE_Setting_Reg_REREG_IN_RAT_CHANGE = VoLTE_Setting_VoLTE_REG_Start_Code + 19,
2071 VoLTE_Setting_Reg_REREG_IN_OOS_END = VoLTE_Setting_VoLTE_REG_Start_Code + 20,
2072 VoLTE_Setting_Reg_DE_SUBSCRIBE = VoLTE_Setting_VoLTE_REG_Start_Code + 21,
2073 VoLTE_Setting_Reg_USE_SPECIFIC_IPSEC_ALGO = VoLTE_Setting_VoLTE_REG_Start_Code + 22,
2074 VoLTE_Setting_Reg_TRY_NEXT_PCSCF = VoLTE_Setting_VoLTE_REG_Start_Code + 23,
2075 VoLTE_Setting_Reg_DEREG_CLEAR_IPSEC = VoLTE_Setting_VoLTE_REG_Start_Code + 24,
2076 VoLTE_Setting_Reg_INITIAL_REG_WITHOUT_PANI = VoLTE_Setting_VoLTE_REG_Start_Code + 25,
2077 VoLTE_Setting_Reg_DEREG_RESET_TCP_CLIENT = VoLTE_Setting_VoLTE_REG_Start_Code + 26,
2078 VoLTE_Setting_Reg_TREG = VoLTE_Setting_VoLTE_REG_Start_Code + 27,
2079 VoLTE_Setting_Reg_REREG_23G4 = VoLTE_Setting_VoLTE_REG_Start_Code + 28,
2080 VoLTE_Setting_Reg_RESUB_23G4 = VoLTE_Setting_VoLTE_REG_Start_Code + 29,
2081 VoLTE_Setting_Reg_NOT_AUTO_REG_403 = VoLTE_Setting_VoLTE_REG_Start_Code + 30,
2082 VoLTE_Setting_Reg_CALL_ID_WITH_HOST_INREG = VoLTE_Setting_VoLTE_REG_Start_Code + 31,
2083 VoLTE_Setting_Reg_KEEP_ALIVE_MODE = VoLTE_Setting_VoLTE_REG_Start_Code + 32,
2084 VoLTE_Setting_Reg_TCP_CONNECT_MAX_TIME_INVITE = VoLTE_Setting_VoLTE_REG_Start_Code + 33,
2085 VoLTE_Setting_Reg_EMS_MODE_IND = VoLTE_Setting_VoLTE_REG_Start_Code + 34,
2086 VoLTE_Setting_Reg_CONTACT_WITH_ACCESSTYPE = VoLTE_Setting_VoLTE_REG_Start_Code + 35,
2087 VoLTE_Setting_Reg_WFC_WITH_PLANI = VoLTE_Setting_VoLTE_REG_Start_Code + 36,
2088 VoLTE_Setting_Reg_USE_UDP_ON_TCP_FAIL = VoLTE_Setting_VoLTE_REG_Start_Code + 37,
2089 VoLTE_Setting_Reg_IPSEC_FAIL_ALLOWED = VoLTE_Setting_VoLTE_REG_Start_Code + 38,
2090 VoLTE_Setting_Reg_CONTACT_WITH_VIDEO_FEATURE_TAG_IN_SUBSCRIBE = VoLTE_Setting_VoLTE_REG_Start_Code + 39,
2091 VoLTE_Setting_Reg_VIA_WITHOUT_RPORT = VoLTE_Setting_VoLTE_REG_Start_Code + 40,
2092 VoLTE_Setting_Reg_REG_ROUTE_HDR = VoLTE_Setting_VoLTE_REG_Start_Code + 41,
2093 VoLTE_Setting_Reg_VIA_URI_WITH_DEFAULT_PORT = VoLTE_Setting_VoLTE_REG_Start_Code + 42,
2094 VoLTE_Setting_Reg_NOTIFY_SMS_NOTIFY_DONE = VoLTE_Setting_VoLTE_REG_Start_Code + 43,
2095 VoLTE_Setting_Reg_EMERGENCY_USE_IMSI = VoLTE_Setting_VoLTE_REG_Start_Code + 44,
2096 VoLTE_Setting_Reg_CHECK_MSISDN = VoLTE_Setting_VoLTE_REG_Start_Code + 45,
2097 VoLTE_Setting_Reg_RETRY_INTERVAL_AFTER_403 = VoLTE_Setting_VoLTE_REG_Start_Code + 46,
2098 VoLTE_Setting_Reg_SUPPORT_THROTTLING_ALGO = VoLTE_Setting_VoLTE_REG_Start_Code + 47,
2099 VoLTE_Setting_Reg_REG_AFTER_NW_DEREG_60S = VoLTE_Setting_VoLTE_REG_Start_Code + 48,
2100 VoLTE_Setting_Reg_SUB_CONTACT_WITH_SIP_INSTANCE = VoLTE_Setting_VoLTE_REG_Start_Code + 49,
2101 VoLTE_Setting_Reg_STOP_REG_MD_LOWER_LAYER_ERR = VoLTE_Setting_VoLTE_REG_Start_Code + 50,
2102 VoLTE_Setting_Reg_REG_GRUU_SUPPORT = VoLTE_Setting_VoLTE_REG_Start_Code + 51,
2103
2104 /* ------------------------------------------------ */
2105 /* VoLTE SIP Settings */
2106 /* ------------------------------------------------ */
2107 VoLTE_Setting_VoLTE_SIP_Start_Code = 15000,
2108 VoLTE_Setting_SIP_T1_Timer = VoLTE_Setting_VoLTE_SIP_Start_Code + 1, // data type is int
2109 VoLTE_Setting_SIP_T2_Timer = VoLTE_Setting_VoLTE_SIP_Start_Code + 2, // data type is int
2110 VoLTE_Setting_SIP_T4_Timer = VoLTE_Setting_VoLTE_SIP_Start_Code + 3, // data type is int
2111 VoLTE_Setting_SIP_Keep_Alive = VoLTE_Setting_VoLTE_SIP_Start_Code + 4, // data type is int
2112 VoLTE_Setting_SIP_Force_Use_UDP = VoLTE_Setting_VoLTE_SIP_Start_Code + 5, // Disable: 0, Enable: 1
2113 VoLTE_Setting_SIP_TCP_On_Demand = VoLTE_Setting_VoLTE_SIP_Start_Code + 6, // Disable: 0, Enable: 1
2114 VoLTE_Setting_SIP_TCP_MTU_Size = VoLTE_Setting_VoLTE_SIP_Start_Code + 7, // data type is int
2115 VoLTE_Setting_SIP_Reg_Timestamp = VoLTE_Setting_VoLTE_SIP_Start_Code + 8, // data type is string, for WFC PLANI header
2116 VoLTE_Setting_SIP_Transaction_Timer = VoLTE_Setting_VoLTE_SIP_Start_Code + 9, // data type is int
2117 VoLTE_Setting_SIP_Registered_Timestamp = VoLTE_Setting_VoLTE_SIP_Start_Code + 10, // data type is string, for WFC PCNI header
2118 VoLTE_Setting_SIP_Cell_Camped_Timestamp = VoLTE_Setting_VoLTE_SIP_Start_Code + 11, // data type is string, for WFC PCNI header
2119
2120 /* ------------------------------------------------ */
2121 /* VoLTE USSD Settings */
2122 /* ------------------------------------------------ */
2123 VoLTE_Setting_VoLTE_USSD_Start_Code = 16000,
2124 VoLTE_Setting_USSD_NW_Timeout_Timer = VoLTE_Setting_VoLTE_USSD_Start_Code + 1, // data type is uint8 */
2125 VoLTE_Setting_USSD_Setup_Timeout_Timer = VoLTE_Setting_VoLTE_USSD_Start_Code + 2, // data type is uint8 */
2126 VoLTE_Setting_USSD_Capability = VoLTE_Setting_VoLTE_USSD_Start_Code + 3, // data type is uint8 */
2127};
2128
2129enum VoLTE_Event_MD_Lower_Layer_Err_e {
2130 VoLTE_Event_MD_Lower_Layer_Err_AC_Barred = 0,
2131 VoLTE_Event_MD_Lower_Layer_Err_NW_REJ_CONN = 1,
2132 VoLTE_Event_MD_Lower_Layer_Err_T3346_START = 2,
2133 VoLTE_Event_MD_Lower_Layer_Err_T3346_STOP = 3,
2134 VoLTE_Event_MD_Lower_Layer_Err_T3346_EXPIRY = 4,
2135 VoLTE_Event_MD_Lower_Layer_Err_CONN_FAI = 5,
2136 VoLTE_Event_MD_Lower_Layer_Err_T3525_START = 6,
2137 VoLTE_Event_MD_Lower_Layer_Err_T3540_START = 7,
2138
2139 VoLTE_Event_MD_Lower_Layer_Non_ESRFAIL_Err = 100,
2140 VoLTE_Event_MD_Lower_Layer_Non_ESRFAIL_Err_TAU_FAIL = 101,
2141 VoLTE_Event_MD_Lower_Layer_Non_ESRFAIL_Err_EPSFB_FAIL = 102,
2142
2143 /*add here*/
2144 VoLTE_Event_MD_Lower_Layer_Err_Max,
2145};
2146
2147enum VoLTE_Event_MD_Lower_Layer_TYPE_e {
2148 VoLTE_Event_MD_Lower_Layer_TYPE_HANDOVER = 0,
2149 VoLTE_Event_MD_Lower_Layer_TYPE_REDIRECTION =1
2150};
2151
2152enum VoLTE_Query_Type_e {
2153 VoLTE_Query_Cell_ID = 1, // current cell id
2154 VoLTE_Query_Call_State = 2, // current call state
2155};
2156
2157typedef enum
2158{
2159 IMS_CC_MO_DISCONNECT_CAUSE_NONE = 0,
2160 IMS_CC_MO_DISCONNECT_CAUSE_NO_COVERAGE,
2161 IMS_CC_MO_DISCONNECT_CAUSE_LOW_BATTERY,
2162 IMS_CC_MO_DISCONNECT_CAUSE_FORWARD,
2163 IMS_CC_MO_DISCONNECT_CAUSE_SPECIAL_HANGUP,
2164 IMS_CC_MO_DISCONNECT_CAUSE_607_UNWANTED,
2165 IMS_CC_MO_DISCONNECT_CAUSE_END
2166} ims_cc_mo_disconnect_cause_enum;
2167
2168typedef enum {
2169 IMCB_TRANSACTION_STATE_INIT = 0,
2170 IMCB_TRANSACTION_STATE_ALLOC,
2171} imcb_transaction_state_enum;
2172
2173/* IMCB FSM state */
2174typedef enum {
2175 IMCB_FSM_STATE_BEARER_DEACTIVE = 0,
2176 IMCB_FSM_STATE_BEARER_ACTIVATING,
2177 IMCB_FSM_STATE_PCSCF_ACTIVATING,
2178 IMCB_FSM_STATE_PCSCF_ACTIVE,
2179 IMCB_FSM_STATE_CONNECTED,
2180 IMCB_FSM_STATE_REGISTERED,
2181 IMCB_FSM_STATE_BEARER_DEACTIVATING
2182} imcb_fsm_state_enum;
2183
2184typedef enum {
2185 IMCB_PCSCF_TYPE_NONE,
2186 IMCB_PCSCF_TYPE_DHCP,
2187 IMCB_PCSCF_TYPE_PCO,
2188 IMCB_PCSCF_TYPE_SIM,
2189 IMCB_PCSCF_TYPE_MO,
2190 IMCB_PCSCF_TYPE_MANUAL,
2191
2192 IMCB_PCSCF_TYPE_END
2193} imcb_pcscf_type_enum;
2194
2195typedef enum imc_pcscf_acquire_method_enum {
2196 IMC_PCSCF_ACQUIRE_BY_NONE = 0,
2197 /** acquire *P-CSCF* address by query type III **SIM**. */
2198 IMC_PCSCF_ACQUIRE_BY_SIM = 1,
2199 /** acquire *P-CSCF* address by type IV **Management Object**. */
2200 IMC_PCSCF_ACQUIRE_BY_MO = 2,
2201 /** acquire *P-CSCF* address by type II **ESM/SM PCO**. */
2202 IMC_PCSCF_ACQUIRE_BY_PCO = 3,
2203 /** acquire *P-CSCF* address by type I using **DHCPv4(?)**. */
2204 IMC_PCSCF_ACQUIRE_BY_DHCPv4 = 4,
2205 /** acquire *P-CSCF* address by type I using **DHCPv6**. */
2206 IMC_PCSCF_ACQUIRE_BY_DHCPv6 = 5,
2207 /** acquire *P-CSCF* address by using **User Configure **. */
2208 IMC_PCSCF_ACQUIRE_BY_MANUAL = 6,
2209 /** **end** of enum. */
2210 IMC_PCSCF_ACQUIRE_METHOD_END
2211} imc_pcscf_acquire_method_enum;
2212
2213
2214typedef enum{
2215 IMC_PS_CAUSE_NONE = 0,
2216 /* SM/ESM/5GSM cause - TS24.301/24.501 Annex B */
2217 IMC_PS_CAUSE_OPERATOR_DETERMINED_BARRING = 8,
2218 IMC_PS_CAUSE_INSUFFICIENT_RESOURCES = 26,
2219 IMC_PS_CAUSE_UNKNOWN_OR_MISSING_ACCESS_POINT_OR_DATA_NETWORK_NAME = 27,
2220 IMC_PS_CAUSE_UNKNOWN_PDN_OR_PDU_SESSION_TYPE = 28,
2221 IMC_PS_CAUSE_USER_AUTHENTICATION_FAILED = 29,
2222 IMC_PS_CAUSE_REQUEST_REJECTED_BY_SERVING_GW_OR_PDN_GW = 30,
2223 IMC_PS_CAUSE_REQUEST_REJECTED_UNSPECIFIED = 31,
2224 IMC_PS_CAUSE_SERVICE_OPTION_NOT_SUPPORTED = 32,
2225 IMC_PS_CAUSE_REQUESTED_SERVICE_OPTION_NOT_SUBSCRIBED = 33,
2226 IMC_PS_CAUSE_SERVICE_OPTION_TEMPORARILY_OUT_OF_ORDER = 34,
2227 IMC_PS_CAUSE_PTI_ALREADY_IN_USE = 35,
2228 IMC_PS_CAUSE_REGULAR_DEACTIVATION = 36,
2229 IMC_PS_CAUSE_EPS_QOS_NOT_ACCEPTED = 37,
2230 IMC_PS_CAUSE_NETWORK_FAILURE = 38,
2231 IMC_PS_CAUSE_REACTIVATION_REQUESTED = 39,
2232 IMC_PS_CAUSE_SEMANTIC_ERROR_IN_THE_TFT_OPERATION = 41,
2233 IMC_PS_CAUSE_SYNTACTICAL_ERROR_IN_THE_TFT_OPERATION = 42,
2234 IMC_PS_CAUSE_INVALID_EPS_BEARER_OR_PDU_SESSION_IDENTITY = 43,
2235 IMC_PS_CAUSE_SEMANTIC_ERRORS_IN_PACKET_FILTER = 44,
2236 IMC_PS_CAUSE_SYNTACTICAL_ERROR_IN_PACKET_FILTER = 45,
2237 IMC_PS_CAUSE_OUT_OF_LAND_SERVICE_AREA = 46,
2238 IMC_PS_CAUSE_PTI_MISMATCH = 47,
2239 IMC_PS_CAUSE_LAST_PDN_DISCONNECTION_NOT_ALLOWED = 49,
2240 IMC_PS_CAUSE_PDN_TYPE_IPV4_ONLY_ALLOWED = 50,
2241 IMC_PS_CAUSE_PDN_TYPE_IPV6_ONLY_ALLOWED = 51,
2242 IMC_PS_CAUSE_SINGLE_ADDRESS_BEARERS_ONLY_ALLOWED = 52,
2243 IMC_PS_CAUSE_ESM_INFORMATION_NOT_RECEIVED = 53,
2244 IMC_PS_CAUSE_PDN_CONNECTION_OR_PDU_SESSION_DOES_NOT_EXIST = 54,
2245 IMC_PS_CAUSE_MULTIPLE_PDN_CONNECTIONS_FOR_A_GIVEN_APN_NOT_ALLOWED = 55,
2246 IMC_PS_CAUSE_COLLISION_WITH_NETWORK_INITIATED_REQUEST = 56,
2247 IMC_PS_CAUSE_UNSUPPORTED_QCI_VALUE = 59,
2248 IMC_PS_CAUSE_BEARER_HANDLING_NOT_SUPPORTED = 60,
2249 IMC_PS_CAUSE_INSUFFICIENT_RESOURCES_FOR_SPECIFIC_SLICE_AND_DNN = 67,
2250 IMC_PS_CAUSE_NOT_SUPPORTED_SSC_MODE = 68,
2251 IMC_PS_CAUSE_INSUFFICIENT_RESOURCES_FOR_SPECIFIC_SLICE = 69,
2252 IMC_PS_CAUSE_MISSING_OR_UNKNOWN_DNN_IN_A_SLICE = 70,
2253 IMC_PS_CAUSE_INVALID_PTI_VALUE = 81,
2254 IMC_PS_CAUSE_MAX_DATA_RATE_PER_UE_FOR_USER_PLANE_INTGRITY_PROTECTION_IS_TO_LOW = 82,
2255 IMC_PS_CAUSE_SEMANTIC_ERROR_IN_THE_QOS_OPERATION = 83,
2256 IMC_PS_CAUSE_SYNTACTICAL_ERROR_IN_THE_QOS_OPERATION = 84,
2257 IMC_PS_CAUSE_SEMANTICALLY_INCORRECT_MESSAGE = 95,
2258 IMC_PS_CAUSE_INVALID_MANDATORY_INFORMATION = 96,
2259 IMC_PS_CAUSE_MESSAGE_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENTED = 97,
2260 IMC_PS_CAUSE_MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 98,
2261 IMC_PS_CAUSE_INFORMATION_ELEMENT_NON_EXISTENT_OR_NOT_IMPLEMENTED = 99,
2262 IMC_PS_CAUSE_CONDITIONAL_IE_ERROR = 100,
2263 IMC_PS_CAUSE_MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 101,
2264 IMC_PS_CAUSE_PROTOCO_ERROR_UNSPECIFIED = 111,
2265 IMC_PS_CAUSE_APN_RESTRICTION_VALUE_INCOMPATIBLE_WITH_ACTIVE_EPS_BEARER_CONTEXT = 112,
2266 IMC_PS_CAUSE_REQUEST_REJECTED_CORE_TX_FAILURE = 113,
rjw04b9c952023-03-28 14:35:43 +08002267 IMC_PS_CAUSE_TCM_L4C_MODIFY_DUE_TO_INTERRAT = 114,
rjw6c1fd8f2022-11-30 14:33:01 +08002268
2269 /* WFC */
2270 IMC_PS_CAUSE_REMAP = 200,
2271
2272 /* C2K */
2273 IMC_PS_CAUSE_VSNCP_CONFIGURATION_FAILURE = 210,
2274 IMC_PS_CAUSE_IPV6_OBTAIN_FAILURE = 211,
2275 IMC_PS_CAUSE_VSNCP_TERMINATED = 212,
2276
2277 /* Internal reject cause */
2278 IMC_PS_CAUSE_INTERNAL_REJ_START = 220,
2279 IMC_PS_CAUSE_SINGLE_PDN_ACT_FAILED = IMC_PS_CAUSE_INTERNAL_REJ_START, //220
2280 IMC_PS_CAUSE_IMS_SERVICE_NOT_READY = IMC_PS_CAUSE_INTERNAL_REJ_START + 1, //221
2281 IMC_PS_CAUSE_TCM_ESM_DEATCH_REATTACH = IMC_PS_CAUSE_INTERNAL_REJ_START + 2, //222
2282 IMC_PS_CAUSE_IMS_SERVICE_NR_RECOVER = IMC_PS_CAUSE_INTERNAL_REJ_START + 3, //223
2283 IMC_PS_CAUSE_INTERNAL_REJ_END = IMC_PS_CAUSE_INTERNAL_REJ_START + 15, //235
2284
2285 /* IRAT */
2286 IMC_PS_CAUSE_IMS_BEARER_INTERRAT_HANDOVER = 250,
2287
2288 IMC_PS_CAUSE_END
2289}imc_ps_cause_enum;
2290
2291
2292typedef enum imcb_bearer_msg_cause_enum {
2293 IMCB_BR_MSG_CS_NONE,
2294
2295 IMCB_BR_MSG_CS_OK,
2296 IMCB_BR_MSG_CS_NEED_WAIT,
2297
2298 /* internal reject start */
2299 IMCB_BR_MSG_CS_REJ_START,
2300 IMCB_BR_MSG_CS_REJ_NO_FREE_TID,
2301 IMCB_BR_MSG_CS_REJ_NO_RESOURCE,
2302 IMCB_BR_MSG_CS_REJ_ERROR_PARM,
2303 IMCB_BR_MSG_CS_REJ_BY_NW_RETAIN_TMO,
2304 IMCB_BR_MSG_CS_REJ_BY_STATE_CONFLICT,
2305 IMCB_BR_MSG_CS_REJ_BY_BEARER_DEL,
2306 IMCB_BR_MSG_CS_REJ_BY_PS,
2307 IMCB_BR_MSG_CS_REJ_BY_SGN_MATCH_FAIL,
2308 IMCB_BR_MSG_CS_REJECT, /* need to be remove if reject is defined */
2309 IMCB_BR_MSG_CS_REJ_END,
2310 /* internal reject end */
2311
2312 IMCB_BR_MSG_CS_MOD_START,
2313 IMCB_BR_MSG_CS_MOD_BEARER_REMAP,
2314 IMCB_BR_MSG_CS_MOD_BEARER_HANDOVER,
2315 IMCB_BR_MSG_CS_MOD_BEARER_QOS,
2316 IMCB_BR_MSG_CS_MOD_END,
2317
2318
2319 IMCB_BR_MSG_CS_OTHER_FAIL,
2320
2321 IMCB_BR_MSG_CS_PS_CAUSE_START = (IMCB_BR_MSG_CS_OTHER_FAIL + IMC_PS_CAUSE_NONE),
2322 IMCB_BR_MSG_CS_PS_CAUSE_END = (IMCB_BR_MSG_CS_OTHER_FAIL + IMC_PS_CAUSE_END),
2323
2324 IMCB_BR_MSG_CS_LAST
2325} imcb_bearer_msg_cause_enum ;
2326
2327/** Bearer FSM states. */
2328typedef enum {
2329 IMCB_BR_FSM_STATE_INACTIVE = 0,
2330 /*IMCB_BR_FSM_STATE_ACTIVATING,*/
2331 IMCB_BR_FSM_STATE_ACTIVE,
2332 /*IMCB_BR_FSM_STATE_DEACTIVATING, */
2333 IMCB_BR_FSM_STATE_ALL
2334} imcb_bearer_fsm_state_enum;
2335
2336typedef enum imcb_bearer_msg_id_enum {
2337 IMCB_BR_MSG_ID_NONE,
2338
2339 IMCB_BR_MSG_ID_SGN_ACT_REQ,
2340 IMCB_BR_MSG_ID_SGN_ACT_CNF,
2341 IMCB_BR_MSG_ID_SGN_MOD_IND,
2342
2343 /* IMCB_BR_MSG_ID_SGN_MOD_IND, currently not used */
2344
2345 IMCB_BR_MSG_ID_SGN_DEACT_REQ,
2346 IMCB_BR_MSG_ID_SGN_DEACT_CNF,
2347 IMCB_BR_MSG_ID_SGN_DEACT_IND,
2348 IMCB_BR_MSG_ID_SGN_RAT_CHANGE_IND,
2349 IMCB_BR_MSG_ID_SGN_BID_CHANGE_IND,
2350
2351 IMCB_BR_MSG_ID_MEDIA_ADD_REQ,
2352 IMCB_BR_MSG_ID_MEDIA_ADD_CNF,
2353 /* IMCB_BR_MSG_ID_MEDIA_ADD_IND, currently not used */
2354
2355 IMCB_BR_MSG_ID_MEDIA_MOD_REQ,
2356 IMCB_BR_MSG_ID_MEDIA_MOD_CNF,
2357 IMCB_BR_MSG_ID_MEDIA_MOD_IND,
2358
2359 IMCB_BR_MSG_ID_MEDIA_DEL_REQ,
2360 IMCB_BR_MSG_ID_MEDIA_DEL_CNF,
2361 IMCB_BR_MSG_ID_MEDIA_DEL_IND,
2362
2363 /* internal triggerred
2364 IMCB_BR_MSG_ID_STREAM_MODIFY_REQ,
2365 IMCB_BR_MSG_ID_STREAM_DEACT_REQ,
2366 */
2367
2368 /* for Bearer filter */
2369 IMCB_BR_MSG_ID_SET_BEARER_FILTER_IND,
2370 /* for ip change */
2371 IMCB_BR_MSG_ID_IP_CHANGE_IND,
2372 /* irat event from imsm */
2373 IMCB_BR_MSG_ID_IRAT_WITHOUT_IP_CHANGE_IND,
2374
2375 IMCB_BR_MSG_ID_PCSCF_DIS_REQ,
2376 IMCB_BR_MSG_ID_PCSCF_DIS_CNF,
2377 IMCB_BR_MSG_ID_PCSCF_MOD_IND,
2378
2379 /* for UT used */
2380 IMCB_BR_CBK_ID_SGN_ACT_CNF,
2381 IMCB_BR_CBK_ID_SGN_DEACT_CNF,
2382 IMCB_BR_CBK_ID_MEDIA_ADD_CNF,
2383 IMCB_BR_CBK_ID_MEDIA_MOD_CNF,
2384 IMCB_BR_CBK_ID_MEDIA_DEL_CNF,
2385
2386 IMCB_BR_MSG_ID_END
2387} imcb_bearer_msg_id_enum;
2388
2389typedef enum {
2390 IMS_CAP_RAT_NONE = 0,
2391 IMS_CAP_RAT_LTE = 1,
2392 IMS_CAP_RAT_NR = 2,
2393 IMS_CAP_RAT_LTE_NR = 3,
2394 IMS_CAP_RAT_UTRAN = 4,
2395 IMS_CAP_RAT_UTRAN_LTE = 5,
2396 IMS_CAP_RAT_UTRAN_NR = 6,
2397 IMS_CAP_RAT_UTRAN_LTE_NR = 7,
2398} ims_cap_rat_enum;
2399
2400typedef enum
2401{
2402 LTECSR_RAT_LTE = 0,
2403 LTECSR_RAT_WIFI = 1,
2404 LTECSR_RAT_NR = 2,
2405 LTECSR_RAT_DATA = 3
2406}ltecsr_rat_enum;
2407
2408typedef enum {
2409 IMS_ENH_VOLTE_SI_OFF = 0,
2410 IMS_ENH_VOLTE_SI_LEVEL1,
2411 IMS_ENH_VOLTE_SI_LEVEL2,
2412 IMS_ENH_VOLTE_SI_LEVEL3,
2413 IMS_ENH_VOLTE_SI_LEVEL4,
2414 IMS_ENH_VOLTE_SI_NUM
2415}enh_volte_si_enum;
2416
2417typedef enum {
2418 IMS_CALL_STATUS_NONE =0,
2419 IMS_CALL_STATUS_CHANGE_TO_NORMAL_CALL =1,
2420}ims_enh_volte_si_call_status_enum;
2421
2422typedef enum imcb_pdn_req_type_enum{
2423 IMCB_PDN_REQ_TYPE_NONE = 0,
2424 IMCB_PDN_REQ_TYPE_EMERGENCY,
2425 IMCB_PDN_REQ_TYPE_INITIAL,
2426 IMCB_PDN_REQ_TYPE_HANDOVER,
2427 IMCB_PDN_REQ_TYPE_HANDOVER_OF_EMERGENCY,
2428 IMCB_PDN_REQ_TYPE_MAX
2429} imcb_pdn_req_type_enum;
2430
2431typedef enum imcb_ip_change_type_enum{
2432 IMCB_IP_CHANGE_TYPE_NONE = 0,
2433 IMCB_IP_CHANGE_TYPE_IPV4 = 1 << 0,
2434 IMCB_IP_CHANGE_TYPE_IPV6 = 1 << 1,
2435 IMCB_IP_CHANGE_TYPE_IPV4_IPV6 = IMCB_IP_CHANGE_TYPE_IPV4 | IMCB_IP_CHANGE_TYPE_IPV6,
2436 IMCB_IP_CHANGE_TYPE_MAX
2437} imcb_ip_change_type_enum;
2438
2439typedef enum {
2440 IMCB_PCSCF_LIST_NO_CHANGE,
2441 IMCB_PCSCF_LIST_CURRENT_ACTIVE_PCSCF_PRESENT,
2442 IMCB_PCSCF_LIST_CURRENT_ACTIVE_PCSCF_NOT_PRESENT,
2443 IMCB_PCSCF_LIST_NO_CHANGE_AT_FIRST_PLACE
2444} imcb_pcscf_list_change_enum;
2445
2446/******************************************************************************
2447 * Basic type definitions
2448 *****************************************************************************/
2449
2450#define IMCF_FALSE KAL_FALSE
2451#define IMCF_TRUE KAL_TRUE
2452
2453typedef kal_char imcf_char;
2454typedef kal_wchar imcf_wchar;
2455
2456typedef kal_bool imcf_bool;
2457typedef kal_int8 imcf_int8;
2458typedef kal_int16 imcf_int16;
2459typedef kal_int32 imcf_int32;
2460typedef kal_int64 imcf_int64;
2461
2462typedef kal_uint8 imcf_uint8;
2463typedef kal_uint16 imcf_uint16;
2464typedef kal_uint32 imcf_uint32;
2465typedef kal_uint64 imcf_uint64;
2466
2467typedef module_type imcf_user_spec_t;
2468
2469typedef imcf_uint8 imc_sim_id_t;
2470typedef imcf_uint8 imc_acct_id_t;
2471
2472typedef kal_uint16 imcf_bid_t;
2473
2474typedef enum {
2475 IMS_TYPE_H_PLMN = 0,
2476 IMS_TYPE_V_PLMN,
2477 IMS_TYPE_UNKNOWN,
2478} plmn_type_enum;
2479
2480/******************************************************************************
2481 * Struct
2482 *****************************************************************************/
2483// <pau> field of +ECPI
2484typedef struct
2485{
2486 kal_uint8 p_asserted_uri[IMS_P_ASSERT_URI_LEN];
2487} pau_info_struct;
2488
2489typedef struct {
2490 imcf_uint8 protocol_type;
2491 imcf_uint8 pad[1];
2492 imcf_uint16 port_num;
2493
2494 imcf_uint8 addr[IMC_IPV4_ADDR_LEN];
2495} imc_pcscf_ipv4_struct;
2496
2497typedef struct {
2498 imcf_uint8 protocol_type;
2499 imcf_uint8 pad[1];
2500 imcf_uint16 port_num;
2501
2502 imcf_uint8 addr[IMC_IPV6_ADDR_LEN];
2503} imc_pcscf_ipv6_struct;
2504
2505typedef struct {
2506 imcf_uint8 num_of_ipv4_pcscf_addr;
2507 imcf_uint8 pad[3];
2508
2509 imc_pcscf_ipv4_struct pcscf_v4[IMC_PCSCF_MAX_NUM];
2510
2511 imcf_uint8 num_of_ipv6_pcscf_addr;
2512 imcf_uint8 pad2[3];
2513
2514 imc_pcscf_ipv6_struct pcscf_v6[IMC_PCSCF_MAX_NUM];
2515} imc_pcscf_list_struct;
2516
2517typedef struct
2518{
2519 imcf_int8 mode_set[IMCB_IMC_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
2520
2521 imcf_uint8 is_octet_align; //0:default, bandwidth-efficient, 1: octet_align, 2: VzW for general
2522 imcf_uint8 mode_change_period; //the period should be N. but currently only 1(default) or 2.
2523 imcf_uint8 mode_change_cap; //1(default) or 2(recommended to support)
2524 imcf_uint8 mode_change_neighbor;//0(default) or 1
2525
2526 imcf_uint8 crc; //0 or 1. Not support yet.
2527 imcf_uint8 robust; //0 or 1. Not support yet.
2528 imcf_uint8 interleaving; //the maximum number of frame-blocks. 0: not present. Not support yet.
2529 imcf_uint8 channel; // the number of audio channel
2530
2531 imcf_uint16 max_red; // the maximum duration in ms. Not support yet.
2532 imcf_uint8 padding[2]; //< padding byte for 4bytes align
2533} imcb_imc_ltecsr_amr_info_struct;
2534
2535typedef struct
2536{
2537 imcf_int8 mode_set[IMCB_IMC_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
2538
2539 imcf_uint8 evs_support;
2540 imcf_uint8 evs_mode_switch;
2541 imcf_uint8 hf_only;
2542 imcf_uint8 dtx;
2543
2544 imcf_uint8 dtx_recv;
2545 imcf_uint8 ch_send;
2546 imcf_uint8 ch_recv;
2547 imcf_uint8 channel; // the number of audio channel
2548
2549 imcf_uint8 br[2]; ///< VoLTE_EVS_Codec_Bitrate_e
2550 imcf_uint8 br_send[2]; ///< VoLTE_EVS_Codec_Bitrate_e
2551 imcf_uint8 br_recv[2]; ///< VoLTE_EVS_Codec_Bitrate_e
2552 imcf_uint8 bw[2]; ///< VoLTE_EVS_Bandwidth_e
2553 imcf_uint8 bw_send[2]; ///< VoLTE_EVS_Bandwidth_e
2554 imcf_uint8 bw_recv[2]; ///< VoLTE_EVS_Bandwidth_e
2555
2556 imcf_uint8 mode_change_period; //the period should be N. but currently only 1(default) or 2.
2557 imcf_uint8 mode_change_cap; //1(default) or 2(recommended to support)
2558 imcf_uint8 mode_change_neighbor;//0(default) or 1
2559 imcf_int8 ch_aw_recv;
2560
2561 imcf_int8 cmr;
2562 imcf_uint8 padding[1]; ///< padding byte for 4 bytes align
2563 imcf_uint16 max_red; // the maximum duration in ms. Not support yet.
2564} imcb_imc_ltecsr_evs_info_struct;
2565
2566typedef struct {
2567 imcf_uint8 red_level;
2568 imcf_uint8 red_codec_list[IMCB_IMC_MAX_RED_LEVEL];
2569} imcb_imc_ltecsr_red_info_struct;
2570
2571typedef struct {
2572 imcf_uint8 payload_type; ///< payload type
2573 imcf_uint8 codec; ///< voip_codec_enum in codec_def.h
2574 imcf_uint8 clock_rate; ///< dynamic rate, clock rate, see VoLTE_Event_Clock_Rate_e
2575 imcf_uint8 g723_bitrate; ///< VoLTE_Event_G7231_BitRate_e
2576 imcf_uint8 is_g723_annexAYES; ///< G.723.1 annexA Yes:1, No:0
2577 imcf_uint8 is_g729_annexBYES; ///< G.729 annexB Yes:1, No:0
2578 imcf_uint8 ilbc_mode; ///< VoLTE_Event_iLBC_Rate_e
2579 imcf_uint8 text_cps; ///<
2580
2581 imcf_uint32 ptime; ///< play time
2582 imcf_uint32 max_ptime; ///< maximum play time
2583
2584 imcb_imc_ltecsr_amr_info_struct amr_fmtp;
2585 imcb_imc_ltecsr_evs_info_struct evs_fmtp;
2586 imcb_imc_ltecsr_red_info_struct red_fmtp;
2587} imcb_imc_ltecsr_media_codec_struct;
2588
2589typedef enum {
2590 IMC_SIP_CAUSE_UNSPECIFIED = 0,
2591 IMC_SIP_CAUSE_300_MULTIPLE_CHOICES = 300,
2592 IMC_SIP_CAUSE_301_MOVED_PERMANENTLY = 301,
2593 IMC_SIP_CAUSE_302_MOVED_TEMPORARILY = 302,
2594 IMC_SIP_CAUSE_305_USE_PROXY = 305,
2595 IMC_SIP_CAUSE_380_ALTERNATIVE_SERVICE = 380,
2596 IMC_SIP_CAUSE_400_BAD_REQUEST = 400,
2597 IMC_SIP_CAUSE_401_UNAUTHORIZED = 401,
2598 IMC_SIP_CAUSE_402_PAYMENT_REQUIRED = 402,
2599 IMC_SIP_CAUSE_403_FORBIDDEN = 403,
2600 IMC_SIP_CAUSE_404_NOT_FOUND = 404,
2601 IMC_SIP_CAUSE_405_METHOD_NOT_ALLOWED = 405,
2602 IMC_SIP_CAUSE_406_NOT_ACCEPTABLE = 406,
2603 IMC_SIP_CAUSE_407_PROXY_AUTHENTICATION_REQUIRED = 407,
2604 IMC_SIP_CAUSE_408_REQUEST_TIMEOUT = 408,
2605 IMC_SIP_CAUSE_410_GONE = 410,
2606 IMC_SIP_CAUSE_413_REQUEST_ENTITY_TOO_LARGE = 413,
2607 IMC_SIP_CAUSE_414_REQUEST_URI_TOO_LARGE = 414,
2608 IMC_SIP_CAUSE_415_UNSUPPORTED_MEDIA_TYPE = 415,
2609 IMC_SIP_CAUSE_416_UNSUPPORTED_URI_SCHEME = 416,
2610 IMC_SIP_CAUSE_420_BAD_EXTENSION = 420,
2611 IMC_SIP_CAUSE_421_EXTENSION_REQUIRED = 421,
2612 IMC_SIP_CAUSE_423_INTERVAL_TOO_BRIEF = 423,
2613 IMC_SIP_CAUSE_480_TEMPORARILY_NOT_AVAILABLE = 480,
2614 IMC_SIP_CAUSE_481_CALL_LEG_TRANSACTION_DOES_NOT_EXIST = 481,
2615 IMC_SIP_CAUSE_482_LOOP_DETECTED = 482,
2616 IMC_SIP_CAUSE_483_TOO_MANY_HOPS = 483,
2617 IMC_SIP_CAUSE_484_ADDRESS_INCOMPLETE = 484,
2618 IMC_SIP_CAUSE_485_AMBIGUOUS = 485,
2619 IMC_SIP_CAUSE_486_BUSY_HERE = 486,
2620 IMC_SIP_CAUSE_487_REQUEST_TERMINATED = 487,
2621 IMC_SIP_CAUSE_488_NOT_ACCEPTABLE_HERE = 488,
2622 IMC_SIP_CAUSE_491_REQUEST_PENDING = 491,
2623 IMC_SIP_CAUSE_493_UNDECIPHERABLE = 493,
2624 IMC_SIP_CAUSE_494_SECURITY_AGREEMENT_REQUIRED = 494,
2625 IMC_SIP_CAUSE_500_SERVER_INT_ERROR = 500,
2626 IMC_SIP_CAUSE_501_NOT_IMPLEMENTED = 501,
2627 IMC_SIP_CAUSE_502_BAD_GATEWAY = 502,
2628 IMC_SIP_CAUSE_503_SERVICE_UNAVAILABLE = 503,
2629 IMC_SIP_CAUSE_504_SERVER_TIME_OUT = 504,
2630 IMC_SIP_CAUSE_505_SIP_VERSION_NOT_SUPPORTED = 505,
2631 IMC_SIP_CAUSE_513_MESSAGE_TOO_LARGE = 513,
2632 IMC_SIP_CAUSE_580_PRECONDITION_FAILURE = 580,
2633 IMC_SIP_CAUSE_600_BUSY_EVERYWHERE = 600,
2634 IMC_SIP_CAUSE_603_DECLINE = 603,
2635 IMC_SIP_CAUSE_604_DOES_NOT_EXIST_ANYWHERE = 604,
2636 IMC_SIP_CAUSE_606_NOT_ACCEPTABLE = 606,
2637 IMC_SIP_CAUSE_700_INTERNAL_REQUEST_TIMEOUT = 700, //no sip error response 700 actually exist , this is for Internal timeout
2638 IMC_SIP_CAUSE_UNKNOWN = 800,
2639 IMC_SIP_CAUSE_MAX = IMC_SIP_CAUSE_UNKNOWN,
2640} imcb_imc_sip_cause_enum;
2641
2642typedef struct {
2643 imcf_uint8 len;
2644 imcf_uint8 pad[3];
2645 imcf_uint8 data[256];
2646} ims_sim_usim_data_struct;
2647
2648typedef struct {
2649 imcf_uint8 len;
2650 imcf_uint8 pad[3];
2651 imcf_uint8 data[256];
2652} ims_isim_data_struct;
2653
2654typedef struct volte_event_media_config {
2655 kal_uint8 local_address[VOLTE_IPADDR_LENGTH];
2656
2657 // RTP and RTCP session for audio and video
2658 kal_uint32 audio_b_as; // RTP bandwidth
2659 kal_uint32 audio_b_rs; // RTCP sender bandwidth
2660 kal_uint32 audio_b_rr; // RTCP receiver bandwidth
2661 kal_uint16 audio_remote_rtp_port;
2662 kal_uint16 audio_remote_rtcp_port;
2663 kal_uint16 audio_local_rtcp_port; ///< rtcp port number. we may configure it not rtp_port+1
2664 kal_uint16 audio_local_rtp_port; ///< rtp port number for media attribute in SDP message
2665 kal_uint8 audio_remote_rtp_address[VOLTE_IPADDR_LENGTH];
2666 kal_uint8 audio_remote_rtcp_address[VOLTE_IPADDR_LENGTH];
2667
2668 kal_uint32 video_b_as; // RTP bandwidth
2669 kal_uint32 video_b_rs; // RTCP sender bandwidth
2670 kal_uint32 video_b_rr; // RTCP receiver bandwidth
2671 kal_uint16 video_remote_rtp_port;
2672 kal_uint16 video_remote_rtcp_port;
2673 kal_uint16 video_local_rtcp_port; ///< rtcp port number. we may configure it not rtp_port+1
2674 kal_uint16 video_local_rtp_port; ///< rtp port number for media attribute in SDP message
2675 kal_uint8 video_remote_rtp_address[VOLTE_IPADDR_LENGTH];
2676 kal_uint8 video_remote_rtcp_address[VOLTE_IPADDR_LENGTH];
2677
2678 kal_uint8 remote_addr_type; ///< VoLTE_Event_IP_Version_e, apply to RTP audio & video session, RTCP audio & video session
2679 kal_uint8 audio_rtp_direction; ///< VoLTE_Event_RTP_DIRECTION_e
2680 kal_uint8 video_rtp_direction; ///< VoLTE_Event_RTP_DIRECTION_e
2681 // required by video codec
2682 kal_uint8 video_payload_type;
2683
2684 kal_uint32 rtcp_interval; ///< IMCB will get value from NVRAM. Used by data plane.
2685 kal_uint32 dscp; ///< IMCB will get value from NVRAM. Used by data plane.
2686 kal_uint32 video_dscp; ///< IMCB will get value from NVRAM. Used by data plane.
2687 kal_uint32 voice_soc_priority; ///< IMCB will get value from NVRAM. Used by data plane.
2688 kal_uint32 video_soc_priority; ///< IMCB will get value from NVRAM. Used by data plane.
2689
2690 // required by voice codec driver
2691 kal_uint8 audio_codec; ///< voip_codec_enum in codec_def.h
2692 kal_uint8 audio_payload_type; ///< payload type
2693 kal_uint8 audio_clock_rate; ///< dynamic rate, clock rate, see VoLTE_Event_Clock_Rate_e
2694 kal_uint8 is_dtmf; ///< is dtmf tone useing telephony event
2695
2696 kal_uint8 tele_evt_payload_type; ///< telephony event payload type
2697 kal_uint8 tele_evt_clock_rate; ///< telephony event rate
2698 kal_uint8 g723_bitrate; ///< VoLTE_Event_G7231_BitRate_e
2699 kal_uint8 is_g723_annexAYES; ///< G.723.1 annexA Yes:1, No:0
2700
2701 kal_uint8 is_g729_annexBYES; ///< G.729 annexB Yes:1, No:0
2702 kal_uint8 ilbc_mode; ///< VoLTE_Event_iLBC_Rate_e
2703 // required by RFC 6679 ECN
2704 kal_uint8 ecn_capable_rtp_method; ///< VoLTE_Event_ECN_RTP_METHOD_e
2705 kal_uint8 ecn_capable_ect; //0, 1
2706
2707 kal_uint32 ptime; ///< ptime of the codec
2708 kal_uint32 max_ptime; ///< max ptime is the buffer size for data plane. may not the same to ptime
2709 // required by AMR and AMR WB codec
2710 kal_int8 mode_set[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
2711
2712 kal_uint8 is_octet_align; ///< 0:default, bandwidth-efficient, 1: octet_align
2713 kal_uint8 mode_change_period; ///< the period should be N. but currently only 1(default) or 2.
2714 kal_uint8 mode_change_cap; ///< 1(default) or 2(recommended to support)
2715 kal_uint8 mode_change_neighbor;///< 0(default) or 1
2716
2717 kal_uint8 crc; ///< 0 or 1
2718 kal_uint8 robust; ///< 0 or 1
2719 kal_uint8 interleaving; ///< the maximum number of frame-blocks. 0: not present
2720 kal_uint8 channel; ///< the number of audio channel. must be 1 currently
2721 kal_uint16 max_red; // the maximum duration in ms
2722// required by RTCP FB
2723 kal_uint16 rtcp_rsize;
2724 kal_uint32 rtcpfb_type; ///< bitmap, VoLTE_Event_RTCP_FB_Type_e
2725 kal_uint32 network_id;
2726 kal_char id[VOLTE_MAX_SDP_EGBYTE_LENGTH];
2727 kal_char trr_int[VOLTE_MAX_SDP_EGBYTE_LENGTH];
2728 kal_char id_app_string[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
2729 kal_char ack_app_string[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
2730 kal_char nack_app_string[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
2731 kal_char tmmbr_string[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
2732 kal_char vbcm_string[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
2733 kal_char cname_string[VOLTE_MAX_CNAME_LENGTH];
2734
2735 /* EVS Support */
2736 kal_uint8 evs_support;
2737 kal_uint8 evs_mode_switch; ///< 0(default) or 1
2738 kal_uint8 hf_only; ///< 0(default) or 1
2739 kal_uint8 dtx; ///< 0 or 1(default)
2740 kal_uint8 dtx_recv; ///< 0 or 1(default)
2741 kal_uint8 pading[3];
2742 kal_uint8 br[2]; ///< VoLTE_EVS_Codec_Bitrate_e
2743 kal_uint8 br_send[2]; ///< VoLTE_EVS_Codec_Bitrate_e
2744 kal_uint8 br_recv[2]; ///< VoLTE_EVS_Codec_Bitrate_e
2745 kal_uint8 bw[2]; ///< VoLTE_EVS_Bandwidth_e
2746 kal_uint8 bw_send[2]; ///< VoLTE_EVS_Bandwidth_e
2747 kal_uint8 bw_recv[2]; ///< VoLTE_EVS_Bandwidth_e
2748 kal_uint8 ch_send; ///< number of channel number, 1 for default
2749 kal_uint8 ch_recv; ///< number of channel number, 1 for default
2750 kal_int8 ch_aw_recv; ///< -1, 0(default), 2, 3, 5, or 7
2751 kal_int8 cmr; ///< 0(default), 1, or -1
2752
2753 /* RTCP-XR */
2754 kal_uint16 rtcp_xr_format;
2755 kal_uint16 rtcp_xr_loss_maxsize;
2756 kal_uint16 rtcp_xr_dup_maxsize;
2757 kal_uint16 rtcp_xr_rcpt_maxsize;
2758 kal_uint16 rtcp_xr_rtt_maxsize;
2759 kal_uint8 rtcp_xr_rtt_mode;
2760 kal_uint8 rtcp_xr_stat_flags;
2761
2762 /* TTY */
2763 kal_uint32 text_b_as; // RTP bandwidth
2764 kal_uint32 text_b_rs; // RTCP sender bandwidth
2765 kal_uint32 text_b_rr; // RTCP receiver bandwidth
2766 kal_uint16 text_remote_rtp_port;
2767 kal_uint16 text_remote_rtcp_port;
2768 kal_uint16 text_local_rtcp_port; ///< rtcp port number. we may configure it not rtp_port+1
2769 kal_uint16 text_local_rtp_port; ///< rtp port number for media attribute in SDP message
2770 kal_int8 text_remote_rtp_address[IMCB_IMC_IPADDR_LENGTH];
2771 kal_int8 text_remote_rtcp_address[IMCB_IMC_IPADDR_LENGTH];
2772 kal_uint8 text_rtp_direction; ///< VoLTE_Event_RTP_DIRECTION_e
2773 kal_uint8 text_t140_payload_type; ///< payload type
2774 kal_uint8 text_red_payload_type; ///< payload type
2775 kal_uint8 text_red_level; ///< T140 Red level
2776 kal_uint8 text_cps; ///< T140 Red level
2777 /* ALTC ================================================================================*/
2778 kal_uint8 text_addr_type;
2779 kal_uint8 text_pad[2];
2780
2781 /* 1940 - 4 = 1936*/
2782 /* offline define feature flag */
2783 /* ex. used by ALTC feautre */
2784 kal_uint32 feature_flag;
2785
2786 /* ALTC 1936 - 16 = 1920 */
2787 /* ======================================================================================*/
2788 kal_uint8 text_local_address[IMCB_IMC_IPADDR_LENGTH];
2789 /* ======================================================================================*/
2790
2791 /* Asymmetric RTP payload type support 1920 - 4 - 736*8 = 1180 */
2792 kal_uint32 recv_codec_num;
2793 imcb_imc_ltecsr_media_codec_struct recv_codec_list[IMCB_IMC_MAX_RECV_CODEC_LIST_LENGTH];
2794
2795 kal_uint8 resv[1180];
2796} VoLTE_Event_Media_config_t,
2797volte_event_media_config_struct;
2798
2799typedef struct {
2800 imcf_uint32 type; // imcb_imc_tlv_para_enum
2801 imcf_uint32 len;
2802 imcf_uint8 value[0];
2803} imcb_imc_tlv_struct;
2804
2805typedef struct {
2806 LOCAL_PARA_HDR
2807 imcf_uint32 acct_id;
2808 imcf_uint64 ua_id; // reg client information
2809 imcf_uint32 total_len;
2810 imcf_uint32 total_num;
2811 imcf_uint32 tlv_dst;
2812 imcf_uint8 data[IMC_MAX_ILM_BUFFER_LEN-16]; // imcb_imc_tlv_struct
2813} imcb_imc_tlv_para_setting_ind_struct,
2814imcb_imc_tlv_para_setting_req_struct,
2815VoLTE_Event_Tlv_Para_Setting_t;
2816
2817typedef struct _VoLTE_Event_ATCmd_Relay_t {
2818 LOCAL_PARA_HDR
2819 imcf_uint32 account_id; // Account ID, normal account of the SIM
2820 imcf_uint64 ua_id; // reg client information
2821 imcf_uint32 atcmd_id; // VoLTE_ATCmd_Id_t
2822 imcf_uint32 pad; // pad
2823 imcf_uint32 pad2; // pad
2824 imcf_char cmdline[IMC_ATCMD_MAX_CMDLINE_LEN];
2825} VoLTE_Event_ATCmd_Relay_t;
2826
2827typedef enum {
2828 IMCB_IMC_TLV_TO_UNSPECIFIC = 0,
2829 IMCB_IMC_TLV_TO_UA = 1,
2830 IMCB_IMC_TLV_TO_IMCB = 2,
2831 IMCB_IMC_TLV_TO_IMC = 3
2832} imcb_imc_tlv_dst_enum;
2833
2834enum VoLTE_EIMSCAI_MODE_e {
2835 VoLTE_EIMSCAI_MODE_unspecific = 0,
2836 VoLTE_EIMSCAI_MODE_original_ims_call = 1,
2837 VoLTE_EIMSCAI_MODE_client_api = 2,
2838 VoLTE_EIMSCAI_MODE_enrich_calling = 3,
2839 VoLTE_EIMSCAI_MODE_max
2840};
2841
2842enum VoLTE_EIMSCAI_TYPE_e {
2843 VoLTE_EIMSCAI_TYPE_unspecific = 0,
2844 VoLTE_EIMSCAI_TYPE_header = 1,
2845 VoLTE_EIMSCAI_TYPE_location = 2,
2846 VoLTE_EIMSCAI_TYPE_max
2847};
2848
2849typedef enum _VoLTE_ATCmd_Id_e {
2850 VoLTE_ATCMD_NONE = 0,
2851 VoLTE_ATCMD_EIMSXUI = 1, /* +EIMSXUI:<account_id>,<broadcast_flag>,<xui_info> */
2852 VoLTE_ATCMD_EIMSEVTPKG = 2, /* +EIMSEVTPKG: <call_id>,<type>,<urc_index>,<total_urc_count>,<data> */
2853 VoLTE_ATCMD_EIMSGEO = 3, /* AT+EIMSGEO=/+EIMSGEO:<account_id>,<broadcast_flag>,<latitude>,<longitude>,<accurate>,<method>,<city>,<state>,<zip>,<country> */
2854 VoLTE_ATCMD_EIMSPDIS = 4, /* +EIMSPDIS: <transaction_id>,<em_id>,<method>,<nw_if_name[]> ; AT+EIMSPDIS= <transaction_id>,<method>,<is_success> */
2855 VoLTE_ATCMD_EIMSPCSCF = 5, /* AT+EIMSPCSCF= <transaction_id>,<method>, <protocol_type>, <port_num>, <addr> */
2856 VoLTE_ATCMD_PRTTCALL = 6, /* +PRTTCALL: <call_id>, <op> ; AT+PRTTCALL: <call_id>, <result> */
2857 VoLTE_ATCMD_DIGITLINE = 7, /* AT+DIGITLINE=<account_id>,<serial_number>,<is_logout>,<has_next>,<is_native>,<msisdn>,"<token>"
2858 * +DIGITLINE=<account_id>,<serial_number>,<msisdn_num>,<msisdn>,<is_active> */
2859 VoLTE_ATCMD_EIMSREGURI = 8, /* AT+EIMSREGURI=<account_id>,<profileURI>,<expiryTime>*/
2860 VoLTE_ATCMD_EIMSREGRESP = 9, /* AT+EIMSREGRESP=<account_id>,<profileURI>,<errorCode>,<errorMessage>"*/
2861 VoLTE_ATCMD_EIMSHEADER = 10, /* AT+EIMSHEADER=<call_id>,<header_type> */
2862 /* +EIMSHEADER:<call_id>,<header_type>,<totalcount>,<index>,"<value>"*/
2863 VoLTE_ATCMD_EIMSCALLMODE = 11, /* AT+EIMSCALLMODE=<op>*/
2864 VoLTE_ATCMD_ESIPREGINFO = 12, /* +ESIPREGINFO : <account_id>,<direction>,<SIP_msg_type>,<method>,<response_code>,"reason_phrase", <warn_text> */
2865 VoLTE_ATCMD_EIMSCAI = 13, /* AT+EIMSCAI: <mode>, <type>, <total>, <index>, <count>, [additional Info] */
2866 /* +EIMSCAI: <call_id>, <mode>, <type>, <total>, <index>, <count>, [additional Info] */
2867 VoLTE_ATCMD_ELOCAEN = 14, /* AT+ELOCAEN=<op> */
2868 VoLTE_ATCMD_CECN = 15, /* +CECN:<data_type> 0: updated MSD transfered; 1: request update MSD;
2869 * 100: request in-band MSD transfer; 101: request in-band MSD transfer for SRVCC; 102: MSD transfered fail*/
2870 VoLTE_ATCMD_ERCSMTINV = 16, /* +ERCSMTINV: <from number>, <total count>, <index>, <MT SIP INVITE> */
2871 VoLTE_ATCMD_MAX,
2872} VoLTE_ATCmd_Id_e, VoLTE_ATCmd_Id_t;
2873
2874/* location info */
2875typedef struct _VoLTE_Event_LBS_Location_ {
2876 kal_int32 lat[2]; /* [0..8388607], 23 bits field */
2877 kal_int32 lng[2]; /* [-8388608..8388607], 24 bits field */
2878 kal_int32 acc;
2879 kal_uint8 timestamp[VOLTE_MAX_TIME_STAMP_LENGTH]; // VOLTE_MAX_TIME_STAMP_LENGTH =32
2880} VoLTE_Event_LBS_Location_t;
2881
2882#define IMS_MAX_TIME_STAMP_LENGTH 32
2883typedef struct
2884{
2885 imcf_int32 lat[2]; //double lat
2886 imcf_int32 lng[2]; //double lng
2887 imcf_int32 acc;
2888 imcf_uint8 timestamp[IMS_MAX_TIME_STAMP_LENGTH]; //32
2889} imcb_imc_loc_ts_struct;
2890
2891typedef struct _VoLTE_Event_Setting_TLV_ {
2892 kal_int32 type; // VoLTE_Setting_Type_e
2893 kal_int32 len; // length of data
2894 kal_int32 value[0]; // data
2895} VoLTE_Event_Setting_TLV_t;
2896
2897typedef struct _VoLTE_Event_Setting_ {
2898 LOCAL_PARA_HDR
2899 kal_int32 id; ///< account id
2900 kal_uint64 ua_id; // reg client information
2901 kal_int32 len; ///< the length of data
2902 kal_int32 num; ///< the number of settings
2903#if defined(WIN32)
2904 kal_uint8 data[0]; ///< data
2905#else
2906 VoLTE_Event_Setting_TLV_t data[0]; ///< data
2907#endif
2908} VoLTE_Event_Setting_t;
2909
2910typedef struct _VoLTE_Event_MD_Lower_Layer_Err {
2911 LOCAL_PARA_HDR
2912 kal_int32 acct_id;
2913 kal_uint64 ua_id; // reg client information
2914 kal_uint32 call_id; // unused
2915 kal_uint32 cause; // VoLTE_Event_MD_Lower_Layer_Err_e
yu.donge372c322023-08-30 20:25:04 -07002916 kal_uint8 value; // Value
rjw6c1fd8f2022-11-30 14:33:01 +08002917 kal_uint32 type; // VoLTE_Event_MD_Lower_Layer_TYPE_e
2918} VoLTE_Event_MD_Lower_Layer_Err_t;
2919
2920typedef struct _VoLTE_Event_Query_State {
2921 LOCAL_PARA_HDR
2922 kal_int32 id; // account id
2923 kal_uint64 ua_id; // reg client information
2924 kal_int32 type; // refer to ::VoLTE_Query_Type_e
2925} VoLTE_Event_Query_State_t;
2926
2927typedef struct _VoLTE_Event_Update_PLANI_Time {
2928 LOCAL_PARA_HDR
2929 kal_int32 id; // account id
2930 kal_uint64 ua_id; // reg client information
2931 kal_char timestamp[VOLTE_MAX_TIME_STAMP_LENGTH]; // VOLTE_MAX_TIME_STAMP_LENGTH =32
2932} VoLTE_Event_Update_PLANI_Time_t;
2933
2934typedef struct _VoLTE_AutoTesting_Info_ {
2935 LOCAL_PARA_HDR
2936 kal_uint32 id;
2937} VoLTE_AutoTesting_Info_t;
2938
2939typedef struct _VoLTE_Event_Logging_Event_Notify_ {
2940 LOCAL_PARA_HDR
2941 kal_uint32 id;
2942 kal_uint64 ua_id; // reg client information
2943 kal_uint32 type;
2944} VoLTE_Event_Logging_Event_Notify_t;
2945
2946typedef struct _VoLTE_Event_PS_DATA_OFF_Req_ {
2947 LOCAL_PARA_HDR
2948 kal_int32 id;
2949 kal_uint64 ua_id; // reg client information
2950 kal_int32 psdataoff_status;
2951 kal_int32 exempt_service;
2952} VoLTE_Event_PS_DATA_OFF_Req_t;
2953
2954typedef struct _VoLTE_Event_Network_Change_ {
2955 LOCAL_PARA_HDR
2956 kal_int32 id; // account id
2957 kal_uint64 ua_id; // reg client information
2958 kal_int32 state; // refer to ::VoLTE_Event_Network_State_e
2959 kal_int32 type; // refer to ::VoLTE_Event_Network_Type_e
2960 kal_int32 sub_type; // refer to ::VoLTE_Event_Network_Type_e (for VoData only)
2961 kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH]; // the current cell id from the modem PS
2962 VoLTE_Event_LBS_Location_t loc_info;
2963} VoLTE_Event_Network_Change_t;
2964
2965typedef struct _VoLTE_Event_Rat_Change_ {
2966 LOCAL_PARA_HDR
2967 kal_int32 id; // account id
2968 kal_uint64 ua_id; // reg client information
2969 kal_int32 type; // refer to ::VoLTE_Event_Network_Type_e
2970 kal_int32 sub_type; // refer to ::VoLTE_Event_Network_Type_e (for VoData only)
2971 kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH]; // current cell id from the modem PS
2972 VoLTE_Event_LBS_Location_t loc_info;
2973 kal_uint8 ssid[VOLTE_MAX_SSID_LENGTH];
2974 kal_int32 mtu;
2975} VoLTE_Event_Rat_Change_t;
2976
2977typedef struct _VoLTE_Event_3gpp_Rat_Change_ {
2978 LOCAL_PARA_HDR
2979 kal_int32 id; // account id
2980 kal_uint64 ua_id; // reg client information
2981 kal_int32 old_rat_type; // refer to ::VoLTE_Event_Network_Type_e
2982 kal_uint8 old_cell_id[VOLTE_MAX_CELL_ID_LENGTH]; // current cell id from the modem PS
2983 kal_int32 new_rat_type; // refer to ::VoLTE_Event_Network_Type_e
2984 kal_uint8 new_cell_id[VOLTE_MAX_CELL_ID_LENGTH]; // current cell id from the modem PS
2985 VoLTE_Event_LBS_Location_t loc_info;
2986} VoLTE_Event_3gpp_Rat_Change_t;
2987
2988typedef struct _VoLTE_Event_IP_Change_Notify {
2989 LOCAL_PARA_HDR
2990 kal_int32 acct_id;
2991 kal_uint64 ua_id; // reg client information
2992} VoLTE_Event_IP_Change_Notify_t;
2993
2994typedef struct _VoLTE_Event_iRat_without_IP_Change {
2995 LOCAL_PARA_HDR
2996 kal_int32 acct_id;
2997 kal_int32 old_rat_type; // refer to ::VoLTE_Event_Network_Type_e
2998 kal_int32 new_rat_type; // refer to ::VoLTE_Event_Network_Type_e
2999} VoLTE_Event_iRat_without_IP_Change_t;
3000
3001typedef struct _VoLTE_Event_Condition_Change_Notify {
3002 LOCAL_PARA_HDR
3003 kal_int32 acct_id;
3004 kal_uint64 ua_id; // reg client information
3005 kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH]; // the current cell id from the modem PS
3006 kal_int32 pdn_req_type; // refer to ::imcb_pdn_req_type_enum
3007 kal_int32 is_ip_change;
3008 kal_int32 is_pcscf_list_change; // refer to ::imcb_pcscf_list_change_enum
3009 VoLTE_Event_LBS_Location_t loc_info;
3010} VoLTE_Event_Condition_Change_Notify_t;
3011
3012typedef struct _VoLTE_Event_FF00H_Update {
3013 LOCAL_PARA_HDR
3014 kal_int32 acct_id;
3015 kal_uint64 ua_id; // reg client information
3016 kal_int32 ff00h;
3017} VoLTE_Event_FF00H_Update_t;
3018
3019typedef struct _VoLTE_Event_Timer {
3020 LOCAL_PARA_HDR
3021 kal_uint32 id;
3022 kal_uint32 timer_id;
3023 kal_uint32 timeout;
3024 kal_uint32 user_data;
3025} VoLTE_Event_Timer_t;
3026
3027typedef struct _VoLTE_Event_UA_Msg_Hdr {
3028 kal_int32 id; // account id
3029 kal_uint8 handshake; // 0: one-way, 1: two-way
3030 kal_uint8 resv[3];
3031 kal_uint8 data[0];
3032} VoLTE_Event_UA_Msg_Hdr_t ;
3033
3034typedef struct _VoLTE_Event_Geolocation_Info {
3035 LOCAL_PARA_HDR
3036 kal_uint32 type_id; // same as msg id
3037 kal_uint64 ua_id; // reg client information
3038 kal_char latitude[16];
3039 kal_char longitude[16];
3040 kal_char accuracy[8];
3041 kal_char method[16];
3042 kal_char city[32];
3043 kal_char state[32];
3044 kal_char zip[8];
3045 kal_char country_code[8];
3046 kal_char wifi_mac[20];
3047 kal_char confidence[8];
3048 kal_char altitude[16];
3049 kal_char accuracy_semiMajorAxis[16];
3050 kal_char accuracy_semiMinorAxis[16];
3051 kal_char accuracy_verticalAxis[16];
3052 VoLTE_Event_UA_Msg_Hdr_t ua_msg_hdr; /* contains a zero-length array, so must be in the end */
3053} VoLTE_Event_Geolocation_Info_t;
3054
3055typedef struct _VoLTE_Event_AP_Location_status {
3056 LOCAL_PARA_HDR
3057 kal_uint64 ua_id; // reg client information
3058 kal_int32 acct_id;
3059 kal_uint32 status;
3060} VoLTE_Event_AP_Location_status_t;
3061
3062/*
3063[+CLCC: <id1>,<dir>,<stat>,<mode>,<mpty>[,
3064<number>,<type>]
3065[<CR><LF>+CLCC: <id2>,<dir>,<stat>,<mode>,<mpty>[,
3066<number>,<type>]
3067*/
3068typedef struct _VoLTE_Event_List_one_call {
3069 kal_int32 acct_id;
3070 kal_uint32 call_id;
3071 kal_uint8 is_mt_call;
3072 kal_uint8 stat_of_the_call;
3073 kal_uint8 mode; // VOLTE_LIST_CALL_CNF:+CLCC VOLTE_CNF_REG_QUERY_CALL_STATE:VoLTE_Event_Call_Mode_e
3074 kal_uint8 is_conference_call;
3075 kal_char phone_number[VOLTE_MAX_URI_LENGTH];
3076 kal_uint32 is_international; // 0: no, 1: the phone number is a national number
3077} VoLTE_Event_List_one_call_t;
3078
3079enum VoLTE_Event_RTP_DIRECTION_e {
3080 VoLTE_Event_RTP_DIRECTION_INACTIVE = 0, ///< RTP session suspends. Inactive also is default value.
3081 VoLTE_Event_RTP_DIRECTION_SENDONLY, ///< Send only
3082 VoLTE_Event_RTP_DIRECTION_RECVONLY, ///< Receive only
3083 VoLTE_Event_RTP_DIRECTION_SENDRECV, ///< Send and Receive
3084 /*add here*/
3085 VoLTE_Event_RTP_DIRECTION_Max,
3086};
3087
3088enum VoLTE_Event_Feature_Sync_e {
3089 VoLTE_Event_Feature_Sync_Unknown = 0,
3090 VoLTE_Event_Feature_Sync_Reset_Throttling_Para_Criteria = 1,
3091 /*add here*/
3092 VoLTE_Event_Feature_Sync_Max,
3093};
3094
3095typedef struct _VoLTE_Event_Feature_Sync_ {
3096 LOCAL_PARA_HDR
3097 kal_uint32 id;
3098 kal_uint32 feature; //VoLTE_Event_Feature_Sync_e
3099} VoLTE_Event_Feature_Sync_t;
3100
3101typedef struct _VoLTE_Event_3gpp_OOS_Ind_ {
3102 LOCAL_PARA_HDR
3103 kal_int32 id; ///< the account id
3104 kal_uint64 ua_id; // reg client information
3105 kal_int32 oos_state; ///< VoLTE_Event_3gpp_OOS_State_e
3106 kal_int32 oos_timestamp; ///< 3gpp OOS unix timestamp
3107} VoLTE_Event_3gpp_OOS_Ind_t;
3108
3109typedef struct _VoLTE_Event_Notify {
3110 LOCAL_PARA_HDR
3111 kal_int32 acct_id;
3112 kal_uint64 ua_id; // reg client information
3113 kal_int32 data;
3114} VoLTE_Event_Notify_t;
3115
3116enum VoLTE_Event_Auth_Result_e {
3117 VoLTE_Event_Auth_Result_Accept = 0,
3118 VoLTE_Event_Auth_Result_Reject = 1,
3119 /*add here*/
3120 VoLTE_Event_Auth_Result_Max,
3121};
3122
3123typedef struct _VoLTE_Event_Reg_Auth_Resp {
3124 LOCAL_PARA_HDR
3125 kal_int32 id; // account id
3126 kal_int32 result; // refer to ::VoLTE_Event_Auth_Result_e
3127 kal_char nc[VOLTE_MAX_AUTH_NC]; // nc
3128 kal_char response[VOLTE_MAX_AUTH_RESPONSE]; // response
3129 kal_char auts[VOLTE_MAX_AUTH_AUTS]; // auts
3130 kal_char ck_esp[VOLTE_MAX_AUTH_CK]; // ck_esp for ipsec encryption key
3131 kal_char ik_esp[VOLTE_MAX_AUTH_IK]; // ik_esp for ipsec intergrity key
3132 kal_uint8 ck_bin[IMC_MAX_CK_LEN];
3133 kal_uint8 ik_bin[IMC_MAX_IK_LEN];
3134 kal_uint8 ck_len;
3135 kal_uint8 ik_len;
3136 kal_uint32 user_data; // user data for UA
3137} VoLTE_Event_Reg_Auth_Resp_t;
3138
3139typedef struct {
3140 LOCAL_PARA_HDR
3141 kal_uint32 acct_id;
3142 kal_uint32 sys_time[2]; ///< system time, in ms
3143 kal_uint8 src_ip[VOLTE_MAX_ADDRESS_LENGTH]; ///< SIP message source IP addr
3144 kal_uint8 dst_ip[VOLTE_MAX_ADDRESS_LENGTH]; ///< SIP message destination IP addr
3145 kal_uint32 direction; ///< refer to ::ims_dbg_direction_enum
3146 kal_uint32 transaction_id; ///< map to ts_id of transaction_layer
3147 kal_uint32 transport_protocol; ///< refer to ::ims_dbg_transport_enum
3148 kal_uint32 msg_type; ///< refer to ::ims_dbg_msg_type_enum
3149 kal_uint32 method_type; ///< refer to ::ims_dbg_method_enum
3150 kal_uint32 cseq; ///< cseq
3151 kal_int32 network_id; ///< network id
3152 kal_uint32 access_rat; ///< access RAT
3153 kal_uint16 rsp_code; ///< SIP response code
3154 kal_char request_line[VOLTE_MAX_REQUEST_LINE_LENGTH]; ///< First Line of a SIP message (Request-Line/Status-Line)
3155 kal_uint8 call_id[VOLTE_MAX_CALL_ID_LENGTH]; ///< call id
3156 kal_char reason_text[VOLTE_MAX_REASON_TEXT_LENGTH]; ///< reason header field
3157 kal_char warning_text[VOLTE_MAX_WARNING_TEXT_LENGTH]; ///< warning header field
3158 kal_char user_agent_text[VOLTE_MAX_USER_AGENT_LENGTH]; ///< user agent header field
3159 kal_char codec_info[VOLTE_MAX_CODEC_LIST_LENGTH]; ///< codec list
3160 kal_uint16 audio_port; ///< audio port number
3161 kal_uint16 video_port; ///< video port number
3162 kal_uint16 audio_as; ///< audioAS
3163 kal_uint16 video_as; ///< videoAS
3164 kal_uint16 session_as; ///< sessionAS
3165 kal_uint16 sip_msg_len; ///< SIP msg length
3166 kal_uint8 sip_msg_data[0]; ///< dynamic buffer for SIP msg
3167} ims_dbg_sip_info_ind_struct,
3168sip_dbg_sip_info_ind_struct;
3169
3170typedef struct {
3171 LOCAL_PARA_HDR
3172 kal_uint32 is_acct_id_valid;
3173 kal_uint32 acct_id;
3174
3175 kal_uint32 is_emergency_type_valid;
3176 kal_uint32 emergency_type;
3177
3178 kal_uint32 is_reg_state_valid;
3179 kal_uint32 reg_state;
3180
3181 kal_uint32 is_private_uid_valid;
3182 kal_uint8 private_uid[VOLTE_MAX_REG_UID_LENGTH];
3183
3184 kal_uint32 is_public_uid_valid;
3185 kal_uint8 public_uid[VOLTE_MAX_REG_UID_LENGTH];
3186
3187 kal_uint32 is_associated_uri_valid;
3188 kal_uint8 associated_uri[VOLTE_MAX_ASSOCIATED_URI];
3189
3190 kal_uint32 is_em_reg_timestamp_valid;
3191 kal_uint8 em_reg_timestamp[VOLTE_MAX_TIME_STAMP_LENGTH];
3192
3193 kal_uint32 is_reg_expires_valid;
3194 kal_uint32 reg_expires;
3195
3196/** Removal of IPSEC Attribute
3197 * ipsec_status not used or set in REG UA,
3198 * and not consistent with the interface of
3199 * em_imc_reg_info_ind_struct in em_imc_public_struct.h
3200 *
3201 * the change also makes the interface match the EM document
3202 **/
3203#if 0
3204/* under construction !*/
3205/* under construction !*/
3206#endif
3207
3208 kal_uint32 is_ems_mode_valid;
3209 kal_uint32 ems_mode;
3210
3211 kal_uint32 is_last_sip_cause_valid;
3212 kal_uint32 last_sip_cause;
3213
3214 kal_uint32 is_att_dm_type_valid;
3215 kal_uint32 att_dm_type;
3216
3217
3218 kal_uint32 is_att_reg_type_valid;
3219 kal_uint32 att_reg_type;
3220
3221 kal_uint32 is_att_direction_valid;
3222 kal_uint32 att_direction;
3223
3224 kal_uint32 is_att_call_id_valid;
3225#define _SIP_MSG_MAX_EM_CALLID_LEN 100
3226 kal_uint8 att_call_id[_SIP_MSG_MAX_EM_CALLID_LEN];
3227
3228 kal_uint32 is_att_request_uri_valid;
3229 kal_uint8 att_request_uri[VOLTE_MAX_URI_LENGTH];
3230
3231 kal_uint32 is_att_to_valid;
3232 kal_uint8 att_to[VOLTE_MAX_URI_LENGTH];
3233
3234 kal_uint32 is_att_reg_state_valid;
3235 kal_uint32 att_reg_state;
3236
3237 kal_uint32 is_att_reg_result_valid;
3238 kal_uint32 att_reg_result;
3239} ims_dbg_em_reg_info_ind_struct;
3240
3241
3242
3243enum VoLTE_Stack_IPSec_Encry_Algo_e {
3244 VoLTE_Stack_IPSec_Encry_Algo_NULL = 0,
3245 VoLTE_Stack_IPSec_Encry_Algo_3DES_CBC = 1,
3246 VoLTE_Stack_IPSec_Encry_Algo_AES_CBC = 2
3247};
3248
3249enum VoLTE_Stack_IPSec_Integrity_Algo_e {
3250 VoLTE_Stack_IPSec_Integrity_Algo_HMAC_MD5 = 0,
3251 VoLTE_Stack_IPSec_Integrity_Algo_HMAC_SHA1 = 1
3252};
3253
3254typedef struct _VoLTE_Event_UA_State_ {
3255 LOCAL_PARA_HDR
3256 kal_uint32 conn_info; ///< REG connection information
3257 kal_uint8 ua_type; ///< UA type
3258 kal_uint8 ua_enabled; ///< UA enabled
3259} VoLTE_Event_UA_State_t;
3260
rjw8e44aab2022-11-30 16:42:16 +08003261/*PANI header necessary information , send from call UA to STACK*/
3262typedef struct _VoLTE_Event_UA_Stack_PANI_Info_ {
3263 LOCAL_PARA_HDR
3264 //Basic information for PANI
3265 kal_int32 acct_id;
3266 kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH];
3267 kal_int8 cell_id_3gpp[VOLTE_MAX_CELL_ID_LENGTH];
3268 kal_int8 g_emerg_cell_id[VOLTE_MAX_CELL_ID_LENGTH];
3269 kal_int8 country_code[8];
3270 kal_uint32 net_type; ///< VoLTE_Event_Network_Type_e
3271 kal_int32 sub_net_type; ///< VoLTE_Event_Network_Type_e
3272 kal_int8 pani_access_category; ///decide to carry access-type or access-class in PANI header, refer to VoLTE_Stack_PANI_Access_Category_e
3273 kal_uint32 is_emergency_call;
3274
3275 //Customization for PANI
3276 kal_uint8 set_zero_cell_id_in_wifi;
yu.dong99f21a22023-05-30 22:15:37 -07003277 kal_uint8 set_zero_cell_id_when_invalid;
rjw8e44aab2022-11-30 16:42:16 +08003278 kal_uint8 add_country_to_pani;
3279 kal_uint8 add_cellid_to_pani;
3280 kal_uint8 add_timezone_to_pani;
3281 kal_uint8 add_pani_in_ack;
3282 kal_uint8 add_pani_in_cancel;
3283
3284} VoLTE_Event_UA_Stack_PANI_Info_t;
3285
rjw6c1fd8f2022-11-30 14:33:01 +08003286/* Teardown Flow for IMCB/REG State un-sync */
3287typedef struct {
3288 LOCAL_PARA_HDR
3289 kal_int32 id; // account id
3290 kal_int32 ua_id; // reg client information
3291 kal_int32 imcb_current_state; // refer to ::imcb_fsm_state_enum
3292 kal_int32 receiving_ua_state; // refer to ::VoLTE_Event_Reg_State_e
3293} imsua_imcb_unexpected_state_ind_struct;
3294
3295typedef imsua_imcb_unexpected_state_ind_struct imsua_ims_stack_unexpected_state_req_struct;
3296
3297/* REGUA-IMC MSG_ID_REGUA_IMC_REMAIN_TIME_IND */
3298typedef struct {
3299 LOCAL_PARA_HDR
3300 kal_uint8 rereg_flag; // send rereg_time or not
3301 kal_int32 rereg_remain_time; // rereg_time
3302 kal_uint8 resub_flag; // send resub_time or not
3303 kal_int32 resub_remain_time; // resub_time
3304} regua_imc_remain_time_ind_struct;
3305
3306// Constant
3307#define MAX_CC_CDU_URI_LEN MAX_CC_ATD_NUM_LEN
3308#define MAX_CC_ECPI_NUM_LEN MAX_CC_ATD_NUM_LEN
3309#define MAX_CC_EAIC_NUM_LEN MAX_CC_ATD_NUM_LEN
3310
3311#define IMS_MAX_CALL_NUM 7
3312#define IMS_MAX_CONFERENCE_CALL_NUM 5
3313#define IMS_MAX_CALL_NUM_IN_CONF 5
3314#define MAX_SS_NOTIFY_DATA_LEN 512
3315
yu.donge372c322023-08-30 20:25:04 -07003316#define IMS_USSD_MAX_MSG_LEN (1500)
rjw6c1fd8f2022-11-30 14:33:01 +08003317#define IMS_USSD_LANGUANGE_LEN (32)
3318
3319typedef enum
3320{
3321 IMS_CALL_CATEGORY_NORMAL = 0,
3322 IMS_CALL_CATEGORY_EMERGENCY
3323} ims_call_category_enum;
3324
3325typedef enum
3326{
3327 IMS_CC_RESULT_SUCCESS = 0,
3328 IMS_CC_RESULT_FAILURE,
3329 IMS_CC_RESULT_INVALID
3330} ims_cc_result_enum;
3331
3332typedef enum
3333{
3334 // Source: UA
3335 IMS_CC_CAUSE_NORMAL = 0, /* receive BYE request, MO hangup, or User reject to receive the all. mapping to CS NORMAL_CLEARING = 16. */
3336 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*/
3337 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*/
3338 IMS_CC_CAUSE_UNREGISTERED, /* account is not registered, VDM can require CS to make call, mapping to CS NORMAL_UNSPECIFIED = 31*/
3339 IMS_CC_CAUSE_DISCONNECT, /* register state go to disconnect state, mapping to CS BEARER_NOT_AVAIL = 58, play congestion tone*/
3340 IMS_CC_CAUSE_BECANCEL, /* we cancel the call, which is receive MO_HANGUP_REQ from AP side. Mapping to CS_NORMAL_CLEANING = 16*/
3341 IMS_CC_CAUSE_BEREJECT, /* receive 4xx,5xx,6xx from the peer side to cancel request, mapping to CS USER_BUSY = 17, play busy tone*/
3342 IMS_CC_CAUSE_BEREJECT_380, /* receive 380 alternative service, mapping to CS SERVICE_NOT_AVAILABLE = 63. VDM can require CS to make call */
3343 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 */
3344 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 */
3345 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 */
3346 IMS_CC_CAUSE_BEREJECT_480, /* receive 480, mapping to CS TEMPORARY_FAILURE = 41, play congestion tone*/
3347 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.*/
3348 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.*/
3349 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 */
3350 IMS_CC_CAUSE_PRECONDFAIL, /* receive 580 precondition failure, mapping to CS BEARER_NOT_AVAIL = 58, play congestion tone*/
3351 IMS_CC_CAUSE_SECONDCALL, /* receive second call request, VDM can have its policy, mapping to CS NORMAL_UNSPECIFIED = 31*/
3352 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*/
3353 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.*/
3354 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.*/
3355 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 */
3356 IMS_CC_CAUSE_SRVCC, /* Add for SRVCC, mapping to CS NORMAL_UNSPECIFIED = 31 */
3357 IMS_CC_CAUSE_FACILITY_REJECTED, /* receive 504 with XML body for Registration Restoration. Mapping to CS FACILILITY_REJECTED = 29 */
3358 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) */
3359 IMS_CC_CAUSE_GENERIC_RETRY_CS,
3360 IMS_CC_CAUSE_GENERIC_NO_RETRY,
3361 IMS_CC_CAUSE_GENERIC_RETRY_IMS_CS,
3362 IMS_CC_CAUSE_ABORTED,
3363 IMS_CC_CAUSE_TIMER_B_EXPIRY,
3364 IMS_CC_CAUSE_ECT_TIMEOUT,
3365 IMS_CC_CAUSE_TIMER_VZW_EXPIRY,
3366 IMS_CC_CAUSE_AC_BARRED,
3367 IMS_CC_CAUSE_NW_REJ_CONN,
3368 IMS_CC_CAUSE_BEREJECT_503_OUTAGE_TEXT,
3369 IMS_CC_CAUSE_GENERIC_CHANGE_PCSCF,
3370 IMS_CC_CAUSE_RTT_EMC_FAIL,
3371 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 */
3372 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. */
3373 IMS_CC_CAUSE_RETRY_IMS_VIDEO_TO_VOICE,
3374 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 +08003375 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)*/
3376 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 +08003377 IMS_CC_CAUSE_UA_MAX,
3378
3379 // Source: IMC
3380 IMS_CC_CAUSE_UNAVAILABLE_OF_CALLS, /* unavailable of IMS Voice Service */
3381 IMS_CC_CAUSE_EMERG_REG_TIMEOUT, /* AT&T <CDR-LTE-2424>, CS domain search after emerg-reg-timer expires */
3382 IMS_CC_CAUSE_RAT_MISMATCH,
3383 IMS_CC_CAUSE_RECOVERY_FOR_IMS_REG,
3384 // Do not assign 0xC8 for new error code because it is used by VDM_CC_CAUSE_RESEL_IMS_FOR_ECC for VDM/L4 workaround
3385
3386 IMS_CC_CAUSE_MAX
3387} ims_cc_cause_enum;
3388
3389typedef enum
3390{
3391 IMS_CC_EAIC_ALLOWED = 0,
3392 IMS_CC_EAIC_NOT_ALLOWED
3393} ims_cc_eaic_result_enum;
3394
3395typedef enum
3396{
3397 IMS_CC_MT_NORMAL = 0,
3398 IMS_CC_MT_SSAC_BARRING
3399} ims_cc_mt_reason_enum;
3400
3401typedef enum
3402{
3403 IMS_CALL_RELATED_SS_TYPE_REL_HELD_OR_UDUB, // AT+CHLD=0
3404 IMS_CALL_RELATED_SS_TYPE_REL_ACTIVE_AND_ACCEPT, // AT+CHLD=1
3405 IMS_CALL_RELATED_SS_TYPE_REL_SPECIFIC_CALL, // AT+CHLD=1x
3406 IMS_CALL_RELATED_SS_TYPE_HOLD_ACTIVE_AND_ACCEPT, // AT+CHLD=2
3407 IMS_CALL_RELATED_SS_TYPE_HOLD_ACTIVE_EXCEPT_SPECIFIC_CALL, // AT+CHLD=2x
3408 IMS_CALL_RELATED_SS_TYPE_ADD_HELD_CALL, // AT+CHLD=3
3409 IMS_CALL_RELATED_SS_TYPE_EXPLICIT_CALL_TRANSFER, // AT+CHLD=4
3410 IMS_CALL_RELATED_SS_TYPE_ACTIVATE_CCBS_CALL, // AT+CHLD=5
3411 IMS_CALL_RELATED_SS_TYPE_REL_ALL, // AT+CHLD=6
3412 IMS_CALL_RELATED_SS_TYPE_REL_CALL_REJECT, // AT+CHLD=8
3413 IMS_CALL_RELATED_SS_TYPE_VT_FALL_TO_VOICE, // AT+CHLD=9x
3414 IMS_CALL_RELATED_SS_TYPE_INVALID
3415} ims_call_related_ss_type_enum;
3416
3417typedef enum
3418{
3419/* values 1-127 can be found in 3GPP TS 24.008 Annex H. */
3420 /* H.1.1 Cause No. 1 "unassigned (unallocated) number" */
3421 IMS_EXT_ERROR_REPORT_UNOBTAINABLE_NUMBER = 1,
3422 /* H.1.2 Cause No. 3 "no route to destination" */
3423 IMS_EXT_ERROR_REPORT_NO_ROUTE_TO_DEST = 3,
3424 /* H.1.3 Cause No. 6 "channel unacceptable" */
3425 IMS_EXT_ERROR_REPORT_CHANNEL_UNACCEPTABLE = 6,
3426 /* H.1.4 Cause No. 8 "operator determined barring" */
3427 IMS_EXT_ERROR_OPERATOR_DETERMINED_BARRING = 8,
3428 /* H.1.5 Cause No. 16 "normal call clearing" */
3429 IMS_EXT_ERROR_REPORT_NORMAL_CLEARING = 16,
3430 /* H.1.6 Cause No. 17 "user busy" */
3431 IMS_EXT_ERROR_REPORT_USER_BUSY = 17,
3432 /* H.1.7 Cause No. 18 "no user responding" */
3433 IMS_EXT_ERROR_REPORT_NO_USER_RESPONDING = 18,
3434 /* H.1.8 Cause No. 19 "user alerting, no answer" */
3435 IMS_EXT_ERROR_REPORT_NO_ANSWER = 19,
3436 /* H.1.9 Cause No. 21 "call rejected" */
3437 IMS_EXT_ERROR_REPORT_CALL_REJECTED = 21,
3438 /* H.1.10 Cause No. 22 "number changed" */
3439 IMS_EXT_ERROR_REPORT_NUMBER_CHANGED = 22,
3440 /* H.1.10a Cause No. 24 "call rejected due to feature at the destination" */
3441 IMS_EXT_ERROR_REPORT_CELL_REJECTED_DUE_FEAT = 24,
3442 /* H.1.11 Cause No. 25 "pre-emption" */
3443 IMS_EXT_ERROR_REPORT_PRE_EMPTION = 25,
3444 /* H.1.12 Cause No. 26 "Non-selected user clearing" */
3445 IMS_EXT_ERROR_REPORT_NONSELECTED_USER_CLEARING = 26,
3446 /* H.1.13 Cause No. 27 "Destination out of order" */
3447 IMS_EXT_ERROR_REPORT_DESTINATION_OUT_OF_OREDER = 27,
3448 /* H.1.14 Cause No. 28 "Invalid number format (incomplete number) " */
3449 IMS_EXT_ERROR_REPORT_INVALID_NUMBER_FORMAT = 28,
3450 /* H.1.15 Cause No. 29 "Facility rejected" */
3451 IMS_EXT_ERROR_REPORT_FACILITY_REJECTED = 29,
3452 /* H.1.16 Cause No. 30 "response to STATUS ENQUIRY" */
3453 IMS_EXT_ERROR_REPORT_RESP_TO_STATUS_ENQUIRY = 30,
3454 /* H.1.17 Cause No. 31 "normal, unspecified */
3455 IMS_EXT_ERROR_REPORT_NORMAL_UNSPECIFIED = 31,
3456 /* H.2.1 Cause No. 34 "no circuit/channel available" */
3457 IMS_EXT_ERROR_REPORT_NO_CHANNEL_AVAILABLE = 34,
3458 /* H.2.2 Cause No. 38 "network out of order" */
3459 IMS_EXT_ERROR_REPORT_NWK_OUT_OF_ORDER = 38,
3460 /* H.2.3 Cause No. 41 "temporary failure" */
3461 IMS_EXT_ERROR_REPORT_TEMPORARY_FAILURE = 41,
3462 /* H.2.4 Cause No. 42 "switching equipment congestion" */
3463 IMS_EXT_ERROR_REPORT_SWITCHING_CONGESTION = 42,
3464 /* H.2.5 Cause No. 43 "access information discarded" */
3465 IMS_EXT_ERROR_REPORT_ACCESS_INFO_DISCARDER = 43,
3466 /* H.2.6 Cause No. 44 "requested channel not available" */
3467 IMS_EXT_ERROR_REPORT_REQUESTED_CHANNEL_NOT_AVAIL = 44,
3468 /* H.2.7 Cause No. 47 "resource unavailable, unspecified" */
3469 IMS_EXT_ERROR_REPORT_RESOURCE_UNAVAILABLE = 47,
3470 /* H.3.1 Cause No. 49 "quality of service unavailable" */
3471 IMS_EXT_ERROR_REPORT_QOS_NOT_AVAIL = 49,
3472 /* H.3.2 Cause No. 50 "Requested facility not subscribed" */
3473 IMS_EXT_ERROR_REPORT_REQ_FACILITY_NOT_SUBSCRIBED = 50,
3474 /* H.3.3 Cause No. 55 "Incoming calls barred within the CUG" */
3475 IMS_EXT_ERROR_REPORT_INCOMING_CALLS_BARRED_IN_CUG = 55,
3476 /* H.3.4 Cause No. 57 "Bearer capability not authorized" */
3477 IMS_EXT_ERROR_REPORT_BEARER_CAP_NOT_AUTHORIZED = 57,
3478 /* H.3.5 Cause No. 58 "Bearer capability not presently available" */
3479 IMS_EXT_ERROR_REPORT_BEARER_NOT_AVAIL = 58,
3480 /* H.3.6 Cause No. 63 "Service or option not available, unspecified" */
3481 IMS_EXT_ERROR_REPORT_SERVICE_NOT_AVAILABLE = 63,
3482 /* H.3.7 Cause No. 68 "ACM equal to or greater than ACMmax" */
3483 IMS_EXT_ERROR_REPORT_ACM_GREATER_THAN_ACMMAX = 68,
3484 /* H.4.1 Cause No. 65 "bearer service not implemented" */
3485 IMS_EXT_ERROR_REPORT_BEARER_SERVICE_NOT_IMPLEMENTED = 65,
3486 /* H.4.2 Cause No. 69 "request facility not implemented" */
3487 IMS_EXT_ERROR_REPORT_REQ_FACILITY_NOT_IMPLEMENTED = 69,
3488 /* H.4.3 Cause No. 70 "only restricted digital information bearer capability is available" */
3489 IMS_EXT_ERROR_REPORT_ONLY_DIGITAL_INFO_BEARER = 70,
3490 /* H.4.4 Cause No. 79 "service or option not implemented, unspecified" */
3491 IMS_EXT_ERROR_REPORT_SERVICE_NOT_IMPLEMENTED = 79,
3492 /* H.5.1 Cause No. 81 "invalid transaction identified value" */
3493 IMS_EXT_ERROR_REPORT_INVALID_TRANSACTION_IDENTIFIER = 80,
3494 /* H.5.2 Cause No. 87 "user not member of CUG" */
3495 IMS_EXT_ERROR_REPORT_USER_NOT_MEMBER_OF_CUG = 87,
3496 /* H.5.3 Cause No. 88 "incompatible destination" */
3497 IMS_EXT_ERROR_REPORT_INCOMPATIBLE_DESTINATION = 88,
3498 /* H.5.4 Cause No. 91 "invalid transit network selection" */
3499 IMS_EXT_ERROR_REPORT_INVALID_TRANSIT_NWK_SELECTION = 91,
3500 /* H.5.5 Cause No. 95 "semantically incorrect message" */
3501 IMS_EXT_ERROR_REPORT_SEMANTICALLY_INCORRECT_MSG = 95,
3502 /* H.6.1 Cause No. 96 "invalid mandatory information" */
3503 IMS_EXT_ERROR_REPORT_INVALID_MANDATORY_INFORMATION = 96,
3504 /* H.6.2 Cause No. 97 "message type non-existent or not implemented" */
3505 IMS_EXT_ERROR_REPORT_MSG_TYPE_NON_EXISTENT = 97,
3506 /* H.6.3 Cause No. 98 "message type not compatible with protocol state" */
3507 IMS_EXT_ERROR_REPORT_MSG_TYPE_NOT_COMP_WITH_STATE = 98,
3508 /* H.6.4 Cause No. 99 "information element non-existent or not implemented" */
3509 IMS_EXT_ERROR_REPORT_INFO_ELEMENT_NON_EXISTENT = 99,
3510 /* H.6.5 Cause No. 100 "conditional IE error" */
3511 IMS_EXT_ERROR_REPORT_CONDITIOANL_IE_ERROR = 100,
3512 /* H.6.6 Cause No. 101 "message not compatible with protocol state" */
3513 IMS_EXT_ERROR_MSG_NOT_COMP_WITH_STATE = 101,
3514 /* H.6.7 Cause No. 102 "recovery on timer expiry" */
3515 IMS_EXT_ERROR_RECOVERY_ON_TIMER_EXPIRY = 102,
3516 /* H.6.8 Cause No. 111 "protocol error, unspecified" */
3517 IMS_EXT_ERROR_REPORT_PROTOCOL_ERROR_UNSPECIFIED = 111,
3518 /* H.7.1 Cause No. 127 "interworking, unspecified" */
3519 IMS_EXT_ERROR_REPORT_INTERWORKING_UNSPECIFIED = 127,
3520
3521/* other error causes */
3522 IMC_EXT_ERROR_REPORT_INVALID_CMD = 0,
3523 IMS_EXT_ERROR_REPORT_FDN_RESTRICTION = 2600, // refer to ps_cause_enum
3524 IMS_EXT_ERROR_REPORT_ECT_TIMEOUT = 899,
3525 IMS_EXT_ERROR_REPORT_DEDICATED_BEARER_TIMEOUT = 1000, // may reselect CS domain
3526 IMS_EXT_ERROR_REPORT_GENERIC_RETRY_CS = 1001, // may reselect CS domain
3527 IMS_EXT_ERROR_REPORT_GENERIC_NO_RETRY = 1002,
3528 IMS_EXT_ERROR_REPORT_GENERIC_RETRY_IMS_CS = 1003, // may retry IMS once, then CS domain
3529 IMS_EXT_ERROR_REPORT_TIMER_B_EXPIRY = 1004,
3530 IMS_EXT_ERROR_REPORT_GENERIC_RETRY_IMS_VIDEO_TO_VOICE = 1005, // always retry IMS.
3531 IMS_EXT_ERROR_REPORT_NO_RETRY_BAR_IMS = 1006, // VDM will only try CS when barring IMS
3532 IMS_EXT_ERROR_REPORT_NON_UE_DETECT_EMERG = 380, // report to AP to trigger normal to ecc redial
3533 IMS_EXT_ERROR_REPORT_SILENT_REDIAL_3GPP2 = 2001,
3534 IMS_EXT_ERROR_REPORT_DIAL_1XRTT_DIRECTLY = 2002,
3535 IMS_EXT_ERROR_REPORT_NEED_GLOBAL_MODE_FOR_EMERG = 2003,
3536 IMS_EXT_ERROR_REPORT_SSAC_BAR = 2004,
3537 IMS_EXT_ERROR_REPORT_RTT_EMC_FAIL = 2005
3538} ims_ext_error_report_enum;
3539
3540/* Deprecated: do not use after IMS interface 0x55 taken in use */
3541#define IMS_EXT_ERROR_REPORT_TEMPORTARY_FAILURE IMS_EXT_ERROR_REPORT_TEMPORARY_FAILURE
3542
3543
3544typedef ims_ext_error_report_enum ims_disc_cause_enum;
3545
3546typedef enum
3547{
3548 IMS_SUB_EVENT_UNKNOWN = 0,
3549 IMS_SUB_EVENT_CONF = 1,
3550 IMS_SUB_EVENT_MAX,
3551}ims_ss_sub_event_enum;
3552
3553typedef enum
3554{
3555 IMS_DEREG_CAUSE_UNSPECIFIED = 0,
3556 IMS_DEREG_CAUSE_PWR_OFF = 1,
3557 IMS_DEREG_CAUSE_RF_OFF = 2,
3558 IMS_DEREG_CAUSE_IMS_PLMN_BLOCKED = 3,
3559 IMS_DEREG_CAUSE_IMS_3402_BLOCKED = 4,
3560 IMS_DEREG_CAUSE_APN_CHANGE = 5,
3561 IMS_DEREG_CAUSE_IMS_VOICE_NOT_AVAIL = 6,
3562 IMS_DEREG_CAUSE_IMS_SIM_NOT_READY = 7,
3563 IMS_DRREG_CAUSE_CAUSE_IGNORE_CHANGE = 8,
yu.donge372c322023-08-30 20:25:04 -07003564 IMS_DEREG_CAUSE_ERAT = 11,
rjw6c1fd8f2022-11-30 14:33:01 +08003565 IMS_DEREG_CAUSE_MAX
3566}ims_dereg_cause_enum;
3567
3568typedef enum
3569{
3570 VOICE_ADS_CTRL_AUTO = 0, // VDM apply domain selection
3571 VOICE_ADS_CTRL_IMS_ALWAYS // VDM select IMS domain as long as IMS Registered
3572} voice_ads_ctrl_enum;
3573
3574typedef enum
3575{
3576 IMS_SRVCC_CALL_MODE_VOICE = 0,
3577 IMS_SRVCC_CALL_MODE_VIDEO,
3578 IMS_SRVCC_CALL_MODE_EMERGENCY,
3579 IMS_SRVCC_CALL_MODE_VOICE_CONFERENCE,
3580 IMS_SRVCC_CALL_MODE_VIDEO_CONFERENCE,
3581 IMS_SRVCC_CALL_MODE_VOICE_CONFERENCE_PARTS, // voice conference call participant
3582 IMS_SRVCC_CALL_MODE_VIDEO_CONFERENCE_PARTS, // video conference call participant
3583 IMS_SRVCC_CALL_MODE_MAX
3584} ims_srvcc_call_mode_enum;
3585
3586typedef enum
3587{
3588 IMS_SRVCC_CALL_DIRECTION_MO = 0,
3589 IMS_SRVCC_CALL_DIRECTION_MT,
3590 IMS_SRVCC_CALL_DIRECTION_MAX,
3591} ims_srvcc_call_direction_enum;
3592
3593typedef enum
3594{
3595 IMS_SRVCC_CALL_STATE_EARLY = 0,
3596 IMS_SRVCC_CALL_STATE_EARLY_WITH_MEDIA,
3597 IMS_SRVCC_CALL_STATE_ACTIVE,
3598 IMS_SRVCC_CALL_STATE_ON_HOLD,
3599 IMS_SRVCC_CALL_STATE_PRE_ALERTING,
3600 IMS_SRVCC_CALL_STATE_PRE_ALERTING_WITH_MEDIA,
3601 IMS_SRVCC_CALL_STATE_ACTIVE_RETRY_CC_CONNECT,
3602 IMS_SRVCC_CALL_STATE_MAX
3603} ims_srvcc_call_state_enum;
3604
3605typedef enum
3606{
3607 IMS_SRVCC_CALL_ECC_CTGY_UNSPECIFIED = 0,
3608 IMS_SRVCC_CALL_ECC_CTGY_POLICE = 0x1,
3609 IMS_SRVCC_CALL_ECC_CTGY_AMBULANCE = 0x2,
3610 IMS_SRVCC_CALL_ECC_CTGY_FIRE = 0x4,
3611 IMS_SRVCC_CALL_ECC_CTGY_MARINE = 0x8,
3612 IMS_SRVCC_CALL_ECC_CTGY_MOUNTAIN = 0x10,
3613 IMS_SRVCC_CALL_ECC_CTGY_MANUALLY = 0x40,
3614 IMS_SRVCC_CALL_ECC_CTGY_AUTO = 0x80,
3615 IMS_SRVCC_CALL_ECC_CTGY_GAS = 0x100,
3616 IMS_SRVCC_CALL_ECC_CTGY_ANIMAL = 0x200,
3617 IMS_SRVCC_CALL_ECC_CTGY_PHYSICIAN = 0x400,
3618 IMS_SRVCC_CALL_ECC_CTGY_POISON = 0x800,
3619 IMS_SRVCC_CALL_ECC_CTGY_TRAFFIC = 0x1000,
3620 IMS_SRVCC_CALL_ECC_CTGY_COUNTRY_SPECIFIC = 0x2000,
3621 IMS_SRVCC_CALL_ECC_CTGY_UNRECOGNIZED = 0x8000,
3622
3623 /*Korea TTA special emergency Ctgy*/
3624 IMS_SRVCC_CALL_ECC_CTGY_KR_SPIES = 0x3,
3625 IMS_SRVCC_CALL_ECC_CTGY_KR_INTELLIGENCE = 0x6,
3626 IMS_SRVCC_CALL_ECC_CTGY_KR_SMUGGLING = 0x9,
3627 IMS_SRVCC_CALL_ECC_CTGY_KR_SCHOOL_VIOLENCE = 0x12,
3628 IMS_SRVCC_CALL_ECC_CTGY_KR_CYBERTERRORISM = 0x13,
3629 IMS_SRVCC_CALL_ECC_CTGY_MAX = 0xFFFF
3630}ims_srvcc_call_ecc_category_enum;
3631
3632typedef enum
3633{
3634 IMS_CC_EVTA_MODE_UNKNOWN = 0,
3635 IMS_CC_EVTA_MODE_ACCEPT_AS_VOICE = 1,
3636 IMS_CC_EVTA_MODE_ACCEPT_AS_ONE_WAY_VIDEO_RX = 2,
3637 IMS_CC_EVTA_MODE_ACCEPT_AS_ONE_WAY_VIDEO_TX = 3,
3638 IMS_CC_EVTA_MODE_MAX,
3639} ims_cc_evta_mode_enum;
3640
3641typedef enum
3642{
3643 IMS_CALL_TYPE_NATIONAL = 129,
3644 IMS_CALL_TYPE_INTERNATIONAL = 145,
3645} ims_call_type_enum;
3646
3647typedef enum
3648{
3649 IMS_CALL_DIR_MO_CALL = 0,
3650 IMS_CALL_DIR_MT_CALL = 1,
3651} ims_call_dir_enum;
3652
3653typedef enum
3654{
3655 IMS_CALL_STATE_ACTIVE = 0,
3656 IMS_CALL_STATE_HELD = 1,
3657 IMS_CALL_STATE_MO_DIALING = 2,
3658 IMS_CALL_STATE_MO_ALERTING = 3,
3659 IMS_CALL_STATE_MT_INCOMING = 4,
3660 IMS_CALL_STATE_MT_WAITING = 5,
3661} ims_call_state_enum;
3662
3663typedef enum
3664{
3665 IMS_CALL_MODE_CS_DOMAIN_BEGIN = 0,
3666 IMS_CALL_MODE_CS_VOICE_CALL = IMS_CALL_MODE_CS_DOMAIN_BEGIN,
3667 IMS_CALL_MODE_CS_DATA_CALL,
3668 IMS_CALL_MODE_CS_FAX_CALL,
3669 IMS_CALL_MODE_CS_VFD_VOICE, /* voice followed by data, voice mode */
3670 IMS_CALL_MODE_CS_AVD_VOICE, /* alternating voice/data, voice mode */
3671 IMS_CALL_MODE_CS_AVF_VOICE, /* alternating voice/fax, voice mode */
3672 IMS_CALL_MODE_CS_VFD_DATA, /* voice followed by data, data mode */
3673 IMS_CALL_MODE_CS_AVD_DATA, /* alternating voice/data, data mode */
3674 IMS_CALL_MODE_CS_AVF_FAX, /* alternating voice/fax, fax mode */
3675 IMS_CALL_MODE_CS_UNKNOWN_MODE,
3676 IMS_CALL_MODE_CS_VIDEO_CALL,
3677
3678 IMS_CALL_MODE_IMS_DOMAIN_BEGIN = 20,
3679 IMS_CALL_MODE_IMS_VOICE_CALL = IMS_CALL_MODE_IMS_DOMAIN_BEGIN,
3680 IMS_CALL_MODE_IMS_VIDEO_CALL,
3681 IMS_CALL_MODE_IMS_VOICE_CONF,
3682 IMS_CALL_MODE_IMS_VIDEO_CONF,
3683 IMS_CALL_MODE_IMS_VOICE_CONF_PARTS, // voice conference call participant
3684 IMS_CALL_MODE_IMS_VIDEO_CONF_PARTS, // video conference call participant
3685 IMS_CALL_MODE_IMS_DOMAIN_END = 39
3686} ims_call_mode_enum;
3687
3688typedef enum
3689{
3690 IMCSMS_MS_NW_RP_DATA =0,
3691 IMCSMS_NW_MS_RP_DATA,
3692 IMCSMS_MS_NW_RP_ACK,
3693 IMCSMS_NW_MS_RP_ACK,
3694 IMCSMS_MS_NW_RP_ERROR,
3695 IMCSMS_NW_MS_RP_ERROR,
3696 IMCSMS_MS_NW_RP_SMMA
3697} imcsms_rp_msg_type_enum;
3698
3699typedef enum
3700{
3701 SC_UNSPECIFIED = (0<<0),
3702 SC_POLICE = (1<<0),
3703 SC_AMBULANCE = (1<<1),
3704 SC_FIRE = (1<<2),
3705 SC_MARINE = (1<<3),
3706 SC_MOUNTAIN = (1<<4),
3707 SC_MANUALLY_INITIATED_ECALL = (1<<5),
3708 SC_AUTOMATICALLY_INITIATED_ECALL = (1<<6),
3709 SC_RESERVED = (1<<7),
3710 SC_GAS = (1<<8),
3711 SC_ANIMAL = (1<<9),
3712 SC_PHYSICAL = (1<<10),
3713 SC_POISON = (1<<11),
3714 SC_TRAFFIC = (1<<12),
3715 SC_COUNTRY_SPECIFIC = (1<<13),
yu.donge372c322023-08-30 20:25:04 -07003716 SC_EXTENDED_SUB_SERVICE = (1<<14),
3717 SC_UNRECOGNIZED = (1<<15),
3718
rjw6c1fd8f2022-11-30 14:33:01 +08003719 /*Korea TTA special emergency category */
3720 SC_TTA_SPIES = 0x3,
3721 SC_TTA_INTELLIGENCE = 0x6,
3722 SC_TTA_SMUGGLING = 0x9,
3723 SC_TTA_SCHOOL_VIOLENCE = 0x12,
3724 SC_TTA_CYBERTERRORISM = 0x13,
3725} ims_ecc_category_enum;
3726
3727typedef struct
3728{
3729 /* +ECPI:<call_id>,<msg_type>,<is_ibt>,<is_tch>,<dir>,
3730 * <call_mode>,[<number>,<type>],[<disc_cause>],[<pau>]
3731 */
3732 kal_bool is_ibt;
3733 kal_bool is_tch;
3734 ims_call_dir_enum call_dir;
3735 ims_call_mode_enum call_mode;
3736 kal_bool is_number_call_type_present;
3737 kal_uint8 number[MAX_CC_ECPI_NUM_LEN];
3738 ims_call_type_enum call_type;
3739 kal_bool is_disc_cause_present;
3740 ims_disc_cause_enum disc_cause;
3741} ims_ecpi_info_struct;
3742
3743typedef struct
3744{
3745 kal_uint8 call_id; /* call_id_ims = call_id_ap */
3746 ims_srvcc_call_mode_enum call_mode;
3747 ims_srvcc_call_direction_enum call_direction;
3748 ims_srvcc_call_state_enum call_state;
3749 ims_srvcc_call_ecc_category_enum call_ecc_category;
3750 kal_uint8 num_of_conf_parts;
3751 kal_uint8 call_number[MAX_CC_ATD_NUM_LEN];
3752} ims_srvcc_call_ctxt_struct;
3753
3754typedef struct {
3755 kal_uint8 number[MAX_CC_ECPI_NUM_LEN];
3756 ims_call_type_enum call_type;
3757 ims_call_mode_enum call_mode;
3758 kal_uint8 digit_to_line_number[IMC_MAX_URI_LENGTH];
3759} ims_cc_eaic_info_struct;
3760
3761/* +CLCC:<idx>,<dir>,<stat>,<mode>,<mpty>,[<number>,<type>]... */
3762typedef struct {
3763 kal_uint8 call_id;
3764 ims_call_dir_enum dir;
3765 ims_call_state_enum call_state;
3766 ims_call_mode_enum call_mode;
3767 kal_bool mpty; // FALSE: is NOT conference call, TRUE: is conference call
3768 ims_call_type_enum call_type;
3769 kal_uint8 number[MAX_CC_ATD_NUM_LEN];
3770 kal_uint8 cli_validity;
3771} ims_call_list_struct;
3772
3773/* ViLTE */
3774typedef enum
3775{
3776 IMS_CC_CAMERA_INACTIVE = 0,
3777 IMS_CC_CAMERA_SEND_ONLY = 1,
3778 IMS_CC_CAMERA_RECV_ONLY = 2,
3779 IMS_CC_CAMERA_SEND_RECV = 3,
3780 IMS_CC_CAMERA_MAX,
3781} ims_cc_camera_direction_enum;
3782
3783typedef enum
3784{
3785 IMS_SEND_USSD_RESULT_SUCCESS = 0,
3786 IMS_SEND_USSD_RESULT_FAILURE = 1,
3787 IMS_SEND_USSD_RESULT_MAX,
3788} ims_send_ussd_result_enum;
3789
3790typedef enum
3791{
3792 IMCSMS_C2K_SUBMIT = 0, //C2K SMS triggered by AP (AT+C2KCMGS)
3793 IMCSMS_C2K_ACKNOWLEDGE = 1,
3794 IMCSMS_CDMA_SUBMIT //C2K SMS triggered by MD3 (SDM_VAL_C2K_IND)
3795} imcsms_c2k_msg_type_enum;
3796
3797typedef enum
3798{
3799 IMCSMS_C2K_CLASS_NONE =0, //No error
3800 IMCSMS_C2K_CLASS_RESERVED, //Reserved
3801 IMCSMS_C2K_CLASS_TEMPORARY, //Temporary error
3802 IMCSMS_C2K_CLASS_PERMANENT //Permanent error
3803} imcsms_c2k_error_class_enum;
3804
3805typedef enum
3806{
3807 IMCSMS_C2K_CAUSE_START = 0,
3808 IMCSMS_C2K_CAUSE_NWRES = 2,
3809 IMCSMS_C2K_CAUSE_NWFAIL = 3,
3810 IMCSMS_C2K_CAUSE_OTHER_GENERAL_PROBLEM = 107,
3811 IMCSMS_C2K_CAUSE_OK = 32768,
3812 IMCSMS_C2K_CAUSE_END = 32780,
3813} imcsms_c2k_cause_code_enum;
3814
3815typedef enum
3816{
3817 IMCSMS_CS_NETWORK_NOT_AVAILABLE = 0,
3818 IMCSMS_CS_NETWORK_HOME,
3819 IMCSMS_CS_NETWORK_ROAMING
3820} imcsms_cs_network_status_enum;
3821
3822typedef enum {
3823 CALL_UNKNOWN_TIMER = 99,
3824 CALL_REFRESH_TIMER = 100, ///< session timer / 2. When it times out, we shall send re-INVITE or UPDATE to refresh the session.
3825 CALL_REFRESHCALL_TIMEOUT_TIMER, ///< session timer. When it times out, we shall terminate the session.
3826 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.
3827 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
3828 CALL_UPDATE_PRECOND_TIMER,
3829 CALL_WAITING_MT_CALL_CNF_TIMER, ///< waiting MSG_ID_VOLTE_MT_CALL_PRESENT_RSP from AP side
3830 CALL_SERVICE_UNAVAILA_TIMER, ///< Receive 503 Service Unavailable, then we cannot make call in the time duration
3831 CALL_RINGBACK_END_TIMER, ///< for NSN NVIOT MO internal timer for MT not accept
3832 CALL_RINGING_END_TIMER, ///< for CAT MT internal timer
3833 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
3834 CALL_WAITING_487_TIMER, ///< for force release call when no 487 received after send CANCEL
3835 CALL_HOLD_RETRY_TIMER, ///< Hold retry timer. When it times out, hold is retried once as specified in RFC 3261. Otherwise hold fails.
3836 CALL_UNHOLD_RETRY_TIMER, ///< Unhold retry timer. When it times out, unhold is retried once as specified in RFC 3261. Otherwise unhold fails.
3837 CALL_ABORT_INVITE_TIMER, ///< Abort INVITE timer. When it times out, UE should abort the INVITE transaction.
3838 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.
3839 CALL_SDP_ANS_ACK_TIMER, ///< For KDDI, we need to start timer for waiting PRACK.
3840 CALL_MT_PROCESSING_TIMER, ///< For KDDI, we need to start timer after receiving initial INVITE.
3841 CALL_ECT_NOTIFY_TIMER, ///< NOTIFY guard timer for Assured ECT
3842 CALL_SESSION_MODIFY_RETRY_TIMER, ///< RJIL IOT upgrade have to retry after Retry-After value
3843 CALL_MOD_SESSION_RSP_TIMER, ///< For MSG_ID_VOLTE_MOD_SESSION_IND guard timer. When it timeout, aussme reject.
3844 CALL_CELL_ID_VALID_TIMER, ///< cell id is stored in acct.c before it is considered too old
3845 CALL_TEXT_WAIT_TIMER, ///< For VZW, if receive normal MT call but gtt on, need wait 2s, if no empty reINVITE, send reINVITE
3846 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.
3847 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)
3848 CALL_E2_EMC_INIT_TIMER, ///< For TMOUS EMC, E2 Emergency setup initiation
3849 CALL_E3_EMC_CATCH_ALL_H_TIMER, ///< For TMOUS EMC, E3 Emergency setup catch all for home
3850 CALL_E3_EMC_CATCH_ALL_V_TIMER, ///< For TMOUS EMC, E3 Emergency setup catch all for roaming
3851 CALL_MEDIA_OFF_GUARD_TIMER, ///< ignore media on / off pingpang. silent drop media off when timer existed
3852 CALL_NORMAL_CLEAR_TIMER, ///< timeout, DISC change to NULL state
3853 CALL_TCW_MT_CALL_TIMER, ///for telcel ,waiting communication,when it time out send 480 response to MO
3854 CALL_EMERGENCY_OPTION_TIMER, ///< For Sprint EMC, send a SIP OPTIONS Method with an updated PIDF-LO
3855 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.
3856 CALL_TERMINATION_TIMER, ///< Terminate session after timeout
3857 CALL_ECT_DELAY_TARGET_UNHOLD_TIMER, ///< Delay abort guard timer for consultative ECT when unexpected BYE is received from transferee
3858 CALL_IGNORE_REPEATE_180_TIMER, ///< When timer running, ignore repeated 180
3859 CALL_ANBR_RETRY_TIMER, ///< Recv L2 ANBR but cannot handle immeediately, timeout retry it
3860 CALL_ANBR_GUARD_TIMER, ///< During guard time, L2 ANBR message will be delay to timeout
3861 CALL_WAIT_PRACK_FOR_183_TIMER, ///< After timerout,MT will send BW IND
3862 CALL_MOD_SESSION_REQ_TIMER, ///< For VOLTE_MOD_SESSION_REQ guard timer. When it timeout, aussme reject
3863 CALL_EMC_CLEAR_TIMER, ///< For TMOUS EMC, timeout, DISC change to NULL state
3864 CALL_MO_B1_TIMER, ///< For TMOUS, UE MO Timer B1, GID-MTRREQ-459360
3865 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).
3866 CALL_PENDING_ECPI133_TIMER, ///< MT don't answer the call,MO hangup, delay ECPI133 1s to confirm ACK have recv TCP ACK.
3867 CONF_CALL_FINAL_NOTIFY_TIMER, ///< For REFER NOTIFY operation complete or not.
3868 CONF_CALL_MODIFY_WAIT_NOTIFY_TIMER, ///< In order to wait NOTIFY(conference call SUBSCRIBE), start CONF_CALL_MODIFY_WAIT_NOTIFY_TIMER.
3869 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).
3870 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)
3871 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.
3872 CALL_MO_INVITE_RETRY_AFTER_TIMER, ///For KDDI, UE retry MO Call in retry-after if final response with the header
3873 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.
3874 CALL_EVOLTESI_RINGING_TIMER, ///< A specific MT Ringing timer for enhanced volte si (short interruption) feature
3875 CALL_EMC_PUBLISH_TIMER, ///< PUBLISH refresh timer for EMC Current Location Discovery
3876 CALL_CS_SERVICE_NOTIFY_RSP_TIMER, /////For Airtel, during ongoing IMS call, handles CS service response delay timer
3877 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..>
yu.dong99f21a22023-05-30 22:15:37 -07003878 CALL_SENDING_DELAY_TIMER, ///< Timer to delay the sending of ILMs.
rjw6c1fd8f2022-11-30 14:33:01 +08003879} ims_call_timer_type_enum;
3880
3881typedef enum {
3882 USSD_UNKNOWN_TIMER = 50,
3883 USSD_REFRESH_TIMER, ///< session timer / 2. When it times out, we shall send re-INVITE or UPDATE to refresh the session.
3884 USSD_REFRESHCALL_TIMEOUT_TIMER, ///< session timer. When it times out, we shall terminate the session.
3885 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.
3886 USSD_WAITING_487_TIMER, ///< for force release call when no 487 received after send CANCEL
3887 USSD_NW_TIMEOUT_TIMER, ///< for local release when NW not send resonse for 1 min
3888 USSD_WAIT_BYE_200_OK_TIMER, ///< wait for BYE 200 OK from N/W
3889} ims_ussd_timer_type_enum;
3890
3891
3892//*****************************
3893//*** UA LEGACY TYPE DEFINE ***
3894//*****************************
3895
3896#define UA_IMCB_MAP_STRUCT(ua, imcb) \
3897 typedef VoLTE_Event_ ## ua ## _t ua_imcb_ ## imcb ## _struct, volte_ ## imcb ## _struct; \
3898
3899#define UA_VOLTE_ILM_MAP_STRUCT(ua, ilm) \
3900 typedef VoLTE_Event_ ## ua ## _t volte_ ## ilm ## _struct; \
3901
3902
3903UA_IMCB_MAP_STRUCT(Network_Change, req_network_change) // message: MSG_ID_VOLTE_REQ_NETWORK_CHANGE
3904UA_IMCB_MAP_STRUCT(Rat_Change, req_rat_change) // message: MSG_ID_VOLTE_REQ_RAT_CHANGE
3905UA_IMCB_MAP_STRUCT(3gpp_Rat_Change, req_3gpp_rat_change) // message: MSG_ID_VOLTE_REQ_3GPP_RAT_CHANGE
3906UA_IMCB_MAP_STRUCT(3gpp_OOS_Ind, req_3gpp_oos_ind) // message: MSG_ID_VOLTE_REQ_3GPP_OOS_IND
3907
3908/***** UA QUERY CELL ID *****/
3909UA_IMCB_MAP_STRUCT(Query_State, ind_query_state) /* message: MSG_ID_VOLTE_IND_QUERY_STATE */
3910
3911/**** Logging Notify ****/
3912UA_IMCB_MAP_STRUCT(Logging_Event_Notify, logging_event_notify_req) /* message: MSG_ID_VOLTE_REQ_LOGGING_EVENT_NOTIFY */
3913typedef VoLTE_Event_Logging_Event_Notify_t volte_req_logging_event_notify_struct;
3914
3915/***** FF00H to UA *****/
3916UA_IMCB_MAP_STRUCT(FF00H_Update, ff00h_update) /* message: FF00H_UPDATE MSG_ID_VOLTE_REQ_FF00H_UPDATE */
3917typedef VoLTE_Event_FF00H_Update_t volte_req_ff00h_update_struct;
3918
3919/***** IP Change Notify to UA *****/
3920UA_IMCB_MAP_STRUCT(IP_Change_Notify, ip_change_notify) /* message: IP_CHANGE_NOTIFY MSG_ID_VOLTE_REQ_IP_CHANGE_NOTIFY */
3921
3922/***** iRat Change PDN success to UA *****/
3923UA_IMCB_MAP_STRUCT(iRat_without_IP_Change, irat_without_ip_change) /* message: IRAT_WIOUTH_IP_CHANGE VOLTE_REQ_IRAT_WIOUTH_IP_CHANGE */
3924typedef VoLTE_Event_iRat_without_IP_Change_t volte_req_irat_without_ip_change_struct;
3925
3926/***** Feature Sync *****/
3927UA_IMCB_MAP_STRUCT(Feature_Sync, feature_sync_req) /* message: FEATURE_SYNC_REQ VOLTE_REQ_FEATURE_SYNC */
3928typedef VoLTE_Event_Feature_Sync_t volte_req_feature_sync_struct;
3929
3930UA_IMCB_MAP_STRUCT(PS_DATA_OFF_Req, req_ps_data_off) // message: MSG_ID_VOLTE_REQ_PS_DATA_OFF
3931
3932UA_IMCB_MAP_STRUCT(Tlv_Para_Setting, tlv_para_ind) /* mseeage: MSG_ID_VOLTE_IND_TLV_PARA */
3933typedef VoLTE_Event_Tlv_Para_Setting_t volte_ind_tlv_para_struct;
3934
3935#if 0
3936/* under construction !*/
3937#else
3938// message: MSG_ID_VOLTE_REQ_UPDATE_RT_SETTING
3939typedef VoLTE_Event_Setting_t ua_imcb_req_update_rt_setting_header_struct, volte_req_update_rt_setting_struct;
3940typedef struct ua_imcb_req_update_rt_setting_struct {
3941 imcf_uint8 data[1000];
3942} ua_imcb_req_update_rt_setting_struct;
3943#endif
3944
3945UA_IMCB_MAP_STRUCT(MD_Lower_Layer_Err, req_md_lower_layer_err) // message: MSG_ID_VOLTE_REQ_MD_LOWER_LAYER_ERR
3946
3947/***** UA TIMER -> should be removed after gen97 *****/
3948UA_IMCB_MAP_STRUCT(Timer, ind_timer_start) /* message: MSG_ID_VOLTE_IND_TIMER_START */
3949UA_IMCB_MAP_STRUCT(Timer, ind_timer_cancel) /* message: MSG_ID_VOLTE_IND_TIMER_CANCEL */
3950UA_IMCB_MAP_STRUCT(Timer, cnf_timer_expiry) /* message: MSG_ID_VOLTE_CNF_TIMER_EXPIRY */
3951
3952typedef 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?? */
3953
3954/***** Condition Change Notify to UA *****/
3955UA_IMCB_MAP_STRUCT(Condition_Change_Notify, condition_change_notify) /* message: CONDITION_CHANGE_NOTIFY MSG_ID_VOLTE_REQ_CONDITION_CHANGE_NOTIFY */
3956
3957
3958#endif /* _IMS_COMMON_DEF_H_ */