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

Server and web API: added HackRF support

This commit is contained in:
f4exb
2017-12-29 01:40:34 +01:00
parent d650010375
commit 1b96f25184
16 changed files with 1146 additions and 37 deletions
@@ -279,7 +279,7 @@ bool HackRFOutput::handleMessage(const Message& message)
}
}
void HackRFOutput::setCenterFrequency(quint64 freq_hz, qint32 LOppmTenths)
void HackRFOutput::setDeviceCenterFrequency(quint64 freq_hz, qint32 LOppmTenths)
{
qint64 df = ((qint64)freq_hz * LOppmTenths) / 10000000LL;
freq_hz += df;
@@ -288,11 +288,11 @@ void HackRFOutput::setCenterFrequency(quint64 freq_hz, qint32 LOppmTenths)
if (rc != HACKRF_SUCCESS)
{
qWarning("HackRFOutput::setCenterFrequency: could not frequency to %llu Hz", freq_hz);
qWarning("HackRFOutput::setDeviceCenterFrequency: could not frequency to %llu Hz", freq_hz);
}
else
{
qWarning("HackRFOutput::setCenterFrequency: frequency set to %llu Hz", freq_hz);
qWarning("HackRFOutput::setDeviceCenterFrequency: frequency set to %llu Hz", freq_hz);
}
}
@@ -368,7 +368,7 @@ bool HackRFOutput::applySettings(const HackRFOutputSettings& settings, bool forc
{
if (m_dev != 0)
{
setCenterFrequency(settings.m_centerFrequency, settings.m_LOppmTenths);
setDeviceCenterFrequency(settings.m_centerFrequency, settings.m_LOppmTenths);
qDebug() << "HackRFOutput::applySettings: center freq: " << settings.m_centerFrequency << " Hz LOppm: " << settings.m_LOppmTenths;
}
@@ -468,6 +468,73 @@ bool HackRFOutput::applySettings(const HackRFOutputSettings& settings, bool forc
return true;
}
int HackRFOutput::webapiSettingsGet(
SWGSDRangel::SWGDeviceSettings& response,
QString& errorMessage __attribute__((unused)))
{
response.setHackRfOutputSettings(new SWGSDRangel::SWGHackRFOutputSettings());
webapiFormatDeviceSettings(response, m_settings);
return 200;
}
int HackRFOutput::webapiSettingsPutPatch(
bool force,
const QStringList& deviceSettingsKeys,
SWGSDRangel::SWGDeviceSettings& response, // query + response
QString& errorMessage __attribute__((unused)))
{
HackRFOutputSettings settings = m_settings;
if (deviceSettingsKeys.contains("centerFrequency")) {
settings.m_centerFrequency = response.getHackRfOutputSettings()->getCenterFrequency();
}
if (deviceSettingsKeys.contains("LOppmTenths")) {
settings.m_LOppmTenths = response.getHackRfOutputSettings()->getLOppmTenths();
}
if (deviceSettingsKeys.contains("bandwidth")) {
settings.m_bandwidth = response.getHackRfOutputSettings()->getBandwidth();
}
if (deviceSettingsKeys.contains("vgaGain")) {
settings.m_vgaGain = response.getHackRfOutputSettings()->getVgaGain();
}
if (deviceSettingsKeys.contains("log2Interp")) {
settings.m_log2Interp = response.getHackRfOutputSettings()->getLog2Interp();
}
if (deviceSettingsKeys.contains("devSampleRate")) {
settings.m_devSampleRate = response.getHackRfOutputSettings()->getDevSampleRate();
}
if (deviceSettingsKeys.contains("biasT")) {
settings.m_biasT = response.getHackRfOutputSettings()->getBiasT() != 0;
}
if (deviceSettingsKeys.contains("lnaExt")) {
settings.m_lnaExt = response.getHackRfOutputSettings()->getLnaExt() != 0;
}
MsgConfigureHackRF *msg = MsgConfigureHackRF::create(settings, force);
m_inputMessageQueue.push(msg);
if (m_guiMessageQueue) // forward to GUI if any
{
MsgConfigureHackRF *msgToGUI = MsgConfigureHackRF::create(settings, force);
m_guiMessageQueue->push(msgToGUI);
}
webapiFormatDeviceSettings(response, settings);
return 200;
}
void HackRFOutput::webapiFormatDeviceSettings(SWGSDRangel::SWGDeviceSettings& response, const HackRFOutputSettings& settings)
{
response.getHackRfOutputSettings()->setCenterFrequency(settings.m_centerFrequency);
response.getHackRfOutputSettings()->setLOppmTenths(settings.m_LOppmTenths);
response.getHackRfOutputSettings()->setBandwidth(settings.m_bandwidth);
response.getHackRfOutputSettings()->setVgaGain(settings.m_vgaGain);
response.getHackRfOutputSettings()->setLog2Interp(settings.m_log2Interp);
response.getHackRfOutputSettings()->setDevSampleRate(settings.m_devSampleRate);
response.getHackRfOutputSettings()->setBiasT(settings.m_biasT ? 1 : 0);
response.getHackRfOutputSettings()->setLnaExt(settings.m_lnaExt ? 1 : 0);
}
int HackRFOutput::webapiRunGet(
SWGSDRangel::SWGDeviceState& response,
QString& errorMessage __attribute__((unused)))