[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/protocol/interface/general/vdm_external_lib.h b/mcu/protocol/interface/general/vdm_external_lib.h
new file mode 100644
index 0000000..db787a2
--- /dev/null
+++ b/mcu/protocol/interface/general/vdm_external_lib.h
@@ -0,0 +1,378 @@
+/*****************************************************************************
+*  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);
+
+#endif // _VDM_EXTERNAL_LIB_H_