1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-07 08:24:43 -04:00

DeviceGUI: removed destroy method. Part of #2159

This commit is contained in:
f4exb
2024-09-07 21:50:42 +02:00
parent 5d0fa7fa67
commit 37e06de0ed
10 changed files with 270 additions and 293 deletions
+33 -38
View File
@@ -43,7 +43,7 @@ RTLSDRGui::RTLSDRGui(DeviceUISet *deviceUISet, QWidget* parent) :
m_forceSettings(true),
m_settings(),
m_sampleRateMode(true),
m_sampleSource(0)
m_sampleSource(nullptr)
{
m_deviceUISet = deviceUISet;
setAttribute(Qt::WA_DeleteOnClose, true);
@@ -92,11 +92,6 @@ RTLSDRGui::~RTLSDRGui()
qDebug("RTLSDRGui::~RTLSDRGui: end");
}
void RTLSDRGui::destroy()
{
delete this;
}
void RTLSDRGui::resetToDefaults()
{
m_settings.resetToDefaults();
@@ -145,23 +140,23 @@ bool RTLSDRGui::handleMessage(const Message& message)
{
if (RTLSDRInput::MsgConfigureRTLSDR::match(message))
{
const RTLSDRInput::MsgConfigureRTLSDR& cfg = (RTLSDRInput::MsgConfigureRTLSDR&) message;
auto& cfg = (const RTLSDRInput::MsgConfigureRTLSDR&) message;
if (cfg.getForce()) {
m_settings = cfg.getSettings();
m_settings = cfg.getSettings();
} else {
m_settings.applySettings(cfg.getSettingsKeys(), cfg.getSettings());
}
blockApplySettings(true);
displayGains();
displaySettings();
blockApplySettings(false);
return true;
blockApplySettings(true);
displayGains();
displaySettings();
blockApplySettings(false);
return true;
}
else if (RTLSDRInput::MsgStartStop::match(message))
{
RTLSDRInput::MsgStartStop& notif = (RTLSDRInput::MsgStartStop&) message;
auto& notif = (const RTLSDRInput::MsgStartStop&) message;
blockApplySettings(true);
ui->startStop->setChecked(notif.getStartStop());
blockApplySettings(false);
@@ -178,13 +173,13 @@ void RTLSDRGui::handleInputMessages()
{
Message* message;
while ((message = m_inputMessageQueue.pop()) != 0)
while ((message = m_inputMessageQueue.pop()) != nullptr)
{
qDebug("RTLSDRGui::handleInputMessages: message: %s", message->getIdentifier());
if (DSPSignalNotification::match(*message))
{
DSPSignalNotification* notif = (DSPSignalNotification*) message;
auto* notif = (const DSPSignalNotification*) message;
m_sampleRate = notif->getSampleRate();
m_deviceCenterFrequency = notif->getCenterFrequency();
qDebug("RTLSDRGui::handleInputMessages: DSPSignalNotification: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency());
@@ -213,7 +208,7 @@ void RTLSDRGui::updateFrequencyLimits()
{
// values in kHz
qint64 deltaFrequency = m_settings.m_transverterMode ? m_settings.m_transverterDeltaFrequency/1000 : 0;
qint64 minLimit = (m_settings.m_noModMode ? RTLSDRInput::frequencyLowRangeMin : m_sampleSource->m_frequencyHighRangeMin) + deltaFrequency;
qint64 minLimit = (m_settings.m_noModMode ? RTLSDRInput::frequencyLowRangeMin : m_sampleSource->getFrequencyHighRangeMin()) + deltaFrequency;
qint64 maxLimit = (m_settings.m_noModMode ? RTLSDRInput::frequencyLowRangeMax : RTLSDRInput::frequencyHighRangeMax) + deltaFrequency;
if (m_settings.m_transverterMode)
@@ -233,7 +228,7 @@ void RTLSDRGui::updateFrequencyLimits()
void RTLSDRGui::displayGains()
{
if (m_gains.size() > 0)
if (!m_gains.empty())
{
int dist = abs(m_settings.m_gain - m_gains[0]);
int pos = 0;
@@ -248,7 +243,7 @@ void RTLSDRGui::displayGains()
}
ui->gainText->setText(tr("%1.%2").arg(m_gains[pos] / 10).arg(abs(m_gains[pos] % 10)));
ui->gain->setMaximum(m_gains.size() - 1);
ui->gain->setMaximum((int) (m_gains.size() - 1));
ui->gain->setEnabled(true);
ui->gain->setValue(pos);
}
@@ -280,7 +275,7 @@ void RTLSDRGui::displaySampleRate()
ui->sampleRate->setToolTip("Device to host sample rate (S/s)");
ui->deviceRateText->setToolTip("Baseband sample rate (S/s)");
uint32_t basebandSampleRate = m_settings.m_devSampleRate/(1<<m_settings.m_log2Decim);
ui->deviceRateText->setText(tr("%1k").arg(QString::number(basebandSampleRate / 1000.0f, 'g', 5)));
ui->deviceRateText->setText(tr("%1k").arg(QString::number((float) basebandSampleRate / 1000.0f, 'g', 5)));
}
else
{
@@ -296,7 +291,7 @@ void RTLSDRGui::displaySampleRate()
ui->sampleRate->setValue(m_settings.m_devSampleRate/(1<<m_settings.m_log2Decim));
ui->sampleRate->setToolTip("Baseband sample rate (S/s)");
ui->deviceRateText->setToolTip("Device to host sample rate (S/s)");
ui->deviceRateText->setText(tr("%1k").arg(QString::number(m_settings.m_devSampleRate / 1000.0f, 'g', 5)));
ui->deviceRateText->setText(tr("%1k").arg(QString::number((float) m_settings.m_devSampleRate / 1000.0f, 'g', 5)));
}
ui->sampleRate->blockSignals(false);
@@ -310,7 +305,7 @@ void RTLSDRGui::displayFcTooltip()
m_settings.m_devSampleRate,
DeviceSampleSource::FrequencyShiftScheme::FSHIFT_STD
);
ui->fcPos->setToolTip(tr("Relative position of device center frequency: %1 kHz").arg(QString::number(fShift / 1000.0f, 'g', 5)));
ui->fcPos->setToolTip(tr("Relative position of device center frequency: %1 kHz").arg(QString::number((float) fShift / 1000.0f, 'g', 5)));
}
void RTLSDRGui::displaySettings()
@@ -363,9 +358,9 @@ void RTLSDRGui::on_decim_currentIndexChanged(int index)
displaySampleRate();
if (m_sampleRateMode) {
m_settings.m_devSampleRate = ui->sampleRate->getValueNew();
m_settings.m_devSampleRate = (int) ui->sampleRate->getValueNew();
} else {
m_settings.m_devSampleRate = ui->sampleRate->getValueNew() * (1 << m_settings.m_log2Decim);
m_settings.m_devSampleRate = (int) ui->sampleRate->getValueNew() * (1 << m_settings.m_log2Decim);
}
m_settingsKeys.append("log2Decim");
@@ -523,9 +518,9 @@ void RTLSDRGui::on_agc_stateChanged(int state)
void RTLSDRGui::on_sampleRate_changed(quint64 value)
{
if (m_sampleRateMode) {
m_settings.m_devSampleRate = value;
m_settings.m_devSampleRate = (int) value;
} else {
m_settings.m_devSampleRate = value * (1 << m_settings.m_log2Decim);
m_settings.m_devSampleRate = (int) (value * (1 << m_settings.m_log2Decim));
}
displayFcTooltip();
@@ -542,7 +537,7 @@ void RTLSDRGui::on_offsetTuning_toggled(bool checked)
void RTLSDRGui::on_rfBW_changed(quint64 value)
{
m_settings.m_rfBandwidth = value * 1000;
m_settings.m_rfBandwidth = (quint32) (value * 1000);
m_settingsKeys.append("rfBandwidth");
sendSettings();
}
@@ -554,9 +549,9 @@ void RTLSDRGui::on_lowSampleRate_toggled(bool checked)
displaySampleRate();
if (m_sampleRateMode) {
m_settings.m_devSampleRate = ui->sampleRate->getValueNew();
m_settings.m_devSampleRate = (int) ui->sampleRate->getValueNew();
} else {
m_settings.m_devSampleRate = ui->sampleRate->getValueNew() * (1 << m_settings.m_log2Decim);
m_settings.m_devSampleRate = (int) (ui->sampleRate->getValueNew() * (1 << m_settings.m_log2Decim));
}
qDebug("RTLSDRGui::on_lowSampleRate_toggled: %d S/s", m_settings.m_devSampleRate);
@@ -611,7 +606,7 @@ void RTLSDRGui::displayReplayLength()
if (!replayEnabled) {
ui->replayOffset->setMaximum(0);
} else {
ui->replayOffset->setMaximum(m_settings.m_replayLength * 10 - 1);
ui->replayOffset->setMaximum((int) (m_settings.m_replayLength * 10 - 1));
}
ui->replayLabel->setEnabled(replayEnabled);
ui->replayOffset->setEnabled(replayEnabled);
@@ -622,10 +617,10 @@ void RTLSDRGui::displayReplayLength()
void RTLSDRGui::displayReplayOffset()
{
bool replayEnabled = m_settings.m_replayLength > 0.0f;
ui->replayOffset->setValue(m_settings.m_replayOffset * 10);
ui->replayOffset->setValue((int) (m_settings.m_replayOffset * 10));
ui->replayOffsetText->setText(QString("%1s").arg(m_settings.m_replayOffset, 0, 'f', 1));
ui->replayNow->setEnabled(replayEnabled && (m_settings.m_replayOffset > 0.0f));
ui->replayPlus->setEnabled(replayEnabled && (std::round(m_settings.m_replayOffset * 10) < ui->replayOffset->maximum()));
ui->replayPlus->setEnabled(replayEnabled && (std::round(m_settings.m_replayOffset * 10) < (float) ui->replayOffset->maximum()));
ui->replayMinus->setEnabled(replayEnabled && (m_settings.m_replayOffset > 0.0f));
}
@@ -647,7 +642,7 @@ void RTLSDRGui::displayReplayStep()
void RTLSDRGui::on_replayOffset_valueChanged(int value)
{
m_settings.m_replayOffset = value / 10.0f;
m_settings.m_replayOffset = (float) value / 10.0f;
displayReplayOffset();
m_settingsKeys.append("replayOffset");
sendSettings();
@@ -660,12 +655,12 @@ void RTLSDRGui::on_replayNow_clicked()
void RTLSDRGui::on_replayPlus_clicked()
{
ui->replayOffset->setValue(ui->replayOffset->value() + m_settings.m_replayStep * 10);
ui->replayOffset->setValue((int) ((float) ui->replayOffset->value() + m_settings.m_replayStep * 10));
}
void RTLSDRGui::on_replayMinus_clicked()
{
ui->replayOffset->setValue(ui->replayOffset->value() - m_settings.m_replayStep * 10);
ui->replayOffset->setValue((int) ((float) ui->replayOffset->value() - m_settings.m_replayStep * 10));
}
void RTLSDRGui::on_replaySave_clicked()
@@ -675,7 +670,7 @@ void RTLSDRGui::on_replaySave_clicked()
if (fileDialog.exec())
{
QStringList fileNames = fileDialog.selectedFiles();
if (fileNames.size() > 0)
if (!fileNames.empty())
{
RTLSDRInput::MsgSaveReplay *message = RTLSDRInput::MsgSaveReplay::create(fileNames[0]);
m_sampleSource->getInputMessageQueue()->push(message);
@@ -692,10 +687,10 @@ void RTLSDRGui::on_replayLoop_toggled(bool checked)
void RTLSDRGui::setReplayTime(float time)
{
ui->replayOffset->setValue(std::ceil(time * 10.0f));
ui->replayOffset->setValue((int) std::ceil(time * 10.0f));
}
void RTLSDRGui::makeUIConnections()
void RTLSDRGui::makeUIConnections() const
{
QObject::connect(ui->centerFrequency, &ValueDial::changed, this, &RTLSDRGui::on_centerFrequency_changed);
QObject::connect(ui->sampleRate, &ValueDial::changed, this, &RTLSDRGui::on_sampleRate_changed);
+7 -8
View File
@@ -42,14 +42,13 @@ class RTLSDRGui : public DeviceGUI {
Q_OBJECT
public:
explicit RTLSDRGui(DeviceUISet *deviceUISet, QWidget* parent = 0);
virtual ~RTLSDRGui();
virtual void destroy();
explicit RTLSDRGui(DeviceUISet *deviceUISet, QWidget* parent = nullptr);
~RTLSDRGui() final;
void resetToDefaults();
QByteArray serialize() const;
bool deserialize(const QByteArray& data);
virtual MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; }
void resetToDefaults() final;
QByteArray serialize() const final;
bool deserialize(const QByteArray& data) final;
MessageQueue *getInputMessageQueue() final { return &m_inputMessageQueue; }
void setReplayTime(float time) override;
private:
@@ -79,7 +78,7 @@ private:
void updateFrequencyLimits();
void blockApplySettings(bool block);
bool handleMessage(const Message& message);
void makeUIConnections();
void makeUIConnections() const;
private slots:
void handleInputMessages();
+59 -75
View File
@@ -56,7 +56,7 @@ const int RTLSDRInput::sampleRateHighRangeMax = 3200000;
RTLSDRInput::RTLSDRInput(DeviceAPI *deviceAPI) :
m_deviceAPI(deviceAPI),
m_settings(),
m_dev(0),
m_dev(nullptr),
m_rtlSDRThread(nullptr),
m_deviceDescription("RTLSDR"),
m_tunerType(RTLSDR_TUNER_UNKNOWN),
@@ -102,7 +102,7 @@ void RTLSDRInput::destroy()
bool RTLSDRInput::openDevice()
{
if (m_dev != 0)
if (m_dev != nullptr)
{
closeDevice();
}
@@ -110,7 +110,6 @@ bool RTLSDRInput::openDevice()
char vendor[256];
char product[256];
char serial[256];
int res;
int numberOfGains;
if (!m_sampleFifo.setSize(96000 * 4))
@@ -142,7 +141,7 @@ bool RTLSDRInput::openDevice()
return false;
}
if ((res = rtlsdr_open(&m_dev, device)) < 0)
if ((rtlsdr_open(&m_dev, device)) < 0)
{
qCritical("RTLSDRInput::openDevice: could not open RTLSDR #%d: %s", device, strerror(errno));
return false;
@@ -153,7 +152,7 @@ bool RTLSDRInput::openDevice()
product[0] = '\0';
serial[0] = '\0';
if ((res = rtlsdr_get_usb_strings(m_dev, vendor, product, serial)) < 0)
if ((rtlsdr_get_usb_strings(m_dev, vendor, product, serial)) < 0)
{
qCritical("RTLSDRInput::openDevice: error accessing USB device");
stop();
@@ -171,28 +170,28 @@ bool RTLSDRInput::openDevice()
m_frequencyHighRangeMin = 24000UL;
}
if ((res = rtlsdr_set_sample_rate(m_dev, 1152000)) < 0)
if ((rtlsdr_set_sample_rate(m_dev, 1152000)) < 0)
{
qCritical("RTLSDRInput::openDevice: could not set sample rate: 1024k S/s");
stop();
return false;
}
if ((res = rtlsdr_set_tuner_gain_mode(m_dev, 1)) < 0)
if ((rtlsdr_set_tuner_gain_mode(m_dev, 1)) < 0)
{
qCritical("RTLSDRInput::openDevice: error setting tuner gain mode");
stop();
return false;
}
if ((res = rtlsdr_set_agc_mode(m_dev, 0)) < 0)
if ((rtlsdr_set_agc_mode(m_dev, 0)) < 0)
{
qCritical("RTLSDRInput::openDevice: error setting agc mode");
stop();
return false;
}
numberOfGains = rtlsdr_get_tuner_gains(m_dev, NULL);
numberOfGains = rtlsdr_get_tuner_gains(m_dev, nullptr);
if (numberOfGains < 0)
{
@@ -214,7 +213,7 @@ bool RTLSDRInput::openDevice()
qDebug() << "RTLSDRInput::openDevice: " << m_gains.size() << "gains";
}
if ((res = rtlsdr_reset_buffer(m_dev)) < 0)
if ((rtlsdr_reset_buffer(m_dev)) < 0)
{
qCritical("RTLSDRInput::openDevice: could not reset USB EP buffers: %s", strerror(errno));
stop();
@@ -260,10 +259,10 @@ bool RTLSDRInput::start()
void RTLSDRInput::closeDevice()
{
if (m_dev != 0)
if (m_dev != nullptr)
{
rtlsdr_close(m_dev);
m_dev = 0;
m_dev = nullptr;
}
m_deviceDescription.clear();
@@ -351,7 +350,7 @@ bool RTLSDRInput::handleMessage(const Message& message)
{
if (MsgConfigureRTLSDR::match(message))
{
MsgConfigureRTLSDR& conf = (MsgConfigureRTLSDR&) message;
auto& conf = (const MsgConfigureRTLSDR&) message;
qDebug() << "RTLSDRInput::handleMessage: MsgConfigureRTLSDR";
bool success = applySettings(conf.getSettings(), conf.getSettingsKeys(), conf.getForce());
@@ -365,7 +364,7 @@ bool RTLSDRInput::handleMessage(const Message& message)
}
else if (MsgStartStop::match(message))
{
MsgStartStop& cmd = (MsgStartStop&) message;
auto& cmd = (const MsgStartStop&) message;
qDebug() << "RTLSDRInput::handleMessage: MsgStartStop: " << (cmd.getStartStop() ? "start" : "stop");
if (cmd.getStartStop())
@@ -387,7 +386,7 @@ bool RTLSDRInput::handleMessage(const Message& message)
}
else if (MsgSaveReplay::match(message))
{
MsgSaveReplay& cmd = (MsgSaveReplay&) message;
auto& cmd = (const MsgSaveReplay&) message;
m_replayBuffer.save(cmd.getFilename(), m_settings.m_devSampleRate, getCenterFrequency());
return true;
}
@@ -419,15 +418,12 @@ bool RTLSDRInput::applySettings(const RTLSDRSettings& settings, const QList<QStr
settings.m_iqImbalance ? "true" : "false");
}
if (settingsKeys.contains("loPpmCorrection") || force)
if ((m_dev != nullptr) && (settingsKeys.contains("loPpmCorrection") || force))
{
if (m_dev != 0)
{
if (rtlsdr_set_freq_correction(m_dev, settings.m_loPpmCorrection) < 0) {
qCritical("RTLSDRInput::applySettings: could not set LO ppm correction: %d", settings.m_loPpmCorrection);
} else {
qDebug("RTLSDRInput::applySettings: LO ppm correction set to: %d", settings.m_loPpmCorrection);
}
if (rtlsdr_set_freq_correction(m_dev, settings.m_loPpmCorrection) < 0) {
qCritical("RTLSDRInput::applySettings: could not set LO ppm correction: %d", settings.m_loPpmCorrection);
} else {
qDebug("RTLSDRInput::applySettings: LO ppm correction set to: %d", settings.m_loPpmCorrection);
}
}
@@ -435,7 +431,7 @@ bool RTLSDRInput::applySettings(const RTLSDRSettings& settings, const QList<QStr
{
forwardChange = true;
if(m_dev != 0)
if(m_dev != nullptr)
{
if( rtlsdr_set_sample_rate(m_dev, settings.m_devSampleRate) < 0)
{
@@ -475,11 +471,8 @@ bool RTLSDRInput::applySettings(const RTLSDRSettings& settings, const QList<QStr
qDebug() << "RTLSDRInput::applySettings: set fc pos (enum) to " << (int) settings.m_fcPos;
}
if (settingsKeys.contains("iqOrder") || force)
{
if (m_rtlSDRThread) {
m_rtlSDRThread->setIQOrder(settings.m_iqOrder);
}
if (m_rtlSDRThread && (settingsKeys.contains("iqOrder") || force)) {
m_rtlSDRThread->setIQOrder(settings.m_iqOrder);
}
if (settingsKeys.contains("centerFrequency")
@@ -500,9 +493,9 @@ bool RTLSDRInput::applySettings(const RTLSDRSettings& settings, const QList<QStr
forwardChange = true;
if (m_dev != 0)
if (m_dev != nullptr)
{
if (rtlsdr_set_center_freq(m_dev, deviceCenterFrequency) != 0) {
if (rtlsdr_set_center_freq(m_dev, (uint32_t) deviceCenterFrequency) != 0) {
qWarning("RTLSDRInput::applySettings: rtlsdr_set_center_freq(%lld) failed", deviceCenterFrequency);
} else {
qDebug("RTLSDRInput::applySettings: rtlsdr_set_center_freq(%lld)", deviceCenterFrequency);
@@ -526,7 +519,7 @@ bool RTLSDRInput::applySettings(const RTLSDRSettings& settings, const QList<QStr
{
m_settings.m_rfBandwidth = settings.m_rfBandwidth;
if (m_dev != 0)
if (m_dev != nullptr)
{
if (rtlsdr_set_tuner_bandwidth( m_dev, m_settings.m_rfBandwidth) != 0) {
qCritical("RTLSDRInput::applySettings: could not set RF bandwidth to %u", m_settings.m_rfBandwidth);
@@ -537,45 +530,36 @@ bool RTLSDRInput::applySettings(const RTLSDRSettings& settings, const QList<QStr
}
// Reapply offset_tuning setting if bandwidth is changed, otherwise frequency response of filter looks wrong on E4000
if (settingsKeys.contains("offsetTuning") || settingsKeys.contains("rfBandwidth") || force)
if ((m_dev != nullptr) && (settingsKeys.contains("offsetTuning") || settingsKeys.contains("rfBandwidth") || force))
{
if (m_dev != 0)
{
if (rtlsdr_set_offset_tuning(m_dev, m_settings.m_offsetTuning ? 0 : 1) != 0) {
qCritical("RTLSDRInput::applySettings: could not set offset tuning to %s", settings.m_offsetTuning ? "on" : "off");
} else {
qDebug("RTLSDRInput::applySettings: offset tuning set to %s", settings.m_offsetTuning ? "on" : "off");
}
if (rtlsdr_set_offset_tuning(m_dev, m_settings.m_offsetTuning ? 0 : 1) != 0) {
qCritical("RTLSDRInput::applySettings: could not set offset tuning to %s", settings.m_offsetTuning ? "on" : "off");
} else {
qDebug("RTLSDRInput::applySettings: offset tuning set to %s", settings.m_offsetTuning ? "on" : "off");
}
}
if (settingsKeys.contains("gain") || force)
if ((m_dev != nullptr) && (settingsKeys.contains("gain") || force))
{
if(m_dev != 0)
{
// Nooelec E4000 SDRs appear to require tuner_gain_mode to be reset to manual before
// each call to set_tuner_gain, otherwise tuner AGC seems to be re-enabled
if (rtlsdr_set_tuner_gain_mode(m_dev, 1) < 0) {
qCritical("RTLSDRInput::applySettings: error setting tuner gain mode to manual");
}
qDebug() << "Set tuner gain " << settings.m_gain;
if (rtlsdr_set_tuner_gain(m_dev, settings.m_gain) != 0) {
qCritical("RTLSDRInput::applySettings: rtlsdr_set_tuner_gain() failed");
} else {
qDebug("RTLSDRInput::applySettings: rtlsdr_set_tuner_gain() to %d", settings.m_gain);
}
// Nooelec E4000 SDRs appear to require tuner_gain_mode to be reset to manual before
// each call to set_tuner_gain, otherwise tuner AGC seems to be re-enabled
if (rtlsdr_set_tuner_gain_mode(m_dev, 1) < 0) {
qCritical("RTLSDRInput::applySettings: error setting tuner gain mode to manual");
}
qDebug() << "Set tuner gain " << settings.m_gain;
if (rtlsdr_set_tuner_gain(m_dev, settings.m_gain) != 0) {
qCritical("RTLSDRInput::applySettings: rtlsdr_set_tuner_gain() failed");
} else {
qDebug("RTLSDRInput::applySettings: rtlsdr_set_tuner_gain() to %d", settings.m_gain);
}
}
if (settingsKeys.contains("biasTee") || force)
if ((m_dev != nullptr) && (settingsKeys.contains("biasTee") || force))
{
if(m_dev != 0)
{
if (rtlsdr_set_bias_tee(m_dev, settings.m_biasTee ? 1 : 0) != 0) {
qCritical("RTLSDRInput::applySettings: rtlsdr_set_bias_tee() failed");
} else {
qDebug("RTLSDRInput::applySettings: rtlsdr_set_bias_tee() to %d", settings.m_biasTee ? 1 : 0);
}
if (rtlsdr_set_bias_tee(m_dev, settings.m_biasTee ? 1 : 0) != 0) {
qCritical("RTLSDRInput::applySettings: rtlsdr_set_bias_tee() failed");
} else {
qDebug("RTLSDRInput::applySettings: rtlsdr_set_bias_tee() to %d", settings.m_biasTee ? 1 : 0);
}
}
@@ -599,7 +583,7 @@ bool RTLSDRInput::applySettings(const RTLSDRSettings& settings, const QList<QStr
}
if (settingsKeys.contains("replayOffset") || settingsKeys.contains("devSampleRate") || force) {
m_replayBuffer.setReadOffset(((unsigned)(m_settings.m_replayOffset * m_settings.m_devSampleRate)) * 2);
m_replayBuffer.setReadOffset(((unsigned)(m_settings.m_replayOffset * (float) m_settings.m_devSampleRate)) * 2);
}
if (settingsKeys.contains("replayLoop") || force) {
@@ -609,7 +593,7 @@ bool RTLSDRInput::applySettings(const RTLSDRSettings& settings, const QList<QStr
if (forwardChange)
{
int sampleRate = m_settings.m_devSampleRate/(1<<m_settings.m_log2Decim);
DSPSignalNotification *notif = new DSPSignalNotification(sampleRate, m_settings.m_centerFrequency);
auto *notif = new DSPSignalNotification(sampleRate, m_settings.m_centerFrequency);
m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif);
}
@@ -729,10 +713,10 @@ void RTLSDRInput::webapiUpdateDeviceSettings(
settings.m_reverseAPIAddress = *response.getRtlSdrSettings()->getReverseApiAddress();
}
if (deviceSettingsKeys.contains("reverseAPIPort")) {
settings.m_reverseAPIPort = response.getRtlSdrSettings()->getReverseApiPort();
settings.m_reverseAPIPort = (uint16_t) response.getRtlSdrSettings()->getReverseApiPort();
}
if (deviceSettingsKeys.contains("reverseAPIDeviceIndex")) {
settings.m_reverseAPIDeviceIndex = response.getRtlSdrSettings()->getReverseApiDeviceIndex();
settings.m_reverseAPIDeviceIndex = (uint16_t) response.getRtlSdrSettings()->getReverseApiDeviceIndex();
}
}
@@ -807,11 +791,11 @@ int RTLSDRInput::webapiReportGet(
return 200;
}
void RTLSDRInput::webapiFormatDeviceReport(SWGSDRangel::SWGDeviceReport& response)
void RTLSDRInput::webapiFormatDeviceReport(SWGSDRangel::SWGDeviceReport& response) const
{
response.getRtlSdrReport()->setGains(new QList<SWGSDRangel::SWGGain*>);
for (std::vector<int>::const_iterator it = getGains().begin(); it != getGains().end(); ++it)
for (auto it = getGains().begin(); it != getGains().end(); ++it)
{
response.getRtlSdrReport()->getGains()->append(new SWGSDRangel::SWGGain);
response.getRtlSdrReport()->getGains()->back()->setGainCb(*it);
@@ -822,7 +806,7 @@ void RTLSDRInput::webapiFormatDeviceReport(SWGSDRangel::SWGDeviceReport& respons
void RTLSDRInput::webapiReverseSendSettings(const QList<QString>& deviceSettingsKeys, const RTLSDRSettings& settings, bool force)
{
SWGSDRangel::SWGDeviceSettings *swgDeviceSettings = new SWGSDRangel::SWGDeviceSettings();
auto *swgDeviceSettings = new SWGSDRangel::SWGDeviceSettings();
swgDeviceSettings->setDirection(0); // single Rx
swgDeviceSettings->setDeviceHwType(new QString("RTLSDR"));
swgDeviceSettings->setOriginatorIndex(m_deviceAPI->getDeviceSetIndex());
@@ -890,8 +874,8 @@ void RTLSDRInput::webapiReverseSendSettings(const QList<QString>& deviceSettings
m_networkRequest.setUrl(QUrl(channelSettingsURL));
m_networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
QBuffer *buffer = new QBuffer();
buffer->open((QBuffer::ReadWrite));
auto *buffer = new QBuffer();
buffer->open(QBuffer::ReadWrite);
buffer->write(swgDeviceSettings->asJson().toUtf8());
buffer->seek(0);
@@ -904,7 +888,7 @@ void RTLSDRInput::webapiReverseSendSettings(const QList<QString>& deviceSettings
void RTLSDRInput::webapiReverseSendStartStop(bool start)
{
SWGSDRangel::SWGDeviceSettings *swgDeviceSettings = new SWGSDRangel::SWGDeviceSettings();
auto *swgDeviceSettings = new SWGSDRangel::SWGDeviceSettings();
swgDeviceSettings->setDirection(0); // single Rx
swgDeviceSettings->setDeviceHwType(new QString("RTLSDR"));
swgDeviceSettings->setOriginatorIndex(m_deviceAPI->getDeviceSetIndex());
@@ -916,8 +900,8 @@ void RTLSDRInput::webapiReverseSendStartStop(bool start)
m_networkRequest.setUrl(QUrl(channelSettingsURL));
m_networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
QBuffer *buffer = new QBuffer();
buffer->open((QBuffer::ReadWrite));
auto *buffer = new QBuffer();
buffer->open(QBuffer::ReadWrite);
buffer->write(swgDeviceSettings->asJson().toUtf8());
buffer->seek(0);
QNetworkReply *reply;
@@ -932,7 +916,7 @@ void RTLSDRInput::webapiReverseSendStartStop(bool start)
delete swgDeviceSettings;
}
void RTLSDRInput::networkManagerFinished(QNetworkReply *reply)
void RTLSDRInput::networkManagerFinished(QNetworkReply *reply) const
{
QNetworkReply::NetworkError replyError = reply->error();
+46 -45
View File
@@ -75,10 +75,10 @@ public:
return new MsgStartStop(startStop);
}
protected:
private:
bool m_startStop;
MsgStartStop(bool startStop) :
explicit MsgStartStop(bool startStop) :
Message(),
m_startStop(startStop)
{ }
@@ -94,75 +94,75 @@ public:
return new MsgSaveReplay(filename);
}
protected:
private:
QString m_filename;
MsgSaveReplay(const QString& filename) :
explicit MsgSaveReplay(const QString& filename) :
Message(),
m_filename(filename)
{ }
};
RTLSDRInput(DeviceAPI *deviceAPI);
virtual ~RTLSDRInput();
virtual void destroy();
explicit RTLSDRInput(DeviceAPI *deviceAPI);
~RTLSDRInput() final;
void destroy() final;
virtual void init();
virtual bool start();
virtual void stop();
void init() final;
bool start() final;
void stop() final;
virtual QByteArray serialize() const;
virtual bool deserialize(const QByteArray& data);
QByteArray serialize() const final;
bool deserialize(const QByteArray& data) final;
virtual void setMessageQueueToGUI(MessageQueue *queue) { m_guiMessageQueue = queue; }
virtual const QString& getDeviceDescription() const;
virtual int getSampleRate() const;
virtual void setSampleRate(int sampleRate) { (void) sampleRate; }
virtual quint64 getCenterFrequency() const;
virtual void setCenterFrequency(qint64 centerFrequency);
void setMessageQueueToGUI(MessageQueue *queue) final { m_guiMessageQueue = queue; }
const QString& getDeviceDescription() const final;
int getSampleRate() const final;
void setSampleRate(int sampleRate) final { (void) sampleRate; }
quint64 getCenterFrequency() const final;
void setCenterFrequency(qint64 centerFrequency) final;
virtual bool handleMessage(const Message& message);
bool handleMessage(const Message& message) final;
virtual int webapiSettingsGet(
SWGSDRangel::SWGDeviceSettings& response,
QString& errorMessage);
int webapiSettingsGet(
SWGSDRangel::SWGDeviceSettings& response,
QString& errorMessage) final;
virtual int webapiSettingsPutPatch(
bool force,
const QStringList& deviceSettingsKeys,
SWGSDRangel::SWGDeviceSettings& response, // query + response
QString& errorMessage);
int webapiSettingsPutPatch(
bool force,
const QStringList& deviceSettingsKeys,
SWGSDRangel::SWGDeviceSettings& response, // query + response
QString& errorMessage) final;
virtual int webapiReportGet(
SWGSDRangel::SWGDeviceReport& response,
QString& errorMessage);
int webapiReportGet(
SWGSDRangel::SWGDeviceReport& response,
QString& errorMessage) final;
virtual int webapiRunGet(
SWGSDRangel::SWGDeviceState& response,
QString& errorMessage);
int webapiRunGet(
SWGSDRangel::SWGDeviceState& response,
QString& errorMessage) final;
virtual int webapiRun(
bool run,
SWGSDRangel::SWGDeviceState& response,
QString& errorMessage);
int webapiRun(
bool run,
SWGSDRangel::SWGDeviceState& response,
QString& errorMessage) final;
static void webapiFormatDeviceSettings(
SWGSDRangel::SWGDeviceSettings& response,
const RTLSDRSettings& settings);
SWGSDRangel::SWGDeviceSettings& response,
const RTLSDRSettings& settings);
static void webapiUpdateDeviceSettings(
RTLSDRSettings& settings,
const QStringList& deviceSettingsKeys,
SWGSDRangel::SWGDeviceSettings& response);
RTLSDRSettings& settings,
const QStringList& deviceSettingsKeys,
SWGSDRangel::SWGDeviceSettings& response);
const std::vector<int>& getGains() const { return m_gains; }
rtlsdr_tuner getTunerType() const { return m_tunerType; }
QString getTunerName() const;
void set_ds_mode(int on);
quint64 getFrequencyHighRangeMin() const { return m_frequencyHighRangeMin; }
static const quint64 frequencyLowRangeMin;
static const quint64 frequencyLowRangeMax;
quint64 m_frequencyHighRangeMin;
static const quint64 frequencyHighRangeMax;
static const int sampleRateLowRangeMin;
static const int sampleRateLowRangeMax;
@@ -181,17 +181,18 @@ private:
bool m_running;
QNetworkAccessManager *m_networkManager;
QNetworkRequest m_networkRequest;
quint64 m_frequencyHighRangeMin;
ReplayBuffer<quint8> m_replayBuffer;
bool openDevice();
void closeDevice();
bool applySettings(const RTLSDRSettings& settings, const QList<QString>& settingsKeys, bool force);
void webapiFormatDeviceReport(SWGSDRangel::SWGDeviceReport& response);
void webapiFormatDeviceReport(SWGSDRangel::SWGDeviceReport& response) const;
void webapiReverseSendSettings(const QList<QString>& deviceSettingsKeys, const RTLSDRSettings& settings, bool force);
void webapiReverseSendStartStop(bool start);
private slots:
void networkManagerFinished(QNetworkReply *reply);
void networkManagerFinished(QNetworkReply *reply) const;
};
#endif // INCLUDE_RTLSDRINPUT_H