mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-04 16:01:14 -05:00
LoRa demod: use settings in GUI
This commit is contained in:
parent
bb2c114dd2
commit
26d7fe8d86
@ -1,12 +1,10 @@
|
|||||||
#include "../../channelrx/demodlora/lorademodgui.h"
|
|
||||||
#include "../../channelrx/demodlora/lorademodgui.h"
|
|
||||||
|
|
||||||
#include <device/devicesourceapi.h>
|
#include <device/devicesourceapi.h>
|
||||||
#include <dsp/downchannelizer.h>
|
#include <dsp/downchannelizer.h>
|
||||||
#include <QDockWidget>
|
#include <QDockWidget>
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
|
|
||||||
#include "../../../sdrbase/dsp/threadedbasebandsamplesink.h"
|
#include "dsp/threadedbasebandsamplesink.h"
|
||||||
#include "ui_lorademodgui.h"
|
#include "ui_lorademodgui.h"
|
||||||
#include "ui_lorademodgui.h"
|
#include "ui_lorademodgui.h"
|
||||||
#include "dsp/spectrumvis.h"
|
#include "dsp/spectrumvis.h"
|
||||||
@ -15,7 +13,9 @@
|
|||||||
#include "util/simpleserializer.h"
|
#include "util/simpleserializer.h"
|
||||||
#include "gui/basicchannelsettingswidget.h"
|
#include "gui/basicchannelsettingswidget.h"
|
||||||
#include "dsp/dspengine.h"
|
#include "dsp/dspengine.h"
|
||||||
#include "../../channelrx/demodlora/lorademod.h"
|
|
||||||
|
#include "lorademod.h"
|
||||||
|
#include "lorademodgui.h"
|
||||||
|
|
||||||
const QString LoRaDemodGUI::m_channelID = "de.maintech.sdrangelove.channel.lora";
|
const QString LoRaDemodGUI::m_channelID = "de.maintech.sdrangelove.channel.lora";
|
||||||
|
|
||||||
@ -52,63 +52,26 @@ void LoRaDemodGUI::setCenterFrequency(qint64 centerFrequency)
|
|||||||
|
|
||||||
void LoRaDemodGUI::resetToDefaults()
|
void LoRaDemodGUI::resetToDefaults()
|
||||||
{
|
{
|
||||||
blockApplySettings(true);
|
m_settings.resetToDefaults();
|
||||||
|
displaySettings();
|
||||||
ui->BW->setValue(0);
|
applySettings(true);
|
||||||
ui->Spread->setValue(0);
|
|
||||||
|
|
||||||
blockApplySettings(false);
|
|
||||||
applySettings();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray LoRaDemodGUI::serialize() const
|
QByteArray LoRaDemodGUI::serialize() const
|
||||||
{
|
{
|
||||||
SimpleSerializer s(1);
|
return m_settings.serialize();
|
||||||
s.writeS32(1, m_channelMarker.getCenterFrequency());
|
|
||||||
s.writeS32(2, ui->BW->value());
|
|
||||||
s.writeS32(3, ui->Spread->value());
|
|
||||||
s.writeBlob(4, ui->spectrumGUI->serialize());
|
|
||||||
return s.final();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LoRaDemodGUI::deserialize(const QByteArray& data)
|
bool LoRaDemodGUI::deserialize(const QByteArray& data)
|
||||||
{
|
{
|
||||||
SimpleDeserializer d(data);
|
if(m_settings.deserialize(data)) {
|
||||||
|
displaySettings();
|
||||||
if(!d.isValid())
|
applySettings(true);
|
||||||
{
|
return true;
|
||||||
resetToDefaults();
|
} else {
|
||||||
return false;
|
resetToDefaults();
|
||||||
}
|
return false;
|
||||||
|
}
|
||||||
if(d.getVersion() == 1)
|
|
||||||
{
|
|
||||||
QByteArray bytetmp;
|
|
||||||
qint32 tmp;
|
|
||||||
|
|
||||||
blockApplySettings(true);
|
|
||||||
m_channelMarker.blockSignals(true);
|
|
||||||
|
|
||||||
d.readS32(1, &tmp, 0);
|
|
||||||
m_channelMarker.setCenterFrequency(tmp);
|
|
||||||
d.readS32(2, &tmp, 0);
|
|
||||||
ui->BW->setValue(tmp);
|
|
||||||
d.readS32(3, &tmp, 0);
|
|
||||||
ui->Spread->setValue(tmp);
|
|
||||||
d.readBlob(4, &bytetmp);
|
|
||||||
ui->spectrumGUI->deserialize(bytetmp);
|
|
||||||
|
|
||||||
blockApplySettings(false);
|
|
||||||
m_channelMarker.blockSignals(false);
|
|
||||||
|
|
||||||
applySettings();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
resetToDefaults();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LoRaDemodGUI::handleMessage(const Message& message __attribute__((unused)))
|
bool LoRaDemodGUI::handleMessage(const Message& message __attribute__((unused)))
|
||||||
@ -123,10 +86,18 @@ void LoRaDemodGUI::viewChanged()
|
|||||||
|
|
||||||
void LoRaDemodGUI::on_BW_valueChanged(int value)
|
void LoRaDemodGUI::on_BW_valueChanged(int value)
|
||||||
{
|
{
|
||||||
const int loraBW[] = BANDWIDTHSTRING;
|
if (value < 0) {
|
||||||
int thisBW = loraBW[value];
|
m_settings.m_bandwidthIndex = 0;
|
||||||
|
} else if (value < LoRaDemodSettings::nb_bandwidths) {
|
||||||
|
m_settings.m_bandwidthIndex = value;
|
||||||
|
} else {
|
||||||
|
m_settings.m_bandwidthIndex = LoRaDemodSettings::nb_bandwidths - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int thisBW = LoRaDemodSettings::bandwidths[value];
|
||||||
ui->BWText->setText(QString("%1 Hz").arg(thisBW));
|
ui->BWText->setText(QString("%1 Hz").arg(thisBW));
|
||||||
m_channelMarker.setBandwidth(thisBW);
|
m_channelMarker.setBandwidth(thisBW);
|
||||||
|
|
||||||
applySettings();
|
applySettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -178,9 +149,8 @@ LoRaDemodGUI::LoRaDemodGUI(PluginAPI* pluginAPI, DeviceSourceAPI *deviceAPI, QWi
|
|||||||
|
|
||||||
setTitleColor(Qt::magenta);
|
setTitleColor(Qt::magenta);
|
||||||
|
|
||||||
//m_channelMarker = new ChannelMarker(this);
|
|
||||||
m_channelMarker.setColor(Qt::magenta);
|
m_channelMarker.setColor(Qt::magenta);
|
||||||
m_channelMarker.setBandwidth(7813);
|
m_channelMarker.setBandwidth(LoRaDemodSettings::bandwidths[0]);
|
||||||
m_channelMarker.setCenterFrequency(0);
|
m_channelMarker.setCenterFrequency(0);
|
||||||
m_channelMarker.setVisible(true);
|
m_channelMarker.setVisible(true);
|
||||||
|
|
||||||
@ -203,7 +173,6 @@ LoRaDemodGUI::~LoRaDemodGUI()
|
|||||||
delete m_channelizer;
|
delete m_channelizer;
|
||||||
delete m_LoRaDemod;
|
delete m_LoRaDemod;
|
||||||
delete m_spectrumVis;
|
delete m_spectrumVis;
|
||||||
//delete m_channelMarker;
|
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -212,17 +181,24 @@ void LoRaDemodGUI::blockApplySettings(bool block)
|
|||||||
m_doApplySettings = !block;
|
m_doApplySettings = !block;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoRaDemodGUI::applySettings()
|
void LoRaDemodGUI::applySettings(bool force)
|
||||||
{
|
{
|
||||||
if (m_doApplySettings)
|
if (m_doApplySettings)
|
||||||
{
|
{
|
||||||
const int loraBW[] = BANDWIDTHSTRING;
|
|
||||||
int thisBW = loraBW[ui->BW->value()];
|
|
||||||
|
|
||||||
m_channelizer->configure(m_channelizer->getInputMessageQueue(),
|
m_channelizer->configure(m_channelizer->getInputMessageQueue(),
|
||||||
thisBW,
|
LoRaDemodSettings::bandwidths[m_settings.m_bandwidthIndex],
|
||||||
m_channelMarker.getCenterFrequency());
|
m_channelMarker.getCenterFrequency());
|
||||||
|
|
||||||
m_LoRaDemod->configure(m_LoRaDemod->getInputMessageQueue(), thisBW);
|
m_LoRaDemod->configure(m_LoRaDemod->getInputMessageQueue(), m_settings.m_bandwidthIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LoRaDemodGUI::displaySettings()
|
||||||
|
{
|
||||||
|
blockApplySettings(true);
|
||||||
|
int thisBW = LoRaDemodSettings::bandwidths[m_settings.m_bandwidthIndex];
|
||||||
|
ui->BWText->setText(QString("%1 Hz").arg(thisBW));
|
||||||
|
ui->BW->setValue(m_settings.m_bandwidthIndex);
|
||||||
|
m_channelMarker.setBandwidth(thisBW);
|
||||||
|
blockApplySettings(false);
|
||||||
|
}
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
#include "dsp/channelmarker.h"
|
#include "dsp/channelmarker.h"
|
||||||
#include "util/messagequeue.h"
|
#include "util/messagequeue.h"
|
||||||
|
|
||||||
#define BANDWIDTHSTRING {7813,15625,20833,31250,62500}
|
#include "lorademodsettings.h"
|
||||||
|
|
||||||
class PluginAPI;
|
class PluginAPI;
|
||||||
class DeviceSourceAPI;
|
class DeviceSourceAPI;
|
||||||
@ -51,6 +51,7 @@ private:
|
|||||||
PluginAPI* m_pluginAPI;
|
PluginAPI* m_pluginAPI;
|
||||||
DeviceSourceAPI* m_deviceAPI;
|
DeviceSourceAPI* m_deviceAPI;
|
||||||
ChannelMarker m_channelMarker;
|
ChannelMarker m_channelMarker;
|
||||||
|
LoRaDemodSettings m_settings;
|
||||||
bool m_basicSettingsShown;
|
bool m_basicSettingsShown;
|
||||||
bool m_doApplySettings;
|
bool m_doApplySettings;
|
||||||
|
|
||||||
@ -64,7 +65,8 @@ private:
|
|||||||
virtual ~LoRaDemodGUI();
|
virtual ~LoRaDemodGUI();
|
||||||
|
|
||||||
void blockApplySettings(bool block);
|
void blockApplySettings(bool block);
|
||||||
void applySettings();
|
void applySettings(bool force = false);
|
||||||
|
void displaySettings();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // INCLUDE_LoRaDEMODGUI_H
|
#endif // INCLUDE_LoRaDEMODGUI_H
|
||||||
|
@ -67,7 +67,7 @@
|
|||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>3</number>
|
<number>4</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="pageStep">
|
<property name="pageStep">
|
||||||
<number>1</number>
|
<number>1</number>
|
||||||
|
@ -7,6 +7,9 @@
|
|||||||
#include "settings/serializable.h"
|
#include "settings/serializable.h"
|
||||||
#include "lorademodsettings.h"
|
#include "lorademodsettings.h"
|
||||||
|
|
||||||
|
const int LoRaDemodSettings::bandwidths[] = {7813,15625,20833,31250,62500};
|
||||||
|
const int LoRaDemodSettings::nb_bandwidths = 5;
|
||||||
|
|
||||||
LoRaDemodSettings::LoRaDemodSettings() :
|
LoRaDemodSettings::LoRaDemodSettings() :
|
||||||
m_channelMarker(0),
|
m_channelMarker(0),
|
||||||
m_spectrumGUI(0)
|
m_spectrumGUI(0)
|
||||||
@ -16,7 +19,7 @@ LoRaDemodSettings::LoRaDemodSettings() :
|
|||||||
|
|
||||||
void LoRaDemodSettings::resetToDefaults()
|
void LoRaDemodSettings::resetToDefaults()
|
||||||
{
|
{
|
||||||
m_bandwidth = 0;
|
m_bandwidthIndex = 0;
|
||||||
m_spread = 0;
|
m_spread = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -24,7 +27,7 @@ QByteArray LoRaDemodSettings::serialize() const
|
|||||||
{
|
{
|
||||||
SimpleSerializer s(1);
|
SimpleSerializer s(1);
|
||||||
s.writeS32(1, m_centerFrequency);
|
s.writeS32(1, m_centerFrequency);
|
||||||
s.writeS32(2, m_bandwidth);
|
s.writeS32(2, m_bandwidthIndex);
|
||||||
s.writeS32(3, m_spread);
|
s.writeS32(3, m_spread);
|
||||||
|
|
||||||
if (m_spectrumGUI) {
|
if (m_spectrumGUI) {
|
||||||
@ -53,7 +56,7 @@ bool LoRaDemodSettings::deserialize(const QByteArray& data)
|
|||||||
QByteArray bytetmp;
|
QByteArray bytetmp;
|
||||||
|
|
||||||
d.readS32(1, &m_centerFrequency, 0);
|
d.readS32(1, &m_centerFrequency, 0);
|
||||||
d.readS32(2, &m_bandwidth, 0);
|
d.readS32(2, &m_bandwidthIndex, 0);
|
||||||
d.readS32(3, &m_spread, 0);
|
d.readS32(3, &m_spread, 0);
|
||||||
|
|
||||||
if (m_spectrumGUI) {
|
if (m_spectrumGUI) {
|
||||||
|
@ -10,13 +10,16 @@ class Serializable;
|
|||||||
struct LoRaDemodSettings
|
struct LoRaDemodSettings
|
||||||
{
|
{
|
||||||
int m_centerFrequency;
|
int m_centerFrequency;
|
||||||
int m_bandwidth;
|
int m_bandwidthIndex;
|
||||||
int m_spread;
|
int m_spread;
|
||||||
uint32_t m_rgbColor;
|
uint32_t m_rgbColor;
|
||||||
|
|
||||||
Serializable *m_channelMarker;
|
Serializable *m_channelMarker;
|
||||||
Serializable *m_spectrumGUI;
|
Serializable *m_spectrumGUI;
|
||||||
|
|
||||||
|
static const int bandwidths[];
|
||||||
|
static const int nb_bandwidths;
|
||||||
|
|
||||||
LoRaDemodSettings();
|
LoRaDemodSettings();
|
||||||
void resetToDefaults();
|
void resetToDefaults();
|
||||||
void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; }
|
void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; }
|
||||||
|
Loading…
Reference in New Issue
Block a user