[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/protocol/layer4/l4/include/l4crac_func.h b/mcu/protocol/layer4/l4/include/l4crac_func.h
new file mode 100644
index 0000000..dd836a6
--- /dev/null
+++ b/mcu/protocol/layer4/l4/include/l4crac_func.h
@@ -0,0 +1,705 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *	l4crac_func.h
+ *
+ * Project:
+ * --------
+ *  MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for functional interface between L4C and RAC.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *******************************************************************************/
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+#ifndef  _L4CRAC_FUNC_H
+#define  _L4CRAC_FUNC_H
+
+#include "kal_general_types.h"
+#include "mcd_l3_inc_struct.h"
+#include "l3_inc_enums.h"
+#ifdef __GEMINI__ //__GEMINI_3G_SWITCH__
+#include "ps_public_enum.h"
+#include "sim_public_enum.h"
+#endif
+#include "l4crac_enums.h"
+#ifdef __VOLTE_SUPPORT__
+#include "ims_common_def.h"
+#endif /* __VOLTE_SUPPORT__ */
+#include "nas_as_inter_core_enum.h"
+#include "ps_public_struct.h"
+#include "rac_nas_sv_struct.h"
+
+/* 4.1 */
+extern void l4crac_get_attach_status (kal_uint8 * cs_status,kal_uint8 * ps_status,kal_uint8 *service);
+extern l4c_rac_gprs_status_enum l4crac_get_gprs_status(void); // MAUI_02316028, support L4C to get gprs status when RAB changed
+
+/* 4.2 */
+extern kal_uint8 l4crac_get_egprs_status (void); /* Erica 20070319: for edge status */
+extern data_speed_support_enum l4crac_get_cell_data_speed_support (void); /* mtk02475: for edge & hspa status */
+extern ms_mobile_class_enum l4crac_get_mobile_class (void);
+
+/* 4.3 */
+extern void l4crac_get_current_plmn(plmn_id_rat_struct  *current_plmn);
+extern void l4crac_get_current_plmn_before_reg(plmn_id_rat_struct  *current_plmn);
+/* 4.5 */
+
+extern plmn_selection_mode_enum l4crac_get_sel_mode(void);
+
+extern void l4crac_set_sel_mode(plmn_selection_mode_enum mode);
+
+extern kal_bool l4crac_get_imei(kal_uint8 *imei_bcd, kal_uint8 *imei_svn_bcd);
+
+extern kal_bool l4crac_test_mobile_class (kal_uint8 const ** buffer);
+
+extern kal_bool l4crac_set_gprs_follow_on_request (kal_bool is_turn_on);
+
+extern rat_enum l4crac_get_rat_mode(void);
+
+extern kal_bool l4crac_set_rat_mode(rat_enum rat_mode);
+
+extern rat_enum l4crac_get_prefer_rat(void);
+
+extern rat_enum l4crac_get_request_rat_mode(void);
+
+extern kal_bool l4crac_update_auto_attach(kal_bool auto_attach);
+
+extern kal_bool l4crac_get_auto_attach(void);
+
+extern kal_bool l4crac_set_auto_attach_setting(kal_bool auto_attach);
+
+extern kal_bool l4crac_save_auto_attach_context(kal_bool auto_attach);
+
+extern kal_bool l4crac_set_irat_preference(rat_enum preferred_rat);
+
+extern kal_bool l4crac_cancel_retry_action(void);
+
+extern kal_bool l4crac_is_deregistered(void);
+
+extern rat_enum l4crac_get_irat_preference(void);
+
+extern kal_bool l4crac_is_reported_rat_change_finished();
+
+extern rat_enum l4crac_get_egmc_disable_rat_mode(void);
+
+//#ifdef __KOR_CUSTOMIZATION__
+extern plmn_id_struct l4crac_get_rplmn(void);    /* Get RPLMN */
+
+#ifdef __MONITOR_PAGE_DURING_TRANSFER__
+#if defined(__GSM_RAT__) || defined(__UMTS_RAT__)
+extern gprs_transfer_preference_enum l4crac_get_gprs_transfer_preference(void);
+extern void l4crac_set_gprs_transfer_preference(gprs_transfer_preference_enum transfer_perference);
+#endif /* defined(__GSM_RAT__) || defined(__UMTS_RAT__) */
+#endif
+
+//#ifdef __PLMN_LIST_PREF_SUPPORT__
+extern plmn_list_preference_enum l4crac_get_plmn_list_preference(void);
+extern void l4crac_set_plmn_list_preference(plmn_list_preference_enum preference);
+//#endif /* __PLMN_LIST_PREF_SUPPORT__ */
+
+//#ifdef __HSPA_PREFERENCE_SETTING__
+void l4crac_set_hspa_preference(hspa_preference_enum hspa_preference);
+hspa_preference_enum l4crac_get_hspa_preference(void);
+//#endif /* __HSPA_PREFERENCE_SETTING__ */
+
+extern rat_enum l4crac_get_current_rat(void); //mtk02475: for ECC retry other RAT feature
+extern rat_enum l4crac_get_current_camped_rat(void);
+extern rat_enum l4crac_get_nvram_rat_mode(void); //mtk02475: for ECC retry other RAT feature
+// #ifdef __GEMINI__ //__GEMINI_3G_SWITCH__
+extern void l4crac_update_nvram_rat_mode(rat_enum nvram_rat_mode, sim_interface_enum sim_id); //mtk02475: for 3G switchable feature
+// #endif
+//mtk02475: for AT%CAMP, L4C need to query current CS domain service status
+extern l4c_rac_response_enum l4crac_get_gsm_status(void); //rx_level need
+
+extern kal_bool l4crac_is_on_hplmn(void); //mtk02475: for EHPLMN, modem will provide the information of roaming
+
+#ifdef __GEMINI__ //__GEMINI_MONITOR_PAGE_DURING_TRANSFER__
+extern kal_bool l4crac_get_peer_gprs_transfer_preference(void);
+extern void l4crac_set_peer_gprs_transfer_preference(kal_bool peer_transfer_perference);
+#endif
+
+extern kal_uint16 l4crac_get_rnc_id(void);
+
+#ifdef __CSG_SUPPORT__
+//mtk02475: for Rel8 CSG autonomous search
+extern kal_bool l4crac_get_csg_auto_search_preference(void);
+extern void l4crac_set_csg_auto_search_preference(kal_bool preference);
+extern kal_bool l4crac_get_csg_info(csg_info_struct *csg_info);
+#endif /* __CSG_SUPPORT__ */
+
+extern kal_bool l4crac_get_roaming_mode(void);
+extern rat_enum l4crac_get_reported_rat(void);
+
+extern kal_bool l4crac_get_roaming_setting(roaming_setting_enum setting);
+extern void l4crac_set_roaming_setting(roaming_setting_enum setting, kal_bool is_turn_on);
+
+#ifdef __LTE_RAT__
+/*****************************************************************************
+ * FUNCTION
+ *  l4crac_get_ue_mode
+ *
+ * DESCRIPTION
+ *  get the current UE mode of operation
+ *
+ * PARAMETERS
+ *  runtime_ue_mode_ptr [OUT]   runtime ue mode
+ *  nvram_ue_mode_ptr   [OUT]   nvram ue mode
+ *
+ * RETURNS
+ *  KAL_TRUE        - success
+ *  KAL_FALSE       - failure
+ *
+ * GLOBALS AFFECTED
+ *  none
+ *
+ *****************************************************************************/
+kal_bool l4crac_get_ue_mode(ue_mode_enum *runtime_ue_mode_ptr, ue_mode_enum *nvram_ue_mode_ptr);
+
+/*****************************************************************************
+ * FUNCTION
+ *  l4crac_test_ue_mode
+ *
+ * DESCRIPTION
+ *  get the supported UE mode of operation
+ *
+ * PARAMETERS
+ *  is_basic    [IN]    if AT CMD is basic or not
+ *                      basic - AT+CEMODE
+ *                      exteneded - AT+EEMODE
+ *  buffer      [OUT]   buffer pointer to pointer
+ *
+ * RETURNS
+ *  KAL_TRUE        - success
+ *  KAL_FALSE       - failure
+ *
+ * GLOBALS AFFECTED
+ *  none
+ *
+ *****************************************************************************/
+kal_bool l4crac_test_ue_mode(kal_bool is_basic, const kal_uint8 **buffer);
+
+/*****************************************************************************
+ * FUNCTION
+ *  l4crac_get_sms_preference
+ *
+ * DESCRIPTION
+ *  get the current SMS preference
+ *
+ * PARAMETERS
+ *  sms_preference_ptr  [OUT]   SMS preference
+ *
+ * RETURNS
+ *  KAL_TRUE        - success
+ *  KAL_FALSE       - failure
+ *
+ * GLOBALS AFFECTED
+ *  none
+ *
+ *****************************************************************************/
+kal_bool l4crac_get_sms_preference(l4c_rac_sms_preference_enum *sms_preference_ptr);
+
+
+/*****************************************************************************
+ * FUNCTION
+ *  l4crac_get_sms_over_sgs_config
+ *
+ * DESCRIPTION
+ *  get the enable/disable configuration of SMS over SGs
+ *
+ * PARAMETERS
+ *  none
+ *
+ * RETURNS
+ *  KAL_TRUE        - enable
+ *  KAL_FALSE       - disable
+ *
+ * GLOBALS AFFECTED
+ *  none
+ *
+ *****************************************************************************/
+kal_bool l4crac_get_sms_over_sgs_config(void);
+
+
+/*****************************************************************************
+ * FUNCTION
+ *  l4crac_test_sms_preference
+ *
+ * DESCRIPTION
+ *  get the supported SMS preference
+ *
+ * PARAMETERS
+ *  buffer  [OUT]   buffer pointer to pointer
+ *
+ * RETURNS
+ *  KAL_TRUE        - success
+ *  KAL_FALSE       - failure
+ *
+ * GLOBALS AFFECTED
+ *  none
+ *
+ *****************************************************************************/
+kal_bool l4crac_test_sms_preference(const kal_uint8 **buffer);
+
+/*****************************************************************************
+ * FUNCTION
+ *  l4crac_get_ue_usage_setting
+ *
+ * DESCRIPTION
+ *  get the current UE's usage setting
+ *
+ * PARAMETERS
+ *  ue_usage_setting_ptr    [OUT]   UE's usage setting
+ *
+ * RETURNS
+ *  KAL_TRUE        - success
+ *  KAL_FALSE       - failure
+ *
+ * GLOBALS AFFECTED
+ *  none
+ *
+ *****************************************************************************/
+kal_bool l4crac_get_ue_usage_setting(ue_usage_setting_enum *ue_usage_setting_ptr);
+
+/*****************************************************************************
+ * FUNCTION
+ *  l4crac_test_ue_usage_setting
+ *
+ * DESCRIPTION
+ *  get the supported UE's usage setting
+ *
+ * PARAMETERS
+ *  buffer  [OUT]   buffer pointer to pointer
+ *
+ * RETURNS
+ *  KAL_TRUE        - success
+ *  KAL_FALSE       - failure
+ *
+ * GLOBALS AFFECTED
+ *  none
+ *
+ *****************************************************************************/
+kal_bool l4crac_test_ue_usage_setting(const kal_uint8 **buffer);
+
+/*****************************************************************************
+ * FUNCTION
+ *  l4crac_get_ims_voice_availability
+ *
+ * DESCRIPTION
+ *  get the current availability of IMS voice
+ *
+ * PARAMETERS
+ *  ims_voice_availability_ptr  [OUT]   availability of IMS voice
+ *
+ * RETURNS
+ *  KAL_TRUE        - success
+ *  KAL_FALSE       - failure
+ *
+ * GLOBALS AFFECTED
+ *  none
+ *
+ *****************************************************************************/
+kal_bool l4crac_get_ims_voice_availability(kal_bool *ims_voice_availability_ptr);
+
+/*****************************************************************************
+ * FUNCTION
+ *  l4crac_test_ims_voice_availability
+ *
+ * DESCRIPTION
+ *  get the supported availability of IMS voice
+ *
+ * PARAMETERS
+ *  buffer  [OUT]   buffer pointer to pointer
+ *
+ * RETURNS
+ *  KAL_TRUE        - success
+ *  KAL_FALSE       - failure
+ *
+ * GLOBALS AFFECTED
+ *  none
+ *
+ *****************************************************************************/
+kal_bool l4crac_test_ims_voice_availability(const kal_uint8 **buffer);
+
+/*****************************************************************************
+ * FUNCTION
+ *  l4crac_get_ims_sms_availability
+ *
+ * DESCRIPTION
+ *  get the current availability of IMS SMS
+ *
+ * PARAMETERS
+ *  ims_voice_availability_ptr  [OUT]   availability of IMS SMS
+ *
+ * RETURNS
+ *  KAL_TRUE        - success
+ *  KAL_FALSE       - failure
+ *
+ * GLOBALS AFFECTED
+ *  none
+ *
+ *****************************************************************************/
+kal_bool l4crac_get_ims_sms_availability(kal_bool *ims_sms_availability_ptr);
+
+/*****************************************************************************
+ * FUNCTION
+ *  l4crac_test_ims_sms_availability
+ *
+ * DESCRIPTION
+ *  get the supported availability of IMS SMS
+ *
+ * PARAMETERS
+ *  buffer  [OUT]   buffer pointer to pointer
+ *
+ * RETURNS
+ *  KAL_TRUE        - success
+ *  KAL_FALSE       - failure
+ *
+ * GLOBALS AFFECTED
+ *  none
+ *
+ *****************************************************************************/
+kal_bool l4crac_test_ims_sms_availability(const kal_uint8 **buffer);
+
+#ifdef __VOLTE_SUPPORT__
+/*****************************************************************************
+ * FUNCTION
+ *  l4crac_get_mm_ims_voice_termination
+ *
+ * DESCRIPTION
+ *  get the support of mobile management for IMS voice termination
+ *
+ * PARAMETERS
+ *  mm_ivt_ptr  [OUT]   MM IMS voice termination
+ *
+ * RETURNS
+ *  KAL_TRUE        - success
+ *  KAL_FALSE       - failure
+ *
+ * GLOBALS AFFECTED
+ *  none
+ *
+ *****************************************************************************/
+kal_bool l4crac_get_mm_ims_voice_termination(mm_ims_voice_termination *mm_ivt_ptr);
+#endif /* __VOLTE_SUPPORT__ */
+
+#endif /* __LTE_RAT__ */
+
+/*****************************************************************************
+ * FUNCTION
+ *  l4crac_get_voice_domain_preference
+ *
+ * DESCRIPTION
+ *  get the current voice domain preference
+ *
+ * PARAMETERS
+ *  rat                         [IN]    indicate voice domain preference of UTRAN or E-UTRAN
+ *  voice_domain_preference_ptr [OUT]   voice domain preference
+ *
+ * RETURNS
+ *  KAL_TRUE        - success
+ *  KAL_FALSE       - failure
+ *
+ * GLOBALS AFFECTED
+ *  none
+ *
+ *****************************************************************************/
+kal_bool l4crac_get_voice_domain_preference(rat_enum rat, l4_voice_domain_preference_enum *voice_domain_preference_ptr);
+
+/*****************************************************************************
+ * FUNCTION
+ *  l4crac_test_voice_domain_preference
+ *
+ * DESCRIPTION
+ *  get the supported voice domain preference
+ *
+ * PARAMETERS
+ *  rat     [IN]    indicate voice domain preference of UTRAN or E-UTRAN
+ *  buffer  [OUT]   buffer pointer to pointer
+ *
+ * RETURNS
+ *  KAL_TRUE        - success
+ *  KAL_FALSE       - failure
+ *
+ * GLOBALS AFFECTED
+ *  none
+ *
+ *****************************************************************************/
+kal_bool l4crac_test_voice_domain_preference(rat_enum rat, const kal_uint8 **buffer);
+
+/*****************************************************************************
+ * FUNCTION
+ *  l4crac_send_attach_req
+ *
+ * DESCRIPTION
+ *  force to send attach req to mm/emm
+ *
+ * PARAMETERS
+ *  service [IN]    domain_id_enum to indicate domain_type
+ *
+ * RETURNS
+ *  KAL_TRUE        - success
+ *  KAL_FALSE       - failure
+ *
+ * GLOBALS AFFECTED
+ *  none
+ *
+ *****************************************************************************/
+kal_bool l4crac_send_attach_req(domain_id_enum service);
+
+/*****************************************************************************
+* FUNCTION
+*  l4crac_set_ue_reattach_setting
+* DESCRIPTION
+*  Decide UE to stay EUTRAN or not when EUTRAN is disable
+*
+* PARAMETERS
+*  is_user_ps_reattach: TRUE/FALSE
+*
+* RETURNS
+*  none
+* GLOBALS AFFECTED
+*  none
+*****************************************************************************/
+kal_bool l4crac_set_ue_reattach_setting (kal_bool is_user_ps_reattach);
+
+/*****************************************************************************
+* FUNCTION
+*  l4crac_get_ue_reattach_setting
+* DESCRIPTION
+*  Get the configure for UE stay EUTRAN or not when EUTRAN is disable
+*
+* PARAMETERS
+*  none
+*
+* RETURNS
+*  TRUE/FALSE
+* GLOBALS AFFECTED
+*  none
+*****************************************************************************/
+kal_bool l4crac_get_ue_reattach_setting (void);
+
+/*****************************************************************************
+* FUNCTION
+*  l4crac_set_data_service_status
+* DESCRIPTION
+*  relay the user data connection setting to NWSEL
+*
+* PARAMETERS
+*  status: on/off
+*
+* RETURNS
+*  none
+* GLOBALS AFFECTED
+*  none
+*****************************************************************************/
+kal_bool l4crac_set_data_service_status(kal_bool status);
+
+/*****************************************************************************
+* FUNCTION
+*  l4crac_is_ps_attach_always
+* DESCRIPTION
+*  reply auto_attach configure to L4
+*
+* PARAMETERS
+*  none
+*
+* RETURNS
+*  TRUE/FALSE
+* GLOBALS AFFECTED
+*  none
+*****************************************************************************/
+kal_bool l4crac_is_peer_ps_attach_always(kal_uint8 sim_interface);
+
+/*****************************************************************************
+* FUNCTION
+*  l4crac_get_duplex_mode_setting
+* DESCRIPTION
+*  Get the configure for FDD/TDD setting
+*
+* PARAMETERS
+*  geran_tdma       [OUT]
+*  utran_fdd        [OUT]
+*  utran_tdd_lcr    [OUT]
+*  eutran_fdd       [OUT]
+*  eutran_tdd       [OUT]
+*
+* RETURNS
+*  TRUE/FALSE
+* GLOBALS AFFECTED
+*  none
+*****************************************************************************/
+kal_bool l4crac_get_duplex_mode_setting(kal_bool *geran_tdma,
+                                        kal_bool *utran_fdd,
+                                        kal_bool *utran_tdd_lcr,
+                                        kal_bool *eutran_fdd,
+                                        kal_bool *eutran_tdd);
+
+/*****************************************************************************
+* FUNCTION
+*  l4crac_get_plmn_for_attach
+* DESCRIPTION
+*  Get the plmn_id received from EMMREG_EPS_ATTACH_NEEDED_IND
+*
+* PARAMETERS
+*  plmn_id_for_attach	[OUT]	plmn_id from EMMREG_EPS_ATTACH_NEEDED_IND
+*  simInterface		[IN]		Which SIM to be used
+*
+* RETURNS
+*  none
+* GLOBALS AFFECTED
+*  none
+*****************************************************************************/
+void l4crac_get_plmn_for_attach(plmn_id_struct *plmn_id_for_attach, sim_interface_enum simInterface);
+
+/*****************************************************************************
+* FUNCTION
+*  l4crac_get_current_duplex_mode
+* DESCRIPTION
+*  Get the current Duple mode
+*
+* PARAMETERS
+*
+* RETURNS
+*  rat_duplex_type_enum
+* GLOBALS AFFECTED
+*  none
+*****************************************************************************/
+extern rat_duplex_type_enum l4crac_get_current_duplex_mode(void);
+/*****************************************************************************
+* FUNCTION
+*  l4crac_check_no_or_limited_service
+* DESCRIPTION
+*  Checks if the UE is in Limited or in No service
+*
+* PARAMETERS
+*  none
+* RETURNS
+*  TRUE/FALSE
+* GLOBALS AFFECTED
+*  none
+*****************************************************************************/
+extern kal_bool l4crac_check_no_or_limited_service(void);
+
+/*****************************************************************************
+* FUNCTION
+*  l4crac_get_ims_support
+* DESCRIPTION
+*  This function retruns current ims_support or not
+*
+* PARAMETERS
+*
+* RETURNS
+*  TRUE or FALSE
+* GLOBALS AFFECTED
+*  none
+*****************************************************************************/
+kal_bool l4crac_get_ims_support(void);
+
+
+extern kal_bool l4crac_is_sim_invalid(void);
+extern void l4crac_set_is_sim_invalid(kal_bool setting);
+
+/*****************************************************************************
+* FUNCTION
+*  l4crac_get_ims_support_by_ps_id
+*  l4crac_get_rat_mode_by_ps_id
+* DESCRIPTION
+*  This function retruns current ims_support or not/rat_mode by ps id
+*  ALPS03528285/MOLY00285562
+*
+* PARAMETERS
+*
+* RETURNS
+*  TRUE or FALSE
+* GLOBALS AFFECTED
+*  none
+*****************************************************************************/
+kal_bool l4crac_get_ims_support_by_ps_id (protocol_id_enum ps_id);
+
+rat_enum l4crac_get_rat_mode_by_ps_id (protocol_id_enum ps_id);
+
+/*****************************************************************************
+* FUNCTION
+*  l4crac_get_fplmns
+* DESCRIPTION
+*  Get list of FPLMNs and response to AT command AT+EFPLMN? request
+*  MOLY00293006
+*
+* PARAMETERS
+*  num_of_fplmn   -  to get number of FPLMNs
+*  read_fplmn_ptr -  to get FPLMNs in plmn_id_struct
+*
+* RETURNS
+*  void
+*****************************************************************************/
+extern void l4crac_get_fplmns(kal_uint8 *num_of_fplmn, plmn_id_struct *read_fplmn_ptr);
+
+void l4crac_send_search_ind(nwsel_status_enum nwsel_status);
+
+#ifndef __MTK_TARGET__
+extern void l4crac_ut_set_rat_mode(rat_enum rat_mode);
+#endif /* __MTK_TARGET__ */
+
+kal_bool rac_ug_check_is_abnormal_lu(mm_cause_enum cause);
+
+
+rat_enum l4crac_get_prefer_rat_by_ps_id (protocol_id_enum ps_id);
+
+extern void l4crac_reset_is_set_rat_triggered_by_ps_id(protocol_id_enum ps_id);
+extern void l4crac_set_deep_sleep_mode(protocol_id_enum ps_id, kal_bool is_deep_sleep_mode);
+
+
+extern kal_bool rac_is_vg_option_setting_valid(vg_option_enum target_vg_option_bitmap);
+
+extern kal_bool l4crac_save_vg_option(vg_option_enum vg_option_bitmap);
+
+#endif /* _L4CRAC_FUNC_H */
+