aboutsummaryrefslogtreecommitdiffstats
path: root/src/output/Lime.cpp
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2023-03-29 16:30:06 +0200
committerMatthias P. Braendli <matthias.braendli@mpb.li>2023-03-29 17:09:21 +0200
commitfd46d43f51796a6bbdd629e08535bacbc853f283 (patch)
tree832f0a36a2d54c0dba23b59297d6894c8d9a6edc /src/output/Lime.cpp
parentefea1c485f178cdbadf5babdf7951e6d1a1ed801 (diff)
downloaddabmod-fd46d43f51796a6bbdd629e08535bacbc853f283.tar.gz
dabmod-fd46d43f51796a6bbdd629e08535bacbc853f283.tar.bz2
dabmod-fd46d43f51796a6bbdd629e08535bacbc853f283.zip
Replace RunStatistics to permit representation of SDR device specific stats
Diffstat (limited to 'src/output/Lime.cpp')
-rw-r--r--src/output/Lime.cpp31
1 files changed, 15 insertions, 16 deletions
diff --git a/src/output/Lime.cpp b/src/output/Lime.cpp
index bf466c3..83c54ad 100644
--- a/src/output/Lime.cpp
+++ b/src/output/Lime.cpp
@@ -323,13 +323,14 @@ double Lime::get_bandwidth(void) const
return bw;
}
-SDRDevice::RunStatistics Lime::get_run_statistics(void) const
+SDRDevice::run_statistics_t Lime::get_run_statistics(void) const
{
- RunStatistics rs;
- rs.num_underruns = underflows;
- rs.num_overruns = overflows;
- rs.num_late_packets = late_packets;
- rs.num_frames_modulated = num_frames_modulated;
+ run_statistics_t rs;
+ rs["underruns"] = underflows;
+ rs["overruns"] = overflows;
+ rs["dropped_packets"] = dropped_packets;
+ rs["frames"] = num_frames_modulated;
+ rs["fifo_fill"] = m_last_fifo_fill_percent * 100;
return rs;
}
@@ -371,23 +372,21 @@ const char *Lime::device_name(void) const
return "Lime";
}
-double Lime::get_temperature(void) const
+std::optional<double> Lime::get_temperature(void) const
{
if (not m_device)
throw runtime_error("Lime device not set up");
- float_type temp = numeric_limits<float_type>::quiet_NaN();
- if (LMS_GetChipTemperature(m_device, 0, &temp) < 0)
- {
+ float_type temp = 0;
+ if (LMS_GetChipTemperature(m_device, 0, &temp) >= 0) {
+ return temp;
+ }
+ else {
etiLog.level(error) << "Error getting LimeSDR temperature: %s " << LMS_GetLastErrorMessage();
+ return std::nullopt;
}
- return temp;
}
-float Lime::get_fifo_fill_percent(void) const
-{
- return m_last_fifo_fill_percent * 100;
-}
void Lime::transmit_frame(struct FrameData&& frame)
{
@@ -411,7 +410,7 @@ void Lime::transmit_frame(struct FrameData&& frame)
LMS_GetStreamStatus(&m_tx_stream, &LimeStatus);
overflows += LimeStatus.overrun;
underflows += LimeStatus.underrun;
- late_packets += LimeStatus.droppedPackets;
+ dropped_packets += LimeStatus.droppedPackets;
#ifdef LIMEDEBUG
etiLog.level(info) << LimeStatus.fifoFilledCount << "/" << LimeStatus.fifoSize << ":" << numSamples << "Rate" << LimeStatus.linkRate / (2 * 2.0);