mirror of https://github.com/PentHertz/srsLTE.git
SRSUE: review metrics interfaces
This commit is contained in:
parent
044da18db9
commit
b5e879db47
|
@ -91,7 +91,7 @@ public:
|
||||||
void wait_initialize() final;
|
void wait_initialize() final;
|
||||||
bool is_initiated();
|
bool is_initiated();
|
||||||
|
|
||||||
void get_metrics(const std::string& rat, phy_metrics_t* m) final;
|
void get_metrics(const srsran::srsran_rat_t& rat, phy_metrics_t* m) final;
|
||||||
void srsran_phy_logger(phy_logger_level_t log_level, char* str);
|
void srsran_phy_logger(phy_logger_level_t log_level, char* str);
|
||||||
|
|
||||||
void enable_pregen_signals(bool enable) final;
|
void enable_pregen_signals(bool enable) final;
|
||||||
|
|
|
@ -14,12 +14,12 @@
|
||||||
#define SRSUE_PHY_METRICS_H
|
#define SRSUE_PHY_METRICS_H
|
||||||
|
|
||||||
#include "srsran/srsran.h"
|
#include "srsran/srsran.h"
|
||||||
#include <srsran/adt/circular_array.h>
|
#include <array>
|
||||||
|
|
||||||
namespace srsue {
|
namespace srsue {
|
||||||
|
|
||||||
struct info_metrics_t {
|
struct info_metrics_t {
|
||||||
typedef srsran::circular_array<info_metrics_t, SRSRAN_MAX_CARRIERS> array_t;
|
typedef std::array<info_metrics_t, SRSRAN_MAX_CARRIERS> array_t;
|
||||||
|
|
||||||
uint32_t pci;
|
uint32_t pci;
|
||||||
uint32_t dl_earfcn;
|
uint32_t dl_earfcn;
|
||||||
|
@ -31,7 +31,7 @@ struct info_metrics_t {
|
||||||
} while (false)
|
} while (false)
|
||||||
|
|
||||||
struct sync_metrics_t {
|
struct sync_metrics_t {
|
||||||
typedef srsran::circular_array<sync_metrics_t, SRSRAN_MAX_CARRIERS> array_t;
|
typedef std::array<sync_metrics_t, SRSRAN_MAX_CARRIERS> array_t;
|
||||||
|
|
||||||
float ta_us;
|
float ta_us;
|
||||||
float distance_km;
|
float distance_km;
|
||||||
|
@ -64,7 +64,7 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ch_metrics_t {
|
struct ch_metrics_t {
|
||||||
typedef srsran::circular_array<ch_metrics_t, SRSRAN_MAX_CARRIERS> array_t;
|
typedef std::array<ch_metrics_t, SRSRAN_MAX_CARRIERS> array_t;
|
||||||
|
|
||||||
float n;
|
float n;
|
||||||
float sinr;
|
float sinr;
|
||||||
|
@ -106,7 +106,7 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dl_metrics_t {
|
struct dl_metrics_t {
|
||||||
typedef srsran::circular_array<dl_metrics_t, SRSRAN_MAX_CARRIERS> array_t;
|
typedef std::array<dl_metrics_t, SRSRAN_MAX_CARRIERS> array_t;
|
||||||
|
|
||||||
float fec_iters;
|
float fec_iters;
|
||||||
float mcs;
|
float mcs;
|
||||||
|
@ -133,7 +133,7 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ul_metrics_t {
|
struct ul_metrics_t {
|
||||||
typedef srsran::circular_array<ul_metrics_t, SRSRAN_MAX_CARRIERS> array_t;
|
typedef std::array<ul_metrics_t, SRSRAN_MAX_CARRIERS> array_t;
|
||||||
|
|
||||||
float mcs;
|
float mcs;
|
||||||
float power;
|
float power;
|
||||||
|
|
|
@ -40,7 +40,7 @@ public:
|
||||||
virtual void wait_initialize() = 0;
|
virtual void wait_initialize() = 0;
|
||||||
virtual void start_plot() = 0;
|
virtual void start_plot() = 0;
|
||||||
|
|
||||||
virtual void get_metrics(const std::string& rat, phy_metrics_t* m) = 0;
|
virtual void get_metrics(const srsran::srsran_rat_t& rat, phy_metrics_t* m) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace srsue
|
} // namespace srsue
|
||||||
|
|
|
@ -38,7 +38,7 @@ public:
|
||||||
|
|
||||||
virtual void set_earfcn(std::vector<uint32_t> earfcns) = 0;
|
virtual void set_earfcn(std::vector<uint32_t> earfcns) = 0;
|
||||||
|
|
||||||
virtual void get_metrics(const std::string& rat, phy_metrics_t* m) = 0;
|
virtual void get_metrics(const srsran::srsran_rat_t& rat, phy_metrics_t* m) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace srsue
|
} // namespace srsue
|
||||||
|
|
|
@ -38,7 +38,7 @@ public:
|
||||||
virtual void wait_initialize() = 0;
|
virtual void wait_initialize() = 0;
|
||||||
virtual void start_plot() = 0;
|
virtual void start_plot() = 0;
|
||||||
|
|
||||||
virtual void get_metrics(const std::string& rat, phy_metrics_t* m) = 0;
|
virtual void get_metrics(const srsran::srsran_rat_t& rat, phy_metrics_t* m) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace srsue
|
} // namespace srsue
|
||||||
|
|
|
@ -38,7 +38,7 @@ public:
|
||||||
void stop() override;
|
void stop() override;
|
||||||
|
|
||||||
void wait_initialize() override;
|
void wait_initialize() override;
|
||||||
void get_metrics(const std::string& rat, phy_metrics_t* m) override;
|
void get_metrics(const srsran::srsran_rat_t& rat, phy_metrics_t* m) override;
|
||||||
|
|
||||||
std::string get_type() override { return "vnf_nr"; };
|
std::string get_type() override { return "vnf_nr"; };
|
||||||
|
|
||||||
|
|
|
@ -197,10 +197,10 @@ void metrics_csv::set_metrics(const ue_metrics_t& metrics, const uint32_t period
|
||||||
}
|
}
|
||||||
|
|
||||||
// Metrics for NR carrier
|
// Metrics for NR carrier
|
||||||
for (uint32_t r = 0; r < metrics.phy.nof_active_cc; r++) {
|
for (uint32_t r = 0; r < metrics.phy_nr.nof_active_cc; r++) {
|
||||||
set_metrics_helper(metrics.rf,
|
set_metrics_helper(metrics.rf,
|
||||||
metrics.sys,
|
metrics.sys,
|
||||||
metrics.phy,
|
metrics.phy_nr,
|
||||||
metrics.stack.mac_nr,
|
metrics.stack.mac_nr,
|
||||||
metrics.stack.rrc,
|
metrics.stack.rrc,
|
||||||
metrics.phy.nof_active_cc + r, // NR carrier offset
|
metrics.phy.nof_active_cc + r, // NR carrier offset
|
||||||
|
|
|
@ -184,34 +184,40 @@ void phy::stop()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void phy::get_metrics(const std::string& rat, phy_metrics_t* m)
|
void phy::get_metrics(const srsran::srsran_rat_t& rat, phy_metrics_t* m)
|
||||||
{
|
{
|
||||||
|
// Zero structure by default
|
||||||
|
*m = {};
|
||||||
|
|
||||||
|
// Get LTE metrics
|
||||||
|
if (rat == srsran::srsran_rat_t::lte && args.nof_lte_carriers > 0) {
|
||||||
|
uint32_t dl_earfcn = 0;
|
||||||
|
srsran_cell_t cell = {};
|
||||||
|
sfsync.get_current_cell(&cell, &dl_earfcn);
|
||||||
|
m->info[0].pci = cell.id;
|
||||||
|
m->info[0].dl_earfcn = dl_earfcn;
|
||||||
|
|
||||||
|
for (uint32_t i = 1; i < args.nof_lte_carriers; i++) {
|
||||||
|
m->info[i].dl_earfcn = common.cell_state.get_earfcn(i);
|
||||||
|
m->info[i].pci = common.cell_state.get_pci(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
common.get_ch_metrics(m->ch);
|
||||||
|
common.get_dl_metrics(m->dl);
|
||||||
|
common.get_ul_metrics(m->ul);
|
||||||
|
common.get_sync_metrics(m->sync);
|
||||||
|
m->nof_active_cc = args.nof_lte_carriers;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Get NR metrics
|
// Get NR metrics
|
||||||
if (rat == "nr" and args.nof_nr_carriers > 0) {
|
if (rat == srsran::srsran_rat_t::nr && args.nof_nr_carriers > 0) {
|
||||||
nr_workers.get_metrics(*m);
|
nr_workers.get_metrics(*m);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rat != "lte") {
|
// Add other RAT here
|
||||||
*m = {};
|
// ...
|
||||||
return;
|
|
||||||
}
|
|
||||||
uint32_t dl_earfcn = 0;
|
|
||||||
srsran_cell_t cell = {};
|
|
||||||
sfsync.get_current_cell(&cell, &dl_earfcn);
|
|
||||||
m->info[0].pci = cell.id;
|
|
||||||
m->info[0].dl_earfcn = dl_earfcn;
|
|
||||||
|
|
||||||
for (uint32_t i = 1; i < args.nof_lte_carriers; i++) {
|
|
||||||
m->info[i].dl_earfcn = common.cell_state.get_earfcn(i);
|
|
||||||
m->info[i].pci = common.cell_state.get_pci(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
common.get_ch_metrics(m->ch);
|
|
||||||
common.get_dl_metrics(m->dl);
|
|
||||||
common.get_ul_metrics(m->ul);
|
|
||||||
common.get_sync_metrics(m->sync);
|
|
||||||
m->nof_active_cc = args.nof_lte_carriers;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void phy::set_timeadv_rar(uint32_t tti, uint32_t ta_cmd)
|
void phy::set_timeadv_rar(uint32_t tti, uint32_t ta_cmd)
|
||||||
|
|
|
@ -61,7 +61,7 @@ void vnf_phy_nr::start_plot() {}
|
||||||
|
|
||||||
void vnf_phy_nr::wait_initialize() {}
|
void vnf_phy_nr::wait_initialize() {}
|
||||||
|
|
||||||
void vnf_phy_nr::get_metrics(const std::string& rat, phy_metrics_t* m) {}
|
void vnf_phy_nr::get_metrics(const srsran::srsran_rat_t& rat, phy_metrics_t* m) {}
|
||||||
|
|
||||||
int vnf_phy_nr::tx_request(const tx_request_t& request)
|
int vnf_phy_nr::tx_request(const tx_request_t& request)
|
||||||
{
|
{
|
||||||
|
|
|
@ -330,8 +330,8 @@ void ue::start_plot()
|
||||||
bool ue::get_metrics(ue_metrics_t* m)
|
bool ue::get_metrics(ue_metrics_t* m)
|
||||||
{
|
{
|
||||||
bzero(m, sizeof(ue_metrics_t));
|
bzero(m, sizeof(ue_metrics_t));
|
||||||
phy->get_metrics("lte", &m->phy);
|
phy->get_metrics(srsran::srsran_rat_t::lte, &m->phy);
|
||||||
phy->get_metrics("nr", &m->phy_nr);
|
phy->get_metrics(srsran::srsran_rat_t::nr, &m->phy_nr);
|
||||||
radio->get_metrics(&m->rf);
|
radio->get_metrics(&m->rf);
|
||||||
stack->get_metrics(&m->stack);
|
stack->get_metrics(&m->stack);
|
||||||
gw_inst->get_metrics(m->gw, m->stack.mac[0].nof_tti);
|
gw_inst->get_metrics(m->gw, m->stack.mac[0].nof_tti);
|
||||||
|
|
|
@ -48,7 +48,7 @@ public:
|
||||||
void stop() override;
|
void stop() override;
|
||||||
void wait_initialize() override;
|
void wait_initialize() override;
|
||||||
void start_plot() override;
|
void start_plot() override;
|
||||||
void get_metrics(const std::string& rat, phy_metrics_t* m) override;
|
void get_metrics(const srsran::srsran_rat_t& rat, phy_metrics_t* m) override;
|
||||||
std::string get_type() override;
|
std::string get_type() override;
|
||||||
|
|
||||||
// The interface for the SS
|
// The interface for the SS
|
||||||
|
|
|
@ -50,7 +50,7 @@ void lte_ttcn3_phy::wait_initialize() {}
|
||||||
|
|
||||||
void lte_ttcn3_phy::start_plot() {}
|
void lte_ttcn3_phy::start_plot() {}
|
||||||
|
|
||||||
void lte_ttcn3_phy::get_metrics(const std::string& rat, phy_metrics_t* m) {}
|
void lte_ttcn3_phy::get_metrics(const srsran::srsran_rat_t& rat, phy_metrics_t* m) {}
|
||||||
|
|
||||||
// The interface for the SS
|
// The interface for the SS
|
||||||
void lte_ttcn3_phy::set_cell_map(const cell_list_t& cells_)
|
void lte_ttcn3_phy::set_cell_map(const cell_list_t& cells_)
|
||||||
|
|
Loading…
Reference in New Issue