blob: db787a2257fc5bfefe78731bbe0494e09a876c4c [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) 2014
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 * vdm_external_lib.h
40 *
41 * Project:
42 * ------------
43 * MOLY
44 *
45 * Description:
46 * ------------
47 * This file defines functions for external module usage.
48 *
49 * Author:
50 * -----------
51 * -------
52 *
53 *===========================================================
54 * $Log$
55 *
56 * 09 18 2020 chen-wei.lan
57 * [MOLY00568087] [Gen97] Support 5g t911
58 * 5G-911
59 *
60 * 09 11 2020 chen-wei.lan
61 * [MOLY00568087] [Gen97] Support 5g t911
62 *
63 * [MPD]t911
64 *
65 * 12 09 2019 chen-wei.lan
66 * [MOLY00463337] ¡i5G-LH¡j Hvolte feature ?Õu®I?»Ý¨D (Following ALPS04766900)
67 * DMF
68 *
69 * 12 02 2019 chen-wei.lan
70 * [MOLY00346647] [MT6297][VDM/L4] changes for 97
71 * [patch back]8519908,8519818,8915296,9086988,9086148,9085815,9318206,9357101
72 *
73 * 07 15 2019 chen-wei.lan
74 * [MOLY00346647] [MT6297][VDM/L4] changes for 97
75 * [SDM,VDM patch back]8237474,7844918,7758571
76 *
77 * 11 01 2018 kuan-wei.chen
78 * [MOLY00346647] [MT6297][VDM/L4] changes for 97
79 * [VMOLY][VDM][MPD]
80 *
81 * 08 17 2018 kuan-wei.chen
82 * [MOLY00346647] [MT6297][VDM/L4] changes for 97
83 * [VMOLY] vdm related others
84 *
85 * 02 27 2018 yulong.chang
86 * [MOLY00309602] [UMOLYE][Cervino][MT6765][O1][MP1.5][TDD][CMCC FT][Beijing][VoLTE FT][4.4]UE A drop to G when call UE B_Nongzhanqiao_15:03:40
87 * Add public function for query if any call is ongoing
88 *
89 * 12 11 2017 renhuang.liu
90 * [MOLY00295152] [Rose][sylvia][BSP+][O1]The ECC call will can't be dial out success.(2/5)
91 * provide external API for ATP to query if emergency call is ongoing
92 *
93 * 10 12 2017 jerry.cheng
94 * [MOLY00280364] [PVT must resolve]¡i³q?¡j?¥´?«æ??112³q?¤¤??«H?
95 * .[R3] .public api for is_e911_flow_applied
96 *
97 * 07 26 2017 jerry.cheng
98 * [MOLY00266646] [VDM][LR11.MP3] ´£«e?¥ÍSRVCCªº?²z¡Avolte?­µ ©M vilte?? ¬O§_¥i¥H¤À?°t¸m¡H
99 * .provide external API for ERRC to know VoLTE/ViLTE - fix input parameter for L+L
100 *
101 * 07 25 2017 jerry.cheng
102 * [MOLY00266646] [VDM][LR11.MP3] ´£«e?¥ÍSRVCCªº?²z¡Avolte?­µ ©M vilte?? ¬O§_¥i¥H¤À?°t¸m¡H
103 * .provide external API for ERRC to know VoLTE/ViLTE
104 *
105 * 04 18 2017 jerry.cheng
106 * [MOLY00242146] [93][VDM] bug fix
107 * .block AT+EMCS to L4 if emc_scan is not enable
108 *
109 * 12 19 2016 jerry.cheng
110 * [MOLY00210061] [93][VDM] UMOLY sync to UMOLYA
111 * .sync [MOLY00213518] [TCL_TF][VzW][E911][2.17] 911 call not connected
112 *
113 * note: VDM provide vdm_external_wfc_switch for l4c
114 *
115 * 12 14 2016 jerry.cheng
116 * [MOLY00210061] [93][VDM] UMOLY sync to UMOLYA
117 * .sync [MOLY00204150] TK vzw hVoLTE/E911 implementation
118 *
119 * TK hVoLTE.
120 *
121 * 11 11 2016 jerry.cheng
122 * [MOLY00210061] [93][VDM] UMOLY sync to UMOLYA
123 * [MOLY00191944] [CL: 3000545]multiple IMS : VDM part
124 *
125 * MIMS : add new arg : ps_id in vdm external functions.
126 *
127 * 10 28 2016 jerry.cheng
128 * [MOLY00210061] [93][VDM] UMOLY sync to UMOLYA
129 * rollback.
130 *
131 * 07 11 2016 jerry.cheng
132 * [MOLY00185907] [MT6293] [ENAS] UMOLY merge to UMOLYA
133 * [VDM] [sync UMOLY to UMOLYA] MOLY00183611.
134 *
135 * 03 01 2016 ian-yw.chen
136 * [MOLY00147454] VZW 3GPP2 SMS over IMS
137 * interfaces part to build pass
138 *
139 * 02 24 2016 chinte.chen
140 * [MOLY00154806] [MT6755][VzW][chipset][RDIT][InHouse][HQ][DEVeHRPD] MO 3GPP SMS not sent
141 * SDM build fail, add vdm_external_is_c2k_cs_voice_call_ongoing()to build pass
142 *
143 * 09 14 2015 lexel.yu
144 * [MOLY00141573] [UMOLY][LR11][TMO][IMS] bCSFB
145 * .
146 *
147 * 03 12 2015 lexel.yu
148 * [MOLY00085703] [VDM][MT6291] Sync MOLY to UMOLY
149 * [MOLY00085856] [CMCC VoLTE] Provide an interface for EMM to query IMS call status
150 *
151 * 12 05 2014 lexel.yu
152 * [MOLY00085703] [VDM][MT6291] Sync MOLY to UMOLY
153 * [MOLY00085856] [CMCC VoLTE] Provide an interface for EMM to query IMS call status
154 *****************************************************************************/
155
156#ifndef _VDM_EXTERNAL_LIB_H_
157#define _VDM_EXTERNAL_LIB_H_
158
159#include "kal_general_types.h"
160#include "l3_inc_enums.h"
161#include "ims_nvram_def.h"
162
163/******************************************************************************
164 * Function
165 *****************************************************************************/
166/******************************************************************************
167 * @brief Get current RAT
168 *
169 * @param[in] void
170 *
171 * @return rat_enum
172 *
173 *****************************************************************************/
174rat_enum vdm_external_get_current_rat(protocol_id_enum ps_id);
175
176/******************************************************************************
177 * @brief Check if any CS voice call is ongoing
178 *
179 * @param[in] void
180 *
181 * @return kal_bool: TRUE or FALSE
182 *
183 *****************************************************************************/
184kal_bool vdm_external_is_cs_voice_call_ongoing(protocol_id_enum ps_id);
185
186/******************************************************************************
187 * @brief Check if any IMS voice call is ongoing
188 *
189 * @param[in] void
190 *
191 * @return kal_bool: TRUE or FALSE
192 *
193 *****************************************************************************/
194kal_bool vdm_external_is_ims_voice_call_ongoing(protocol_id_enum ps_id);
195
196/******************************************************************************
197 * @brief Check if any VoWIFI call is ongoing
198 *
199 * @param[in] void
200 *
201 * @return kal_bool: TRUE or FALSE
202 *
203 *****************************************************************************/
204kal_bool vdm_external_is_ims_over_wifi_call_ongoing(protocol_id_enum ps_id);
205
206/******************************************************************************
207 * @brief Check if any VoLTE call exists
208 *
209 * @param[in] void
210 *
211 * @return kal_bool: TRUE or FALSE
212 *
213 *****************************************************************************/
214kal_bool vdm_external_is_volte_call_exist(protocol_id_enum ps_id);
215
216/******************************************************************************
217 * @brief Check if any ViLTE call exists
218 *
219 * @param[in] void
220 *
221 * @return kal_bool: TRUE or FALSE
222 *
223 *****************************************************************************/
224kal_bool vdm_external_is_vilte_call_exist(protocol_id_enum ps_id);
225
226/******************************************************************************
227 * @brief Check if IMS call failed before domain selection end
228 *
229 * @param[in] void
230 *
231 * @return kal_bool: TRUE or FALSE
232 *
233 *****************************************************************************/
234kal_bool vdm_external_check_history_ims_failed(protocol_id_enum ps_id);
235
236/******************************************************************************
237 * @brief Check if any C2K CS voice call is ongoing
238 *
239 * @param[in] void
240 *
241 * @return kal_bool: TRUE or FALSE
242 *
243 *****************************************************************************/
244kal_bool vdm_external_is_c2k_cs_voice_call_ongoing(protocol_id_enum ps_id);
245
246/******************************************************************************
247 * @brief Check if C2K CS registered
248 *
249 * @param[in] void
250 *
251 * @return kal_bool: TRUE or FALSE
252 *
253 *****************************************************************************/
254kal_bool vdm_external_is_c2k_cs_registered(protocol_id_enum ps_id);
255
256/******************************************************************************
257 * @brief Check if C2K PS registered
258 *
259 * @param[in] void
260 *
261 * @return kal_bool: TRUE or FALSE
262 *
263 *****************************************************************************/
264kal_bool vdm_external_is_c2k_ps_registered(protocol_id_enum ps_id);
265
266/******************************************************************************
267 * @brief Check if need to delay SRLTE mode switch (only used for OP12 hVoLTE feature)
268 *
269 * @param[in] void
270 *
271 * @return kal_bool: TRUE or FALSE
272 *
273 *****************************************************************************/
274kal_bool vdm_external_is_delay_SRLTE_switch_needed(protocol_id_enum ps_id);
275
276/******************************************************************************
277 * @brief let VDM to write nvram parameters
278 * this function should be called only for test purpose
279 *
280 * @param[in]
281 *
282 * @return
283 *
284 *****************************************************************************/
285void vdm_external_write_nvram(nvram_lid_ims_enum vdm_lid, kal_uint8* pdu_ptr, kal_uint32 vdm_nvram_size, protocol_id_enum ps_id);
286
287/******************************************************************************
288 * @brief let VDM to read nvram parameters
289 * this function should be called only for test purpose
290 *
291 * @param[in]
292 *
293 * @return
294 *
295 *****************************************************************************/
296void vdm_external_read_nvram(nvram_lid_ims_enum vdm_lid, kal_uint8* pdu_ptr, kal_uint32 vdm_nvram_size, protocol_id_enum ps_id);
297
298/******************************************************************************
299 * @To check whether wcf is turned-on or off. This info comes from AT+EIMSWFC
300 *
301 * @param[in]
302 *
303 * @return
304 *
305 *****************************************************************************/
306kal_bool vdm_external_wfc_switch(protocol_id_enum ps_id);
307
308/******************************************************************************
309 * @brief Check if any call is ongoing
310 *
311 * @param[in] ps_id
312 *
313 * @return kal_bool: TRUE or FALSE
314 *
315 *****************************************************************************/
316kal_bool vdm_external_is_call_ongoing(protocol_id_enum ps_id);
317
318/******************************************************************************
319 * @ Assign the free call id to CSMCC
320 *
321 * @param[in] call_id_ptr
322 *
323 * @return kal_bool
324 *
325 *****************************************************************************/
326kal_bool vdm_external_alloc_call_context(kal_bool is_mo_dir, kal_uint8* call_id_ptr, kal_uint8 ps_id);
327
328/******************************************************************************
329 * @ release the free call id to CSMCC
330 *
331 * @param[in] call_id_ptr
332 *
333 * @return
334 *
335 *****************************************************************************/
336void vdm_external_dealloc_call_context(kal_uint8 call_id, kal_uint8 ps_id);
337
338/******************************************************************************
339 * @brief Check if ads nv allow emerg volte
340 *
341 * @param[in] ps_id
342 *
343 * @return kal_bool: TRUE or FALSE
344 *
345 *****************************************************************************/
346kal_bool vdm_external_is_emerg_volte_support_by_ads_nv(protocol_id_enum ps_id);
347
348/******************************************************************************
349 * @brief Check if ads nv allow emerg vowifi
350 *
351 * @param[in] ps_id
352 *
353 * @return kal_bool: TRUE or FALSE
354 *
355 *****************************************************************************/
356kal_bool vdm_external_is_emerg_vowifi_support_by_ads_nv(protocol_id_enum ps_id);
357
358/******************************************************************************
359 * @brief update silent_redial_enable setting
360 *
361 * @param[in] new silent_redial_enable value
362 *
363 * @return void
364 *
365 *****************************************************************************/
366void vdm_external_update_silent_redial_enable_value(protocol_id_enum ps_id, kal_bool silent_redial_enable);
367
368/******************************************************************************
369 * @brief check current camping info
370 *
371 * @param[in] protocol_id_enum ps_id,rat_enum rat, kal_bool is_registered
372 *
373 * @return kal_bool: TRUE or FALSE
374 *
375 *****************************************************************************/
376kal_bool vdm_external_check_camping_info(protocol_id_enum ps_id,rat_enum rat, kal_bool is_registered);
377
378#endif // _VDM_EXTERNAL_LIB_H_