blob: f79a1fd59312673adf2aeb9b37831ba5610ffcd2 [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) 2007
*
* 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:
* ---------
* irat_common_struct.h
*
* Project:
* --------
* MOLY
*
* Description:
* ------------
*
*
* Author:
* -------
* -------
*
* ==========================================================================
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
*
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
*
* removed!
* removed!
*
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
*
****************************************************************************/
#ifndef _IRAT_COMMON_STRUCT_H
#define _IRAT_COMMON_STRUCT_H
#include "kal_general_types.h"
#include "mmi_l3_enums.h"
#include "mcd_l3_inc_gprs_struct.h"
#include "ps_public_enum.h"
#include "stack_config.h"
#include "l3_inc_enums.h"
#include "l3_inc_local.h"
#include "irat_common_enums.h"
#include "mcd_l3_inc_struct.h"
#include "as_inter_core_struct.h"
#include "global_type.h"
#include "general_qos_struct.h"
#define MAX_VAL(VAL_A, VAL_B) (((VAL_A) > (VAL_B)) ? (VAL_A):(VAL_B))
#if defined(GPRS_MAX_PDP_SUPPORT) && defined(LTE_MAX_EPSB_SUPPORT)
#define MAX_TRANSFERRED_BEARER_NUM MAX_VAL(GPRS_MAX_PDP_SUPPORT, LTE_MAX_EPSB_SUPPORT)
#elif defined(LTE_MAX_EPSB_SUPPORT)
#define MAX_TRANSFERRED_BEARER_NUM LTE_MAX_EPSB_SUPPORT // fail safe, this line has no meaning. just prevent compile error
#else
#define MAX_TRANSFERRED_BEARER_NUM GPRS_MAX_PDP_SUPPORT // fail safe, this line has no meaning. just prevent compile error
#endif
//#define MAX_BEARER_CTXT_NUM MAX_TRANSFERRED_BEARER_NUM
#define MAX_BEARER_CTXT_NUM 11
#define MAX_BEARER_ID 16
typedef struct {
kal_uint8 ti_len;
kal_uint8 ti[UGSM_TI_IE_LEN];
}irat_ti_struct;
typedef struct {
kal_bool cause_present;
ps_cause_enum cause_value;
}irat_addr_type_limitation_cause_struct;
typedef struct
{
kal_uint8 qci;
} simple_eps_qos_struct;
typedef struct {
// if iRAT, source SM need to fill the following fields
irat_transfer_bearer_type_enum bearer_type;
// NSAPI / EBI (range is 5~15)
kal_uint8 bearer_id;
// NSAPI / EBI (range is 5~15)
kal_uint8 linked_bearer_id;
// secondary bearer set ip_addr_type = NULL_TYPE
ip_addr_struct ip_addr;
// secondary bearer doesn't need to set this field
apn_struct apn;
// this parameter is critical to 23G. SM can just send MAP FAIL to ESM when this parameter is not present
kal_bool is_ug_qos_present;
// negotiated qos parameter used in 23G
qos_struct ug_qos;
kal_bool is_eps_qos_present;
// When ESM transfer more than GPRS_MAX_PDP_SUPPORT contexts to SM,
// SM need to use eps_qos to decide which contexts need to be mapped failed and inform ESM to local release it.
eps_qos_struct eps_qos;
// this parameter is critical to 2G. if iRAT is 4G2, SM can just send MAP FAIL to ESM when this parameter is not present
kal_bool is_llc_sapi_present;
kal_uint8 llc_sapi;
// this parameter is critical to 2G. if iRAT is 4G2, SM can just send MAP FAIL to ESM when this parameter is not present
kal_bool is_radio_priority_present;
kal_uint8 radio_priority;
// this parameter is critical to 2G. if iRAT is 4G2, SM can just send MAP FAIL to ESM when this parameter is not present
kal_bool is_pfi_present;
kal_uint8 pfi;
// this parameter is critical to 23G. SM can just send MAP FAIL to ESM when this parameter is not present
kal_bool is_ti_present;
irat_ti_struct ti;
irat_addr_type_limitation_cause_struct addr_type_limitation_cause;
bearer_service_type_enum bearer_service_type;
/* only used in 23G4 inter-RAT, when tcm_requested_deact==KAL_TRUE, this PDP must map fail, used to perform local deact */
kal_bool tcm_requested_deact;
//BCM and ETFT parameters to maintain sync between SM and ESM
bcm_enum bcm_info;
etft_enum etft_info;
}bearer_ctxt_struct;
typedef struct {
kal_uint8 total_number; // Total number of PDP context/EPS bearer which will transfer to target RAT
bearer_ctxt_struct context[MAX_TRANSFERRED_BEARER_NUM]; // bearer context which will transfer to target RAT
}bearer_ctxt_transfer_struct;
typedef struct {
// NSAPI / EBI (range is 5~15)
kal_uint8 bearer_id;
// this parameter is critical to 23G. SM can just send MAP FAIL to ESM when this parameter is not present
kal_bool is_ug_qos_present;
// negotiated qos parameter used in 23G
qos_struct ug_qos;
// this parameter is critical to 2G. if iRAT is 4G2, SM can just send MAP FAIL to ESM when this parameter is not present
kal_bool is_llc_sapi_present;
kal_uint8 llc_sapi;
// this parameter is critical to 2G. if iRAT is 4G2, SM can just send MAP FAIL to ESM when this parameter is not present
kal_bool is_radio_priority_present;
kal_uint8 radio_priority;
// this parameter is critical to 2G. if iRAT is 4G2, SM can just send MAP FAIL to ESM when this parameter is not present
kal_bool is_pfi_present;
kal_uint8 pfi;
// this parameter is critical to 23G. SM can just send MAP FAIL to ESM when this parameter is not present
kal_bool is_ti_present;
irat_ti_struct ti;
}bearer_legacy_rat_para_struct;
typedef struct
{
sec_ctxt_domain_id_enum domain_id;
kal_uint8 umts_ciphering_key[CK_LEN];
kal_uint8 umts_integrity_key[IK_LEN];
kal_uint8 gsm_ciphering_key[KC_LEN];
kal_uint8 gsm_ciphering_key128[KC128_LEN];
}security_context_struct;
/* Merged from GSM / UMTS Multimode development branch **********/
/* Common structure */
/* Measurement request/confirm related: GAS/UAS to EAS */
typedef struct
{
kal_uint16 physical_cell_id;
kal_int16 cpich_rscp;
kal_int16 cpich_ec_n0;
} ir_reported_fdd_cells_csg_meas_info;
typedef struct
{
kal_uint16 uarfcn;
kal_int16 uarfcn_rssi;
kal_uint8 num_reported_cells;
ir_reported_fdd_cells_csg_meas_info ir_reported_fdd_cells_csg_meas_info_list[MAX_NR_OF_CSG_CELLS_IN_CELL_LIST];
} ir_umts_carrier_csg_meas_result_struct;
typedef struct FDD_meas_UmtsCellList
{
kal_uint8 numElements;
meas_UmtsCellListPerCarrier element[FDD_MAX_NUM_MEASURED_UMTS_CARRIERS];
}
FDD_meas_UmtsCellList;
typedef struct TDD_meas_UmtsCellList
{
kal_uint8 numElements;
meas_UmtsCellListPerCarrier element[TDD_MAX_NUM_MEASURED_UMTS_CARRIERS];
}
TDD_meas_UmtsCellList;
typedef struct
{
kal_bool is_valid;
EARFCN earfcn;
kal_uint16 pci;
kal_uint32 cell_id;
kal_bool sib2_hs_flg;
kal_bool el1_hst_md_flg;
kal_uint32 valid_duration;
} ir_lte_scell_struct;
/* This structure represents the redirection info from GSM or UMTS to LTE */
typedef struct
{
EARFCN earfcn;
kal_bool target_cell_valid_flag;
kal_uint16 target_cell;
kal_bool not_allowed_exist_flag;
/* It is a LTE PCI bit map (0-503), least significant bit of not_allowed_cells [0]
* represents PCI-0, and the most significant bit of not_allowed_cells [0]
* represents PCI-7.
* The cell IDs (PCI) of not allowed cells are set to "1" and the cell IDs
* (PCI) of those other than not allowed cells are set to "0".
*/
kal_uint8 not_allowed_cell[PCI_BITMAP_MAX_NUM];
} lte_redirect_info;
#ifdef __UMTS_FDD_MODE__
typedef struct
{
kal_uint16 uarfcn;
kal_uint16 scrambling_code;
kal_bool tx_diversity;
} ts_umts_fdd_cell;
#endif
#ifdef __UMTS_TDD128_MODE__
typedef struct
{
kal_uint16 uarfcn;
kal_uint16 cell_parameter;
kal_bool tstd;
kal_bool sctd;
} ts_umts_tdd_cell;
#endif
typedef union
{
ts_umts_fdd_cell fdd_cell;
#ifdef __UMTS_TDD128_MODE__
ts_umts_tdd_cell tdd_cell;
#endif
} ts_umts_target_cell_union;
typedef struct
{
kal_bool is_best_cell_suitable_allowed_CSG;
kal_bool is_best_cell_allowed_hybrid;
ir_umts_carrier_csg_meas_result_struct ir_umts_carrier_csg_meas_result;
} ts_3G_csg_ucell_evluation_result;
typedef struct
{
kal_bool bsic_present; /* if TRUE bsic is present */
kal_uint8 bsic; /* Optional, present if bsic_present is TRUE */
te_gsm_band_indicator gsm_band_indicator;
kal_uint16 bcch_arfcn;
} GSM_TargetCellInfo;
#if defined(__UMTS_FDD_MODE__) || defined(__UMTS_TDD128_MODE__) // BJM
typedef struct
{
kal_uint8 numElements;
GSM_TargetCellInfo target_gcell_info[MAX_TARGET_GSM_CELLS_NUM];
} uas_gas_redirectInfo;
#endif /* defined(__UMTS_FDD_MODE__) || defined(__UMTS_TDD128_MODE__) */
typedef struct
{
te_gsm_band_indicator gsm_band_indicator;
kal_uint8 *ARFCN_bitmap;
} eas_gas_redirectInfo;
#if defined(__UMTS_FDD_MODE__) || defined(__UMTS_TDD128_MODE__) // BJM
typedef union
{
uas_gas_redirectInfo uas_redirectInfo;
eas_gas_redirectInfo eas_redirectInfo;
} redirect_info_union;
#endif /* defined(__UMTS_FDD_MODE__) || defined(__UMTS_TDD128_MODE__) */
#if (defined(__UMTS_R5__) && defined(__GERAN_R5__))
typedef struct
{
kal_uint8 numOctets;
kal_uint8 stringData[23]; /* Only the first numOctets elements are valid */
} GERAN_SystemInfoBlock;
typedef struct
{
kal_uint8 numElements;
GERAN_SystemInfoBlock element[MAX_GSM_SYS_INFO_BLOCKS_NUM]; /* Only the first numElements are valid */
} GERAN_SystemInformation;
#endif
#if defined(__UMTS_FDD_MODE__) || defined(__UMTS_TDD128_MODE__) // BJM
typedef struct GSM_Redirect_Info
{
te_ir_redirection_type redirection_type;
redirect_info_union redirection_info;
} GSM_Redirect_Info;
#endif /* defined(__UMTS_FDD_MODE__) || defined(__UMTS_TDD128_MODE__) */
#if (defined(__UMTS_R5__) && defined(__GERAN_R5__)) // BJM
typedef struct
{
GERAN_SysInfoType sys_info_type;
GERAN_SystemInformation sys_info;
} te_ir_geran_sys_info;
typedef struct
{
kal_uint8 bsic;
te_gsm_band_indicator gsm_band_indicator;
kal_uint16 bcch_arfcn;
te_ir_geran_sys_info gsm_sys_info;
} GSM_TargetCell_SI_Info;
#endif /* (defined(__UMTS_R5__) && defined(__GERAN_R5__)) */
#if defined(__UMTS_FDD_MODE__) || defined(__UMTS_TDD128_MODE__) // BJM
typedef union
{
GSM_TargetCellInfo target_gcell_reselect_info;
GSM_Redirect_Info target_gcell_redirect_list;
} GSM_TargetCell_Info_union;
typedef struct
{
kal_uint8 numElements;
GSM_TargetCell_SI_Info target_gcell_SI_info[MAX_TARGET_GSM_CELLS_NUM];
} GSM_TargetCell_SI_Info_List;
typedef union
{
te_ir_geran_sys_info target_gcell_reselect_SI_info;
GSM_TargetCell_SI_Info_List target_gcell_redirect_SI_list;
} GSM_TargetCell_SI_Info_union;
#endif /* defined(__UMTS_FDD_MODE__) || defined(__UMTS_TDD128_MODE__) */
typedef struct
{
te_cn_domain_cipher_status cipher_status;
/* The following flag is only used when 2G -> 3G HO and ciphering is on.
* Normally, this flag should be set to KAL_FALSE. If GAS got a new
* ciphering key, but this hasn't been activated yet (GAS hasn't received
* CIPHER COMMAND), and then 2G -> 3G HO happens, 3G NW will use OLD key
* for the folllowing ciphering. Thus, at this case, GAS should set this
* flag to TRUE. RRCE will use OLD key instead of NEW key for ciphering.
* Please refer to 25.331 CR 2567
*/
kal_bool is_new_cipher_key_received;
} ts_ciphering_info;
typedef struct
{
kal_uint16 pci;
kal_int16 rsrp;
kal_int16 rsrq;
} ecell_meas_result_struct;
typedef struct
{
EARFCN earfcn;
kal_bool is_best_cell_suitable_allowed_CSG;
kal_bool is_best_cell_allowed_hybrid;
ecell_meas_result_struct ecell_meas_result;
} csg_freq_search_result_struct;
// RAT change from 23G to 4G, NAS context transfer(MM->EMM)
typedef struct
{
// UAS -> EMM
kal_uint8 nas_security_param[NAS_SECURITY_PARAM_LEN];
// MM -> EMM
kal_bool is_gmm_ready_connected;
tau_required_enum tau_required;
kal_uint8 cksn;
security_context_struct security_context;
kal_bool is_ptmsi_valid;
kal_uint8 ptmsi[PTMSI_LEN];
kal_bool is_ptmsi_sig_valid;
kal_uint8 ptmsi_sig[PTMSI_SIG_LEN];
kal_bool is_rai_valid;
rai_struct rai;
kal_bool is_lai_valid;
lai_struct lai;
kal_bool is_tmsi_valid;
kal_uint8 tmsi[TMSI_LEN];
gsm_update_status_enum mm_update_status;
kal_bool is_ecc_list_valid;
plmn_id_struct ecc_list_plmn;
gsm_state_enum gsm_attach_state;
kal_bool is_ps_suspended;
kal_bool is_prev_rau_suspended; // [2->4 only] To notify EMM whether there is a suspended/unfinished RAU
#ifdef __NG_ECALL_SUPPORT__
kal_bool is_t3242_running;
kal_uint32 t3242_remaining_time;
kal_bool is_t3243_running;
kal_uint32 t3243_remaining_time;
#endif
} mm2emm_irat_info_struct;
// RAT change from 4G to 23G, NAS context transfer(EMM->MM)
typedef struct
{
// ERRC -> RATCM (GAS/UAS?)
ho_from_lte_type_enum ir_ho_type;
kal_bool gsm_cipher_key_infoP;
kal_bool gsm_cipher_key128_infoP;
csfb_indicator_enum csfb_indicator;
// EMM -> RATCM
loopback_mode_status_enum loopback_mode_status;
// EMM to MM
kal_bool rau_required;
kal_uint8 nas_ksi;
security_context_struct security_context[2];
kal_bool is_mapped_ptmsi_valid;
kal_uint8 mapped_ptmsi[PTMSI_LEN];
kal_bool is_mapped_ptmsi_sig_valid;
kal_uint8 mapped_ptmsi_sig[PTMSI_SIG_LEN];
kal_bool is_mapped_rai_valid;
rai_struct mapped_rai;
mt_csfb_type_enum mt_csfb_type;
kal_bool is_ecc_list_valid;
plmn_id_struct ecc_list_plmn;
kal_bool is_eia0_used;
conn_rel_ind_cause_enum redir_cause;
kal_bool is_lte_rrc_conn_failure;
#ifdef __NG_ECALL_SUPPORT__
kal_bool is_t3444_running;
kal_uint32 t3444_remaining_time;
kal_bool is_t3445_running;
kal_uint32 t3445_remaining_time;
#endif
} emm2mm_irat_info_struct;
typedef struct
{
// SM -> ESM
kal_bool sm_deactivate_isr;
} sm2esm_irat_info_struct;
typedef struct {
kal_uint8 total_number; // Total number of active EPS bearer on ESM
bearer_legacy_rat_para_struct parameters[MAX_TRANSFERRED_BEARER_NUM];
}sm_esm_bearer_legacy_para_struct;
typedef struct
{
// ESM -> MM
kal_bool esm_deactivate_isr;
// ESM -> SM
kal_uint16 nsapi_status;
// ESM -> SM
sm_esm_bearer_legacy_para_struct bearer_legacy_para;
} esm2sm_irat_info_struct;
/* __4G_BACKGROUND_SEARCH__ begin*/
typedef struct
{
EARFCN earfcn;
kal_uint16 pci;
kal_int16 rsrp;
kal_int16 rsrq;
kal_int16 sinr;
kal_int16 rs_sinr;
kal_bool rsrq_on_all_symbols;
kal_bool rsrq_wideband;
} eas_cell_info;
/* 3G4 background search */
typedef struct
{
kal_uint16 uarfcn;
kal_uint16 pci;
kal_int16 rscp;
/*FDD:in qdBm.Range:-480~-100 means (-120 ~-25)dBm in 0.25 dB Step.*/
/*TDD:in qdBm.Range:-500~-100 means (-125 ~-25)dBm in 0.25 dB Step.*/
//#ifdef __UMTS_FDD_MODE__
kal_int16 ec_n0; /*Ec/N0, in qdB. Range: -100~0 means -25~0 dB in 0.25 dB setp.*/
//#endif //__UMTS_FDD_MODE__
} uas_cell_info;
/*2G4 background search */
typedef struct
{
kal_uint16 garfcn;
kal_uint16 bsic;
te_gsm_band_indicator gsm_band_ind;
kal_int32 rssi;
} gas_cell_info;
/* __4G_BACKGROUND_SEARCH__ end*/
typedef struct {
kal_uint8 epsbearer_id;
kal_uint8 rb_index;
}enasas_epsbearer_mapping_struct;
#define ENASAS_MAX_DRB 11
typedef struct {
kal_uint8 num_of_bearer;
enasas_epsbearer_mapping_struct bearer[ENASAS_MAX_DRB];
}enasas_add_epsbearer_list_struct;
/* TS 24.501, 9.11.2.9 S1 mode to N1 mode NAS transparent container, the size of the value part */
#define ENASAS_MAX_SIZE_IRAT_4G5_NAS_CONTAINER (10)
typedef struct
{
kal_uint16 data_len;
kal_uint8 data[ENASAS_MAX_SIZE_IRAT_4G5_NAS_CONTAINER];
} irat_nas_container_octet_string_struct, errc_nrrc_nas_container_octet_string_struct;
#define NRRC_NAS_SECURITY_PARAM_FROM_NR_LENGTH (1)
/* 5G4 */
typedef struct {
kal_uint8 nas_security_param_from_nr[
NRRC_NAS_SECURITY_PARAM_FROM_NR_LENGTH];
} irat_container_nrrc_to_vgmm_struct;
typedef struct {
kal_bool is_kasme_valid; // is_kasme_valid shall be KAL_TRUE when in IRAT HO case
kal_uint8 kasme[KASME_NUM];
} irat_container_emm_info_struct, irat_container_emm_to_errc_struct;
/* 4G5 */
typedef struct {
kal_bool is_nas_container_valid; // is_nas_container_valid and is_nh_valid will be KAL_TRUE when in IRAT HO case
irat_nas_container_octet_string_struct nas_container;
kal_bool is_nh_valid;
kal_uint8 NH[NH_NUM];
} irat_container_errc_to_emm_struct;
typedef struct {
nrrc_kamf_struct kamf;
kal_uint32 ul_nas_count;
} irat_container_vgmm_to_nrrc_struct;
#endif /* _IRAT_COMMON_STRUCT_H */