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

Support for Airspy: first working version

This commit is contained in:
f4exb
2015-09-11 03:02:02 +02:00
parent 7e88cfcd48
commit efa1a0c58a
10 changed files with 147 additions and 58 deletions
+51 -4
View File
@@ -37,6 +37,9 @@ AirspyGui::AirspyGui(PluginAPI* pluginAPI, QWidget* parent) :
displaySettings();
m_sampleSource = new AirspyInput();
m_rates = ((AirspyInput*) m_sampleSource)->getSampleRates();
displaySampleRates();
connect(m_sampleSource->getOutputMessageQueueToGUI(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages()));
DSPEngine::instance()->setSource(m_sampleSource);
}
@@ -94,7 +97,9 @@ bool AirspyGui::handleMessage(const Message& message)
{
if (AirspyInput::MsgReportAirspy::match(message))
{
displaySettings();
qDebug() << "AirspyGui::handleMessage: MsgReportAirspy";
m_rates = ((AirspyInput::MsgReportAirspy&) message).getSampleRates();
displaySampleRates();
return true;
}
else
@@ -103,6 +108,21 @@ bool AirspyGui::handleMessage(const Message& message)
}
}
void AirspyGui::handleSourceMessages()
{
Message* message;
while ((message = m_sampleSource->getOutputMessageQueueToGUI()->pop()) != 0)
{
qDebug("AirspyGui::HandleSourceMessages: message: %s", message->getIdentifier());
if (handleMessage(*message))
{
delete message;
}
}
}
void AirspyGui::displaySettings()
{
ui->centerFrequency->setValue(m_settings.m_centerFrequency / 1000);
@@ -129,6 +149,33 @@ void AirspyGui::displaySettings()
ui->vga->setValue(m_settings.m_vgaGain);
}
void AirspyGui::displaySampleRates()
{
int savedIndex = m_settings.m_devSampleRateIndex;
ui->sampleRate->blockSignals(true);
if (m_rates.size() > 0)
{
ui->sampleRate->clear();
for (int i = 0; i < m_rates.size(); i++)
{
ui->sampleRate->addItem(QString("%1M").arg(QString::number(m_rates[i]/1000000.0, 'f', 3)));
}
}
ui->sampleRate->blockSignals(false);
if (savedIndex < m_rates.size())
{
ui->sampleRate->setCurrentIndex(savedIndex);
}
else
{
ui->sampleRate->setCurrentIndex((int) m_rates.size()-1);
}
}
void AirspyGui::sendSettings()
{
if(!m_updateTimer.isActive())
@@ -188,7 +235,7 @@ void AirspyGui::on_lna_valueChanged(int value)
if ((value < 0) || (value > 14))
return;
ui->lnaGainText->setText(tr("%1dB").arg(value*3));
ui->lnaGainText->setText(tr("%1dB").arg(value));
m_settings.m_lnaGain = value;
sendSettings();
}
@@ -198,7 +245,7 @@ void AirspyGui::on_mix_valueChanged(int value)
if ((value < 0) || (value > 15))
return;
ui->mixText->setText(tr("%1dB").arg(value*3));
ui->mixText->setText(tr("%1dB").arg(value));
m_settings.m_lnaGain = value;
sendSettings();
}
@@ -208,7 +255,7 @@ void AirspyGui::on_vga_valueChanged(int value)
if ((value < 0) || (value > 15))
return;
ui->vgaText->setText(tr("%1dB").arg(value*3));
ui->vgaText->setText(tr("%1dB").arg(value));
m_settings.m_lnaGain = value;
sendSettings();
}