216 lines
8.8 KiB
C
216 lines
8.8 KiB
C
/*
|
|
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
|
* contributor license agreements. See the NOTICE file distributed with
|
|
* this work for additional information regarding copyright ownership.
|
|
* The OpenAirInterface Software Alliance licenses this file to You under
|
|
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
|
* except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.openairinterface.org/?page_id=698
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*-------------------------------------------------------------------------------
|
|
* For more information about the OpenAirInterface (OAI) Software Alliance:
|
|
* contact@openairinterface.org
|
|
*/
|
|
|
|
/* \file rrc_defs.h
|
|
* \brief RRC structures/types definition
|
|
* \author R. Knopp, K.H. HSU
|
|
* \date 2018
|
|
* \version 0.1
|
|
* \company Eurecom / NTUST
|
|
* \email: knopp@eurecom.fr, kai-hsiang.hsu@eurecom.fr
|
|
* \note
|
|
* \warning
|
|
*/
|
|
|
|
#ifndef __OPENAIR_NR_RRC_DEFS_H__
|
|
#define __OPENAIR_NR_RRC_DEFS_H__
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#include "platform_types.h"
|
|
|
|
#include "NR_MAC_UE/mac.h"
|
|
#include "NR_MAC_COMMON/nr_mac.h"
|
|
#include "rrc_list.h"
|
|
#include "NR_asn_constant.h"
|
|
#include "NR_MeasConfig.h"
|
|
#include "NR_CellGroupConfig.h"
|
|
#include "NR_RadioBearerConfig.h"
|
|
#include "NR_RLC-BearerConfig.h"
|
|
#include "NR_TAG.h"
|
|
#include "NR_asn_constant.h"
|
|
#include "NR_SchedulingRequestToAddMod.h"
|
|
#include "NR_MIB.h"
|
|
#include "NR_SIB1.h"
|
|
#include "NR_BCCH-BCH-Message.h"
|
|
#include "NR_DL-DCCH-Message.h"
|
|
#include "../NR/nr_rrc_defs.h"
|
|
|
|
#define NB_NR_UE_INST 1
|
|
#define NB_CNX_UE 2//MAX_MANAGED_RG_PER_MOBILE
|
|
#define NB_SIG_CNX_UE 2 //MAX_MANAGED_RG_PER_MOBILE
|
|
|
|
#define MAX_MEAS_OBJ 6
|
|
#define MAX_MEAS_CONFIG 6
|
|
#define MAX_MEAS_ID 6
|
|
|
|
typedef uint32_t channel_t;
|
|
|
|
typedef enum {
|
|
nr_SecondaryCellGroupConfig_r15=0,
|
|
nr_RadioBearerConfigX_r15=1
|
|
} nsa_message_t;
|
|
|
|
#define MAX_UE_NR_CAPABILITY_SIZE 255
|
|
typedef struct OAI_NR_UECapability_s {
|
|
uint8_t sdu[MAX_UE_NR_CAPABILITY_SIZE];
|
|
uint8_t sdu_size;
|
|
NR_UE_NR_Capability_t *UE_NR_Capability;
|
|
} OAI_NR_UECapability_t;
|
|
|
|
typedef enum requested_SI_List_e {
|
|
SIB2 = 0x1,
|
|
SIB3 = 0x2,
|
|
SIB4 = 0x4,
|
|
SIB5 = 0x8,
|
|
SIB6 = 0x16,
|
|
SIB7 = 0x32,
|
|
SIB8 = 0x64,
|
|
SIB9 = 0x128
|
|
} requested_SI_List_t;
|
|
|
|
// 3GPP TS 38.300 Section 9.2.6
|
|
typedef enum RA_trigger_e {
|
|
RA_NOT_RUNNING,
|
|
INITIAL_ACCESS_FROM_RRC_IDLE,
|
|
RRC_CONNECTION_REESTABLISHMENT,
|
|
DURING_HANDOVER,
|
|
NON_SYNCHRONISED,
|
|
TRANSITION_FROM_RRC_INACTIVE,
|
|
TO_ESTABLISH_TA,
|
|
REQUEST_FOR_OTHER_SI,
|
|
BEAM_FAILURE_RECOVERY,
|
|
} RA_trigger_t;
|
|
|
|
typedef struct NR_UE_RRC_INST_s {
|
|
|
|
NR_MeasConfig_t *meas_config;
|
|
NR_CellGroupConfig_t *cell_group_config;
|
|
NR_RadioBearerConfig_t *radio_bearer_config;
|
|
|
|
NR_MeasObjectToAddMod_t *MeasObj[NB_CNX_UE][MAX_MEAS_OBJ];
|
|
NR_ReportConfigToAddMod_t *ReportConfig[NB_CNX_UE][MAX_MEAS_CONFIG];
|
|
NR_QuantityConfig_t *QuantityConfig[NB_CNX_UE];
|
|
NR_MeasIdToAddMod_t *MeasId[NB_CNX_UE][MAX_MEAS_ID];
|
|
NR_MeasGapConfig_t *measGapConfig[NB_CNX_UE];
|
|
NR_RSRP_Range_t s_measure;
|
|
NR_SRB_ToAddMod_t *SRB1_config[NB_CNX_UE];
|
|
NR_SRB_ToAddMod_t *SRB2_config[NB_CNX_UE];
|
|
NR_DRB_ToAddMod_t *DRB_config[NB_CNX_UE][8];
|
|
rb_id_t *defaultDRB; // remember the ID of the default DRB
|
|
|
|
NR_SRB_INFO Srb0[NB_SIG_CNX_UE];
|
|
NR_SRB_INFO_TABLE_ENTRY Srb1[NB_CNX_UE];
|
|
NR_SRB_INFO_TABLE_ENTRY Srb2[NB_CNX_UE];
|
|
|
|
uint8_t MBMS_flag;
|
|
OAI_NR_UECapability_t *UECap;
|
|
uint8_t *UECapability;
|
|
uint8_t UECapability_size;
|
|
|
|
RA_trigger_t ra_trigger;
|
|
BIT_STRING_t requested_SI_List;
|
|
|
|
NR_SystemInformation_t *si[NB_CNX_UE];
|
|
NR_SIB1_t *sib1[NB_CNX_UE];
|
|
NR_SIB2_t *sib2[NB_CNX_UE];
|
|
NR_SIB3_t *sib3[NB_CNX_UE];
|
|
NR_SIB4_t *sib4[NB_CNX_UE];
|
|
NR_SIB5_t *sib5[NB_CNX_UE];
|
|
NR_SIB6_t *sib6[NB_CNX_UE];
|
|
NR_SIB7_t *sib7[NB_CNX_UE];
|
|
NR_SIB8_t *sib8[NB_CNX_UE];
|
|
NR_SIB9_t *sib9[NB_CNX_UE];
|
|
NR_SIB10_r16_t *sib10[NB_CNX_UE];
|
|
NR_SIB11_r16_t *sib11[NB_CNX_UE];
|
|
NR_SIB12_r16_t *sib12[NB_CNX_UE];
|
|
NR_SIB13_r16_t *sib13[NB_CNX_UE];
|
|
NR_SIB14_r16_t *sib14[NB_CNX_UE];
|
|
plmn_t plmnID;
|
|
|
|
NR_UE_RRC_INFO Info[NB_SIG_CNX_UE];
|
|
|
|
NR_MIB_t *mib;
|
|
|
|
/* KeNB as computed from parameters within USIM card */
|
|
uint8_t kgnb[32];
|
|
NR_CipheringAlgorithm_t cipheringAlgorithm;
|
|
e_NR_IntegrityProtAlgorithm integrityProtAlgorithm;
|
|
|
|
// lists
|
|
// CellGroupConfig.rlc-BearerToAddModList
|
|
RRC_LIST_TYPE(NR_RLC_BearerConfig_t, NR_maxLC_ID) RLC_Bearer_Config_list;
|
|
// CellGroupConfig.mac-CellGroupConfig.schedulingrequest
|
|
RRC_LIST_TYPE(NR_SchedulingRequestToAddMod_t, NR_maxNrofSR_ConfigPerCellGroup) SchedulingRequest_list;
|
|
// CellGroupConfig.mac-CellGroupConfig.TAG
|
|
RRC_LIST_TYPE(NR_TAG_t, NR_maxNrofTAGs) TAG_list;
|
|
// CellGroupConfig.spCellConfig.spCellConfigDedicated.tdduldlslotconfig
|
|
RRC_LIST_TYPE(NR_TDD_UL_DL_SlotConfig_t, NR_maxNrofSlots) TDD_UL_DL_SlotConfig_list;
|
|
|
|
// CellGroupConfig.spCellConfig.spCellConfigDedicated.bwps
|
|
RRC_LIST_TYPE(NR_BWP_Downlink_t, NR_maxNrofBWPs) BWP_Downlink_list;
|
|
//BWP-DownlinkDedicated 0=INIT-DL-BWP, 1..4 for DL-BWPs
|
|
// CellGroupConfig.spCellConfig.spCellConfigDedicated.initialdlbwp.pdcchconfig.controlresourceset
|
|
RRC_LIST_TYPE(NR_ControlResourceSet_t, 3) ControlResourceSet_list[5];
|
|
// CellGroupConfig.spCellConfig.spCellConfigDedicated.initialdlbwp.pdcchconfig.searchspace
|
|
RRC_LIST_TYPE(NR_SearchSpace_t, 10) SearchSpace_list[5];
|
|
// CellGroupConfig.spCellConfig.spCellConfigDedicated.initialdlbwp.pdcchconfig.slotformatindicator
|
|
RRC_LIST_TYPE(NR_SlotFormatCombinationsPerCell_t, NR_maxNrofAggregatedCellsPerCellGroup) SlotFormatCombinationsPerCell_list[5];
|
|
// CellGroupConfig.spCellConfig.spCellConfigDedicated.initialdlbwp.pdschconfig
|
|
RRC_LIST_TYPE(NR_TCI_State_t, NR_maxNrofTCI_States) TCI_State_list[5];
|
|
// CellGroupConfig.spCellConfig.spCellConfigDedicated.initialdlbwp.pdschconfig
|
|
RRC_LIST_TYPE(NR_RateMatchPattern_t, NR_maxNrofRateMatchPatterns) RateMatchPattern_list[5];
|
|
// CellGroupConfig.spCellConfig.spCellConfigDedicated.initialdlbwp.pdschconfig
|
|
RRC_LIST_TYPE(NR_ZP_CSI_RS_Resource_t, NR_maxNrofZP_CSI_RS_Resources) ZP_CSI_RS_Resource_list[5];
|
|
// CellGroupConfig.spCellConfig.spCellConfigDedicated.initialdlbwp.pdschconfig
|
|
RRC_LIST_TYPE(NR_ZP_CSI_RS_ResourceSet_t, NR_maxNrofZP_CSI_RS_ResourceSets) Aperidic_ZP_CSI_RS_ResourceSet_list[5];
|
|
// CellGroupConfig.spCellConfig.spCellConfigDedicated.initialdlbwp.pdschconfig
|
|
RRC_LIST_TYPE(NR_ZP_CSI_RS_ResourceSet_t, NR_maxNrofZP_CSI_RS_ResourceSets) SP_ZP_CSI_RS_ResourceSet_list[5];
|
|
|
|
// TODO check the way to implement mutiple list inside bwps
|
|
// uplink bwp also
|
|
|
|
// CellGroupConfig.spCellConfig.spCellConfigDedicated
|
|
RRC_LIST_TYPE(NR_NZP_CSI_RS_Resource_t, NR_maxNrofNZP_CSI_RS_Resources) NZP_CSI_RS_Resource_list;
|
|
// CellGroupConfig.spCellConfig.spCellConfigDedicated
|
|
RRC_LIST_TYPE(NR_NZP_CSI_RS_ResourceSet_t, NR_maxNrofNZP_CSI_RS_ResourceSets) NZP_CSI_RS_ResourceSet_list;
|
|
// CellGroupConfig.spCellConfig.spCellConfigDedicated
|
|
RRC_LIST_TYPE(NR_CSI_IM_Resource_t, NR_maxNrofCSI_IM_Resources) CSI_IM_Resource_list;
|
|
// CellGroupConfig.spCellConfig.spCellConfigDedicated
|
|
RRC_LIST_TYPE(NR_CSI_IM_ResourceSet_t, NR_maxNrofCSI_IM_ResourceSets) CSI_IM_ResourceSet_list;
|
|
// CellGroupConfig.spCellConfig.spCellConfigDedicated
|
|
RRC_LIST_TYPE(NR_CSI_SSB_ResourceSet_t, NR_maxNrofCSI_SSB_ResourceSets) CSI_SSB_ResourceSet_list;
|
|
// CellGroupConfig.spCellConfig.spCellConfigDedicated
|
|
RRC_LIST_TYPE(NR_CSI_ResourceConfig_t, NR_maxNrofCSI_ResourceConfigurations) CSI_ResourceConfig_list;
|
|
// CellGroupConfig.spCellConfig.spCellConfigDedicated
|
|
RRC_LIST_TYPE(NR_CSI_ReportConfig_t, NR_maxNrofCSI_ReportConfigurations) CSI_ReportConfig_list;
|
|
|
|
long selected_plmn_identity;
|
|
Rrc_State_NR_t nrRrcState;
|
|
Rrc_Sub_State_NR_t nrRrcSubState;
|
|
as_nas_info_t initialNasMsg;
|
|
} NR_UE_RRC_INST_t;
|
|
|
|
#endif
|
|
/** @} */
|