1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-09-27 15:26:33 -04:00

LimeSDR: report GPIO pins values in the GUI

This commit is contained in:
f4exb 2018-11-29 13:57:04 +01:00
parent 5319eac2ff
commit 83b66eb6f1
7 changed files with 135 additions and 28 deletions

View File

@ -103,18 +103,21 @@ public:
public: public:
float getTemperature() const { return m_temperature; } 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: private:
float m_temperature; float m_temperature;
uint8_t m_gpioPins;
MsgReportDeviceInfo(float temperature) : MsgReportDeviceInfo(float temperature, uint8_t gpioPins) :
Message(), Message(),
m_temperature(temperature) m_temperature(temperature),
m_gpioPins(gpioPins)
{ } { }
}; };

View File

@ -655,19 +655,20 @@ bool LimeSDROutput::handleMessage(const Message& message)
else if (MsgGetDeviceInfo::match(message)) else if (MsgGetDeviceInfo::match(message))
{ {
double temp = 0.0; double temp = 0.0;
uint8_t gpioPins = 0;
if (m_deviceShared.m_deviceParams->getDevice() && (LMS_GetChipTemperature(m_deviceShared.m_deviceParams->getDevice(), 0, &temp) == 0)) if (m_deviceShared.m_deviceParams->getDevice() && (LMS_GetChipTemperature(m_deviceShared.m_deviceParams->getDevice(), 0, &temp) != 0)) {
{ qWarning("LimeSDROutput::handleMessage: MsgGetDeviceInfo: cannot get temperature");
//qDebug("LimeSDROutput::handleMessage: MsgGetDeviceInfo: temperature: %f", temp);
} }
else
{ if (m_deviceShared.m_deviceParams->getDevice() && (LMS_GPIORead(m_deviceShared.m_deviceParams->getDevice(), &gpioPins, 1) != 0)) {
qDebug("LimeSDROutput::handleMessage: MsgGetDeviceInfo: cannot get temperature"); qWarning("LimeSDROutput::handleMessage: MsgGetDeviceInfo: cannot get GPIO pins values");
} }
// send to oneself // send to oneself
if (getMessageQueueToGUI()) { if (getMessageQueueToGUI())
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp); {
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp, gpioPins);
getMessageQueueToGUI()->push(report); getMessageQueueToGUI()->push(report);
} }
@ -679,7 +680,7 @@ bool LimeSDROutput::handleMessage(const Message& message)
{ {
if ((*itSource)->getSampleSourceGUIMessageQueue()) if ((*itSource)->getSampleSourceGUIMessageQueue())
{ {
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp); DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp, gpioPins);
(*itSource)->getSampleSourceGUIMessageQueue()->push(report); (*itSource)->getSampleSourceGUIMessageQueue()->push(report);
} }
} }
@ -692,7 +693,7 @@ bool LimeSDROutput::handleMessage(const Message& message)
{ {
if ((*itSink)->getSampleSinkGUIMessageQueue()) if ((*itSink)->getSampleSinkGUIMessageQueue())
{ {
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp); DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp, gpioPins);
(*itSink)->getSampleSinkGUIMessageQueue()->push(report); (*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 ((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); 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 ((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); qCritical("LimeSDROutput::applySettings: could not set GPIO pins to %u", settings.m_gpioPins);
} }

View File

@ -244,6 +244,7 @@ bool LimeSDROutputGUI::handleMessage(const Message& message)
{ {
DeviceLimeSDRShared::MsgReportDeviceInfo& report = (DeviceLimeSDRShared::MsgReportDeviceInfo&) message; DeviceLimeSDRShared::MsgReportDeviceInfo& report = (DeviceLimeSDRShared::MsgReportDeviceInfo&) message;
ui->temperatureText->setText(tr("%1C").arg(QString::number(report.getTemperature(), 'f', 0))); 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; return true;
} }

View File

@ -880,6 +880,23 @@ QToolTip{background-color: white; color: black;}</string>
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="Line" name="line_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="gpioText">
<property name="toolTip">
<string>GPIO bits as hex value (LSB first)</string>
</property>
<property name="text">
<string>00</string>
</property>
</widget>
</item>
<item> <item>
<spacer name="horizontalSpacer_3"> <spacer name="horizontalSpacer_3">
<property name="orientation"> <property name="orientation">
@ -952,6 +969,39 @@ QToolTip{background-color: white; color: black;}</string>
</customwidgets> </customwidgets>
<resources> <resources>
<include location="../../../sdrgui/resources/res.qrc"/> <include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
</resources> </resources>
<connections/> <connections/>
</ui> </ui>

View File

@ -671,19 +671,20 @@ bool LimeSDRInput::handleMessage(const Message& message)
else if (MsgGetDeviceInfo::match(message)) else if (MsgGetDeviceInfo::match(message))
{ {
double temp = 0.0; double temp = 0.0;
uint8_t gpioPins = 0;
if (m_deviceShared.m_deviceParams->getDevice() && (LMS_GetChipTemperature(m_deviceShared.m_deviceParams->getDevice(), 0, &temp) == 0)) if (m_deviceShared.m_deviceParams->getDevice() && (LMS_GetChipTemperature(m_deviceShared.m_deviceParams->getDevice(), 0, &temp) != 0)) {
{ qWarning("LimeSDRInput::handleMessage: MsgGetDeviceInfo: cannot get temperature");
//qDebug("LimeSDRInput::handleMessage: MsgGetDeviceInfo: temperature: %f", temp);
} }
else
{ if (m_deviceShared.m_deviceParams->getDevice() && (LMS_GPIORead(m_deviceShared.m_deviceParams->getDevice(), &gpioPins, 1) != 0)) {
qDebug("LimeSDRInput::handleMessage: MsgGetDeviceInfo: cannot get temperature"); qWarning("LimeSDROutput::handleMessage: MsgGetDeviceInfo: cannot get GPIO pins values");
} }
// send to oneself // send to oneself
if (m_deviceAPI->getSampleSourceGUIMessageQueue()) { if (m_deviceAPI->getSampleSourceGUIMessageQueue())
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp); {
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp, gpioPins);
m_deviceAPI->getSampleSourceGUIMessageQueue()->push(report); m_deviceAPI->getSampleSourceGUIMessageQueue()->push(report);
} }
@ -695,7 +696,7 @@ bool LimeSDRInput::handleMessage(const Message& message)
{ {
if ((*itSource)->getSampleSourceGUIMessageQueue()) if ((*itSource)->getSampleSourceGUIMessageQueue())
{ {
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp); DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp, gpioPins);
(*itSource)->getSampleSourceGUIMessageQueue()->push(report); (*itSource)->getSampleSourceGUIMessageQueue()->push(report);
} }
} }
@ -708,7 +709,7 @@ bool LimeSDRInput::handleMessage(const Message& message)
{ {
if ((*itSink)->getSampleSinkGUIMessageQueue()) if ((*itSink)->getSampleSinkGUIMessageQueue())
{ {
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp); DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp, gpioPins);
(*itSink)->getSampleSinkGUIMessageQueue()->push(report); (*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 ((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); 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 ((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); qCritical("LimeSDROutput::applySettings: could not set GPIO pins to %u", settings.m_gpioPins);
} }

View File

@ -226,6 +226,7 @@ bool LimeSDRInputGUI::handleMessage(const Message& message)
{ {
DeviceLimeSDRShared::MsgReportDeviceInfo& report = (DeviceLimeSDRShared::MsgReportDeviceInfo&) message; DeviceLimeSDRShared::MsgReportDeviceInfo& report = (DeviceLimeSDRShared::MsgReportDeviceInfo&) message;
ui->temperatureText->setText(tr("%1C").arg(QString::number(report.getTemperature(), 'f', 0))); 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; return true;
} }
else if (LimeSDRInput::MsgStartStop::match(message)) else if (LimeSDRInput::MsgStartStop::match(message))

View File

@ -1121,6 +1121,23 @@ QToolTip{background-color: white; color: black;}</string>
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="Line" name="line_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="gpioText">
<property name="toolTip">
<string>GPIO bits as hex value (LSB first)</string>
</property>
<property name="text">
<string>00</string>
</property>
</widget>
</item>
<item> <item>
<spacer name="horizontalSpacer_3"> <spacer name="horizontalSpacer_3">
<property name="orientation"> <property name="orientation">
@ -1193,6 +1210,39 @@ QToolTip{background-color: white; color: black;}</string>
</customwidgets> </customwidgets>
<resources> <resources>
<include location="../../../sdrgui/resources/res.qrc"/> <include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
<include location="../../../sdrgui/resources/res.qrc"/>
</resources> </resources>
<connections/> <connections/>
</ui> </ui>