Skip to content

Commit 8cebd85

Browse files
frankistcodebot
authored andcommitted
gnb: change the TDD period from msec to slots
1 parent 18792ba commit 8cebd85

File tree

4 files changed

+23
-48
lines changed

4 files changed

+23
-48
lines changed

apps/gnb/gnb_appconfig.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ struct prach_appconfig {
5353

5454
/// TDD pattern configuration. See TS 38.331, \c TDD-UL-DL-Pattern.
5555
struct tdd_ul_dl_pattern_appconfig {
56-
/// Periodicity of the DL-UL pattern in Milliseconds. Values {0.5, 0.625, 1, 1.25, 2, 2.5, 5, 10}.
57-
float dl_ul_tx_period = 5.0F;
56+
/// Periodicity of the DL-UL pattern in slots. Values {2,...,80}.
57+
unsigned dl_ul_period_slots = 10;
5858
/// Values: {0,...,maxNrofSlots=80}.
5959
unsigned nof_dl_slots = 6;
6060
/// Values: {0,...,maxNrofSymbols-1=13}.

apps/gnb/gnb_appconfig_cli11_schema.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -491,9 +491,11 @@ static void configure_cli11_amplitude_control_args(CLI::App& app, amplitude_cont
491491

492492
static void configure_cli11_tdd_ul_dl_pattern_args(CLI::App& app, tdd_ul_dl_pattern_appconfig& pattern_params)
493493
{
494-
app.add_option("--dl_ul_tx_period", pattern_params.dl_ul_tx_period, "TDD pattern periodicity in milliseconds")
494+
app.add_option("--dl_ul_tx_period",
495+
pattern_params.dl_ul_period_slots,
496+
"TDD pattern periodicity in slots. Must be 0.5, 0.625, 1, 1.25, 2, 2.5, 5 or 10 milliseconds.")
495497
->capture_default_str()
496-
->check(CLI::Range(0.0, 10.0));
498+
->check(CLI::Range(2, 80));
497499
app.add_option("--nof_dl_slots", pattern_params.nof_dl_slots, "TDD pattern nof. consecutive full DL slots")
498500
->capture_default_str()
499501
->check(CLI::Range(0, 80));

apps/gnb/gnb_appconfig_translators.cpp

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -224,21 +224,18 @@ std::vector<du_cell_config> srsran::generate_du_cell_config(const gnb_appconfig&
224224
}
225225
const auto& tdd_cfg = config.common_cell_cfg.tdd_ul_dl_cfg.value();
226226

227-
out_cell.tdd_ul_dl_cfg_common.value().pattern1.dl_ul_tx_period_nof_slots = (unsigned)std::round(
228-
tdd_cfg.pattern1.dl_ul_tx_period * get_nof_slots_per_subframe(out_cell.tdd_ul_dl_cfg_common.value().ref_scs));
229-
out_cell.tdd_ul_dl_cfg_common.value().pattern1.nof_dl_slots = tdd_cfg.pattern1.nof_dl_slots;
230-
out_cell.tdd_ul_dl_cfg_common.value().pattern1.nof_dl_symbols = tdd_cfg.pattern1.nof_dl_symbols;
231-
out_cell.tdd_ul_dl_cfg_common.value().pattern1.nof_ul_slots = tdd_cfg.pattern1.nof_ul_slots;
232-
out_cell.tdd_ul_dl_cfg_common.value().pattern1.nof_ul_symbols = tdd_cfg.pattern1.nof_ul_symbols;
227+
out_cell.tdd_ul_dl_cfg_common->pattern1.dl_ul_tx_period_nof_slots = tdd_cfg.pattern1.dl_ul_period_slots;
228+
out_cell.tdd_ul_dl_cfg_common->pattern1.nof_dl_slots = tdd_cfg.pattern1.nof_dl_slots;
229+
out_cell.tdd_ul_dl_cfg_common->pattern1.nof_dl_symbols = tdd_cfg.pattern1.nof_dl_symbols;
230+
out_cell.tdd_ul_dl_cfg_common->pattern1.nof_ul_slots = tdd_cfg.pattern1.nof_ul_slots;
231+
out_cell.tdd_ul_dl_cfg_common->pattern1.nof_ul_symbols = tdd_cfg.pattern1.nof_ul_symbols;
233232

234233
if (tdd_cfg.pattern2.has_value()) {
235-
out_cell.tdd_ul_dl_cfg_common.value().pattern2->dl_ul_tx_period_nof_slots =
236-
(unsigned)std::round(tdd_cfg.pattern2->dl_ul_tx_period *
237-
get_nof_slots_per_subframe(out_cell.tdd_ul_dl_cfg_common.value().ref_scs));
238-
out_cell.tdd_ul_dl_cfg_common.value().pattern2->nof_dl_slots = tdd_cfg.pattern2->nof_dl_slots;
239-
out_cell.tdd_ul_dl_cfg_common.value().pattern2->nof_dl_symbols = tdd_cfg.pattern2->nof_dl_symbols;
240-
out_cell.tdd_ul_dl_cfg_common.value().pattern2->nof_ul_slots = tdd_cfg.pattern2->nof_ul_slots;
241-
out_cell.tdd_ul_dl_cfg_common.value().pattern2->nof_ul_symbols = tdd_cfg.pattern2->nof_ul_symbols;
234+
out_cell.tdd_ul_dl_cfg_common->pattern2->dl_ul_tx_period_nof_slots = tdd_cfg.pattern2->dl_ul_period_slots;
235+
out_cell.tdd_ul_dl_cfg_common->pattern2->nof_dl_slots = tdd_cfg.pattern2->nof_dl_slots;
236+
out_cell.tdd_ul_dl_cfg_common->pattern2->nof_dl_symbols = tdd_cfg.pattern2->nof_dl_symbols;
237+
out_cell.tdd_ul_dl_cfg_common->pattern2->nof_ul_slots = tdd_cfg.pattern2->nof_ul_slots;
238+
out_cell.tdd_ul_dl_cfg_common->pattern2->nof_ul_symbols = tdd_cfg.pattern2->nof_ul_symbols;
242239
}
243240
}
244241

apps/gnb/gnb_appconfig_validators.cpp

Lines changed: 7 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -173,41 +173,17 @@ static bool validate_tdd_ul_dl_pattern_appconfig(const tdd_ul_dl_pattern_appconf
173173
{
174174
// NOTE: TDD pattern is assumed to use common SCS as reference SCS.
175175
if (common_scs > subcarrier_spacing::kHz60) {
176-
fmt::print("Invalid TDD UL DL reference SCS={}. Must be 15, 30 or 60 kHz for FR1.\n", common_scs);
176+
fmt::print("Invalid TDD UL DL reference SCS={}kHz. Must be 15, 30 or 60 kHz for FR1.\n", scs_to_khz(common_scs));
177177
return false;
178178
}
179-
if (config.dl_ul_tx_period != 0.5F and config.dl_ul_tx_period != 0.625F and config.dl_ul_tx_period != 1.0F and
180-
config.dl_ul_tx_period != 1.25F and config.dl_ul_tx_period != 2.0F and config.dl_ul_tx_period != 2.5F and
181-
config.dl_ul_tx_period != 5.0F and config.dl_ul_tx_period != 10.0F) {
179+
180+
const unsigned period_msec = config.dl_ul_period_slots / get_nof_slots_per_subframe(common_scs);
181+
182+
if (period_msec != 0.5F and period_msec != 0.625F and period_msec != 1.0F and period_msec != 1.25F and
183+
period_msec != 2.0F and period_msec != 2.5F and period_msec != 5.0F and period_msec != 10.0F) {
182184
fmt::print(
183185
"Invalid TDD pattern 1 UL DL periodicity={}ms. Must be 0.5, 0.625, 1, 1.25, 2, 2.5, 5 or 10 milliseconds.\n",
184-
config.dl_ul_tx_period);
185-
return false;
186-
}
187-
188-
// See TS 38.213, clause 11.1.
189-
if (config.dl_ul_tx_period == 0.625F and common_scs != subcarrier_spacing::kHz120) {
190-
fmt::print("Invalid reference SCS={} for TDD pattern 1. Must be 120 kHz when using "
191-
"periodicity of {} ms.\n",
192-
common_scs,
193-
config.dl_ul_tx_period);
194-
return false;
195-
}
196-
if (config.dl_ul_tx_period == 1.25F and
197-
(common_scs != subcarrier_spacing::kHz120 and common_scs != subcarrier_spacing::kHz60)) {
198-
fmt::print("Invalid reference SCS={} for TDD pattern 1. Must be 120 or 60 kHz when using "
199-
"periodicity of {} ms.\n",
200-
common_scs,
201-
config.dl_ul_tx_period);
202-
return false;
203-
}
204-
if (config.dl_ul_tx_period == 2.5F and
205-
(common_scs != subcarrier_spacing::kHz120 and common_scs != subcarrier_spacing::kHz60 and
206-
common_scs != subcarrier_spacing::kHz30)) {
207-
fmt::print("Invalid reference SCS={} for TDD pattern 1. Must be 120, 60 or 30 kHz when using "
208-
"periodicity of {} ms.\n",
209-
common_scs,
210-
config.dl_ul_tx_period);
186+
period_msec);
211187
return false;
212188
}
213189

0 commit comments

Comments
 (0)