blob: cad6aebc3499cc0fc3504ccb18a29e66c192ed50 [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:
* ---------
* nwsel_mm_struct.h
*
* Project:
* --------
* MONZA
*
* Description:
* ------------
* This file define the interface structure used by NWSEL_MM SAP
*
* Author:
* -------
* -------
*
******************************************************************************/
#ifndef NWSEL_MM_STRUCT_H
#define NWSEL_MM_STRUCT_H
#include "l3_inc_enums.h"
#include "mcd_l3_inc_struct.h"
#include "l3_inc_local.h"
#include "as2nas_struct.h"
#include "mcd_l3_inc_gprs_struct.h"
#include "ps_public_enum.h"
#include "rsvas_enum.h"
#include "mm_mmi_enums.h"
#include "mm_ratcm_enums.h"
#include "gmss_nwsel_struct.h"
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 multi_plmn_count;
plmn_id_struct multi_plmn_id[MAX_NUM_MULTI_PLMN];
as_cell_type_enum multi_cell_type[MAX_NUM_MULTI_PLMN];
rat_enum rat;
/// source from cell reselection or search
found_ind_source_enum source;
} nwsel_mm_plmn_found_ind_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool is_plmn_search_lte_ongoing;
as_cell_type_enum cell_type; // 4G camped on cell type
} nwsel_mm_search_status_update_req_struct;
typedef struct {
LOCAL_PARA_HDR
kal_uint16 gibi_tag;
rat_enum rat;
kal_bool is_data_pending;
kal_bool is_sys_info_present;
hplmn_status_enum hplmn_status;
fplmn_status_enum fplmn_status;
kal_bool is_in_eq_plmn_list;
mm_cell_change_enum abnormal_cell_change;
mm_cell_change_enum abnormal_rai_cell_change;
plmn_id_struct plmn_id;
kal_uint8 la_code[2];
kal_uint8 ra_code;
kal_uint32 cell_id; //mtk02475: extended cell id in UMTS
kal_bool cell_support_cs;
kal_bool cell_support_ps; /* if FALSE, nmo and ra_code should not refer. */
kal_bool is_acc_class_present;
kal_uint16 acc_class;
kal_uint8 extra_info_bitmask; /* mtk02475: for DSAC/data_speed_support update in connected mode*/
#if defined (__R6_DSAC__) || defined (UNIT_TEST)
kal_bool is_dsac_present;
kal_uint16 cs_dsac;
kal_uint16 ps_dsac;
#endif
kal_uint8 t3212_timer_val;
network_mode_enum nmo;
as_cell_type_enum cell_type;
att_flag_enum att_flag;
kal_bool mscr;
rr_mm_sgsnr_flag_enum sgsnr;
#ifdef __PS_SERVICE__
data_speed_support_enum cell_data_speed_support; /* MAUI_02361221: for egprs and hspa */
#endif
#if defined (__PPACR_SUPPORT__) || defined (UNIT_TEST)
kal_bool is_ppacr_present;
ppacr_info_struct ppacr_info;
#endif
csg_access_mode_enum csg_access_mode;
csg_info_struct csg_info;
#ifdef __LTE_RAT__
kal_bool is_gprs_info_in_si13_deferred;
#endif
kal_uint8 band;
} nwsel_mm_sys_info_update_req_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat;
kal_uint32 cell_id;
kal_bool is_la_valid;
kal_uint8 la_code[2];
kal_bool is_ra_valid;
kal_uint8 ra_code;
plmn_id_struct plmn_id;
kal_bool is_on_hplmn;
} nwsel_mm_cell_global_identity_info_update_req_struct;
typedef mm_cell_global_identity_info_ind_struct nwsel_mm_cell_global_identity_info_ind_struct;
typedef struct {
LOCAL_PARA_HDR
mode_switch_cause_enum cause;
} nwsel_mm_global_mode_change_start_req_struct;
typedef struct
{
LOCAL_PARA_HDR
rat_type_enum target_rat;
kal_uint8 freq_num;
kal_uint32 redirect_freq[MAX_REDIRECT_FREQ_NUM];
mt_csfb_type_enum mt_csfb_type;
} nwsel_mm_need_duplex_mode_chg_update_req_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool is_as_plmn_list_present;
as_plmn_list_struct as_plmn_list;
#ifdef __GEMINI__
as_suspend_mode_reason_enum cause; /* for RR suspend mode */
#endif /* __GEMINI__ */
csfb_indicator_enum csfb_ind;
kal_bool is_nas_csfb_ongoing;
plmn_loss_reason_enum plmn_loss_reason;
} nwsel_mm_plmn_loss_ind_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat;
kal_bool is_manual_list;
scan_type_enum scan_type;
kal_uint8 plmn_count;
plmn_id_struct plmn_id[MAX_NUM_SEARCH_PLMN];
found_mcc_info_struct found_mcc_info;
} nwsel_mm_plmn_list_req_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_bool is_user_plmn_list_ongoing;
} nwsel_mm_plmn_list_status_update_req_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool is_uas_plmn_list_present;
as_plmn_list_struct uas_plmn_list;
kal_bool is_gas_plmn_list_present;
as_plmn_list_struct gas_plmn_list;
scan_type_enum scan_type;
plmn_list_result_enum cause;
} nwsel_mm_plmn_list_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat;
kal_uint8 plmn_count;
plmn_id_struct plmn_id[MAX_NUM_EQ_PLMN];
} nwsel_mm_csg_list_req_struct;
typedef struct {
LOCAL_PARA_HDR
//kal_bool is_uas_csg_list_present;
as_csg_list_struct uas_csg_list;
} nwsel_mm_csg_list_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
aral_op_enum op_code;
plmn_id_struct plmn;
rat_enum rat;
kal_uint8 ara_start[2];
kal_uint8 ara_end[2];
}nwsel_mm_aral_update_req_struct;
typedef struct {
LOCAL_PARA_HDR
regn_proc_status_enum nwsel_proc_status;
plmn_search_status_enum plmn_search_status;
plmn_search_type_enum plmn_search_type; /* new plmn search type */
kal_bool is_send_to_as;
} nwsel_mm_regn_status_update_req_struct;
#ifdef __DYNAMIC_BAND_SEL__
typedef struct {
LOCAL_PARA_HDR
band_selection_enum gsm_band; /* refer to band_selection_enum value*/
kal_bool is_gsm_band_present;
kal_uint8 umts_fdd_band[2]; /* 3G band change */
kal_bool is_umts_band_present; /* 3G band change */
}nwsel_mm_set_preferred_band_req_struct;
#endif
typedef struct {
LOCAL_PARA_HDR
lr_result_enum lr_result;
mm_cause_enum lr_cause;
mm_proc_enum mm_proc;
kal_uint8 attempt_counter; //update only when lr_proc needed
plmn_id_struct rplmn; //from stored lai. Valid when LR_ACCEPT & LR_ACCEPT_PS_ONLY
kal_bool forbidden_plmn_update_not_allowed; /*MM may change NW reject cause, and no need to add forbidden PLMN */
kal_bool is_update_eq_plmn_needed; /* always check; indicate if NWSEL need to update EPLMN */
kal_uint8 eq_plmn_byte_count;
kal_uint8 eq_plmn_id[MAX_NUM_EQ_PLMN*3]; /* the EPLMN list from NW; 3 is NWSEL_PLMN_LEN */
kal_bool is_back_to_abnormal_la;
kal_bool is_rau_performed;
kal_bool is_stored_lai_same_as_current;
kal_bool stored_lai_valid;
kal_bool stored_rai_valid;
gsm_state_enum gsm_attach_state;
gprs_state_enum gprs_attach_state;
gsm_update_status_enum gsm_update_status;
gprs_update_status_enum gprs_update_status;
mm_check_ecall_status_enum ecall_status;
kal_bool is_mobility_rau; /*To check whether update_type is periodic rau or mobility rau */
integ_protect_status_enum is_integ_protected;
kal_uint8 invalid_cs_sim_counter;
kal_uint8 invalid_ps_sim_counter;
} nwsel_mm_regn_result_ind_struct;
typedef struct {
LOCAL_PARA_HDR
domain_id_enum conn_domain;
} nwsel_mm_out_of_service_ind_struct;
#ifdef __GEMINI__
typedef struct {
LOCAL_PARA_HDR
as_suspend_mode_reason_enum cause;
} nwsel_mm_suspend_ind_struct;
//mtk02475: local param struct is only exist in GEMINI 2.0 project
typedef struct {
LOCAL_PARA_HDR
kal_bool is_virtual_idle_mode;
} nwsel_mm_resume_ind_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool is_virtual_idle_mode;
kal_bool is_in_connected;
/*Naming is "is_in_connected but it is expected that GMM updates only
virtual_connected state to NWSEL"*/
} nwsel_mm_virtual_mode_ind_struct;
#endif /* __GEMINI__ */
typedef struct {
LOCAL_PARA_HDR
mm_event_type_enum event;
} nwsel_mm_event_ind_struct;
typedef struct {
LOCAL_PARA_HDR
kal_uint8 plmn_id_count;
plmn_id_struct plmn_id[MD1_MAX_NUM_HPLMN]; //MAX_NUM_HPLMN: 4
kal_uint8 home_country_mcc[3];
} nwsel_mm_hplmn_info_update_req_struct;
typedef struct {
LOCAL_PARA_HDR
eutran_cap_enum eutran_cap;
kal_bool is_eucap_sysinfo_triggered;
} nwsel_mm_eutran_cap_update_req_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool is_successful;
} nwsel_mm_eutran_cap_update_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
voice_domain_preference_enum utran_voice_domain_preference;
kal_bool is_eutran_param_updated; /* if FALSE, the following parameters are invalid */
kal_bool is_eutran_vdp_or_ue_usage_changed;
voice_domain_preference_enum eutran_voice_domain_preference;
ue_usage_setting_enum ue_usage_setting;
eutran_cap_update_wait_status_enum eutran_cap_update_wait_status;
} nwsel_mm_voice_prefer_ue_usage_update_req_struct;
/* 24.008 CR# 2109 Start */
typedef struct {
LOCAL_PARA_HDR
kal_bool is_manual_sel;
} nwsel_mm_manual_mode_update_req_struct;
/* 24.008 CR# 2109 End */
typedef struct {
LOCAL_PARA_HDR
rat_enum rat;
plmn_id_struct plmn_id;
kal_uint16 arfcn;
kal_uint8 requested_band;
} nwsel_mm_set_mru_req_struct;
typedef struct {
LOCAL_PARA_HDR
set_mru_result_enum result;
} nwsel_mm_set_mru_cnf_struct;
/* VzW requirement for MRU/RAL, only band/channel */
typedef struct {
LOCAL_PARA_HDR
cell_band_info_type_enum type;
rat_enum rat;
plmn_id_struct plmn_id;
kal_uint8 band;
} nwsel_mm_cell_band_info_update_ind_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat;
kal_uint8 num_of_nw;
emc_forbidden_nw_list_struct nw_list[MAX_FORBIDDEN_NETWORK_NUM];
} nwsel_mm_emc_forbidden_nw_list_update_req_struct;
typedef struct
{
LOCAL_PARA_HDR
call_status_enum call_status;
call_type_indication_enum call_type;
} nwsel_mm_call_status_ind_struct;
typedef gmss_nwsel_rat_disable_config_req_struct nwsel_mm_rat_disable_config_req_struct;
typedef gmss_nwsel_inactive_mode_configuration_req_struct nwsel_mm_inactive_mode_configuration_req_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_bool is_over_inactive_mode_threshold; // True: recovery counter > normal_oos_recovery_round
} nwsel_mm_service_recovery_round_update_req_struct;
typedef struct
{
LOCAL_PARA_HDR
rat_enum rat;
network_scan_23g_union nw_scan_23g_output;
}nwsel_mm_plmn_scan_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
plmn_id_struct plmn_id;
} nwsel_mm_plmn_info_update_req_struct;
#endif /* NWSEL_MM_STRUCT_H */