blob: 98849214f1f83ffa15b0ea40a510c4d8a870dffb [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) 2018
*
* 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:
* ---------
* nas_sv_struct.h
*
* Project:
* --------
* UMOLYE
*
* Description:
* ------------
*
* Author:
* -------
* -------
******************************************************************************/
#ifndef _NAS_SV_STRUCT_H_
#define _NAS_SV_STRUCT_H_
#include "kal_general_types.h"
#include "ps_public_enum.h"
#include "l3_inc_enums.h"
#include "mcd_l3_inc_struct.h"
#include "l3_inc_local.h"
#include "gmss_public.h"
#include "mm_mmi_enums.h"
#include "mmi2mm_struct.h"
#include "kal_public_defs.h"
#include "sim_public_enum.h"
#include "global_type.h"
#include "irat_common_struct.h"
//#include "c2k_irat_msg_struct.h"
#include "l3_inc_enums_public.h"
#include "ims_interface_md.h"
#include "ps_public_struct.h"
#include "sim_ps_struct.h"
#define MAX_SEARCH_BAND_LIST_SIZE 32
#define NAS_MAX_PS_RESULT_LIST 128
#define NAS_MIN_PS_RSSI_VALUE -360
#define MAX_NWSEL_MCC_POOL 6
#define LEN_OF_ALL_ALLOWED_NSSAI 144
typedef struct {
LOCAL_PARA_HDR
domain_id_enum attach_type;
kal_uint8 ready_timer_p;
gmmreg_timer_struct ready_timer_value;
kal_uint8 att_id;
mm_user_search_type_enum search_type;
kal_bool is_follow_on_request;
mm_user_search_cause_enum search_cause; //used for GSMA SIM block feature
} nas_sv_any_attach_req_struct;
typedef struct {
LOCAL_PARA_HDR
domain_id_enum detach_type;
kal_bool power_off;
kal_uint8 att_id;
l4c_rac_detach_cause_enum detach_cause;
kal_bool is_user_ps_reattach;
} nas_sv_any_detach_req_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat_mode; /* RATCM_RAT_ENUM*/
rat_enum reported_rat;
irat_system_type_enum c2k_mode;
kal_bool is_rf_on;
vg_option_enum vg_option_map;
} nas_sv_gmss_set_rat_mode_req_struct;
typedef struct {
LOCAL_PARA_HDR
proc_status_enum status;
mm_cause_enum cause;
} nas_sv_gmss_set_rat_mode_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool is_deact_cs;
kal_bool is_deact_ps;
} nas_sv_gmss_c2k_deactivate_ind_struct;
typedef struct {
LOCAL_PARA_HDR
nas_sv_any_event_update_req_enum event;
} nas_sv_any_event_update_req_struct;
typedef struct {
LOCAL_PARA_HDR
nas_sv_any_event_update_ind_enum event;
rat_enum rat;
} nas_sv_any_event_update_ind_struct;
typedef nas_sv_any_event_update_ind_struct nas_sv_vgmm_event_update_ind_struct;
typedef struct {
LOCAL_PARA_HDR
erac_rat_enum rat_mode;
erac_rat_enum reported_rat;
rat_mode_change_cause_enum rat_mode_change_cause;
irat_system_type_enum c2k_mode;
} nas_sv_emm_set_rat_mode_req_struct;
typedef struct {
LOCAL_PARA_HDR
proc_status_enum status;
} nas_sv_emm_set_rat_mode_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
irat_type_enum irat_type;
rat_type_enum source_rat;
rat_type_enum target_rat;
ho_from_lte_type_enum ir_ho_type;
} nas_sv_any_rat_change_start_ind_struct;
typedef struct {
LOCAL_PARA_HDR
irat_type_enum irat_type;
irat_result_enum irat_result;
rat_type_enum source_rat;
rat_type_enum target_rat;
ho_from_lte_type_enum ir_ho_type;
// NAS_SV only updates for 23G. For other RATs, set it to Unknown
// This filed is requested by MOD_SMIC
nas_sv_camped_on_cell_type_enum camped_on_cell_type;
} nas_sv_any_rat_change_finish_ind_struct;
typedef struct {
LOCAL_PARA_HDR
kal_uint8 trx_id;
} nas_sv_emm_plmn_search_ind_struct;
typedef struct {
LOCAL_PARA_HDR
kal_uint8 trx_id;
rat_enum rat;
} nas_sv_mm_plmn_search_ind_struct;
typedef struct {
LOCAL_PARA_HDR
active_nas_enum init_nas;
} nas_sv_smic_boot_up_init_nas_update_ind_struct;
typedef struct {
LOCAL_PARA_HDR
kal_uint8 trx_id;
rat_enum rat;
plmn_search_result_enum result;
kal_bool is_as_plmn_list_present;
as_plmn_list_struct as_plmn_list;
kal_uint8 multi_plmn_count;
plmn_id_struct multi_selected_plmn[MAX_NUM_MULTI_PLMN];
as_cell_type_enum multi_selected_cell_type[MAX_NUM_MULTI_PLMN];
scan_type_enum scan_type;
kal_bool is_stored_list_exist; // only for stored search not for fullband + fullband and stored
fullband_result_enum is_fullband_finished;
kal_bool is_ps_conn_releasing;
kal_bool is_quick_search;
kal_bool no_search_candidate;
} nwsel_nas_sv_plmn_search_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
kal_uint8 trx_id;
plmn_search_result_enum result;
plmn_search_cant_proc_reason_enum cant_proc_reason;
kal_bool is_as_plmn_list_present;
as_plmn_list_struct as_plmn_list;
kal_uint8 multi_plmn_count;
plmn_id_struct multi_selected_plmn[MAX_NUM_MULTI_PLMN];
as_cell_type_enum multi_selected_cell_type[MAX_NUM_MULTI_PLMN];
scan_type_enum scan_type;
kal_bool is_stored_list_exist; // only for stored search not for fullband + fullband and stored
fullband_result_enum is_fullband_finished;
kal_bool is_quick_search;
kal_bool no_search_candidate;
} nas_sv_emm_plmn_search_cnf_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint16 gibi_tag;
kal_uint8 ta_code[2];
kal_uint8 multi_plmn_count;
plmn_id_struct multi_plmn_id[MAX_NUM_MULTI_PLMN];
as_cell_type_enum multi_plmn_cell_type[MAX_NUM_MULTI_PLMN];
kal_uint8 multi_ta_code[MAX_NUM_MULTI_PLMN][2]; // 36.331 R14 CR2912 EUTRAN sharing enhancement
kal_uint32 multi_cell_id[MAX_NUM_MULTI_PLMN]; // 36.331 R14 CR2912 EUTRAN sharing enhancement
csg_access_mode_enum csg_access_mode[MAX_NUM_MULTI_PLMN];
csg_info_struct csg_info[MAX_NUM_MULTI_PLMN];
lte_duplex_type_enum lte_type;
kal_bool ims_emergency_support;
#ifdef __NG_ECALL_SUPPORT__
kal_bool ecall_over_ims_support;
#endif /* __NG_ECALL_SUPPORT__ */
kal_bool is_c2k_as_irat;
kal_uint16 band;
kal_bool is_3G_sib_scheduled;
kal_bool is_2G_sib_scheduled;
kal_bool is_C2K_sib_scheduled;
enasas_ssac_ac_barringfactor_enum ssac_voice_ac_barring_factor;
kal_bool match_op_cfg;
//--- Debug Only ---//
endc_sib_status_enum endc_sib_status; /* "endc_sib_status" will be set to "ENDC_SIB_STATUS_SUPPORT" if the corresponding
* bit of selected PLMN in PLMN-InfoList-r15 from SIB2 is TRUE.
*/
kal_bool endc_available; /* "endc_available" wil be set to TRUE if any bit in PLMN-InfoList-r15 from SIB2 is TRUE */
kal_bool endc_band_ue_supported; /* TRUE: UE support at least 1 ENDC combo with attached LTE cell band */
} nas_sv_emm_sys_info_update_ind_struct;
typedef struct {
LOCAL_PARA_HDR
irat_type_enum irat_type;
rat_type_enum source_rat;
rat_type_enum target_rat;
ho_from_lte_type_enum ir_ho_type;
kal_uint8 nas_security_param_from_eutra;
gas_cipher_algo_enum gas_cipher_algo;
kal_bool csfb_ind;
} nas_sv_emm_nas_ctxt_transfer_req_struct;
typedef struct {
LOCAL_PARA_HDR
irat_type_enum irat_type;
irat_result_enum irat_result;
rat_type_enum source_rat;
rat_type_enum target_rat;
} nas_sv_emm_rat_change_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
irat_container_errc_to_emm_struct irat_container;
} nas_sv_emm_as_param_notify_ind_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat_mode; /* RATCM_RAT_ENUM*/
domain_id_enum detach_domain; //for UEMODE:PS_MODE_x, CS domain should be detached first in RAT_MODE which contains RAT_LTE
rat_enum reported_rat;
rat_mode_change_cause_enum rat_mode_change_cause;
} nas_sv_mm_set_rat_mode_req_struct;
typedef struct {
LOCAL_PARA_HDR
proc_status_enum status; /* proc_status_enum */
mm_cause_enum cause; /* mm_cause_enum */
} nas_sv_mm_set_rat_mode_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
irat_type_enum irat_type;
rat_type_enum source_rat;
rat_type_enum target_rat;
kal_uint8 nas_security_param[NAS_SECURITY_PARAM_LEN];
} nas_sv_mm_nas_ctxt_transfer_req_struct,nas_sv_mm_rat_change_req_struct;
typedef struct {
LOCAL_PARA_HDR
irat_type_enum irat_type;
irat_result_enum irat_result;
rat_type_enum source_rat;
rat_type_enum target_rat;
irat_reject_cause_enum irat_reject_cause;
} nas_sv_mm_rat_change_cnf_struct;
#if defined(__ECALL_SUPPORT__) || defined(__NG_ECALL_SUPPORT__)
/** [MT2735][WNC] ILM: MSG_ID_SIM_NAS_SV_ECALL_MODE_SWITCH_IND which will carry changed ecall mode information */
typedef sim_nas_sv_set_ecall_mode_ind_struct nas_sv_any_update_ecall_mode_change_ind_struct;
#endif
typedef struct {
LOCAL_PARA_HDR
rat_enum rat;
rat_enum reported_rat;
} nas_sv_ratcm_set_rat_mode_req_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool is_successful;
mm_cause_enum cause;
} nas_sv_ratcm_set_rat_mode_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
irat_type_enum irat_type;
rat_type_enum source_rat;
rat_type_enum target_rat;
void* as_info_ptr;
kal_uint8 nas_security_param[NAS_SECURITY_PARAM_LEN];
//NAS security parameter (Only valid for IRHO from UAS)
//Byte1 ~ 4: NouceMME
//Byte5: Selected Algorithm (Ciphering/Integrity)
//Byte6: eKSI (including type of security context)
} nas_sv_ratcm_rat_change_ind_struct;
typedef struct {
LOCAL_PARA_HDR
irat_type_enum irat_type;
rat_type_enum source_rat;
rat_type_enum target_rat;
irat_result_enum irat_result;
irat_reject_cause_enum irat_reject_cause;
void* as_info_ptr;
} nas_sv_ratcm_rat_change_rsp_struct;
typedef struct {
LOCAL_PARA_HDR
irat_type_enum irat_type;
rat_type_enum source_rat;
rat_type_enum target_rat;
void* as_info_ptr;
ratcm_gas_security_mode_req_struct gas_security;
uas_security_context_struct uas_security[2];
csfb_indicator_enum csfb_indicator;
loopback_mode_status_enum loopback_mode_status;
kal_bool is_lai_valid;
lai_struct lai;
kal_bool is_srvcc;
kal_bool is_mapped_rai_valid;
rai_struct mapped_rai;
} nas_sv_ratcm_rat_change_req_struct;
typedef struct {
LOCAL_PARA_HDR
irat_type_enum irat_type;
rat_type_enum source_rat;
rat_type_enum target_rat;
irat_result_enum irat_result;
void* as_info_ptr;
domain_id_enum connection_domain;
kal_bool is_gibi_tag_valid;
kal_uint16 gibi_tag;
} nas_sv_ratcm_rat_change_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
kal_uint16 gibi_tag;
rat_enum rat;
kal_bool is_data_pending;
kal_bool is_sys_info_present;
kal_uint8 multi_plmn_count;
plmn_id_struct multi_plmn_id[MAX_NUM_MULTI_PLMN];
as_cell_type_enum multi_plmn_cell_type[MAX_NUM_MULTI_PLMN];
plmn_id_struct plmn_id;
kal_uint8 la_code[2];
kal_uint8 ra_code;
kal_uint32 cell_id;
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; /* for DSAC/data_speed_support update in connected mode*/
kal_uint8 dsac_plmn_bitmask;
kal_uint16 cs_dsac[MAX_NUM_MULTI_PLMN];
kal_uint16 ps_dsac[MAX_NUM_MULTI_PLMN];
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;
data_speed_support_enum cell_data_speed_support; /* MAUI_02361221: for egprs and hspa */
kal_uint8 ppacr_plmn_bitmask;
ppacr_info_struct ppacr_info_plmn_list[MAX_NUM_MULTI_PLMN];
csg_access_mode_enum csg_access_mode;
csg_info_struct csg_info;
kal_bool is_gprs_info_in_si13_deferred;
kal_uint8 band;
} nas_sv_ratcm_sys_info_update_ind_struct;
typedef struct {
LOCAL_PARA_HDR
kal_uint8 trx_id;
plmn_search_result_enum result;
rat_enum rat;
plmn_id_struct selected_plmn;
kal_bool is_as_plmn_list_present;
as_plmn_list_struct as_plmn_list;
as_cell_type_enum selected_cell_type;
kal_bool is_ps_conn_releasing;
kal_uint8 multi_plmn_count;
plmn_id_struct multi_selected_plmn[MAX_NUM_MULTI_PLMN];
as_cell_type_enum multi_selected_cell_type[MAX_NUM_MULTI_PLMN];
scan_type_enum scan_type;
kal_bool is_stored_list_exist; // only for stored search not for fullband + fullband and stored
fullband_result_enum is_fullband_finished;
kal_bool is_quick_search;
} nas_sv_mm_plmn_search_cnf_struct;
/* workaround need to remove */
typedef struct
{
LOCAL_PARA_HDR
kal_uint16 gibi_tag;
kal_uint8 plmn_id_num;
plmn_id_struct plmn_id[MAX_NUM_MULTI_PLMN];
as_cell_type_enum multi_plmn_cell_type[MAX_NUM_MULTI_PLMN];
kal_uint8 ta_code[MAX_NUM_MULTI_PLMN][3];
kal_uint8 cell_id[MAX_NUM_MULTI_PLMN][5];
nrrc_ac1_selection_assistance_info_enum
ac1_selection_assistance_info[MAX_NUM_MULTI_PLMN];
kal_bool ims_emergency_support;
kal_uint16 band;
duplex_type_enum duplex_type;
} nas_sv_nrrc_sys_info_update_ind_struct;
/* workaround need to remove */
typedef union
{
nas_sv_ratcm_sys_info_update_ind_struct mm_sys_info;
nas_sv_emm_sys_info_update_ind_struct emm_sys_info;
nas_sv_nrrc_sys_info_update_ind_struct nrrc_sys_info;
} nwsel_nas_sv_sys_info_update_ind_union;
typedef union
{
kal_uint8 nr_cell_id[MAX_NUM_MULTI_PLMN][5];
kal_uint32 lte_cell_id[MAX_NUM_MULTI_PLMN];
kal_uint32 umts_cell_id;
kal_uint16 gsm_cell_id;
} cell_id_union;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat;
nwsel_nas_sv_sys_info_update_ind_union sys_info;
} nwsel_nas_sv_sys_info_update_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 eq_plmn_count;
plmn_id_struct eq_plmn_id[MAX_NUM_EQ_PLMN];
} nwsel_nas_sv_nrrc_eq_plmn_list_update_req_struct;
typedef struct
{
kal_bool is_ecc_triggered;
/* filled by MM */
kal_bool is_csfb_ongoing;
kal_uint16 factory_mode_arfcn;
} gsm_search_param_container_struct;
typedef struct
{
kal_bool is_manual_csg_sel; // identify if the csg_id below is valid
kal_uint32 csg_id;
kal_bool is_ecc_triggered;
/* filled by MM */
kal_bool is_csfb_ongoing;
kal_uint16 factory_mode_arfcn;
} umts_search_param_container_struct;
typedef struct
{
lte_duplex_type_enum lte_type;
/* NWSEL search ANY and this flag set to True, ERRC will only find LTE with IMS support.Otherwise, ERRC report Not_Found */
kal_bool force_ims_ecc_cell;
#ifdef __NG_ECALL_SUPPORT__
/* Indicate whether this search needs to prefer IMS ecc cell. If one of search preference and prefer_ims_ecc_cell is false, not prefer ims ecc cell.
* Check this field only when force_ims_ecc_cell is set to FALSE. */
kal_bool prefer_ims_ecc_cell;
/* Use in eCall only mode, force 4G AS to search cells with ecall_over_ims_support*/
kal_bool force_ecall_cell;
#endif /* __NG_ECALL_SUPPORT__ */
/* OOS scenario, NWSEL need to search again Not-Found entry. AS should not apply U2D filter when this flag on */
kal_bool force_stored_search;
endc_search_enum endc_search; /* Search ENDC cell or not for LTE cell. */
kal_bool is_manual_csg_sel; // identify if the csg_id below is valid
kal_uint32 csg_id;
kal_bool is_mpsr_trigger; //for VzW MPSR expired based improvement
kal_uint32 factory_mode_arfcn;
/* OOS interleave source */
kal_uint8 additional_stored_freq_plmn_num;
plmn_id_struct additional_stored_freq_plmn[MAX_NUM_SEARCH_PLMN];
} lte_search_param_container_struct;
typedef struct
{
NRARFCN factory_mode_arfcn;
/* NWSEL search ANY and this flag set to True, ERRC will only find LTE with IMS support.Otherwise, ERRC report Not_Found */
kal_bool force_ecc_cell;
/* OOS scenario, NWSEL need to search again Not-Found entry. AS should not apply U2D filter when this flag on */
kal_bool force_stored_search;
/* OOS interleave source */
kal_uint8 additional_stored_freq_plmn_num;
plmn_id_struct additional_stored_freq_plmn[MAX_NUM_SEARCH_PLMN];
} nr_search_param_container_struct;
typedef union
{
gsm_search_param_container_struct gsm;
umts_search_param_container_struct umts;
lte_search_param_container_struct lte;
nr_search_param_container_struct nr;
} search_rat_specific_param_container_union;
typedef struct
{
kal_bool is_power_on; //for CMCC case 5.1.1: is first search after power on
kal_bool is_manual_sel; // if search is manual selection
kal_bool trigger_by_signal_appear;
kal_bool is_higher_plmn_search;
kal_uint32 factory_mode_arfcn; //0xFFFFFFFF means invalid arfcn - do normal search. For fast camp on test machine
scan_type_enum scan_type;
search_period_enum search_period; // only a suggestion value for RAT switch.
/* number of valid items in the band list. */
kal_uint32 num_of_band;
/*band list for OP/MCC band and MRU/RAL */
kal_uint16 band_list[MAX_SEARCH_BAND_LIST_SIZE];
kal_bool is_band_list_sorted;
kal_bool is_quick_search;
kal_bool is_all_stored;
found_mcc_info_struct found_mcc_info;
kal_bool is_predict_search;
} search_param_container_struct;
typedef struct
{
kal_bool force_to_release;
kal_bool is_clear_abnormal_state;
kal_bool is_srlte;
kal_bool is_to_deactivate_c2k_cs_service;
} nas_control_param_container_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat;
kal_uint8 trx_id;
plmn_search_type_enum plmn_search_type;
kal_uint8 plmn_id_count;
plmn_id_struct plmn_id[MAX_NUM_SEARCH_PLMN];
nas_control_param_container_struct nas_ctrl_container;
search_param_container_struct as_param_container;
search_rat_specific_param_container_union as_specific_container;
} nwsel_nas_sv_plmn_search_req_struct;
typedef nwsel_nas_sv_plmn_search_req_struct nas_sv_emm_plmn_search_req_struct;
typedef nwsel_nas_sv_plmn_search_req_struct nas_sv_mm_plmn_search_req_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool is_manual_sel;
} nwsel_nas_sv_manual_mode_update_req_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool is_manual_list;
rat_enum rat;
lte_duplex_type_enum lte_type; // phase out
kal_uint8 plmn_id_count;
plmn_id_struct plmn_id[MAX_NUM_SEARCH_PLMN];
scan_type_enum scan_type;
kal_bool is_mpsr_trigger; //for VzW MPSR expired based improvement
kal_bool is_elevator_mode;
found_mcc_info_struct found_mcc_info;
kal_bool is_higher_plmn_search;
kal_bool list_endc_info; /* LIST ENDC info or not for LTE cell. ERRC will collect SIB2 for PLMN_LIST. */
/** number of valid items in the band list. */
kal_uint32 num_of_band;
/** band list for MCC Band for PLMN List Optimization */
kal_uint16 band_list[MAX_SEARCH_BAND_LIST_SIZE];
user_list_type_enum user_list_type;
kal_uint8 given_number_of_plmn; // When xAS found the given number of plmn, xAS return PLMN_LIST_CNF. When value is 0 means xAS do complete list, no need care it.
network_scan_input_struct network_scan_input;
} nwsel_nas_sv_plmn_list_req_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_bool is_user_plmn_list_ongoing;
} nwsel_nas_sv_plmn_list_status_update_req_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat;
as_plmn_list_struct as_plmn_list;
scan_type_enum scan_type;
plmn_list_result_enum cause;
kal_bool is_complete; // If list not complete, the available list is not complete too.
kal_bool is_plmn_list_aborted; //indicate if the PLMN List is aborted by PLMN_LIST_ABORT_REQ
} nwsel_nas_sv_plmn_list_cnf_struct;
typedef nwsel_nas_sv_plmn_list_cnf_struct nas_sv_mm_plmn_list_cnf_struct;
typedef nwsel_nas_sv_plmn_list_cnf_struct nas_sv_emm_plmn_list_cnf_struct;
typedef nwsel_nas_sv_plmn_list_req_struct nas_sv_mm_plmn_list_req_struct;
typedef nwsel_nas_sv_plmn_list_req_struct nas_sv_emm_plmn_list_req_struct;
typedef nwsel_nas_sv_plmn_list_status_update_req_struct nas_sv_vgmm_plmn_list_status_update_req_struct;
typedef struct
{
LOCAL_PARA_HDR
network_scan_5g_output_struct nw_scan_5g_output;
} nwsel_nas_sv_plmn_scan_ind_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat;
lte_duplex_type_enum lte_type; // phase out
kal_uint8 plmn_id_count;
plmn_id_struct plmn_id[MAX_NUM_SEARCH_PLMN];
} nwsel_nas_sv_csg_list_req_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat;
as_csg_list_struct as_csg_list;
} nwsel_nas_sv_csg_list_cnf_struct;
typedef nwsel_nas_sv_csg_list_cnf_struct nas_sv_mm_csg_list_cnf_struct;
typedef nwsel_nas_sv_csg_list_cnf_struct nas_sv_emm_csg_list_cnf_struct;
typedef nwsel_nas_sv_csg_list_cnf_struct nas_sv_nrrc_csg_list_cnf_struct;
typedef nwsel_nas_sv_csg_list_req_struct nas_sv_mm_csg_list_req_struct;
typedef nwsel_nas_sv_csg_list_req_struct nas_sv_emm_csg_list_req_struct;
typedef nwsel_nas_sv_csg_list_req_struct nas_sv_nrrc_csg_list_req_struct;
/* MSG_ID_NWSEL_NAS_SV_NRRC_PLMN_SEARCH_PREFERENCE_UPDATE_REQ */
typedef struct {
LOCAL_PARA_HDR
kal_bool prefer_ims_emergency;
} nwsel_nas_sv_nrrc_plmn_search_preference_update_req_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool is_received;
kal_bool is_security_check;
kal_uint8 sor_header;
kal_uint16 oplmn_data_size;
kal_uint8 *oplmn_data;
} nwsel_nas_sv_sor_oplmn_list_update_ind_struct;
typedef nwsel_nas_sv_sor_oplmn_list_update_ind_struct nas_sv_vgmm_sor_oplmn_list_update_ind_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool abort_reg_needed;
} nwsel_nas_sv_sor_oplmn_list_update_rsp_struct;
typedef nwsel_nas_sv_sor_oplmn_list_update_rsp_struct nas_sv_vgmm_sor_oplmn_list_update_rsp_struct;
typedef struct {
LOCAL_PARA_HDR
kal_uint8 size_of_addr;
kal_uint8 addr[MAX_SIM_ADDR_LEN];
} nwsel_nas_sv_sor_secure_packet_ind_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool is_successful;
kal_uint16 size_of_sim_ack_data;
kal_uint8 sim_ack_data[256];
kal_uint8 cause;
} nwsel_nas_sv_sor_secure_packet_rsp_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat;
} nwsel_nas_sv_plmn_search_ind_struct;
/*Check Active RAT Req*/
typedef struct {
LOCAL_PARA_HDR
rat_enum check_rat;
}nwsel_nas_sv_check_active_rat_req_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat; /*For RATCM only*/
}nas_sv_ratcm_check_active_rat_req_struct;
/*Set Active RAT Req*/
typedef struct {
LOCAL_PARA_HDR
rat_enum rat; /*For RATCM only*/
}nas_sv_ratcm_set_active_rat_req_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat; /*For RATCM only*/
}nas_sv_ratcm_sniffer_stop_req_struct;
/*Check Active RAT Cnf*/
typedef struct {
LOCAL_PARA_HDR
rat_enum rat; /*For RATCM only*/
kal_bool is_active_rat;
}nas_sv_any_check_active_rat_cnf_struct;
typedef nas_sv_any_check_active_rat_cnf_struct nas_sv_ratcm_check_active_rat_cnf_struct;
/*Set Active RAT Cnf*/
typedef struct {
LOCAL_PARA_HDR
rat_enum rat; /*For RATCM only*/
kal_bool is_success;
}nas_sv_any_set_active_rat_cnf_struct;
typedef nas_sv_any_set_active_rat_cnf_struct nas_sv_ratcm_set_active_rat_cnf_struct;
typedef nas_sv_any_set_active_rat_cnf_struct nas_sv_emm_set_active_rat_cnf_struct;
typedef nas_sv_any_set_active_rat_cnf_struct nas_sv_vgmm_set_active_rat_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat;
// sniff RPLMN
// only valid when the conditions hold
// plmn_search_status == PLMN_SEARCH_UNRELATED
// mm_proc_status == (MS_IN_NO_SERVICE || MS_IN_LIMITED_SERVICE)
as_sniffer_req_service_enum sniffer_service_type;
as_sniffer_plmn_list_operate_type_enum plmn_list_operate_type;
kal_uint8 plmn_id_count;
plmn_id_struct plmn_id[MAX_NUM_SNIFFER_PLMN];
}nwsel_nas_sv_sniffer_start_req_struct;
typedef nwsel_nas_sv_sniffer_start_req_struct nas_sv_ratcm_sniffer_start_req_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat; /*stop rat*/
}nwsel_nas_sv_sniffer_stop_req_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat;
kal_uint8 plmn_id_count;
plmn_id_struct plmn_id[MAX_NUM_SIGNAL_APPEAR_PLMN];
kal_uint32 num_of_detected_band;
kal_uint16 detected_band_list[MAX_SEARCH_BAND_LIST_SIZE];
}nwsel_nas_sv_signal_appear_ind_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat;
kal_uint32 num_of_detected_band;
kal_uint16 detected_band_list[MAX_SEARCH_BAND_LIST_SIZE];
}nas_sv_ratcm_signal_appear_ind_struct;
typedef struct {
LOCAL_PARA_HDR
nwsel_status_enum nwsel_search_status;
} nwsel_nas_sv_display_search_status_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
rat_enum rat;
kal_uint8 plmn_band_count;
plmn_band_struct plmn_band[MAX_PLMN_BAND_NUM];
} nwsel_nas_sv_plmn_band_ind_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool force_to_release;
} nas_sv_mm_deactivate_req_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool is_completed;
kal_bool is_ps_conn_releasing;
} nas_sv_mm_deactivate_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool force_to_release;
} nas_sv_emm_deactivate_req_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool is_completed;
} nas_sv_emm_deactivate_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
ratcm_gas_security_mode_req_struct gas_security;
uas_security_context_struct uas_security[2];
csfb_indicator_enum csfb_indicator;
loopback_mode_status_enum loopback_mode_status;
kal_bool is_lai_valid;
lai_struct lai;
kal_bool is_srvcc;
kal_bool is_mapped_rai_valid;
rai_struct mapped_rai;
} nas_sv_mm_nas_ctxt_transfer_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool is_csfb_fast_return;
} nas_sv_emm_as_param_update_req_struct;
typedef struct {
LOCAL_PARA_HDR
kal_uint8 kasme[KASME_NUM];
} nas_sv_emm_nas_ctxt_transfer_cnf_struct, nas_sv_emm_as_param_update_ind_struct;
typedef struct {
LOCAL_PARA_HDR
domain_id_enum connection_domain;
kal_bool is_gibi_tag_valid;
kal_uint16 gibi_tag;
} nas_sv_mm_as_param_update_req_struct;
typedef struct
{
LOCAL_PARA_HDR
no_action_cause_enum cause;
kal_uint8 trx_id;
} nas_sv_emm_no_action_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 trx_id;
} nas_sv_mm_no_action_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
no_action_cause_enum cause;
} nwsel_nas_sv_no_action_ind_struct;
typedef struct {
LOCAL_PARA_HDR
enasas_add_epsbearer_list_struct add_list;
} nas_sv_esm_as_param_update_req_struct;
typedef struct
{
LOCAL_PARA_HDR
domain_id_enum attach_type;
mm_cause_enum cause; /* failure cause*/
kal_uint8 att_id; /* Johnny: 3G RAC, for attach_req and detach_req using */
mm_cause_enum abnormal_lu_cause; /* MAUI_01650679 */
cell_info_and_rat_struct cell_info; /* registered cell info*/
} nas_sv_mm_attach_cnf_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 att_id;
domain_id_enum attach_type;
cell_info_and_rat_struct cell_info;
additional_update_result_enum additional_update_result;
kal_bool is_lai_valid;
lai_struct lai;
} nas_sv_emm_attach_cnf_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 att_id;
vgmm_cause_enum cause; /* failure cause*/
cell_info_and_rat_struct cell_info; /* registered cell info*/
kal_uint8 allowed_nssai_length; /* Number of bytes in allowed NSSAI */
kal_uint8 allowed_nssai[LEN_OF_ALL_ALLOWED_NSSAI]; /* Allowed NSSAI */
} nas_sv_vgmm_attach_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
kal_uint8 att_id;
vgmm_cause_enum cause;
cell_info_and_rat_struct cell_info;
kal_bool is_reged; /* 5GMM registration status */
kal_bool is_reattach;
sat_loc_send_type_enum sat_send_type;
} nas_sv_vgmm_detach_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
emm_nw_feature_support_struct eps_nw_feature;
} nas_sv_emm_nw_feature_support_ind_struct;
typedef struct {
LOCAL_PARA_HDR
domain_id_enum detach_type;
mm_cause_enum cause;
//kal_bool issearching;
kal_bool is_reged;
kal_uint8 att_id;
cell_info_and_rat_struct cell_info;
integ_protect_status_enum is_integ_protected;
kal_uint8 invalid_cs_sim_counter;
kal_uint8 invalid_ps_sim_counter;
sat_loc_send_type_enum sat_send_type;
kal_bool is_reattach;
} nas_sv_mm_detach_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 att_id;
domain_id_enum detach_type;
emm_cause_enum emm_cause;
emm_cause_source_enum emm_cause_source;
esm_cause_enum esm_cause;
kal_bool is_reged;
cell_info_and_rat_struct cell_info;
kal_bool is_reattach;
sat_loc_send_type_enum sat_send_type;
dos_enhance_info_struct dos_enhance_info;
kal_bool is_auth_reject_during_attach;
} nas_sv_emm_detach_ind_struct;
typedef struct {
LOCAL_PARA_HDR
umts_duplex_mode_type source_umts_duplex_mode;
umts_duplex_mode_type target_umts_duplex_mode;
lte_duplex_mode_type source_lte_duplex_mode;
lte_duplex_mode_type target_lte_duplex_mode;
mode_switch_cause_enum cause;
} nas_sv_any_duplex_mode_change_req_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool result;
} nas_sv_any_duplex_mode_change_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
rfoff_cause_enum rfoff_cause;
} nas_sv_any_rfoff_req_struct;
typedef nas_sv_any_rfoff_req_struct nas_sv_pam_rfoff_ntf_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat;
} nas_sv_ratcm_cell_change_finish_ind_struct;
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_plmn_cell_type[MAX_NUM_MULTI_PLMN];
/* Only for LTE */
kal_uint8 multi_ta_code[MAX_NUM_MULTI_PLMN][2]; // 36.331 R14 CR2912 EUTRAN sharing enhancement
rat_enum rat;
ue_capability_struct acting_capability;
kal_bool is_nw_endc_disabled;
nas_sv_capability_update_procedure_type_enum query_proc;
domain_id_enum capability_query_attach_type;
mm_user_search_type_enum capability_query_search_type;
} nwsel_nas_sv_capability_query_req_struct;
typedef struct
{
LOCAL_PARA_HDR
ue_capability_struct capability;
kal_bool is_nw_endc_disabled;
kal_bool will_trigger_search; // if nwsel trigger search, can update by next sys_info.
nas_sv_local_release_cause_enum local_rel_cause;
} nwsel_nas_sv_capability_query_cnf_struct;
typedef struct
{
LOCAL_PARA_HDR
ue_capability_struct capability;
kal_bool is_nw_endc_disabled;
nas_sv_local_release_cause_enum local_rel_cause;
} nwsel_nas_sv_capability_update_req_struct;
typedef struct{
LOCAL_PARA_HDR
nas_sv_capability_rat_enum target_rat;
ue_capability_struct capability;
} nas_sv_ratcm_cap_update_req_struct;
typedef struct{
LOCAL_PARA_HDR
nas_sv_capability_rat_enum target_rat;
kal_bool is_successful; /* Indicates whether enabling or disabling capability is successful. */
} nas_sv_ratcm_cap_update_cnf_struct;
typedef struct {
kal_uint32 begin;
kal_uint32 end;
} nas_freq_range_struct;
typedef struct {
nas_freq_range_struct freq_range;
kal_int16 rssi;
kal_uint16 band;
} nas_ps_result_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum power_scan_rat; // could be multi-rat
kal_uint32 nr_num_of_band;
kal_uint16 nr_band_list[MAX_SEARCH_BAND_LIST_SIZE];
kal_uint32 lte_num_of_band;
kal_uint16 lte_band_list[MAX_SEARCH_BAND_LIST_SIZE];
} nwsel_nas_sv_power_scan_req_struct;
typedef struct {
LOCAL_PARA_HDR
kal_uint16 power_scan_result_list_num;
nas_ps_result_struct power_scan_result_list[NAS_MAX_PS_RESULT_LIST];
} nwsel_nas_sv_power_scan_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
kal_uint16 power_scan_result_list_num;
nas_ps_result_struct power_scan_result_list[NAS_MAX_PS_RESULT_LIST];
} nwsel_nas_sv_power_scan_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
ps_cause_enum cause;
} nas_sv_esm_eps_attach_needed_rej_rsp_struct;
typedef struct
{
LOCAL_PARA_HDR
plmn_id_struct current_plmn_id;
} nas_sv_esm_eps_attach_needed_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_bool force_emc_attach;
} nas_sv_esm_emc_attach_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
srvcc_status_enum status;
} nas_sv_any_srvcc_status_update_ind_struct;
typedef struct
{
kal_bool forbidden_plmn_update_not_allowed; /*MM may change NW reject cause, and no need to add forbidden PLMN */
kal_bool is_back_to_abnormal_la;
kal_bool is_rau_performed;
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;
/* todo remove, NWSEL shall not know those status*/
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;
/* todo use seperate interface to update */
plmn_id_struct rplmn; //from stored lai. Valid when LR_ACCEPT & LR_ACCEPT_PS_ONLY
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 */
}mm_rat_specific_param_container_struct;
#include "nwsel_eval_enums.h"
typedef struct
{
kal_bool stored_lai_valid;
kal_bool stored_guti_valid;
gsm_state_enum gsm_attach_state;
eps_state_enum lte_attach_state;
gsm_update_status_enum gsm_update_status;
eps_update_status_enum lte_update_status;
#ifdef __NG_ECALL_SUPPORT__
mm_check_ecall_status_enum ecall_status;
#endif /* __NG_ECALL_SUPPORT__ */
} update_param_struct;
typedef struct
{
esm_cause_enum esm_cause;
mm_cause_enum airlr_cause; // If above lr_cause is replaced, EMM will bring real 'air cause' by this parameter. If it is none, just use lr_cause.
kal_bool is_esm_attempt_max_times;
additional_update_result_enum additional_update_result;
eps_attach_update_result_enum eps_attach_update_result;
kal_bool is_ims_vops_support;
lte_duplex_type_enum lte_type;
//CR1917: REL12 feature, use REL11 temporarily
/* is_eutran_not_allowed should be checked only when Reject#15. Disable E-UTRAN if #15 and this field is True. */
kal_bool is_eutran_not_allowed;
kal_bool is_ps_reattach;
kal_bool is_service_request_max_times;
kal_bool is_t3402_valid;
kal_uint16 t3402;
kal_bool is_rach_fail_max_times;
integ_protect_status_enum is_integ_protected;
kal_uint8 invalid_cs_sim_counter;
kal_uint8 invalid_ps_sim_counter;
/* use to identify the TA is change or not when TAU/Combined TAU */
kal_bool is_mobility_tau;
kal_bool is_persistent_EPS_bearer_exist;
kal_bool is_emc_bs_support;
restrict_dcnr_enum restrict_dcnr_ind;
kal_bool is_tau_before_search;
update_param_struct update_param;
/* [TMO] notify NAS_SV not to Disable S1 under real network */
kal_bool is_t3402_not_start;
}emm_rat_specific_param_container_struct;
typedef struct
{
mm_cause_enum airlr_cause;
vg_ims_3gpp_ind_enum ims_vops_supported_indicator;
vg_emergency_service_ind_enum emc_supported_indicator;
vg_emergency_fallback_ind_enum emc_fallback_supported_indicator;
vgmm_5g_update_status_enum vg_update_status;
kal_bool is_proc_reported_earlier;
}vgmm_rat_specific_param_container_struct;
typedef union
{
mm_rat_specific_param_container_struct mm;
emm_rat_specific_param_container_struct emm;
vgmm_rat_specific_param_container_struct vgmm;
} nas_rat_specific_param_container_union;
typedef struct {
LOCAL_PARA_HDR
rat_enum rat;
nas_proc_enum nas_proc;
lr_result_enum lr_result;
mm_cause_enum lr_cause; // This value may be replaced by customized cause.
kal_uint8 attempt_counter;
nas_rat_specific_param_container_union nas_specific_container;
} nas_sv_any_regn_result_ind_struct;
typedef struct {
LOCAL_PARA_HDR
nas_proc_enum nas_proc;
lr_result_enum lr_result;
mm_cause_enum lr_cause; // This value may be replaced by customized cause.
kal_uint8 attempt_counter;
mm_cause_enum airlr_cause;
} nas_sv_vgmm_proc_result_ind_struct;
typedef nas_sv_vgmm_proc_result_ind_struct nwsel_nas_sv_vgmm_proc_result_ind_struct;
typedef nas_sv_any_regn_result_ind_struct nwsel_nas_sv_regn_result_ind_struct;
typedef nwsel_nas_sv_plmn_band_ind_struct nas_sv_ratcm_plmn_band_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
plmn_search_status_enum plmn_search_status;
plmn_search_type_enum plmn_search_type; /* new plmn search type */
} nwsel_nas_sv_nrrc_regn_status_update_req_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_bool normal_oos_recovery_round_present;
kal_uint8 normal_oos_recovery_round; // default value = 5
kal_bool inactive_fullband_period_present;
kal_uint16 inactive_fullband_period; // default = 200s
kal_bool inactive_sniffer_period_present;
kal_uint8 inactive_sniffer_period; // default = 30s
kal_bool is_inactive_mode_present;
kal_bool is_inactive_mode; // True: enter inactive mode, False: leave inactive mode
} nwsel_nas_sv_nrrc_inactive_mode_configuration_req_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_bool is_over_inactive_mode_threshold;
} nwsel_nas_sv_nrrc_service_recovery_round_update_req_struct;
typedef struct
{
LOCAL_PARA_HDR
regn_proc_status_enum mm_proc_status;
}nwsel_nas_sv_vgmm_regn_status_update_req_struct;
/* NRRC related NAS interface */
/* shall sync nas_sv_nrrc_plmn_loss_ind_struct */
typedef struct
{
LOCAL_PARA_HDR
kal_bool is_as_plmn_list_present;
as_plmn_list_struct as_plmn_list;
} nwsel_nas_sv_nr_plmn_loss_ind_struct;
/* common */
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];
/// source from cell reselection or search
found_ind_source_enum source;
rat_enum rat;
cell_id_union cell_id;
} nas_sv_any_plmn_found_ind_struct;
typedef nas_sv_any_plmn_found_ind_struct nwsel_nas_sv_plmn_found_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
rat_enum anchor_rat;
plmn_search_status_enum plmn_search_status;
as_cell_type_enum cell_type;
plmn_search_type_enum plmn_search_type; /* Only for EMM/PLMNSEL to know if needed to check Forbidden TA list */
} nas_sv_any_search_status_update_req_struct;
typedef nas_sv_any_search_status_update_req_struct nwsel_nas_sv_search_status_update_req_struct;
typedef struct {
LOCAL_PARA_HDR
rat_enum disable_rat;
} nas_sv_any_rat_disable_config_req_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_bool is_user_plmn_list_ongoing;
} nas_sv_any_plmn_list_status_update_req_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 plmn_id_count;
plmn_id_struct plmn_id[MD1_MAX_NUM_HPLMN];
kal_uint8 home_country_mcc[3];
} nas_sv_any_hplmn_info_update_req_struct;
typedef nas_sv_any_hplmn_info_update_req_struct nwsel_nas_sv_hplmn_info_update_req_struct;
typedef struct
{
LOCAL_PARA_HDR
update_eplmn_struct eplmn_info;
} nas_sv_any_eplmn_update_ind_struct;
typedef nas_sv_any_eplmn_update_ind_struct nwsel_nas_sv_eplmn_update_ind_struct;
/* eval refactor */
typedef struct
{
LOCAL_PARA_HDR
update_param_struct update_param;
} nas_sv_emm_update_param_ind_struct;
typedef nas_sv_emm_update_param_ind_struct nwsel_nas_sv_emm_update_param_ind_struct;
/***** message structure definition *****/
typedef struct
{
LOCAL_PARA_HDR
kal_bool is_plmn_search_2G3G_ongoing;
as_cell_type_enum cell_type; // 2G/3G camped on cell type
plmn_search_type_enum plmn_search_type; /* Only for EMM/PLMNSEL to know if needed to check Forbidden TA list */
} nas_sv_emm_search_status_update_req_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_bool prefer_ims_emergency;
} nas_sv_emm_search_preference_update_req_struct;
typedef struct
{
LOCAL_PARA_HDR
regn_proc_status_enum mm_proc_status; // indicate if MS is in limited or no service
plmn_search_status_enum plmn_search_status;
plmn_search_type_enum plmn_search_type;
// sniff RPLMN
// only valid when the conditions hold
// plmn_search_status == PLMN_SEARCH_UNRELATED
// mm_proc_status == (MS_IN_NO_SERVICE || MS_IN_LIMITED_SERVICE)
kal_uint8 plmn_id_count;
plmn_id_struct plmn_id[MAX_NUM_SEARCH_PLMN];
kal_bool is_send_to_as;
kal_bool other_rat_found_notify_4G;
} nas_sv_emm_regn_status_update_req_struct;
typedef struct
{
LOCAL_PARA_HDR
domain_id_enum conn_domain;
kal_bool is_waiting_cell; //RRC connection release, no cell case, need to wiat ERRC to report a new cell
} nas_sv_emm_out_of_service_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
as_plmn_list_struct eas_plmn_list;
kal_bool full_band_searched_4g;
plmn_loss_reason_enum plmn_loss_reason;
} nas_sv_emm_plmn_loss_ind_struct;
//#if defined( __VOLTE_SUPPORT__) || defined (UNIT_TEST)
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 emc_fplmn_count;
plmn_id_struct emc_fplmn_list[MAX_NUM_EMC_FPLMN];
// band 0 => all band disabled, bar this PLMN
kal_uint16 emc_fplmn_band[MAX_NUM_EMC_FPLMN];
} nas_sv_emm_emc_fplmn_list_update_req_struct;
//#endif
typedef struct
{
LOCAL_PARA_HDR
voice_domain_preference_enum eutran_voice_domain_preference;
ue_mode_enum ue_mode;
kal_bool sms_only;
voice_domain_preference_enum utran_voice_domain_preference;
} nas_sv_emm_uemode_param_update_req_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint16 t3402_value; // t3402 value in seconds
} nas_sv_emm_t3402_change_ind_struct; // __REL10__: t3402
typedef struct
{
LOCAL_PARA_HDR
plmn_id_struct current_plmn_id;
timer_status_enum status;
} rac_nas_sv_t3402_stop_ind_struct;
typedef rac_nas_sv_t3402_stop_ind_struct nas_sv_emm_t3402_stop_ind_struct;
//#if defined( __VOLTE_SUPPORT__) || defined (UNIT_TEST)
typedef struct
{
LOCAL_PARA_HDR
kal_bool prefer_ims_emergency;
} nas_sv_emm_plmn_search_preference_update_req_struct;
typedef struct
{
LOCAL_PARA_HDR
emc_status_enum emc_status;
emc_pdn_status_enum emc_pdn_status;
} nas_sv_emm_emergency_status_update_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
rat_enum rat;
kal_uint32 num_of_band;
kal_uint16 band_list[MAX_SEARCH_BAND_LIST_SIZE];
} nwsel_nas_sv_background_band_learning_req_struct;
typedef struct
{
LOCAL_PARA_HDR
rat_enum rat;
} nwsel_nas_sv_background_band_learning_cnf_struct;
typedef struct
{
LOCAL_PARA_HDR
rat_enum rat;
} nwsel_nas_sv_background_band_learning_stop_req_struct;
typedef struct
{
LOCAL_PARA_HDR
rat_enum rat;
} nwsel_nas_sv_background_band_learning_stop_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
kal_uint8 local_rel_cause;
} nas_sv_check_cap_update_ind_struct;
//#endif // __VOLTE_SUPPORT__
#if defined(__LTE_RAT__) && (defined(__GSM_RAT__) || defined(__UMTS_RAT__))
typedef errc_sim_protect_req_struct nas_sv_emm_power_on_protection_req_struct;
#endif
#ifdef __FIVEG_NAS__
typedef struct
{
/* VGMM Definitions */
vgmm_bcast_regn_update_enum vgmm_regn_update_type;
kal_bool vgmm_msg_type_present;
vgmm_msg_type_enum vgmm_msg_type;
kal_bool vgmm_reg_type_present;
vgmm_reg_type_enum vgmm_reg_type;
kal_bool vgmm_detach_type_present;
vgmm_detach_type_enum vgmm_detach_type;
kal_bool vgmm_cause_present;
vgmm_cause_enum vgmm_cause;
kal_bool vgmm_attempt_cnt_present;
kal_uint8 vgmm_attempt_cnt;
kal_bool vgmm_ims_voice_over_ps_ind_present;
ims_ind_enum vgmm_ims_voice_over_ps_ind;
kal_bool vgmm_is_reattach_required;
/* End of VGMM Definitions */
}nas_sv_vgmm_broadcast_regn_result_struct;
#endif //__FIVEG_NAS__
typedef struct
{
/* EMM Definitions */
emm_msg_type_enum emm_msg_type;
kal_bool emm_cause_present;
emm_cause_enum emm_cause;
/* Whether the UE is registered or not according to state and current executing procedure in EMM view
used for EMM/VGMM un-sync state checking for any_xmm_broadcast_regn_result handling */
emm_bcast_regn_update_enum emm_regn_update_type;
kal_bool emm_is_reattach_required;
/* End of EMM Definitions */
}nas_sv_emm_broadcast_regn_result_struct;
typedef struct
{
/* MM Definitions */
mm_msg_type_enum mm_msg_type;
kal_bool is_mm_rej_cause_present;
mm_cause_enum mm_rej_cause;
kal_bool is_mm_attempt_cnt_present;
kal_uint8 mm_attempt_cnt;
/* End of MM Definitions */
}nas_sv_mm_broadcast_regn_result_struct;
typedef struct
{
/* GMM Definitions */
gmm_msg_type_enum gmm_msg_type;
kal_bool is_gmm_proc_direction_present;
gmm_proc_direction_enum gmm_proc_direction;
kal_bool is_gmm_attach_type_present;
gmm_attach_type_enum gmm_attach_type;
kal_bool is_gmm_update_type_present;
gmm_update_type_enum gmm_update_type;
kal_bool is_gmm_detach_type_present;
gmm_detach_type_enum gmm_detach_type;
kal_bool is_gmm_attach_result_present;
gmm_attach_result_enum gmm_attach_result;
kal_bool is_gmm_update_result_present;
gmm_update_result_enum gmm_update_result;
kal_bool is_gmm_cause_present;
mm_cause_enum gmm_cause;
kal_bool is_gmm_attempt_cnt_present;
kal_uint8 gmm_attempt_cnt;
/* End of GMM Definitions */
}nas_sv_gmm_broadcast_regn_result_struct;
typedef struct
{
LOCAL_PARA_HDR
/* XMM Common Definitions */
rat_type_enum source_rat;
integ_protect_status_enum is_integ_protected;
domain_id_enum cn_domain;
/* End of XMM Common Definitions */
union
{
#ifdef __FIVEG_NAS__
/* VGMM Definitions */
nas_sv_vgmm_broadcast_regn_result_struct vgmm_info;
#endif //__FIVEG_NAS__
/* EMM Definitions */
nas_sv_emm_broadcast_regn_result_struct emm_info;
/* MM Definitions */
nas_sv_mm_broadcast_regn_result_struct mm_info;
/* GMM Definitions */
nas_sv_gmm_broadcast_regn_result_struct gmm_info;
}info;
} nas_sv_xmm_broadcast_regn_result_struct;
typedef nas_sv_xmm_broadcast_regn_result_struct nas_sv_vgmm_broadcast_regn_result_ind_struct;
typedef nas_sv_xmm_broadcast_regn_result_struct nas_sv_emm_broadcast_regn_result_ind_struct;
typedef nas_sv_xmm_broadcast_regn_result_struct nas_sv_mm_broadcast_regn_result_ind_struct;
typedef nas_sv_xmm_broadcast_regn_result_struct nas_sv_any_broadcast_regn_result_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
xmm_common_timer_id_enum xmm_common_timer_id;
kal_bool status; /**< KAL_FALSE:Stop, KAL_TRUE:start*/
plmn_id_struct backoff_timer_plmn;
kal_bool is_backoff_timer_plmn_in_eq_plmn_list;
#ifdef __SUPPORT_CLIB_TIME__ /**< Target & MoDIS */
kal_int64 expire_time; /**< unit is seconds */
#else /**< UESIM */
kal_uint16 remaining_time; /**< unit is seconds */
#endif
} nas_sv_xmm_broadcast_timer_status_struct;
typedef nas_sv_xmm_broadcast_timer_status_struct nas_sv_vgmm_broadcast_timer_status_ind_struct;
typedef nas_sv_xmm_broadcast_timer_status_struct nas_sv_emm_broadcast_timer_status_ind_struct;
typedef nas_sv_xmm_broadcast_timer_status_struct nas_sv_mm_broadcast_timer_status_ind_struct;
typedef nas_sv_xmm_broadcast_timer_status_struct nas_sv_any_broadcast_timer_status_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
/* XMM Common Definitions */
rat_type_enum source_rat;
} nas_sv_xmm_broadcast_detach_required_struct;
typedef nas_sv_xmm_broadcast_detach_required_struct nas_sv_emm_broadcast_detach_required_ind_struct;
typedef nas_sv_xmm_broadcast_detach_required_struct nas_sv_any_broadcast_detach_required_ind_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool is_allow;
} nas_sv_any_operation_allow_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
nas_sv_any_operation_enum operation_to_be_allowed;
} nas_sv_any_operation_allow_req_struct;
typedef struct {
LOCAL_PARA_HDR
nas_sv_manipulate_connection_enum operation_to_be_exe;
kal_bool is_local_release_later;
} nas_sv_any_manipulate_connection_req_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_bool is_triggered_by_sys_info;
ue_capability_struct capability;
} nas_sv_any_mm_cap_update_req_struct;
typedef struct
{
LOCAL_PARA_HDR
vg_option_enum vg_option_bitmap;
kal_bool is_need_local_release;
kal_bool is_trigger_nr_search; //used for option 2 is turned on and search SA
} rac_nas_sv_vg_option_update_req_struct;
typedef rac_nas_sv_vg_option_update_req_struct nas_sv_any_vg_option_update_req_struct;
typedef l4c_general_modem_configure_set_req_struct nas_sv_any_general_modem_configure_set_req_struct;
typedef l4c_general_modem_configure_set_cnf_struct nas_sv_any_general_modem_configure_set_cnf_struct;
typedef struct {
LOCAL_PARA_HDR
mode_switch_cause_enum cause;
} nwsel_nas_sv_vgmm_global_mode_change_start_req_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_bool is_persistent_pdu_session_exist;
} nas_sv_vgsm_persistent_pdu_session_ind_struct;
typedef nas_sv_vgsm_persistent_pdu_session_ind_struct nwsel_nas_sv_vgsm_persistent_pdu_session_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_bool is_roaming;
nwsel_capability_disabled_reason_enum disabled_reason;
} nwsel_nas_sv_disable_info_update_ntf_struct;
typedef nwsel_nas_sv_disable_info_update_ntf_struct nas_sv_any_disable_info_update_ntf_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool is_searching;
} nwsel_nas_sv_as_plmn_search_report_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_bool is_emc_info_valid;
kal_bool is_nr_emc_service_available;
} nwsel_nas_sv_nr_emc_service_availability_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_bool is_emc_info_valid;
} nwsel_nas_sv_nr_emc_service_availability_rsp_struct;
#if 0
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
#endif
#endif