Split out PRACH-specific functions into separate header
Split out type and function definitions for a cleaner separation for some consumers of these functions. Concretely, nr_mac_common.h includes various ASN.1 NR RRC headers, but not all consumers of these APIs might need these headers. For instance, the next commit will use these functions in the driver for 7.2 (it needs to compute PRACH length), but the driver itself does not depend on nor does it need the ASN.1 NR RRC headers. Defining a new header avoids the problem.
This commit is contained in:
committed by
Robert Schmidt
parent
8dcdee85f7
commit
42b5df351d
@@ -35,6 +35,7 @@
|
||||
#include "NR_CellGroupConfig.h"
|
||||
#include "NR_UE-NR-Capability.h"
|
||||
#include "nr_mac.h"
|
||||
#include "nr_prach_config.h"
|
||||
#include "common/utils/nr/nr_common.h"
|
||||
|
||||
#define NB_SRS_PERIOD (18)
|
||||
@@ -52,20 +53,6 @@ typedef enum {
|
||||
pusch_len2 = 2
|
||||
} pusch_maxLength_t;
|
||||
|
||||
typedef struct {
|
||||
uint32_t format;
|
||||
uint32_t start_symbol;
|
||||
uint32_t N_t_slot;
|
||||
uint32_t N_dur;
|
||||
uint32_t N_RA_slot;
|
||||
uint32_t N_RA_sfn;
|
||||
uint32_t max_association_period;
|
||||
int x;
|
||||
int y;
|
||||
int y2;
|
||||
uint64_t s_map;
|
||||
} nr_prach_info_t;
|
||||
|
||||
typedef struct {
|
||||
uint16_t bwpStart;
|
||||
uint16_t bwpSize;
|
||||
@@ -161,8 +148,6 @@ void find_aggregation_candidates(uint8_t *aggregation_level,
|
||||
const NR_SearchSpace_t *ss,
|
||||
int maxL);
|
||||
|
||||
uint16_t get_nr_prach_format_from_index(uint8_t index, uint32_t pointa, uint8_t unpaired);
|
||||
|
||||
bool get_nr_prach_sched_from_info(nr_prach_info_t info,
|
||||
int config_index,
|
||||
int frame,
|
||||
@@ -172,8 +157,6 @@ bool get_nr_prach_sched_from_info(nr_prach_info_t info,
|
||||
uint16_t *RA_sfn_index,
|
||||
uint8_t unpaired);
|
||||
|
||||
nr_prach_info_t get_nr_prach_occasion_info_from_index(uint8_t index, frequency_range_t freq_range, uint8_t unpaired);
|
||||
|
||||
uint8_t get_pusch_mcs_table(long *mcs_Table,
|
||||
int is_tp,
|
||||
int dci_format,
|
||||
@@ -190,8 +173,6 @@ int ul_ant_bits(NR_DMRS_UplinkConfig_t *NR_DMRS_UplinkConfig, long transformPrec
|
||||
|
||||
uint8_t get_pdsch_mcs_table(long *mcs_Table, int dci_format, int rnti_type, int ss_type);
|
||||
|
||||
int get_format0(uint8_t index, uint8_t unpaired, frequency_range_t frequency_range);
|
||||
|
||||
uint16_t get_NCS(uint8_t index, uint16_t format, uint8_t restricted_set_config);
|
||||
int compute_pucch_crc_size(int O_uci);
|
||||
uint8_t get_l0_ul(uint8_t mapping_type, uint8_t dmrs_typeA_position);
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
* 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 openair2/LAYER2/NR_MAC_COMMON/nr_prach_config.h
|
||||
* \brief Tools to query the PRACH configuration tables
|
||||
* \author Romain beurdouche
|
||||
* \date Jul. 2025
|
||||
* \version 0.1
|
||||
* \company Eurecom
|
||||
* \email romain.beurdouche@eurecom.fr
|
||||
* \note The PRACH configuration tables are used in the MAC layer for scheduling and beyond.
|
||||
* For example the PRACH duration is requested in the O-RAN 7.2 FrontHaul Interface
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Fetch PRACH format (format only) from PRACH configuration tables
|
||||
*
|
||||
* @param index PRACH configuration index
|
||||
* @param unpaired Duplex mode TDD or FDD
|
||||
* @param freq_range Frequency range FR1 or FR2
|
||||
* @return PRACH format (format only)
|
||||
*/
|
||||
int get_format0(uint8_t index, uint8_t unpaired, frequency_range_t frequency_range);
|
||||
|
||||
typedef struct {
|
||||
uint32_t format;
|
||||
uint32_t start_symbol;
|
||||
uint32_t N_t_slot;
|
||||
uint32_t N_dur;
|
||||
uint32_t N_RA_slot;
|
||||
uint32_t N_RA_sfn;
|
||||
uint32_t max_association_period;
|
||||
int x;
|
||||
int y;
|
||||
int y2;
|
||||
uint64_t s_map;
|
||||
} nr_prach_info_t;
|
||||
|
||||
/**
|
||||
* @brief Fetch PRACH occasion info from PRACH configuration tables
|
||||
*
|
||||
* @param index PRACH configuration index
|
||||
* @param freq_range Frequency range FR1 or FR2
|
||||
* @param unpaired Duplex mode TDD or FDD
|
||||
* @return PRACH occasion information
|
||||
*/
|
||||
nr_prach_info_t get_nr_prach_occasion_info_from_index(uint8_t index, frequency_range_t freq_range, uint8_t unpaired);
|
||||
|
||||
/**
|
||||
* @brief Fetch PRACH format (format concatenated with format2) from PRACH configuration tables
|
||||
*
|
||||
* @param index PRACH configuration index
|
||||
* @param pointa Point A ARFCN to determine the Frequency range FR1 or FR2
|
||||
* @param unpaired Duplex mode TDD or FDD
|
||||
* @return PRACH format (format concatenated with format2)
|
||||
*/
|
||||
uint16_t get_nr_prach_format_from_index(uint8_t index, uint32_t pointa, uint8_t unpaired);
|
||||
Reference in New Issue
Block a user