diff --git a/devices/limesdr/devicelimesdrshared.h b/devices/limesdr/devicelimesdrshared.h
index 8e2478008..b4e90fd88 100644
--- a/devices/limesdr/devicelimesdrshared.h
+++ b/devices/limesdr/devicelimesdrshared.h
@@ -103,18 +103,21 @@ public:
public:
float getTemperature() const { return m_temperature; }
+ uint8_t getGPIOPins() const { return m_gpioPins; }
- static MsgReportDeviceInfo* create(float temperature)
+ static MsgReportDeviceInfo* create(float temperature, uint8_t gpioPins)
{
- return new MsgReportDeviceInfo(temperature);
+ return new MsgReportDeviceInfo(temperature, gpioPins);
}
private:
float m_temperature;
+ uint8_t m_gpioPins;
- MsgReportDeviceInfo(float temperature) :
+ MsgReportDeviceInfo(float temperature, uint8_t gpioPins) :
Message(),
- m_temperature(temperature)
+ m_temperature(temperature),
+ m_gpioPins(gpioPins)
{ }
};
diff --git a/plugins/samplesink/limesdroutput/limesdroutput.cpp b/plugins/samplesink/limesdroutput/limesdroutput.cpp
index c9bf756a6..6ca3facf4 100644
--- a/plugins/samplesink/limesdroutput/limesdroutput.cpp
+++ b/plugins/samplesink/limesdroutput/limesdroutput.cpp
@@ -655,19 +655,20 @@ bool LimeSDROutput::handleMessage(const Message& message)
else if (MsgGetDeviceInfo::match(message))
{
double temp = 0.0;
+ uint8_t gpioPins = 0;
- if (m_deviceShared.m_deviceParams->getDevice() && (LMS_GetChipTemperature(m_deviceShared.m_deviceParams->getDevice(), 0, &temp) == 0))
- {
- //qDebug("LimeSDROutput::handleMessage: MsgGetDeviceInfo: temperature: %f", temp);
+ if (m_deviceShared.m_deviceParams->getDevice() && (LMS_GetChipTemperature(m_deviceShared.m_deviceParams->getDevice(), 0, &temp) != 0)) {
+ qWarning("LimeSDROutput::handleMessage: MsgGetDeviceInfo: cannot get temperature");
}
- else
- {
- qDebug("LimeSDROutput::handleMessage: MsgGetDeviceInfo: cannot get temperature");
+
+ if (m_deviceShared.m_deviceParams->getDevice() && (LMS_GPIORead(m_deviceShared.m_deviceParams->getDevice(), &gpioPins, 1) != 0)) {
+ qWarning("LimeSDROutput::handleMessage: MsgGetDeviceInfo: cannot get GPIO pins values");
}
// send to oneself
- if (getMessageQueueToGUI()) {
- DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp);
+ if (getMessageQueueToGUI())
+ {
+ DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp, gpioPins);
getMessageQueueToGUI()->push(report);
}
@@ -679,7 +680,7 @@ bool LimeSDROutput::handleMessage(const Message& message)
{
if ((*itSource)->getSampleSourceGUIMessageQueue())
{
- DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp);
+ DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp, gpioPins);
(*itSource)->getSampleSourceGUIMessageQueue()->push(report);
}
}
@@ -692,7 +693,7 @@ bool LimeSDROutput::handleMessage(const Message& message)
{
if ((*itSink)->getSampleSinkGUIMessageQueue())
{
- DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp);
+ DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp, gpioPins);
(*itSink)->getSampleSinkGUIMessageQueue()->push(report);
}
}
@@ -930,7 +931,7 @@ bool LimeSDROutput::applySettings(const LimeSDROutputSettings& settings, bool fo
if ((m_settings.m_gpioDir != settings.m_gpioDir) || force)
{
- if (LMS_GPIODirWrite(m_deviceShared.m_deviceParams->getDevice(), &settings.m_gpioDir, 1) < 0)
+ if (LMS_GPIODirWrite(m_deviceShared.m_deviceParams->getDevice(), &settings.m_gpioDir, 1) != 0)
{
qCritical("LimeSDROutput::applySettings: could not set GPIO directions to %u", settings.m_gpioDir);
}
@@ -943,7 +944,7 @@ bool LimeSDROutput::applySettings(const LimeSDROutputSettings& settings, bool fo
if ((m_settings.m_gpioPins != settings.m_gpioPins) || force)
{
- if (LMS_GPIOWrite(m_deviceShared.m_deviceParams->getDevice(), &settings.m_gpioPins, 1) < 0)
+ if (LMS_GPIOWrite(m_deviceShared.m_deviceParams->getDevice(), &settings.m_gpioPins, 1) != 0)
{
qCritical("LimeSDROutput::applySettings: could not set GPIO pins to %u", settings.m_gpioPins);
}
diff --git a/plugins/samplesink/limesdroutput/limesdroutputgui.cpp b/plugins/samplesink/limesdroutput/limesdroutputgui.cpp
index f904360d9..1ca300685 100644
--- a/plugins/samplesink/limesdroutput/limesdroutputgui.cpp
+++ b/plugins/samplesink/limesdroutput/limesdroutputgui.cpp
@@ -244,6 +244,7 @@ bool LimeSDROutputGUI::handleMessage(const Message& message)
{
DeviceLimeSDRShared::MsgReportDeviceInfo& report = (DeviceLimeSDRShared::MsgReportDeviceInfo&) message;
ui->temperatureText->setText(tr("%1C").arg(QString::number(report.getTemperature(), 'f', 0)));
+ ui->gpioText->setText(tr("%1").arg(report.getGPIOPins(), 2, 16, QChar('0')));
return true;
}
diff --git a/plugins/samplesink/limesdroutput/limesdroutputgui.ui b/plugins/samplesink/limesdroutput/limesdroutputgui.ui
index 19d8d00e4..3e7197e9a 100644
--- a/plugins/samplesink/limesdroutput/limesdroutputgui.ui
+++ b/plugins/samplesink/limesdroutput/limesdroutputgui.ui
@@ -880,6 +880,23 @@ QToolTip{background-color: white; color: black;}
+ -
+
+
+ Qt::Vertical
+
+
+
+ -
+
+
+ GPIO bits as hex value (LSB first)
+
+
+ 00
+
+
+
-
@@ -952,6 +969,39 @@ QToolTip{background-color: white; color: black;}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/samplesource/limesdrinput/limesdrinput.cpp b/plugins/samplesource/limesdrinput/limesdrinput.cpp
index 16538553d..403243c3a 100644
--- a/plugins/samplesource/limesdrinput/limesdrinput.cpp
+++ b/plugins/samplesource/limesdrinput/limesdrinput.cpp
@@ -671,19 +671,20 @@ bool LimeSDRInput::handleMessage(const Message& message)
else if (MsgGetDeviceInfo::match(message))
{
double temp = 0.0;
+ uint8_t gpioPins = 0;
- if (m_deviceShared.m_deviceParams->getDevice() && (LMS_GetChipTemperature(m_deviceShared.m_deviceParams->getDevice(), 0, &temp) == 0))
- {
- //qDebug("LimeSDRInput::handleMessage: MsgGetDeviceInfo: temperature: %f", temp);
+ if (m_deviceShared.m_deviceParams->getDevice() && (LMS_GetChipTemperature(m_deviceShared.m_deviceParams->getDevice(), 0, &temp) != 0)) {
+ qWarning("LimeSDRInput::handleMessage: MsgGetDeviceInfo: cannot get temperature");
}
- else
- {
- qDebug("LimeSDRInput::handleMessage: MsgGetDeviceInfo: cannot get temperature");
+
+ if (m_deviceShared.m_deviceParams->getDevice() && (LMS_GPIORead(m_deviceShared.m_deviceParams->getDevice(), &gpioPins, 1) != 0)) {
+ qWarning("LimeSDROutput::handleMessage: MsgGetDeviceInfo: cannot get GPIO pins values");
}
// send to oneself
- if (m_deviceAPI->getSampleSourceGUIMessageQueue()) {
- DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp);
+ if (m_deviceAPI->getSampleSourceGUIMessageQueue())
+ {
+ DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp, gpioPins);
m_deviceAPI->getSampleSourceGUIMessageQueue()->push(report);
}
@@ -695,7 +696,7 @@ bool LimeSDRInput::handleMessage(const Message& message)
{
if ((*itSource)->getSampleSourceGUIMessageQueue())
{
- DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp);
+ DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp, gpioPins);
(*itSource)->getSampleSourceGUIMessageQueue()->push(report);
}
}
@@ -708,7 +709,7 @@ bool LimeSDRInput::handleMessage(const Message& message)
{
if ((*itSink)->getSampleSinkGUIMessageQueue())
{
- DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp);
+ DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp, gpioPins);
(*itSink)->getSampleSinkGUIMessageQueue()->push(report);
}
}
@@ -1107,7 +1108,7 @@ bool LimeSDRInput::applySettings(const LimeSDRInputSettings& settings, bool forc
if ((m_settings.m_gpioDir != settings.m_gpioDir) || force)
{
- if (LMS_GPIODirWrite(m_deviceShared.m_deviceParams->getDevice(), &settings.m_gpioDir, 1) < 0)
+ if (LMS_GPIODirWrite(m_deviceShared.m_deviceParams->getDevice(), &settings.m_gpioDir, 1) != 0)
{
qCritical("LimeSDROutput::applySettings: could not set GPIO directions to %u", settings.m_gpioDir);
}
@@ -1120,7 +1121,7 @@ bool LimeSDRInput::applySettings(const LimeSDRInputSettings& settings, bool forc
if ((m_settings.m_gpioPins != settings.m_gpioPins) || force)
{
- if (LMS_GPIOWrite(m_deviceShared.m_deviceParams->getDevice(), &settings.m_gpioPins, 1) < 0)
+ if (LMS_GPIOWrite(m_deviceShared.m_deviceParams->getDevice(), &settings.m_gpioPins, 1) != 0)
{
qCritical("LimeSDROutput::applySettings: could not set GPIO pins to %u", settings.m_gpioPins);
}
diff --git a/plugins/samplesource/limesdrinput/limesdrinputgui.cpp b/plugins/samplesource/limesdrinput/limesdrinputgui.cpp
index 8693eb7e1..d31a66642 100644
--- a/plugins/samplesource/limesdrinput/limesdrinputgui.cpp
+++ b/plugins/samplesource/limesdrinput/limesdrinputgui.cpp
@@ -226,6 +226,7 @@ bool LimeSDRInputGUI::handleMessage(const Message& message)
{
DeviceLimeSDRShared::MsgReportDeviceInfo& report = (DeviceLimeSDRShared::MsgReportDeviceInfo&) message;
ui->temperatureText->setText(tr("%1C").arg(QString::number(report.getTemperature(), 'f', 0)));
+ ui->gpioText->setText(tr("%1").arg(report.getGPIOPins(), 2, 16, QChar('0')));
return true;
}
else if (LimeSDRInput::MsgStartStop::match(message))
diff --git a/plugins/samplesource/limesdrinput/limesdrinputgui.ui b/plugins/samplesource/limesdrinput/limesdrinputgui.ui
index a41f0c50e..669475c97 100644
--- a/plugins/samplesource/limesdrinput/limesdrinputgui.ui
+++ b/plugins/samplesource/limesdrinput/limesdrinputgui.ui
@@ -1121,6 +1121,23 @@ QToolTip{background-color: white; color: black;}
+ -
+
+
+ Qt::Vertical
+
+
+
+ -
+
+
+ GPIO bits as hex value (LSB first)
+
+
+ 00
+
+
+
-
@@ -1193,6 +1210,39 @@ QToolTip{background-color: white; color: black;}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+