Improve srsENB output metrics

master
Ismael Gomez 4 years ago
parent bc3be73364
commit 5a2a435710

@ -85,7 +85,7 @@ void metrics_stdout::set_metrics(const enb_metrics_t& metrics, const uint32_t pe
n_reports = 0;
cout << endl;
cout << "------DL-------------------------------UL--------------------------------------------" << endl;
cout << "rnti cqi ri mcs brate ok nok (%) pusch pucch phr mcs brate ok nok (%) bsr" << endl;
cout << "rnti cqi ri mcs brate ok nok (%) pusch pucch phr mcs brate ok nok (%) bsr" << endl;
}
for (size_t i = 0; i < metrics.stack.rrc.ues.size(); i++) {
@ -101,52 +101,53 @@ void metrics_stdout::set_metrics(const enb_metrics_t& metrics, const uint32_t pe
}
cout << int_to_hex_string(metrics.stack.mac.ues[i].rnti, 4) << " ";
cout << float_to_string(SRSRAN_MAX(0.1, metrics.stack.mac.ues[i].dl_cqi), 1, 3);
if (not iszero(metrics.stack.mac.ues[i].dl_cqi)) {
cout << float_to_string(metrics.stack.mac.ues[i].dl_cqi, 1, 3);
} else {
cout << "n/a";
}
cout << float_to_string(metrics.stack.mac.ues[i].dl_ri, 1, 4);
if (not isnan(metrics.phy[i].dl.mcs)) {
cout << float_to_string(SRSRAN_MAX(0.1, metrics.phy[i].dl.mcs), 1, 4);
cout << float_to_string(metrics.phy[i].dl.mcs, 1, 4);
} else {
cout << float_to_string(0, 2, 4);
}
if (metrics.stack.mac.ues[i].tx_brate > 0) {
cout << float_to_eng_string(
SRSRAN_MAX(0.1, (float)metrics.stack.mac.ues[i].tx_brate / (metrics.stack.mac.ues[i].nof_tti * 1e-3)), 1);
cout << float_to_eng_string((float)metrics.stack.mac.ues[i].tx_brate / (metrics.stack.mac.ues[i].nof_tti * 1e-3), 1);
} else {
cout << float_to_string(0, 1, 6) << "";
}
cout << std::setw(5) << metrics.stack.mac.ues[i].tx_pkts - metrics.stack.mac.ues[i].tx_errors;
cout << std::setw(5) << metrics.stack.mac.ues[i].tx_errors;
if (metrics.stack.mac.ues[i].tx_pkts > 0 && metrics.stack.mac.ues[i].tx_errors) {
cout << float_to_string(
SRSRAN_MAX(0.1, (float)100 * metrics.stack.mac.ues[i].tx_errors / metrics.stack.mac.ues[i].tx_pkts), 1, 4)
cout << float_to_string((float)100 * metrics.stack.mac.ues[i].tx_errors / metrics.stack.mac.ues[i].tx_pkts, 1, 4)
<< "%";
} else {
cout << float_to_string(0, 1, 4) << "%";
}
cout << " ";
if (not isnan(metrics.phy[i].ul.pusch_sinr)) {
cout << float_to_string(SRSRAN_MAX(0.1, metrics.phy[i].ul.pusch_sinr), 2, 5);
if (not isnan(metrics.phy[i].ul.pusch_sinr) and not iszero(metrics.phy[i].ul.pusch_sinr)) {
cout << float_to_string(metrics.phy[i].ul.pusch_sinr, 2, 5);
} else {
cout << float_to_string(0, 2, 5);
cout << " n/a";
}
if (not isnan(metrics.phy[i].ul.pucch_sinr)) {
cout << float_to_string(SRSRAN_MAX(0.1, metrics.phy[i].ul.pucch_sinr), 2, 5);
if (not isnan(metrics.phy[i].ul.pucch_sinr) and not iszero(metrics.phy[i].ul.pucch_sinr)) {
cout << float_to_string(metrics.phy[i].ul.pucch_sinr, 2, 6);
} else {
cout << float_to_string(0, 2, 5);
cout << " n/a";
}
cout << " ";
cout << float_to_string(metrics.stack.mac.ues[i].phr, 2, 5);
if (not isnan(metrics.phy[i].ul.mcs)) {
cout << float_to_string(SRSRAN_MAX(0.1, metrics.phy[i].ul.mcs), 1, 4);
cout << float_to_string(metrics.phy[i].ul.mcs, 1, 4);
} else {
cout << float_to_string(0, 1, 4);
}
if (metrics.stack.mac.ues[i].rx_brate > 0) {
cout << float_to_eng_string(
SRSRAN_MAX(0.1, (float)metrics.stack.mac.ues[i].rx_brate / (metrics.stack.mac.ues[i].nof_tti * 1e-3)), 1);
cout << float_to_eng_string((float)metrics.stack.mac.ues[i].rx_brate / (metrics.stack.mac.ues[i].nof_tti * 1e-3), 1);
} else {
cout << float_to_string(0, 1) << "";
}
@ -154,8 +155,7 @@ void metrics_stdout::set_metrics(const enb_metrics_t& metrics, const uint32_t pe
cout << std::setw(5) << metrics.stack.mac.ues[i].rx_errors;
if (metrics.stack.mac.ues[i].rx_pkts > 0 && metrics.stack.mac.ues[i].rx_errors > 0) {
cout << float_to_string(
SRSRAN_MAX(0.1, (float)100 * metrics.stack.mac.ues[i].rx_errors / metrics.stack.mac.ues[i].rx_pkts), 1, 4)
cout << float_to_string((float)100 * metrics.stack.mac.ues[i].rx_errors / metrics.stack.mac.ues[i].rx_pkts, 1, 4)
<< "%";
} else {
cout << float_to_string(0, 1, 4) << "%";
@ -175,7 +175,7 @@ std::string metrics_stdout::float_to_string(float f, int digits, int field_width
f = 0.0;
precision = digits - 1;
} else {
precision = digits - (int)(log10f(fabs(f)) - 2 * DBL_EPSILON);
precision = digits - (int)(log10f(fabs(f + 0.0001)) - 2 * DBL_EPSILON);
}
if (precision == -1) {
precision = 0;

Loading…
Cancel
Save