Improvements in TDD configuration Including using the frame structure introduced in !2799 also at the UE
120 lines
5.9 KiB
C
120 lines
5.9 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 nr_rrc_config.c
|
|
* \brief rrc config for gNB
|
|
* \author Raymond Knopp, WEI-TAI CHEN
|
|
* \date 2018
|
|
* \version 1.0
|
|
* \company Eurecom, NTUST
|
|
* \email: raymond.knopp@eurecom.fr, kroempa@gmail.com
|
|
*/
|
|
|
|
#ifndef __NR_RRC_CONFIG_H__
|
|
#define __NR_RRC_CONFIG_H__
|
|
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
#include "NR_BCCH-BCH-Message.h"
|
|
#include "NR_BCCH-DL-SCH-Message.h"
|
|
#include "NR_CellGroupConfig.h"
|
|
#include "NR_UE-NR-Capability.h"
|
|
#include "NR_UL-CCCH-Message.h"
|
|
#include "PHY/defs_common.h"
|
|
#include "f1ap_messages_types.h"
|
|
struct NR_MeasurementTimingConfiguration;
|
|
struct NR_PDSCH_TimeDomainResourceAllocationList;
|
|
|
|
// forward declaration of MAC configuration parameters, definition is included in C file
|
|
struct nr_mac_config_t;
|
|
typedef struct nr_mac_config_t nr_mac_config_t;
|
|
|
|
struct nr_mac_timers;
|
|
typedef struct nr_mac_timers nr_mac_timers_t;
|
|
|
|
void nr_rrc_config_dl_tda(struct NR_PDSCH_TimeDomainResourceAllocationList *pdsch_TimeDomainAllocationList,
|
|
frame_type_t frame_type,
|
|
NR_TDD_UL_DL_ConfigCommon_t *tdd_UL_DL_ConfigurationCommon,
|
|
int curr_bwp);
|
|
void nr_rrc_config_ul_tda(NR_ServingCellConfigCommon_t *scc, int min_fb_delay);
|
|
NR_SearchSpace_t *rrc_searchspace_config(bool is_common,
|
|
int searchspaceid,
|
|
int coresetid,
|
|
const int num_agg_level_candidates[NUM_PDCCH_AGG_LEVELS]);
|
|
|
|
void prepare_sim_uecap(NR_UE_NR_Capability_t *cap,
|
|
NR_ServingCellConfigCommon_t *scc,
|
|
int numerology,
|
|
int rbsize,
|
|
int mcs_table_dl,
|
|
int mcs_table_ul);
|
|
|
|
NR_BCCH_BCH_Message_t *get_new_MIB_NR(const NR_ServingCellConfigCommon_t *scc);
|
|
void free_MIB_NR(NR_BCCH_BCH_Message_t *mib);
|
|
int encode_MIB_NR(NR_BCCH_BCH_Message_t *mib, int frame, uint8_t *buf, int buf_size);
|
|
int encode_MIB_NR_setup(NR_MIB_t *mib, int frame, uint8_t *buf, int buf_size);
|
|
|
|
struct NR_MeasurementTimingConfiguration;
|
|
struct NR_MeasurementTimingConfiguration *get_new_MeasurementTimingConfiguration(const NR_ServingCellConfigCommon_t *scc);
|
|
int encode_MeasurementTimingConfiguration(const struct NR_MeasurementTimingConfiguration *mtc, uint8_t *buf, int buf_len);
|
|
void free_MeasurementTimingConfiguration(struct NR_MeasurementTimingConfiguration *mtc);
|
|
|
|
#define NR_MAX_SIB_LENGTH 2976 // 3GPP TS 38.331 section 5.2.1
|
|
NR_BCCH_DL_SCH_Message_t *get_SIB1_NR(const NR_ServingCellConfigCommon_t *scc,
|
|
const f1ap_plmn_t *plmn,
|
|
uint64_t cellID,
|
|
int tac,
|
|
const nr_mac_timers_t *timer_config);
|
|
void free_SIB1_NR(NR_BCCH_DL_SCH_Message_t *sib1);
|
|
int encode_SIB1_NR(NR_BCCH_DL_SCH_Message_t *sib1, uint8_t *buffer, int max_buffer_size);
|
|
|
|
NR_BCCH_DL_SCH_Message_t *get_SIB19_NR(const NR_ServingCellConfigCommon_t *scc);
|
|
int encode_SIB19_NR(NR_BCCH_DL_SCH_Message_t *sib19, uint8_t *buffer, int max_buffer_size);
|
|
void free_SIB19_NR(NR_BCCH_DL_SCH_Message_t *sib19);
|
|
|
|
NR_CellGroupConfig_t *get_initial_cellGroupConfig(int uid,
|
|
const NR_ServingCellConfigCommon_t *scc,
|
|
const NR_ServingCellConfig_t *servingcellconfigdedicated,
|
|
const nr_mac_config_t *configuration);
|
|
void update_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig,
|
|
const int uid,
|
|
NR_UE_NR_Capability_t *uecap,
|
|
const nr_mac_config_t *configuration,
|
|
const NR_ServingCellConfigCommon_t *scc);
|
|
void free_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig);
|
|
int encode_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig, uint8_t *buffer, int max_buffer_size);
|
|
NR_CellGroupConfig_t *decode_cellGroupConfig(const uint8_t *buffer, int max_buffer_size);
|
|
|
|
/* Note: this function returns a new CellGroupConfig for a user with given
|
|
* configuration, but it will also overwrite the ServingCellConfig passed in
|
|
* parameter servingcellconfigdedicated! */
|
|
NR_CellGroupConfig_t *get_default_secondaryCellGroup(const NR_ServingCellConfigCommon_t *servingcellconfigcommon,
|
|
const NR_ServingCellConfig_t *servingcellconfigdedicated,
|
|
const NR_UE_NR_Capability_t *uecap,
|
|
int scg_id,
|
|
int servCellIndex,
|
|
const nr_mac_config_t *configuration,
|
|
int uid);
|
|
|
|
NR_ReconfigurationWithSync_t *get_reconfiguration_with_sync(rnti_t rnti, uid_t uid, const NR_ServingCellConfigCommon_t *scc);
|
|
|
|
#endif
|