mirror of https://github.com/PentHertz/srsLTE.git
SRSUE: Unify PRACH reconfiguration conditions
This commit is contained in:
parent
e0937d1dd1
commit
59114206ae
|
@ -30,7 +30,6 @@ public:
|
||||||
void init(uint32_t max_prb, srslte::log* log_h);
|
void init(uint32_t max_prb, srslte::log* log_h);
|
||||||
void stop();
|
void stop();
|
||||||
bool set_cell(srslte_cell_t cell, srslte_prach_cfg_t prach_cfg);
|
bool set_cell(srslte_cell_t cell, srslte_prach_cfg_t prach_cfg);
|
||||||
void reset_cfg();
|
|
||||||
bool prepare_to_send(uint32_t preamble_idx, int allowed_subframe = -1, float target_power_dbm = -1);
|
bool prepare_to_send(uint32_t preamble_idx, int allowed_subframe = -1, float target_power_dbm = -1);
|
||||||
bool is_ready_to_send(uint32_t current_tti, uint32_t current_pci);
|
bool is_ready_to_send(uint32_t current_tti, uint32_t current_pci);
|
||||||
bool is_pending() const;
|
bool is_pending() const;
|
||||||
|
|
|
@ -466,18 +466,15 @@ bool phy::set_config(srslte::phy_cfg_t config_, uint32_t cc_idx)
|
||||||
|
|
||||||
Info("Setting configuration\n");
|
Info("Setting configuration\n");
|
||||||
|
|
||||||
// The PRACH shall be re-configured only if:
|
// The PRACH configuration shall be updated only if:
|
||||||
// - The new configuration belongs to the primary cell
|
// - The new configuration belongs to the primary cell
|
||||||
// - The PRACH configuration is present
|
// - The PRACH configuration is present
|
||||||
// - The PRACH configuration has changed
|
if (!cc_idx && config_.prach_cfg_present) {
|
||||||
bool reconfigure_prach = !cc_idx && config_.prach_cfg_present && (prach_cfg != config_.prach_cfg);
|
prach_cfg = config_.prach_cfg;
|
||||||
|
|
||||||
if (reconfigure_prach) {
|
|
||||||
prach_buffer.reset_cfg();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply configuration after the worker is finished to avoid race conditions
|
// Apply configuration after the worker is finished to avoid race conditions
|
||||||
cmd_worker.add_cmd([this, config_, cc_idx, reconfigure_prach]() {
|
cmd_worker.add_cmd([this, config_, cc_idx]() {
|
||||||
log_h->info("Setting new PHY configuration cc_idx=%d...\n", cc_idx);
|
log_h->info("Setting new PHY configuration cc_idx=%d...\n", cc_idx);
|
||||||
for (uint32_t i = 0; i < args.nof_phy_threads; i++) {
|
for (uint32_t i = 0; i < args.nof_phy_threads; i++) {
|
||||||
// set_cell is not protected so run when worker is finished
|
// set_cell is not protected so run when worker is finished
|
||||||
|
@ -488,13 +485,10 @@ bool phy::set_config(srslte::phy_cfg_t config_, uint32_t cc_idx)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log_h->info("Finished setting new PHY configuration cc_idx=%d\n", cc_idx);
|
log_h->info("Finished setting new PHY configuration cc_idx=%d\n", cc_idx);
|
||||||
if (reconfigure_prach) {
|
|
||||||
// Reconfigure PRACH parameters only if configuration is different
|
// It is up to the PRACH component to detect whether the cell or the configuration have changed to reconfigure
|
||||||
prach_cfg = config_.prach_cfg;
|
configure_prach_params();
|
||||||
log_h->info("Setting new PRACH configuration...\n");
|
|
||||||
configure_prach_params();
|
|
||||||
log_h->info("Finished setting new PRACH configuration.\n");
|
|
||||||
}
|
|
||||||
stack->set_config_complete(true);
|
stack->set_config_complete(true);
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
#include "srsue/hdr/phy/prach.h"
|
#include "srsue/hdr/phy/prach.h"
|
||||||
#include "srslte/common/log.h"
|
#include "srslte/common/log.h"
|
||||||
|
#include "srslte/interfaces/phy_interface_types.h"
|
||||||
#include "srslte/interfaces/ue_interfaces.h"
|
#include "srslte/interfaces/ue_interfaces.h"
|
||||||
#include "srslte/srslte.h"
|
#include "srslte/srslte.h"
|
||||||
|
|
||||||
|
@ -83,11 +84,6 @@ void prach::stop()
|
||||||
mem_initiated = false;
|
mem_initiated = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void prach::reset_cfg()
|
|
||||||
{
|
|
||||||
cell_initiated = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool prach::set_cell(srslte_cell_t cell_, srslte_prach_cfg_t prach_cfg)
|
bool prach::set_cell(srslte_cell_t cell_, srslte_prach_cfg_t prach_cfg)
|
||||||
{
|
{
|
||||||
if (!mem_initiated) {
|
if (!mem_initiated) {
|
||||||
|
@ -95,8 +91,7 @@ bool prach::set_cell(srslte_cell_t cell_, srslte_prach_cfg_t prach_cfg)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Check if other PRACH parameters changed
|
if (cell.id == cell_.id && cell_initiated && prach_cfg == cfg) {
|
||||||
if (cell.id == cell_.id && cell_initiated) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,7 +105,8 @@ bool prach::set_cell(srslte_cell_t cell_, srslte_prach_cfg_t prach_cfg)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Info("PRACH: configIdx=%d, rootSequence=%d, zeroCorrelationConfig=%d, freqOffset=%d\n",
|
Info("PRACH: cell.id=%d, configIdx=%d, rootSequence=%d, zeroCorrelationConfig=%d, freqOffset=%d\n",
|
||||||
|
cell.id,
|
||||||
prach_cfg.config_idx,
|
prach_cfg.config_idx,
|
||||||
prach_cfg.root_seq_idx,
|
prach_cfg.root_seq_idx,
|
||||||
prach_cfg.zero_corr_zone,
|
prach_cfg.zero_corr_zone,
|
||||||
|
@ -126,6 +122,8 @@ bool prach::set_cell(srslte_cell_t cell_, srslte_prach_cfg_t prach_cfg)
|
||||||
transmitted_tti = -1;
|
transmitted_tti = -1;
|
||||||
cell_initiated = true;
|
cell_initiated = true;
|
||||||
|
|
||||||
|
log_h->info("Finished setting new PRACH configuration.\n");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue