| /***************************************************************************** |
| * Copyright Statement: |
| * -------------------- |
| * This software is protected by Copyright and the information contained |
| * herein is confidential. The software may not be copied and the information |
| * contained herein may not be used or disclosed except with the written |
| * permission of MediaTek Inc. (C) 2014 |
| * |
| * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES |
| * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") |
| * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON |
| * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, |
| * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. |
| * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE |
| * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR |
| * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH |
| * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO |
| * NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S |
| * SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. |
| * |
| * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE |
| * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, |
| * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, |
| * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO |
| * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. |
| * |
| * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE |
| * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF |
| * LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND |
| * RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER |
| * THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC). |
| * |
| *****************************************************************************/ |
| |
| /***************************************************************************** |
| * Filename: |
| * ------------ |
| * vdm_external_lib.h |
| * |
| * Project: |
| * ------------ |
| * MOLY |
| * |
| * Description: |
| * ------------ |
| * This file defines functions for external module usage. |
| * |
| * Author: |
| * ----------- |
| * ------- |
| * |
| *=========================================================== |
| * $Log$ |
| * |
| * 09 18 2020 chen-wei.lan |
| * [MOLY00568087] [Gen97] Support 5g t911 |
| * 5G-911 |
| * |
| * 09 11 2020 chen-wei.lan |
| * [MOLY00568087] [Gen97] Support 5g t911 |
| * |
| * [MPD]t911 |
| * |
| * 12 09 2019 chen-wei.lan |
| * [MOLY00463337] ¡i5G-LH¡j Hvolte feature ?Õu®I?»Ý¨D (Following ALPS04766900) |
| * DMF |
| * |
| * 12 02 2019 chen-wei.lan |
| * [MOLY00346647] [MT6297][VDM/L4] changes for 97 |
| * [patch back]8519908,8519818,8915296,9086988,9086148,9085815,9318206,9357101 |
| * |
| * 07 15 2019 chen-wei.lan |
| * [MOLY00346647] [MT6297][VDM/L4] changes for 97 |
| * [SDM,VDM patch back]8237474,7844918,7758571 |
| * |
| * 11 01 2018 kuan-wei.chen |
| * [MOLY00346647] [MT6297][VDM/L4] changes for 97 |
| * [VMOLY][VDM][MPD] |
| * |
| * 08 17 2018 kuan-wei.chen |
| * [MOLY00346647] [MT6297][VDM/L4] changes for 97 |
| * [VMOLY] vdm related others |
| * |
| * 02 27 2018 yulong.chang |
| * [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 |
| * Add public function for query if any call is ongoing |
| * |
| * 12 11 2017 renhuang.liu |
| * [MOLY00295152] [Rose][sylvia][BSP+][O1]The ECC call will can't be dial out success.(2/5) |
| * provide external API for ATP to query if emergency call is ongoing |
| * |
| * 10 12 2017 jerry.cheng |
| * [MOLY00280364] [PVT must resolve]¡i³q?¡j?¥´?«æ??112³q?¤¤??«H? |
| * .[R3] .public api for is_e911_flow_applied |
| * |
| * 07 26 2017 jerry.cheng |
| * [MOLY00266646] [VDM][LR11.MP3] ´£«e?¥ÍSRVCCªº?²z¡Avolte?µ ©M vilte?? ¬O§_¥i¥H¤À?°t¸m¡H |
| * .provide external API for ERRC to know VoLTE/ViLTE - fix input parameter for L+L |
| * |
| * 07 25 2017 jerry.cheng |
| * [MOLY00266646] [VDM][LR11.MP3] ´£«e?¥ÍSRVCCªº?²z¡Avolte?µ ©M vilte?? ¬O§_¥i¥H¤À?°t¸m¡H |
| * .provide external API for ERRC to know VoLTE/ViLTE |
| * |
| * 04 18 2017 jerry.cheng |
| * [MOLY00242146] [93][VDM] bug fix |
| * .block AT+EMCS to L4 if emc_scan is not enable |
| * |
| * 12 19 2016 jerry.cheng |
| * [MOLY00210061] [93][VDM] UMOLY sync to UMOLYA |
| * .sync [MOLY00213518] [TCL_TF][VzW][E911][2.17] 911 call not connected |
| * |
| * note: VDM provide vdm_external_wfc_switch for l4c |
| * |
| * 12 14 2016 jerry.cheng |
| * [MOLY00210061] [93][VDM] UMOLY sync to UMOLYA |
| * .sync [MOLY00204150] TK vzw hVoLTE/E911 implementation |
| * |
| * TK hVoLTE. |
| * |
| * 11 11 2016 jerry.cheng |
| * [MOLY00210061] [93][VDM] UMOLY sync to UMOLYA |
| * [MOLY00191944] [CL: 3000545]multiple IMS : VDM part |
| * |
| * MIMS : add new arg : ps_id in vdm external functions. |
| * |
| * 10 28 2016 jerry.cheng |
| * [MOLY00210061] [93][VDM] UMOLY sync to UMOLYA |
| * rollback. |
| * |
| * 07 11 2016 jerry.cheng |
| * [MOLY00185907] [MT6293] [ENAS] UMOLY merge to UMOLYA |
| * [VDM] [sync UMOLY to UMOLYA] MOLY00183611. |
| * |
| * 03 01 2016 ian-yw.chen |
| * [MOLY00147454] VZW 3GPP2 SMS over IMS |
| * interfaces part to build pass |
| * |
| * 02 24 2016 chinte.chen |
| * [MOLY00154806] [MT6755][VzW][chipset][RDIT][InHouse][HQ][DEVeHRPD] MO 3GPP SMS not sent |
| * SDM build fail, add vdm_external_is_c2k_cs_voice_call_ongoing()to build pass |
| * |
| * 09 14 2015 lexel.yu |
| * [MOLY00141573] [UMOLY][LR11][TMO][IMS] bCSFB |
| * . |
| * |
| * 03 12 2015 lexel.yu |
| * [MOLY00085703] [VDM][MT6291] Sync MOLY to UMOLY |
| * [MOLY00085856] [CMCC VoLTE] Provide an interface for EMM to query IMS call status |
| * |
| * 12 05 2014 lexel.yu |
| * [MOLY00085703] [VDM][MT6291] Sync MOLY to UMOLY |
| * [MOLY00085856] [CMCC VoLTE] Provide an interface for EMM to query IMS call status |
| *****************************************************************************/ |
| |
| #ifndef _VDM_EXTERNAL_LIB_H_ |
| #define _VDM_EXTERNAL_LIB_H_ |
| |
| #include "kal_general_types.h" |
| #include "l3_inc_enums.h" |
| #include "ims_nvram_def.h" |
| |
| /****************************************************************************** |
| * Function |
| *****************************************************************************/ |
| /****************************************************************************** |
| * @brief Get current RAT |
| * |
| * @param[in] void |
| * |
| * @return rat_enum |
| * |
| *****************************************************************************/ |
| rat_enum vdm_external_get_current_rat(protocol_id_enum ps_id); |
| |
| /****************************************************************************** |
| * @brief Check if any CS voice call is ongoing |
| * |
| * @param[in] void |
| * |
| * @return kal_bool: TRUE or FALSE |
| * |
| *****************************************************************************/ |
| kal_bool vdm_external_is_cs_voice_call_ongoing(protocol_id_enum ps_id); |
| |
| /****************************************************************************** |
| * @brief Check if any IMS voice call is ongoing |
| * |
| * @param[in] void |
| * |
| * @return kal_bool: TRUE or FALSE |
| * |
| *****************************************************************************/ |
| kal_bool vdm_external_is_ims_voice_call_ongoing(protocol_id_enum ps_id); |
| |
| /****************************************************************************** |
| * @brief Check if any VoWIFI call is ongoing |
| * |
| * @param[in] void |
| * |
| * @return kal_bool: TRUE or FALSE |
| * |
| *****************************************************************************/ |
| kal_bool vdm_external_is_ims_over_wifi_call_ongoing(protocol_id_enum ps_id); |
| |
| /****************************************************************************** |
| * @brief Check if any VoLTE call exists |
| * |
| * @param[in] void |
| * |
| * @return kal_bool: TRUE or FALSE |
| * |
| *****************************************************************************/ |
| kal_bool vdm_external_is_volte_call_exist(protocol_id_enum ps_id); |
| |
| /****************************************************************************** |
| * @brief Check if any ViLTE call exists |
| * |
| * @param[in] void |
| * |
| * @return kal_bool: TRUE or FALSE |
| * |
| *****************************************************************************/ |
| kal_bool vdm_external_is_vilte_call_exist(protocol_id_enum ps_id); |
| |
| /****************************************************************************** |
| * @brief Check if IMS call failed before domain selection end |
| * |
| * @param[in] void |
| * |
| * @return kal_bool: TRUE or FALSE |
| * |
| *****************************************************************************/ |
| kal_bool vdm_external_check_history_ims_failed(protocol_id_enum ps_id); |
| |
| /****************************************************************************** |
| * @brief Check if any C2K CS voice call is ongoing |
| * |
| * @param[in] void |
| * |
| * @return kal_bool: TRUE or FALSE |
| * |
| *****************************************************************************/ |
| kal_bool vdm_external_is_c2k_cs_voice_call_ongoing(protocol_id_enum ps_id); |
| |
| /****************************************************************************** |
| * @brief Check if C2K CS registered |
| * |
| * @param[in] void |
| * |
| * @return kal_bool: TRUE or FALSE |
| * |
| *****************************************************************************/ |
| kal_bool vdm_external_is_c2k_cs_registered(protocol_id_enum ps_id); |
| |
| /****************************************************************************** |
| * @brief Check if C2K PS registered |
| * |
| * @param[in] void |
| * |
| * @return kal_bool: TRUE or FALSE |
| * |
| *****************************************************************************/ |
| kal_bool vdm_external_is_c2k_ps_registered(protocol_id_enum ps_id); |
| |
| /****************************************************************************** |
| * @brief Check if need to delay SRLTE mode switch (only used for OP12 hVoLTE feature) |
| * |
| * @param[in] void |
| * |
| * @return kal_bool: TRUE or FALSE |
| * |
| *****************************************************************************/ |
| kal_bool vdm_external_is_delay_SRLTE_switch_needed(protocol_id_enum ps_id); |
| |
| /****************************************************************************** |
| * @brief let VDM to write nvram parameters |
| * this function should be called only for test purpose |
| * |
| * @param[in] |
| * |
| * @return |
| * |
| *****************************************************************************/ |
| void vdm_external_write_nvram(nvram_lid_ims_enum vdm_lid, kal_uint8* pdu_ptr, kal_uint32 vdm_nvram_size, protocol_id_enum ps_id); |
| |
| /****************************************************************************** |
| * @brief let VDM to read nvram parameters |
| * this function should be called only for test purpose |
| * |
| * @param[in] |
| * |
| * @return |
| * |
| *****************************************************************************/ |
| void vdm_external_read_nvram(nvram_lid_ims_enum vdm_lid, kal_uint8* pdu_ptr, kal_uint32 vdm_nvram_size, protocol_id_enum ps_id); |
| |
| /****************************************************************************** |
| * @To check whether wcf is turned-on or off. This info comes from AT+EIMSWFC |
| * |
| * @param[in] |
| * |
| * @return |
| * |
| *****************************************************************************/ |
| kal_bool vdm_external_wfc_switch(protocol_id_enum ps_id); |
| |
| /****************************************************************************** |
| * @brief Check if any call is ongoing |
| * |
| * @param[in] ps_id |
| * |
| * @return kal_bool: TRUE or FALSE |
| * |
| *****************************************************************************/ |
| kal_bool vdm_external_is_call_ongoing(protocol_id_enum ps_id); |
| |
| /****************************************************************************** |
| * @ Assign the free call id to CSMCC |
| * |
| * @param[in] call_id_ptr |
| * |
| * @return kal_bool |
| * |
| *****************************************************************************/ |
| kal_bool vdm_external_alloc_call_context(kal_bool is_mo_dir, kal_uint8* call_id_ptr, kal_uint8 ps_id); |
| |
| /****************************************************************************** |
| * @ release the free call id to CSMCC |
| * |
| * @param[in] call_id_ptr |
| * |
| * @return |
| * |
| *****************************************************************************/ |
| void vdm_external_dealloc_call_context(kal_uint8 call_id, kal_uint8 ps_id); |
| |
| /****************************************************************************** |
| * @brief Check if ads nv allow emerg volte |
| * |
| * @param[in] ps_id |
| * |
| * @return kal_bool: TRUE or FALSE |
| * |
| *****************************************************************************/ |
| kal_bool vdm_external_is_emerg_volte_support_by_ads_nv(protocol_id_enum ps_id); |
| |
| /****************************************************************************** |
| * @brief Check if ads nv allow emerg vowifi |
| * |
| * @param[in] ps_id |
| * |
| * @return kal_bool: TRUE or FALSE |
| * |
| *****************************************************************************/ |
| kal_bool vdm_external_is_emerg_vowifi_support_by_ads_nv(protocol_id_enum ps_id); |
| |
| /****************************************************************************** |
| * @brief update silent_redial_enable setting |
| * |
| * @param[in] new silent_redial_enable value |
| * |
| * @return void |
| * |
| *****************************************************************************/ |
| void vdm_external_update_silent_redial_enable_value(protocol_id_enum ps_id, kal_bool silent_redial_enable); |
| |
| /****************************************************************************** |
| * @brief check current camping info |
| * |
| * @param[in] protocol_id_enum ps_id,rat_enum rat, kal_bool is_registered |
| * |
| * @return kal_bool: TRUE or FALSE |
| * |
| *****************************************************************************/ |
| kal_bool vdm_external_check_camping_info(protocol_id_enum ps_id,rat_enum rat, kal_bool is_registered); |
| |
| /****************************************************************************** |
| * @brief check current emergency call active domain |
| * |
| * @param[in] |
| * |
| * @return kal_bool: vdm_call_domain_enum |
| * |
| *****************************************************************************/ |
| vdm_call_domain_enum vdm_external_get_emergency_call_ongoing_active_domain(); |
| |
| #endif // _VDM_EXTERNAL_LIB_H_ |