blob: 3f8cfce53e9061dd6babbea2e5c1fa6bd37598e3 [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:
* ---------
* rac_vgmm_struct.h
*
* Project:
* --------
* 6297
*
* Description:
* ------------
* This file is intends for struct definition between RAC and VGMM
*
* Author:
* -------
* -------
*
*==============================================================================
*******************************************************************************/
/********************************************************************************
* Copyright Statement:
* --------------------
*
* This product has been developed using a protocol stack
* developed by Sasken Communication Technologies Limited.
*
********************************************************************************/
#ifndef _RAC_VGMM_STRUCT_H
#define _RAC_VGMM_STRUCT_H
#include "sim_ps_enum.h"
#include "sim_public_enum.h"
#include "l3_inc_enums.h"
#include "vgnas_nvram_def.h"
#include "l3_inc_local.h"
#include "nas_nvram_editor.h"
#include "l4c2rac_struct.h"
#include "rac_eval_struct.h"
/********************************************
* MACROS *
********************************************/
#define RAC_VGMM_NW_NAME_MAX_LEN MAX_NW_NAME_LENGTH
/********************************************
* TYPE DEFINITIONS & ENUMS *
********************************************/
typedef enum{
RAC_VGMM_EMS_ACQUIRE,
RAC_VGMM_EMS_RE_ACQUIRE,
RAC_VGMM_EMS_RELEASE
}rac_vgmm_emergency_service_request_type_enum;
typedef enum{
RAC_VGMM_EMS_CAUSE_NONE = 0,
RAC_VGMM_EMS_CAUSE_EPDU_FAILURE = 1,
RAC_VGMM_EMS_CAUSE_NUM
}rac_vgmm_emergency_service_request_cause_enum;
typedef enum
{
RAC_VGMM_NORMAL_REGISTRATION,
RAC_VGMM_EMERGENCY_REGISTRATION
} rac_vgmm_emergency_service_reg_type_enum;
typedef enum{
RAC_VGMM_EMS_IND_CAUSE_NONE = 0,
//Success CNF response to EMERGENCY_SERVICE_REQ and EMS IND causes
//that map to this value.
RAC_VGMM_EMS_CNF_SUCCESS = 1,
RAC_VGMM_EMS_IND_ACTIVE = 2,
//Failure CNF response to EMERGENCY_SERVICE_REQ and EMS IND causes
//that map to this value.
RAC_VGMM_EMS_CNF_FAIL = 100,
RAC_VGMM_EMS_IND_BARRED = 101,
RAC_VGMM_EMS_IND_NO_CELL = 102,
RAC_VGMM_EMS_IND_CURRENT_PLMN = 103,
RAC_VGMM_EMS_IND_N1_NOT_ACTIVE = 104,
RAC_VGMM_EMS_IND_INACTIVE = 105,
RAC_VGMM_EMS_IND_ABNORMAL_TRY_OTHER_IPCAN = 106
}rac_vgmm_emergency_service_cnf_cause_enum, rac_vgmm_emergency_service_cnf_result_enum;
typedef enum{
RAC_VGMM_EMSFB_CAUSE_NONE = 0,
//Success CNF response to EMERGENCY_SERVICE_FALLBACK_REQ
RAC_VGMM_EMSFB_CNF_SUCCESS = 1,
//Failure CNF response to EMERGENCY_SERVICE_REQ
RAC_VGMM_EMSFB_CNF_FAIL = 200,
RAC_VGMM_EMSFB_BARRED = 201,
RAC_VGMM_EMSFB_NO_CELL = 202,
RAC_VGMM_EMSFB_CURRENT_PLMN = 203,
RAC_VGMM_EMSFB_N1_NOT_ACTIVE = 204,
RAC_VGMM_EMSFB_SERVICE_REQ_ABORT = 205, // Service request aborted due various reasons
RAC_VGMM_EMSFB_GEMINI_SUSPEND = 206
}rac_vgmm_emergency_fallback_cnf_result_enum,rac_vgmm_emergency_fallback_cnf_cause_enum;
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 pei_imei_spare;
kal_uint8 pei_imei_sv[SIZE_OF_IMEISV];
kal_uint8 nvram_ef_5gs3gpploci[LEN_OF_5GS3GPPLOCI];
kal_uint8 nvram_ef_5gs3gppnsc[LEN_OF_5GS3GPPNSC];
nvram_ef_t3346_timer_info_struct t3346_info;
init_cause_enum init_cause;
#ifdef __FIVEG_NAS__
nvram_ef_vgnas_5gmm_custom_config_struct vgnas_5gmm_custom_config;
nvram_ef_vgnas_5gmm_failure_list_struct vgnas_5gmm_failure_list;
kal_uint8 nvram_ef_5gauthkeys[LEN_OF_5GAUTHKEYS];
#endif
} rac_vgmm_init_req_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_bool full_name_for_nwP;
kal_uint8 full_name_for_nw_len;
kal_uint8 full_name_for_nw[RAC_VGMM_NW_NAME_MAX_LEN];
kal_bool short_name_for_nwP;
kal_uint8 short_name_for_nw_len;
kal_uint8 short_name_for_nw[RAC_VGMM_NW_NAME_MAX_LEN];
kal_bool local_time_zoneP;
kal_uint8 local_time_zone;
kal_bool uni_time_and_local_time_zoneP;
nw_time_zone_time_struct uni_time_and_local_time_zone;
kal_bool nw_daylight_saving_timeP;
kal_uint8 nw_daylight_saving_time;
plmn_id_struct plmn_id;
} rac_vgmm_nw_info_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
vgmm_nw_feature_support_struct vg_nw_feature_support;
} rac_vgmm_nw_feature_support_ind_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool is_ecc_changed; // tell L4 if ecc changed
kal_uint8 no_ecc;
ecc_number_struct ecc_list[MAX_NW_ECC_NUM];
kal_bool is_eenl_changed; // tell L4 if eenl changed
plmn_id_struct eenl_plmn;
} rac_vgmm_nw_ecc_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
sat_nw_rej_info_enum op;
cell_info_and_rat_struct current_cell;
sat_nw_rej_type_enum type;
kal_uint8 rej_cause;
} rac_vgmm_nw_reject_ind_struct;
typedef emmreg_ims_reg_status_update_req_struct rac_vgmm_ims_reg_status_update_req_struct;
typedef struct
{
LOCAL_PARA_HDR
ims_service_type_enum type;
ims_service_status_enum status;
} rac_vgmm_ims_service_status_req_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 trans_id;
ims_service_type_enum type;
ims_service_status_enum status;
kal_uint8 src_id; //source id of this message (IMS or VDM)
} rac_vgmm_ims_uac_req_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 trans_id;
kal_uint8 src_id; //source id of this message (IMS or VDM)
} rac_vgmm_ims_uac_abort_req_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 trans_id;
ims_service_uac_result_enum result;
kal_uint8 src_id; //source id of this message (IMS or VDM)
} rac_vgmm_ims_uac_cnf_struct;
typedef struct
{
LOCAL_PARA_HDR
rac_vgmm_emergency_service_request_type_enum requested_ems_type;
rac_vgmm_emergency_service_request_cause_enum additional_ems_cause;
} rac_vgmm_emergency_service_req_struct;
typedef struct
{
LOCAL_PARA_HDR
rac_vgmm_emergency_service_cnf_result_enum cnf_result;
rac_vgmm_emergency_service_cnf_cause_enum cnf_result_cause;
rac_vgmm_emergency_service_reg_type_enum reg_type;
} rac_vgmm_emergency_service_cnf_struct;
typedef struct
{
LOCAL_PARA_HDR
rac_vgmm_emergency_service_cnf_cause_enum emergency_service_status;
} rac_vgmm_emergency_service_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
} rac_vgmm_emergency_service_fallback_req_struct;
typedef struct
{
LOCAL_PARA_HDR
rac_vgmm_emergency_fallback_cnf_result_enum cnf_result;
rac_vgmm_emergency_fallback_cnf_cause_enum cnf_result_cause;
} rac_vgmm_emergency_service_fallback_cnf_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint64 ac_bitmap;
} rac_vgmm_ims_uac_alleviation_ind_struct;
typedef l4crac_data_service_status_update_req_struct rac_vgmm_data_service_status_update_req_struct;
typedef l4crac_user_selected_main_ps_req_struct rac_vgmm_user_selected_main_ps_req_struct;
#if defined(__IMS_SUPPORT__)
typedef l4crac_ims_config_req_struct rac_vgmm_ims_config_ind_struct;
#endif /* __IMS_SUPPORT__ */
#ifdef __FIVEG_NAS__
typedef struct
{
LOCAL_PARA_HDR
nvram_vgmm_reject_cause_mapping_record_struct mapping_table[NVRAM_VGMM_REJECT_CAUSE_MAPPING_SIZE];
} rac_vgmm_reject_cause_mapping_req_struct;
#endif /* __FIVEG_NAS__ */
typedef struct
{
LOCAL_PARA_HDR
data_speed_support_enum cell_data_speed_support;
cell_info_and_rat_struct cell_info;
} rac_vgmm_cell_info_update_ind_struct;
typedef struct
{
plmn_id_struct plmn_id; // for indicating the PLMN ID
kal_uint8 configured_nssai_length;
kal_uint8 configured_nssai[LEN_OF_NSSAI_LIST_LONG];
kal_uint8 allowed_nssai_3gpp_length;
kal_uint8 allowed_nssai_3gpp[LEN_OF_NSSAI_LIST_SHORT];
kal_uint8 allowed_nssai_non3gpp_length;
kal_uint8 allowed_nssai_non3gpp[LEN_OF_NSSAI_LIST_SHORT];
} plmn_specific_nssai_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 src_id; // for indicating the channel ID
kal_bool clear_nssai;
kal_uint8 default_configured_nssai_length;
kal_uint8 default_configured_nssai[LEN_OF_NSSAI_LIST_LONG];
} rac_vgmm_set_nssai_req_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 src_id; // for indicating the channel ID
kal_bool nssai_set_status;
} rac_vgmm_set_nssai_cnf_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 src_id; // for indicating the channel ID
vgs_nssai_cmd_type_enum cmd_type;// for indicating the triggering AT cmd
kal_uint8 nssai_type_bm;
kal_bool plmn_id_valid;
plmn_id_struct plmn_id;
} rac_vgmm_get_nssai_req_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 src_id; // for indicating the channel ID
vgs_nssai_cmd_type_enum cmd_type;// for indicating the triggering AT cmd
kal_uint8 default_configured_nssai_length;
kal_uint8 default_configured_nssai[LEN_OF_NSSAI_LIST_LONG];
kal_uint8 rejected_nssai_3gpp_length;
kal_uint8 rejected_nssai_3gpp[LEN_OF_NSSAI_LIST_SHORT];
kal_uint8 rejected_nssai_non3gpp_length;
kal_uint8 rejected_nssai_non3gpp[LEN_OF_NSSAI_LIST_SHORT];
plmn_specific_nssai_struct plmn_specific_nssai[NUM_NSSAI_PLMN_IDS];
kal_uint8 preferred_nssai_3gpp_length;
kal_uint8 preferred_nssai_3gpp[LEN_OF_NSSAI_LIST_SHORT];
kal_uint8 preferred_nssai_non3gpp_length;
kal_uint8 preferred_nssai_non3gpp[LEN_OF_NSSAI_LIST_SHORT];
} rac_vgmm_get_nssai_cnf_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 src_id; // for indicating the channel ID
kal_uint8 clear_preferred_nssai; // Bitfield, see SAP for details
kal_uint8 preferred_nssai_3gpp_length;
kal_uint8 preferred_nssai_3gpp[LEN_OF_NSSAI_LIST_SHORT];
kal_uint8 preferred_nssai_non3gpp_length;
kal_uint8 preferred_nssai_non3gpp[LEN_OF_NSSAI_LIST_SHORT];
} rac_vgmm_set_pref_nssai_req_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 src_id; // for indicating the channel ID
kal_bool nssai_set_status;
} rac_vgmm_set_pref_nssai_cnf_struct;
typedef struct
{
LOCAL_PARA_HDR
} rac_vgmm_5gsloci_clear_req_struct;
typedef l4crac_set_ms_sv_req_struct rac_vgmm_set_ms_sv_req_struct;
typedef l4crac_vgmm_proc_failure_ind_struct rac_vgmm_proc_failure_ind_struct;
typedef struct {
vgs_ta_list_type_enum list_type;
plmn_id_struct plmn_id;
kal_uint8 number_of_tac;
kal_uint32 tac_list[VGNAS_MAX_TAI_LIST];
}vgnas_tai_list_single_plmn_struct;
typedef struct {
vgs_ta_list_type_enum list_type;
vgnas_ta_list_struct tai_list;
}vgnas_tai_list_multi_plmn_struct;
/**
* TAI list structure with list type for MBIM_MS_TAI_LIST_INFO.
*/
typedef struct {
/* for TA_LIST_TYPE_00 or TA_LIST_TYPE_01 */
kal_uint8 number_of_tai_list_single_plmn;
vgnas_tai_list_single_plmn_struct tai_list_single_plmn[VGNAS_MAX_TAI_LIST];
/*for TA_LIST_TYPE_10 */
vgnas_tai_list_multi_plmn_struct tai_list_multi_plmn;
} vgnas_tai_list_with_list_type_struct;
/**
* LADN list structure with TAI list for MBIM_MS_TAI_LIST_INFO.
*/
typedef struct {
apn_struct dnn;
vgnas_tai_list_with_list_type_struct tai_list;
} ladn_info_with_tai_list_type_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 default_configured_nssai_length;
kal_uint8 default_configured_nssai[LEN_OF_NSSAI_LIST_LONG];
kal_uint8 rejected_nssai_3gpp_length;
kal_uint8 rejected_nssai_3gpp[LEN_OF_NSSAI_LIST_SHORT];
kal_uint8 rejected_nssai_non3gpp_length;
kal_uint8 rejected_nssai_non3gpp[LEN_OF_NSSAI_LIST_SHORT];
kal_uint8 configured_nssai_length;
kal_uint8 configured_nssai[LEN_OF_NSSAI_LIST_LONG];
kal_uint8 allowed_nssai_3gpp_length;
kal_uint8 allowed_nssai_3gpp[LEN_OF_NSSAI_LIST_SHORT];
kal_uint8 allowed_nssai_non3gpp_length;
kal_uint8 allowed_nssai_non3gpp[LEN_OF_NSSAI_LIST_SHORT];
vgnas_tai_list_with_list_type_struct ta_list;
kal_uint8 num_of_ladn_info;
ladn_info_with_tai_list_type_struct ladn_info[MAX_LADN_INFO];
} rac_vgmm_nw_params_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_bool is_ps_sim_valid;
nas_proc_enum event;
vgmm_cause_enum original_cause;
vgmm_cause_enum converted_cause;
} rac_vgmm_cause_info_ind_struct;
/********************************************
* VARIABLES *
********************************************/
/********************************************
* FUNCTION DECLARATIONS *
********************************************/
#endif /* _RAC_VGMM_STRUCT_H */