mirror of https://github.com/PentHertz/srsLTE.git
Fix logger for NR PHY
This commit is contained in:
parent
194670a2a3
commit
92c4a38fc2
|
@ -24,8 +24,8 @@
|
|||
|
||||
namespace srsenb {
|
||||
namespace nr {
|
||||
cc_worker::cc_worker(uint32_t cc_idx_, srslte::log* log, phy_nr_state* phy_state_) :
|
||||
cc_idx(cc_idx_), phy_state(phy_state_), log_h(log)
|
||||
cc_worker::cc_worker(uint32_t cc_idx_, srslog::basic_logger& log, phy_nr_state* phy_state_) :
|
||||
cc_idx(cc_idx_), phy_state(phy_state_), logger(log)
|
||||
{
|
||||
cf_t* buffer_c[SRSLTE_MAX_PORTS] = {};
|
||||
|
||||
|
@ -108,7 +108,6 @@ uint32_t cc_worker::get_buffer_len()
|
|||
int cc_worker::encode_pdcch_dl(stack_interface_phy_nr::dl_sched_grant_t* grants, uint32_t nof_grants)
|
||||
{
|
||||
for (uint32_t i = 0; i < nof_grants; i++) {
|
||||
|
||||
// Get PHY config for UE
|
||||
// ...
|
||||
|
||||
|
@ -118,8 +117,8 @@ int cc_worker::encode_pdcch_dl(stack_interface_phy_nr::dl_sched_grant_t* grants,
|
|||
return SRSLTE_ERROR;
|
||||
}
|
||||
|
||||
if (log_h->get_level() >= srslte::LOG_LEVEL_INFO) {
|
||||
log_h->info("PDCCH: cc=%d, ...", cc_idx);
|
||||
if (logger.info.enabled()) {
|
||||
logger.info("PDCCH: cc=%d, ...", cc_idx);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -129,7 +128,6 @@ int cc_worker::encode_pdcch_dl(stack_interface_phy_nr::dl_sched_grant_t* grants,
|
|||
int cc_worker::encode_pdsch(stack_interface_phy_nr::dl_sched_grant_t* grants, uint32_t nof_grants)
|
||||
{
|
||||
for (uint32_t i = 0; i < nof_grants; i++) {
|
||||
|
||||
// Get PHY config for UE
|
||||
// ...
|
||||
srslte_pdsch_cfg_nr_t pdsch_hl_cfg = {};
|
||||
|
@ -151,10 +149,10 @@ int cc_worker::encode_pdsch(stack_interface_phy_nr::dl_sched_grant_t* grants, ui
|
|||
}
|
||||
|
||||
// Logging
|
||||
if (log_h->get_level() >= srslte::LOG_LEVEL_INFO) {
|
||||
if (logger.info.enabled()) {
|
||||
char str[512];
|
||||
srslte_enb_dl_nr_pdsch_info(&enb_dl, &pdsch_cfg, str, sizeof(str));
|
||||
log_h->info("PDSCH: cc=%d, %s", cc_idx, str);
|
||||
logger.info("PDSCH: cc=%d, %s", cc_idx, str);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -147,7 +147,7 @@ public:
|
|||
class cc_worker
|
||||
{
|
||||
public:
|
||||
cc_worker(uint32_t cc_idx, srslte::log* log, phy_nr_state* phy_state_);
|
||||
cc_worker(uint32_t cc_idx, srslog::basic_logger& log, phy_nr_state* phy_state_);
|
||||
~cc_worker();
|
||||
|
||||
bool set_carrier(const srslte_carrier_nr_t* carrier);
|
||||
|
@ -168,7 +168,7 @@ private:
|
|||
uint32_t buffer_sz = 0;
|
||||
phy_nr_state* phy_state = nullptr;
|
||||
srslte_ue_dl_nr_t ue_dl = {};
|
||||
srslte::log* log_h = nullptr;
|
||||
srslog::basic_logger& logger;
|
||||
|
||||
// Temporal attributes
|
||||
srslte_softbuffer_rx_t softbuffer_rx = {};
|
||||
|
|
|
@ -40,7 +40,7 @@ namespace nr {
|
|||
class sf_worker final : public srslte::thread_pool::worker
|
||||
{
|
||||
public:
|
||||
sf_worker(phy_common* phy, phy_nr_state* phy_state_, srslte::log* log);
|
||||
sf_worker(phy_common* phy, phy_nr_state* phy_state_, srslog::basic_logger& logger);
|
||||
~sf_worker() = default;
|
||||
|
||||
bool set_carrier_unlocked(uint32_t cc_idx, const srslte_carrier_nr_t* carrier_);
|
||||
|
@ -62,7 +62,7 @@ private:
|
|||
|
||||
phy_common* phy = nullptr;
|
||||
phy_nr_state* phy_state = nullptr;
|
||||
srslte::log* log_h = nullptr;
|
||||
srslog::basic_logger& logger;
|
||||
|
||||
cf_t* prach_ptr = nullptr;
|
||||
float prach_power = 0;
|
||||
|
|
|
@ -31,20 +31,17 @@ namespace nr {
|
|||
|
||||
class worker_pool
|
||||
{
|
||||
|
||||
private:
|
||||
std::vector<std::unique_ptr<srslte::log_filter> > log_vec;
|
||||
|
||||
srslte::thread_pool pool;
|
||||
std::vector<std::unique_ptr<sf_worker> > workers;
|
||||
phy_nr_state phy_state;
|
||||
prach prach_buffer;
|
||||
std::unique_ptr<prach> prach_buffer = nullptr;
|
||||
|
||||
public:
|
||||
sf_worker* operator[](std::size_t pos) { return workers.at(pos).get(); }
|
||||
|
||||
worker_pool(uint32_t max_workers);
|
||||
bool init(phy_common* common, srslte::logger* logger, int prio);
|
||||
bool init(phy_common* common, srslog::sink& log_sink, int prio);
|
||||
sf_worker* wait_worker(uint32_t tti);
|
||||
void start_worker(sf_worker* w);
|
||||
void stop();
|
||||
|
|
|
@ -24,8 +24,8 @@
|
|||
|
||||
namespace srsue {
|
||||
namespace nr {
|
||||
cc_worker::cc_worker(uint32_t cc_idx_, srslte::log* log, phy_nr_state* phy_state_) :
|
||||
cc_idx(cc_idx_), phy_state(phy_state_), log_h(log)
|
||||
cc_worker::cc_worker(uint32_t cc_idx_, srslog::basic_logger& log, phy_nr_state* phy_state_) :
|
||||
cc_idx(cc_idx_), phy_state(phy_state_), logger(log)
|
||||
{
|
||||
cf_t* buffer_c[SRSLTE_MAX_PORTS] = {};
|
||||
|
||||
|
@ -151,10 +151,10 @@ bool cc_worker::work_dl()
|
|||
const srslte_dci_dl_nr_t* dci_dl = &dci_dl_rx[i];
|
||||
|
||||
// Log found DCI
|
||||
if (log_h->get_level() >= srslte::LOG_LEVEL_INFO) {
|
||||
if (logger.info.enabled()) {
|
||||
std::array<char, 512> str;
|
||||
srslte_dci_nr_to_str(dci_dl, str.data(), str.size());
|
||||
log_h->info("PDCCH: cc=%d, %s", cc_idx, str.data());
|
||||
logger.info("PDCCH: cc=%d, %s", cc_idx, str.data());
|
||||
}
|
||||
|
||||
// Compute DL grant
|
||||
|
@ -180,10 +180,10 @@ bool cc_worker::work_dl()
|
|||
// ...
|
||||
|
||||
// Logging
|
||||
if (log_h->get_level() >= srslte::LOG_LEVEL_INFO) {
|
||||
if (logger.info.enabled()) {
|
||||
std::array<char, 512> str;
|
||||
srslte_ue_dl_nr_pdsch_info(&ue_dl, &pdsch_cfg, pdsch_res.data(), str.data(), str.size());
|
||||
log_h->info("PDSCH: cc=%d, %s", cc_idx, str.data());
|
||||
logger.info("PDSCH: cc=%d, %s", cc_idx, str.data());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -35,8 +35,8 @@ static int plot_worker_id = -1;
|
|||
|
||||
namespace srsue {
|
||||
namespace nr {
|
||||
sf_worker::sf_worker(phy_common* phy_, phy_nr_state* phy_state_, srslte::log* log) :
|
||||
phy_state(phy_state_), phy(phy_), log_h(log)
|
||||
sf_worker::sf_worker(phy_common* phy_, phy_nr_state* phy_state_, srslog::basic_logger& log) :
|
||||
phy_state(phy_state_), phy(phy_), logger(log)
|
||||
{
|
||||
for (uint32_t i = 0; i < phy_state->args.nof_carriers; i++) {
|
||||
cc_worker* w = new cc_worker(i, log, phy_state);
|
||||
|
@ -69,7 +69,7 @@ uint32_t sf_worker::get_buffer_len()
|
|||
|
||||
void sf_worker::set_tti(uint32_t tti)
|
||||
{
|
||||
log_h->step(tti);
|
||||
logger.set_context(tti);
|
||||
for (auto& w : cc_workers) {
|
||||
w->set_tti(tti);
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ namespace nr {
|
|||
|
||||
worker_pool::worker_pool(uint32_t max_workers) : pool(max_workers) {}
|
||||
|
||||
bool worker_pool::init(phy_common* common, srslte::logger* logger, int prio)
|
||||
bool worker_pool::init(phy_common* common, srslog::sink& log_sink, int prio)
|
||||
{
|
||||
// Set carrier attributes
|
||||
phy_state.carrier.id = 500;
|
||||
|
@ -40,21 +40,13 @@ bool worker_pool::init(phy_common* common, srslte::logger* logger, int prio)
|
|||
return true;
|
||||
}
|
||||
|
||||
// Create logs
|
||||
// Create array of pointers to phy_logs
|
||||
for (uint32_t i = 0; i < common->args->nof_phy_threads; i++) {
|
||||
auto* mylog = new srslte::log_filter;
|
||||
char tmp[16];
|
||||
sprintf(tmp, "PHY%d", i);
|
||||
mylog->init(tmp, logger, true);
|
||||
mylog->set_level(common->args->log.phy_level);
|
||||
mylog->set_hex_limit(common->args->log.phy_hex_limit);
|
||||
log_vec.push_back(std::unique_ptr<srslte::log_filter>(mylog));
|
||||
}
|
||||
|
||||
// Add workers to workers pool and start threads
|
||||
for (uint32_t i = 0; i < common->args->nof_phy_threads; i++) {
|
||||
auto w = new sf_worker(common, &phy_state, (srslte::log*)log_vec[i].get());
|
||||
auto& log = srslog::fetch_basic_logger(fmt::format("PHY{}", i), log_sink);
|
||||
log.set_level(srslog::str_to_basic_level(common->args->log.phy_level));
|
||||
log.set_hex_dump_max_size(common->args->log.phy_hex_limit);
|
||||
|
||||
auto w = new sf_worker(common, &phy_state, log);
|
||||
pool.init_worker(i, w, prio, common->args->worker_cpu_mask);
|
||||
workers.push_back(std::unique_ptr<sf_worker>(w));
|
||||
|
||||
|
@ -64,19 +56,17 @@ bool worker_pool::init(phy_common* common, srslte::logger* logger, int prio)
|
|||
}
|
||||
|
||||
// Initialise PRACH
|
||||
auto* prach_log = new srslte::log_filter;
|
||||
prach_log->init("NR-PRACH", logger, false);
|
||||
prach_log->set_level(common->args->log.phy_level);
|
||||
prach_log->set_hex_limit(common->args->log.phy_hex_limit);
|
||||
log_vec.push_back(std::unique_ptr<srslte::log_filter>(prach_log));
|
||||
prach_buffer.init(phy_state.args.dl.nof_max_prb, prach_log);
|
||||
auto& prach_log = srslog::fetch_basic_logger("NR-PRACH", log_sink);
|
||||
prach_log.set_level(srslog::str_to_basic_level(common->args->log.phy_level));
|
||||
prach_buffer = std::unique_ptr<prach>(new prach(prach_log));
|
||||
prach_buffer->init(phy_state.args.dl.nof_max_prb);
|
||||
|
||||
// Set PRACH hard-coded cell
|
||||
srslte_cell_t cell = {};
|
||||
cell.nof_prb = 50;
|
||||
cell.id = phy_state.carrier.id;
|
||||
if (not prach_buffer.set_cell(cell, phy_state.cfg.prach)) {
|
||||
prach_log->error("Setting PRACH cell\n");
|
||||
if (not prach_buffer->set_cell(cell, phy_state.cfg.prach)) {
|
||||
prach_log.error("Setting PRACH cell");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -93,15 +83,14 @@ sf_worker* worker_pool::wait_worker(uint32_t tti)
|
|||
sf_worker* worker = (sf_worker*)pool.wait_worker(tti);
|
||||
|
||||
// Prepare PRACH, send always sequence 0
|
||||
prach_buffer.prepare_to_send(0);
|
||||
prach_buffer->prepare_to_send(0);
|
||||
|
||||
// Generate PRACH if ready
|
||||
if (prach_buffer.is_ready_to_send(tti, phy_state.carrier.id)) {
|
||||
if (prach_buffer->is_ready_to_send(tti, phy_state.carrier.id)) {
|
||||
uint32_t nof_prach_sf = 0;
|
||||
float prach_target_power = 0.0f;
|
||||
cf_t* prach_ptr = prach_buffer.generate(0.0f, &nof_prach_sf, &prach_target_power);
|
||||
cf_t* prach_ptr = prach_buffer->generate(0.0f, &nof_prach_sf, &prach_target_power);
|
||||
worker->set_prach(prach_ptr, prach_target_power);
|
||||
log_vec.front().get()->info("tti=%d; Sending PRACH\n", tti);
|
||||
}
|
||||
|
||||
return worker;
|
||||
|
|
|
@ -148,7 +148,7 @@ void phy::run_thread()
|
|||
|
||||
// Initialise workers
|
||||
lte_workers.init(&common, log_sink, WORKERS_THREAD_PRIO);
|
||||
nr_workers.init(&common, logger, WORKERS_THREAD_PRIO);
|
||||
nr_workers.init(&common, log_sink, WORKERS_THREAD_PRIO);
|
||||
|
||||
// Warning this must be initialized after all workers have been added to the pool
|
||||
sfsync.init(
|
||||
|
|
Loading…
Reference in New Issue