blob: dd836a6ccb1db245938cc51cefc7a04b03674282 [file] [log] [blame]
/*****************************************************************************
* 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 */