mirror of https://github.com/PentHertz/srsLTE.git
mac_nr: add basic get_metrics() implementation
This commit is contained in:
parent
dbcf5c9503
commit
4a5d2a8659
|
@ -107,7 +107,7 @@ private:
|
||||||
const static uint32_t NUMEROLOGY_IDX = 0; /// only 15kHz supported at this stage
|
const static uint32_t NUMEROLOGY_IDX = 0; /// only 15kHz supported at this stage
|
||||||
srsran::slot_point pdsch_slot, pusch_slot;
|
srsran::slot_point pdsch_slot, pusch_slot;
|
||||||
srsenb::sched_nr sched;
|
srsenb::sched_nr sched;
|
||||||
srsenb::sched_interface::cell_cfg_t cfg = {};
|
srsran::const_span<sched_nr_interface::cell_cfg_t> cell_config;
|
||||||
|
|
||||||
// Map of active UEs
|
// Map of active UEs
|
||||||
pthread_rwlock_t rwlock = {};
|
pthread_rwlock_t rwlock = {};
|
||||||
|
|
|
@ -77,21 +77,38 @@ void mac_nr::stop()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void mac_nr::get_metrics(srsenb::mac_metrics_t& metrics) {}
|
void mac_nr::get_metrics(srsenb::mac_metrics_t& metrics)
|
||||||
|
{
|
||||||
|
srsran::rwlock_read_guard lock(rwlock);
|
||||||
|
metrics.ues.reserve(ue_db.size());
|
||||||
|
for (auto& u : ue_db) {
|
||||||
|
if (not sched.ue_exists(u.first)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
metrics.ues.emplace_back();
|
||||||
|
u.second->metrics_read(&metrics.ues.back());
|
||||||
|
}
|
||||||
|
metrics.cc_info.resize(detected_rachs.size());
|
||||||
|
for (unsigned cc = 0, e = detected_rachs.size(); cc != e; ++cc) {
|
||||||
|
metrics.cc_info[cc].cc_rach_counter = detected_rachs[cc];
|
||||||
|
metrics.cc_info[cc].pci = (cc < cell_config.size()) ? cell_config[cc].carrier.pci : 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int mac_nr::cell_cfg(const sched_interface::cell_cfg_t& cell,
|
int mac_nr::cell_cfg(const sched_interface::cell_cfg_t& eutra_cell_config,
|
||||||
srsran::const_span<sched_nr_interface::cell_cfg_t> nr_cells)
|
srsran::const_span<sched_nr_interface::cell_cfg_t> nr_cells)
|
||||||
{
|
{
|
||||||
cfg = cell;
|
cell_config = nr_cells;
|
||||||
sched.cell_cfg(nr_cells);
|
sched.cell_cfg(nr_cells);
|
||||||
detected_rachs.resize(nr_cells.size());
|
detected_rachs.resize(nr_cells.size());
|
||||||
|
|
||||||
// read SIBs from RRC (SIB1 for now only)
|
// read SIBs from RRC (SIB1 for now only)
|
||||||
for (int i = 0; i < 1 /* srsenb::sched_interface::MAX_SIBS */; i++) {
|
for (int i = 0; i < 1 /* srsenb::sched_interface::MAX_SIBS */; i++) {
|
||||||
if (cell.sibs->len > 0) {
|
// TODO: add flag for SIBs into cell config
|
||||||
|
if (true) {
|
||||||
sib_info_t sib = {};
|
sib_info_t sib = {};
|
||||||
sib.index = i;
|
sib.index = i;
|
||||||
sib.periodicity = cell.sibs->period_rf;
|
sib.periodicity = 4; // TODO: read period_rf from config
|
||||||
sib.payload = srsran::make_byte_buffer();
|
sib.payload = srsran::make_byte_buffer();
|
||||||
if (sib.payload == nullptr) {
|
if (sib.payload == nullptr) {
|
||||||
logger.error("Couldn't allocate PDU in %s().", __FUNCTION__);
|
logger.error("Couldn't allocate PDU in %s().", __FUNCTION__);
|
||||||
|
|
Loading…
Reference in New Issue