1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-02 06:04:39 -04:00

SoapySDR support: fixes

This commit is contained in:
f4exb
2018-11-04 18:42:51 +01:00
parent 6a9607c8fc
commit 564a99d14e
9 changed files with 277 additions and 35 deletions
@@ -372,11 +372,10 @@ bool SoapySDRInput::start()
if (needsStart)
{
qDebug("SoapySDRInput::start: (re)sart buddy thread");
soapySDRInputThread->setSampleRate(m_settings.m_devSampleRate);
soapySDRInputThread->startWork();
}
applySettings(m_settings, true);
qDebug("SoapySDRInput::start: started");
m_running = true;
@@ -514,16 +513,28 @@ const QString& SoapySDRInput::getDeviceDescription() const
int SoapySDRInput::getSampleRate() const
{
return 0;
int rate = m_settings.m_devSampleRate;
return (rate / (1<<m_settings.m_log2Decim));
}
quint64 SoapySDRInput::getCenterFrequency() const
{
return 0;
return m_settings.m_centerFrequency;
}
void SoapySDRInput::setCenterFrequency(qint64 centerFrequency __attribute__((unused)))
{
SoapySDRInputSettings settings = m_settings;
settings.m_centerFrequency = centerFrequency;
MsgConfigureSoapySDRInput *message = MsgConfigureSoapySDRInput::create(settings, false);
m_inputMessageQueue.push(message);
if (m_guiMessageQueue)
{
MsgConfigureSoapySDRInput* messageToGUI = MsgConfigureSoapySDRInput::create(settings, false);
m_guiMessageQueue->push(messageToGUI);
}
}
bool SoapySDRInput::setDeviceCenterFrequency(SoapySDR::Device *dev, int requestedChannel, quint64 freq_hz, int loPpmTenths)
@@ -607,6 +618,7 @@ bool SoapySDRInput::handleMessage(const Message& message __attribute__((unused))
DeviceSoapySDRShared::MsgReportBuddyChange& report = (DeviceSoapySDRShared::MsgReportBuddyChange&) message;
SoapySDRInputSettings settings = m_settings;
settings.m_fcPos = (SoapySDRInputSettings::fcPos_t) report.getFcPos();
//bool fromRxBuddy = report.getRxElseTx();
settings.m_centerFrequency = m_deviceShared.m_device->getFrequency(
SOAPY_SDR_RX,
@@ -624,6 +636,13 @@ bool SoapySDRInput::handleMessage(const Message& message __attribute__((unused))
m_settings = settings;
// propagate settings to GUI if any
if (getMessageQueueToGUI())
{
MsgConfigureSoapySDRInput *reportToGUI = MsgConfigureSoapySDRInput::create(m_settings, false);
getMessageQueueToGUI()->push(reportToGUI);
}
return true;
}
else
@@ -683,8 +702,6 @@ bool SoapySDRInput::applySettings(const SoapySDRInputSettings& settings, bool fo
if ((m_settings.m_fcPos != settings.m_fcPos) || force)
{
SoapySDRInputThread *inputThread = findThread();
if (inputThread != 0)
{
inputThread->setFcPos(requestedChannel, (int) settings.m_fcPos);