diff --git a/app/main.cpp b/app/main.cpp index 7dd1b8854..43a722cd0 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -35,7 +35,7 @@ static int runQtApplication(int argc, char* argv[], qtwebapp::LoggerWithFile *lo */ QCoreApplication::setOrganizationName("f4exb"); QCoreApplication::setApplicationName("SDRangel"); - QCoreApplication::setApplicationVersion("4.5.2"); + QCoreApplication::setApplicationVersion("4.5.3"); #if QT_VERSION >= 0x050600 QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); // DPI support QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); //HiDPI pixmaps diff --git a/appbench/main.cpp b/appbench/main.cpp index 357c43735..f4c3e1a97 100644 --- a/appbench/main.cpp +++ b/appbench/main.cpp @@ -57,7 +57,7 @@ static int runQtApplication(int argc, char* argv[], qtwebapp::LoggerWithFile *lo QCoreApplication::setOrganizationName("f4exb"); QCoreApplication::setApplicationName("SDRangelBench"); - QCoreApplication::setApplicationVersion("4.5.2"); + QCoreApplication::setApplicationVersion("4.5.3"); int catchSignals[] = {SIGQUIT, SIGINT, SIGTERM, SIGHUP}; std::vector vsig(catchSignals, catchSignals + sizeof(catchSignals) / sizeof(int)); diff --git a/appsrv/main.cpp b/appsrv/main.cpp index 5f95a99aa..60833ea8a 100644 --- a/appsrv/main.cpp +++ b/appsrv/main.cpp @@ -56,7 +56,7 @@ static int runQtApplication(int argc, char* argv[], qtwebapp::LoggerWithFile *lo QCoreApplication::setOrganizationName("f4exb"); QCoreApplication::setApplicationName("SDRangelSrv"); - QCoreApplication::setApplicationVersion("4.5.2"); + QCoreApplication::setApplicationVersion("4.5.3"); int catchSignals[] = {SIGQUIT, SIGINT, SIGTERM, SIGHUP}; std::vector vsig(catchSignals, catchSignals + sizeof(catchSignals) / sizeof(int)); diff --git a/debian/changelog b/debian/changelog index 224400abd..c8b87dcd1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +sdrangel (4.5.3-1) unstable; urgency=medium + + * Fixed HackRF Rx/Tx frequency setting. Fixes issue #318. + + -- Edouard Griffiths, F4EXB Mon, 01 Apr 2019 20:14:18 +0100 + sdrangel (4.5.2-1) unstable; urgency=medium * Send device and channel index in reverse API. Implements issue #312. diff --git a/devices/hackrf/devicehackrfshared.cpp b/devices/hackrf/devicehackrfshared.cpp index c29372074..32907c0c9 100644 --- a/devices/hackrf/devicehackrfshared.cpp +++ b/devices/hackrf/devicehackrfshared.cpp @@ -16,7 +16,7 @@ #include "devicehackrfshared.h" -MESSAGE_CLASS_DEFINITION(DeviceHackRFShared::MsgConfigureFrequencyDelta, Message) +MESSAGE_CLASS_DEFINITION(DeviceHackRFShared::MsgSynchronizeFrequency, Message) const float DeviceHackRFShared::m_sampleFifoLengthInSeconds = 0.25; const int DeviceHackRFShared::m_sampleFifoMinSize = 150000; // 600kS/s knee diff --git a/devices/hackrf/devicehackrfshared.h b/devices/hackrf/devicehackrfshared.h index 6c392b3c2..64d6de7ea 100644 --- a/devices/hackrf/devicehackrfshared.h +++ b/devices/hackrf/devicehackrfshared.h @@ -17,30 +17,32 @@ #ifndef DEVICES_HACKRF_DEVICEHACKRFSHARED_H_ #define DEVICES_HACKRF_DEVICEHACKRFSHARED_H_ +#include + #include "util/message.h" #include "export.h" class DEVICES_API DeviceHackRFShared { public: - class DEVICES_API MsgConfigureFrequencyDelta : public Message + class DEVICES_API MsgSynchronizeFrequency : public Message { MESSAGE_CLASS_DECLARATION public: - int getFrequencyDelta() const { return m_frequencyDelta; } + uint64_t getFrequency() const { return m_frequency; } - static MsgConfigureFrequencyDelta *create(int frequencyDelta) + static MsgSynchronizeFrequency *create(uint64_t frequency) { - return new MsgConfigureFrequencyDelta(frequencyDelta); + return new MsgSynchronizeFrequency(frequency); } private: - int m_frequencyDelta; + uint64_t m_frequency; - MsgConfigureFrequencyDelta(int frequencyDelta) : + MsgSynchronizeFrequency(uint64_t frequency) : Message(), - m_frequencyDelta(frequencyDelta) + m_frequency(frequency) { } }; diff --git a/doc/img/HackRFInput_plugin.png b/doc/img/HackRFInput_plugin.png index 05919e76a..bac338149 100644 Binary files a/doc/img/HackRFInput_plugin.png and b/doc/img/HackRFInput_plugin.png differ diff --git a/doc/img/HackRFInput_plugin.xcf b/doc/img/HackRFInput_plugin.xcf index e7123e99c..b15826076 100644 Binary files a/doc/img/HackRFInput_plugin.xcf and b/doc/img/HackRFInput_plugin.xcf differ diff --git a/plugins/samplesink/hackrfoutput/hackrfoutput.cpp b/plugins/samplesink/hackrfoutput/hackrfoutput.cpp index 52acfcbd1..e90c19b23 100644 --- a/plugins/samplesink/hackrfoutput/hackrfoutput.cpp +++ b/plugins/samplesink/hackrfoutput/hackrfoutput.cpp @@ -246,16 +246,6 @@ bool HackRFOutput::handleMessage(const Message& message) return true; } - else if (DeviceHackRFShared::MsgConfigureFrequencyDelta::match(message)) - { - DeviceHackRFShared::MsgConfigureFrequencyDelta& conf = (DeviceHackRFShared::MsgConfigureFrequencyDelta&) message; - HackRFOutputSettings newSettings = m_settings; - newSettings.m_centerFrequency = m_settings.m_centerFrequency + conf.getFrequencyDelta(); - qDebug() << "HackRFOutput::handleMessage: DeviceHackRFShared::MsgConfigureFrequencyDelta: newFreq: " << newSettings.m_centerFrequency; - applySettings(newSettings, false); - - return true; - } else if (MsgStartStop::match(message)) { MsgStartStop& cmd = (MsgStartStop&) message; @@ -313,18 +303,18 @@ bool HackRFOutput::applySettings(const HackRFOutputSettings& settings, bool forc QList reverseAPIKeys; qDebug() << "HackRFOutput::applySettings" - << " m_centerFrequency: " << m_settings.m_centerFrequency - << " m_LOppmTenths: " << m_settings.m_LOppmTenths - << " m_bandwidth: " << m_settings.m_bandwidth - << " m_devSampleRate: " << m_settings.m_devSampleRate - << " m_log2Interp: " << m_settings.m_log2Interp - << " m_biasT: " << m_settings.m_biasT - << " m_lnaExt: " << m_settings.m_lnaExt - << " m_vgaGain: " << m_settings.m_vgaGain - << " m_useReverseAPI: " << m_settings.m_useReverseAPI - << " m_reverseAPIAddress: " << m_settings.m_reverseAPIAddress - << " m_reverseAPIPort: " << m_settings.m_reverseAPIPort - << " m_reverseAPIDeviceIndex: " << m_settings.m_reverseAPIDeviceIndex + << " m_centerFrequency: " << settings.m_centerFrequency + << " m_LOppmTenths: " << settings.m_LOppmTenths + << " m_bandwidth: " << settings.m_bandwidth + << " m_devSampleRate: " << settings.m_devSampleRate + << " m_log2Interp: " << settings.m_log2Interp + << " m_biasT: " << settings.m_biasT + << " m_lnaExt: " << settings.m_lnaExt + << " m_vgaGain: " << settings.m_vgaGain + << " m_useReverseAPI: " << settings.m_useReverseAPI + << " m_reverseAPIAddress: " << settings.m_reverseAPIAddress + << " m_reverseAPIPort: " << settings.m_reverseAPIPort + << " m_reverseAPIDeviceIndex: " << settings.m_reverseAPIDeviceIndex << " force: " << force; if ((m_settings.m_devSampleRate != settings.m_devSampleRate) || force) { @@ -389,8 +379,16 @@ bool HackRFOutput::applySettings(const HackRFOutputSettings& settings, bool forc } } - if ((m_settings.m_centerFrequency != settings.m_centerFrequency) || force) { + if ((m_settings.m_centerFrequency != settings.m_centerFrequency) || force) + { reverseAPIKeys.append("centerFrequency"); + + if (m_deviceAPI->getSourceBuddies().size() > 0) + { + DeviceSourceAPI *buddy = m_deviceAPI->getSourceBuddies()[0]; + DeviceHackRFShared::MsgSynchronizeFrequency *freqMsg = DeviceHackRFShared::MsgSynchronizeFrequency::create(settings.m_centerFrequency); + buddy->getSampleSourceInputMessageQueue()->push(freqMsg); + } } if ((m_settings.m_LOppmTenths != settings.m_LOppmTenths) || force) { reverseAPIKeys.append("LOppmTenths"); diff --git a/plugins/samplesink/hackrfoutput/hackrfoutputgui.cpp b/plugins/samplesink/hackrfoutput/hackrfoutputgui.cpp index 28189e187..d45f3da7d 100644 --- a/plugins/samplesink/hackrfoutput/hackrfoutputgui.cpp +++ b/plugins/samplesink/hackrfoutput/hackrfoutputgui.cpp @@ -181,15 +181,6 @@ void HackRFOutputGui::handleInputMessages() delete message; } - else if (DeviceHackRFShared::MsgConfigureFrequencyDelta::match(*message)) - { - blockApplySettings(true); - DeviceHackRFShared::MsgConfigureFrequencyDelta* deltaMsg = (DeviceHackRFShared::MsgConfigureFrequencyDelta *) message; - ui->centerFrequency->setValue(ui->centerFrequency->getValue() + (deltaMsg->getFrequencyDelta()/1000)); - blockApplySettings(false); - - delete message; - } else { if (handleMessage(*message)) diff --git a/plugins/samplesink/hackrfoutput/hackrfoutputplugin.cpp b/plugins/samplesink/hackrfoutput/hackrfoutputplugin.cpp index 7eff5ca11..935749384 100644 --- a/plugins/samplesink/hackrfoutput/hackrfoutputplugin.cpp +++ b/plugins/samplesink/hackrfoutput/hackrfoutputplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor HackRFOutputPlugin::m_pluginDescriptor = { QString("HackRF Output"), - QString("4.5.2"), + QString("4.5.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/hackrfinput/hackrfinput.cpp b/plugins/samplesource/hackrfinput/hackrfinput.cpp index 8ec0c04ff..d789c620b 100644 --- a/plugins/samplesource/hackrfinput/hackrfinput.cpp +++ b/plugins/samplesource/hackrfinput/hackrfinput.cpp @@ -309,6 +309,20 @@ bool HackRFInput::handleMessage(const Message& message) return true; } + else if (DeviceHackRFShared::MsgSynchronizeFrequency::match(message)) + { + DeviceHackRFShared::MsgSynchronizeFrequency& freqMsg = (DeviceHackRFShared::MsgSynchronizeFrequency&) message; + qint64 centerFrequency = DeviceSampleSource::calculateCenterFrequency( + freqMsg.getFrequency(), + 0, + m_settings.m_log2Decim, + (DeviceSampleSource::fcPos_t) m_settings.m_fcPos, + m_settings.m_devSampleRate); + qDebug("HackRFInput::handleMessage: MsgSynchronizeFrequency: centerFrequency: %lld Hz", centerFrequency); + setCenterFrequency(centerFrequency); + + return true; + } else { return false; @@ -348,9 +362,6 @@ bool HackRFInput::applySettings(const HackRFInputSettings& settings, bool force) if ((m_settings.m_iqCorrection != settings.m_iqCorrection) || force) { reverseAPIKeys.append("iqCorrection"); } - if ((m_settings.m_linkTxFrequency != settings.m_linkTxFrequency) || force) { - reverseAPIKeys.append("linkTxFrequency"); - } if ((m_settings.m_dcBlock != settings.m_dcBlock) || (m_settings.m_iqCorrection != settings.m_iqCorrection) || force) @@ -397,21 +408,6 @@ bool HackRFInput::applySettings(const HackRFInputSettings& settings, bool force) if (force || (m_settings.m_centerFrequency != settings.m_centerFrequency)) // forward delta to buddy if necessary { reverseAPIKeys.append("centerFrequency"); - - if (m_settings.m_linkTxFrequency && (m_deviceAPI->getSinkBuddies().size() > 0)) - { - DeviceSinkAPI *buddy = m_deviceAPI->getSinkBuddies()[0]; - DeviceHackRFShared::MsgConfigureFrequencyDelta *deltaMsg = DeviceHackRFShared::MsgConfigureFrequencyDelta::create( - settings.m_centerFrequency - m_settings.m_centerFrequency); - - if (buddy->getSampleSinkGUIMessageQueue()) - { - DeviceHackRFShared::MsgConfigureFrequencyDelta *deltaMsgToGUI = new DeviceHackRFShared::MsgConfigureFrequencyDelta(*deltaMsg); - buddy->getSampleSinkGUIMessageQueue()->push(deltaMsgToGUI); - } - - buddy->getSampleSinkInputMessageQueue()->push(deltaMsg); - } } if ((m_settings.m_LOppmTenths != settings.m_LOppmTenths) || force) { @@ -561,8 +557,7 @@ bool HackRFInput::applySettings(const HackRFInputSettings& settings, bool force) << " m_devSampleRate: " << m_settings.m_devSampleRate << " m_biasT: " << m_settings.m_biasT << " m_lnaExt: " << m_settings.m_lnaExt - << " m_dcBlock: " << m_settings.m_dcBlock - << " m_linkTxFrequency: " << m_settings.m_linkTxFrequency; + << " m_dcBlock: " << m_settings.m_dcBlock; return true; } @@ -626,9 +621,6 @@ int HackRFInput::webapiSettingsPutPatch( if (deviceSettingsKeys.contains("iqCorrection")) { settings.m_iqCorrection = response.getHackRfInputSettings()->getIqCorrection() != 0; } - if (deviceSettingsKeys.contains("linkTxFrequency")) { - settings.m_linkTxFrequency = response.getHackRfInputSettings()->getLinkTxFrequency() != 0; - } if (deviceSettingsKeys.contains("fileRecordName")) { settings.m_fileRecordName = *response.getHackRfInputSettings()->getFileRecordName(); } @@ -672,7 +664,6 @@ void HackRFInput::webapiFormatDeviceSettings(SWGSDRangel::SWGDeviceSettings& res response.getHackRfInputSettings()->setLnaExt(settings.m_lnaExt ? 1 : 0); response.getHackRfInputSettings()->setDcBlock(settings.m_dcBlock ? 1 : 0); response.getHackRfInputSettings()->setIqCorrection(settings.m_iqCorrection ? 1 : 0); - response.getHackRfInputSettings()->setLinkTxFrequency(settings.m_linkTxFrequency ? 1 : 0); if (response.getHackRfInputSettings()->getFileRecordName()) { *response.getHackRfInputSettings()->getFileRecordName() = settings.m_fileRecordName; @@ -767,9 +758,6 @@ void HackRFInput::webapiReverseSendSettings(QList& deviceSettingsKeys, if (deviceSettingsKeys.contains("iqCorrection") || force) { swgHackRFInputSettings->setIqCorrection(settings.m_iqCorrection ? 1 : 0); } - if (deviceSettingsKeys.contains("linkTxFrequency") || force) { - swgHackRFInputSettings->setLinkTxFrequency(settings.m_linkTxFrequency ? 1 : 0); - } if (deviceSettingsKeys.contains("fileRecordName") || force) { swgHackRFInputSettings->setFileRecordName(new QString(settings.m_fileRecordName)); } diff --git a/plugins/samplesource/hackrfinput/hackrfinputgui.cpp b/plugins/samplesource/hackrfinput/hackrfinputgui.cpp index 6ef9b54ed..94dda70e7 100644 --- a/plugins/samplesource/hackrfinput/hackrfinputgui.cpp +++ b/plugins/samplesource/hackrfinput/hackrfinputgui.cpp @@ -276,12 +276,6 @@ void HackRFInputGui::on_iqImbalance_toggled(bool checked) sendSettings(); } -void HackRFInputGui::on_linkTxFreq_toggled(bool checked) -{ - m_settings.m_linkTxFrequency = checked; - sendSettings(); -} - void HackRFInputGui::on_bbFilter_currentIndexChanged(int index) { int newBandwidth = HackRFBandwidths::getBandwidth(index); diff --git a/plugins/samplesource/hackrfinput/hackrfinputgui.h b/plugins/samplesource/hackrfinput/hackrfinputgui.h index 5e28a879d..635d06dcf 100644 --- a/plugins/samplesource/hackrfinput/hackrfinputgui.h +++ b/plugins/samplesource/hackrfinput/hackrfinputgui.h @@ -88,7 +88,6 @@ private slots: void on_LOppm_valueChanged(int value); void on_dcOffset_toggled(bool checked); void on_iqImbalance_toggled(bool checked); - void on_linkTxFreq_toggled(bool checked); void on_biasT_stateChanged(int state); void on_decim_currentIndexChanged(int index); void on_fcPos_currentIndexChanged(int index); diff --git a/plugins/samplesource/hackrfinput/hackrfinputgui.ui b/plugins/samplesource/hackrfinput/hackrfinputgui.ui index 7a075d010..87c0524c3 100644 --- a/plugins/samplesource/hackrfinput/hackrfinputgui.ui +++ b/plugins/samplesource/hackrfinput/hackrfinputgui.ui @@ -253,7 +253,7 @@ - + Activate antenna bias tee @@ -266,7 +266,7 @@ - + Extra LNA +14dB @@ -292,20 +292,6 @@ - - - - Toggle Tx frequency link - - - ... - - - - :/link.png:/link.png - - - diff --git a/plugins/samplesource/hackrfinput/hackrfinputplugin.cpp b/plugins/samplesource/hackrfinput/hackrfinputplugin.cpp index d937ea180..c986c8f58 100644 --- a/plugins/samplesource/hackrfinput/hackrfinputplugin.cpp +++ b/plugins/samplesource/hackrfinput/hackrfinputplugin.cpp @@ -32,7 +32,7 @@ const PluginDescriptor HackRFInputPlugin::m_pluginDescriptor = { QString("HackRF Input"), - QString("4.5.2"), + QString("4.5.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/hackrfinput/hackrfinputsettings.cpp b/plugins/samplesource/hackrfinput/hackrfinputsettings.cpp index 0809b776d..e816b8ccd 100644 --- a/plugins/samplesource/hackrfinput/hackrfinputsettings.cpp +++ b/plugins/samplesource/hackrfinput/hackrfinputsettings.cpp @@ -39,7 +39,6 @@ void HackRFInputSettings::resetToDefaults() m_dcBlock = false; m_iqCorrection = false; m_devSampleRate = 2400000; - m_linkTxFrequency = false; m_fileRecordName = ""; m_useReverseAPI = false; m_reverseAPIAddress = "127.0.0.1"; @@ -62,7 +61,6 @@ QByteArray HackRFInputSettings::serialize() const s.writeBool(10, m_dcBlock); s.writeBool(11, m_iqCorrection); s.writeU64(12, m_devSampleRate); - s.writeBool(13, m_linkTxFrequency); s.writeBool(14, m_useReverseAPI); s.writeString(15, m_reverseAPIAddress); s.writeU32(16, m_reverseAPIPort); @@ -98,7 +96,6 @@ bool HackRFInputSettings::deserialize(const QByteArray& data) d.readBool(10, &m_dcBlock, false); d.readBool(11, &m_iqCorrection, false); d.readU64(12, &m_devSampleRate, 2400000U); - d.readBool(13, &m_linkTxFrequency, false); d.readBool(14, &m_useReverseAPI, false); d.readString(15, &m_reverseAPIAddress, "127.0.0.1"); d.readU32(16, &uintval, 0); diff --git a/plugins/samplesource/hackrfinput/hackrfinputsettings.h b/plugins/samplesource/hackrfinput/hackrfinputsettings.h index b1042ce07..0b8ce554a 100644 --- a/plugins/samplesource/hackrfinput/hackrfinputsettings.h +++ b/plugins/samplesource/hackrfinput/hackrfinputsettings.h @@ -39,7 +39,6 @@ struct HackRFInputSettings { bool m_lnaExt; bool m_dcBlock; bool m_iqCorrection; - bool m_linkTxFrequency; QString m_fileRecordName; bool m_useReverseAPI; QString m_reverseAPIAddress; diff --git a/plugins/samplesource/hackrfinput/readme.md b/plugins/samplesource/hackrfinput/readme.md index cfff23462..e5d384388 100644 --- a/plugins/samplesource/hackrfinput/readme.md +++ b/plugins/samplesource/hackrfinput/readme.md @@ -24,12 +24,12 @@ This is the center frequency of reception in kHz.

1.2: Start/Stop

-Device start / stop button. +Device start / stop button. - Blue triangle icon: device is ready and can be started - Green square icon: device is running and can be stopped - Red square icon: an error occurred. In the case the device was accidentally disconnected you may click on the icon, plug back in and start again. - + If you have the Tx open in another tab and it is running then it will be stopped automatically before the Rx starts. In a similar manner the Rx will be stopped before the Tx is started from the Tx tab. The settings on Rx or Tx tab are reapplied on start so these settings can be considered independent. @@ -40,7 +40,7 @@ Record baseband I/Q stream toggle button

1.4: Baseband sample rate

-Baseband I/Q sample rate in kS/s. This is the device sample rate (4) divided by the decimation factor (6). +Baseband I/Q sample rate in kS/s. This is the device sample rate (4) divided by the decimation factor (6).

2: Local Oscillator correction

@@ -53,21 +53,13 @@ These buttons control the local DSP auto correction options: - **DC**: auto remove DC component - **IQ**: auto make I/Q balance. The DC correction must be enabled for this to be effective. -

3A: Link Tx frequency

- -Use this button to toggle the device Tx frequency link. - -When active (button lit) and a tab is opened for the Tx part of the same device this option will activate the link of the Tx frequency to the Rx frequency. Thus when changing the Rx frequency the Tx frequency will vary by the same amount. This facilitates the split operation or repeater operation. You can also set the Tx frequency so that it follows exactly the Rx frequency (simplex). - -The amount of shift is simply set by changing the frequency in the Tx tab. -

4: Bias tee

Use this checkbox to toggle the +5V power supply on the antenna connector.

5:RF amp

-Use this checkbox to toggle the extra low noise amplifier (LNA). This gives an additional gain of 14 dB. +Use this checkbox to toggle the extra low noise amplifier (LNA). This gives an additional gain of 14 dB.

6: Device sample rate

@@ -89,10 +81,10 @@ The device stream from the HackRF is decimated to obtain the baseband stream. Po

8: Baseband center frequency position relative the the HackRF Rx center frequency

- **Cen**: the decimation operation takes place around the HackRF Rx center frequency Fs - - **Inf**: the decimation operation takes place around Fs - Fc. + - **Inf**: the decimation operation takes place around Fs - Fc. - **Sup**: the decimation operation takes place around Fs + Fc. - -With SR as the sample rate before decimation Fc is calculated as: + +With SR as the sample rate before decimation Fc is calculated as: - if decimation n is 4 or lower: Fc = SR/2^(log2(n)-1). The device center frequency is on the side of the baseband. You need a RF filter bandwidth at least twice the baseband. - if decimation n is 8 or higher: Fc = SR/n. The device center frequency is half the baseband away from the side of the baseband. You need a RF filter bandwidth at least 3 times the baseband. diff --git a/sdrbase/dsp/devicesamplesource.cpp b/sdrbase/dsp/devicesamplesource.cpp index 1a637bc0b..69ec6ebec 100644 --- a/sdrbase/dsp/devicesamplesource.cpp +++ b/sdrbase/dsp/devicesamplesource.cpp @@ -68,6 +68,29 @@ qint64 DeviceSampleSource::calculateDeviceCenterFrequency( return deviceCenterFrequency; } +qint64 DeviceSampleSource::calculateCenterFrequency( + quint64 deviceCenterFrequency, + qint64 transverterDeltaFrequency, + int log2Decim, + fcPos_t fcPos, + quint32 devSampleRate, + bool transverterMode) +{ + qint64 centerFrequency = deviceCenterFrequency; + centerFrequency += calculateFrequencyShift(log2Decim, fcPos, devSampleRate); + centerFrequency += transverterMode ? transverterDeltaFrequency : 0; + centerFrequency = centerFrequency < 0 ? 0 : centerFrequency; + + qDebug() << "DeviceSampleSource::calculateCenterFrequency:" + << " desired center freq: " << centerFrequency << " Hz" + << " device center freq: " << deviceCenterFrequency << " Hz" + << " device sample rate: " << devSampleRate << "S/s" + << " Actual sample rate: " << devSampleRate/(1<

API and SDK Documentation

-
Version: 4.5.2
+
Version: 4.5.3

This is the web REST/JSON API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ (4.3+ in Windows) GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1 and FunCube


@@ -24652,7 +24649,7 @@ except ApiException as e:
- Generated 2019-03-25T14:39:14.782+01:00 + Generated 2019-03-30T20:33:10.840+01:00
diff --git a/sdrbase/resources/webapi/doc/swagger/include/HackRF.yaml b/sdrbase/resources/webapi/doc/swagger/include/HackRF.yaml index fd8ce9084..3c1028a0c 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/HackRF.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/HackRF.yaml @@ -27,8 +27,6 @@ HackRFInputSettings: type: integer iqCorrection: type: integer - linkTxFrequency: - type: integer fileRecordName: type: string useReverseAPI: diff --git a/sdrbase/resources/webapi/doc/swagger/swagger.yaml b/sdrbase/resources/webapi/doc/swagger/swagger.yaml index 01ce9bc71..6655f331d 100644 --- a/sdrbase/resources/webapi/doc/swagger/swagger.yaml +++ b/sdrbase/resources/webapi/doc/swagger/swagger.yaml @@ -15,7 +15,7 @@ info: --- - version: "4.5.2" + version: "4.5.3" title: SDRangel contact: url: "https://github.com/f4exb/sdrangel" diff --git a/swagger/sdrangel/api/swagger/include/HackRF.yaml b/swagger/sdrangel/api/swagger/include/HackRF.yaml index fd8ce9084..3c1028a0c 100644 --- a/swagger/sdrangel/api/swagger/include/HackRF.yaml +++ b/swagger/sdrangel/api/swagger/include/HackRF.yaml @@ -27,8 +27,6 @@ HackRFInputSettings: type: integer iqCorrection: type: integer - linkTxFrequency: - type: integer fileRecordName: type: string useReverseAPI: diff --git a/swagger/sdrangel/api/swagger/swagger.yaml b/swagger/sdrangel/api/swagger/swagger.yaml index 9486e055a..d25c096f1 100644 --- a/swagger/sdrangel/api/swagger/swagger.yaml +++ b/swagger/sdrangel/api/swagger/swagger.yaml @@ -15,7 +15,7 @@ info: --- - version: "4.5.2" + version: "4.5.3" title: SDRangel contact: url: "https://github.com/f4exb/sdrangel" diff --git a/swagger/sdrangel/code/html2/index.html b/swagger/sdrangel/code/html2/index.html index 1eb36808a..eabea493f 100644 --- a/swagger/sdrangel/code/html2/index.html +++ b/swagger/sdrangel/code/html2/index.html @@ -2791,9 +2791,6 @@ margin-bottom: 20px; "iqCorrection" : { "type" : "integer" }, - "linkTxFrequency" : { - "type" : "integer" - }, "fileRecordName" : { "type" : "string" }, @@ -5678,7 +5675,7 @@ margin-bottom: 20px;