mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-25 17:28:50 -05:00
UDP source: implemeted WEB API (2)
This commit is contained in:
parent
54019d7a06
commit
3d8d9d34e0
@ -643,6 +643,118 @@ bool UDPSrc::deserialize(const QByteArray& data)
|
||||
}
|
||||
}
|
||||
|
||||
int UDPSrc::webapiSettingsGet(
|
||||
SWGSDRangel::SWGChannelSettings& response,
|
||||
QString& errorMessage __attribute__((unused)))
|
||||
{
|
||||
response.setUdpSrcSettings(new SWGSDRangel::SWGUDPSrcSettings());
|
||||
response.getUdpSrcSettings()->init();
|
||||
webapiFormatChannelSettings(response, m_settings);
|
||||
return 200;
|
||||
}
|
||||
|
||||
int UDPSrc::webapiSettingsPutPatch(
|
||||
bool force,
|
||||
const QStringList& channelSettingsKeys,
|
||||
SWGSDRangel::SWGChannelSettings& response,
|
||||
QString& errorMessage __attribute__((unused)))
|
||||
{
|
||||
UDPSrcSettings settings;
|
||||
bool frequencyOffsetChanged = false;
|
||||
|
||||
if (channelSettingsKeys.contains("outputSampleRate")) {
|
||||
settings.m_outputSampleRate = response.getUdpSrcSettings()->getOutputSampleRate();
|
||||
}
|
||||
if (channelSettingsKeys.contains("sampleFormat")) {
|
||||
settings.m_sampleFormat = (UDPSrcSettings::SampleFormat) response.getUdpSrcSettings()->getSampleFormat();
|
||||
}
|
||||
if (channelSettingsKeys.contains("inputFrequencyOffset"))
|
||||
{
|
||||
settings.m_inputFrequencyOffset = response.getUdpSrcSettings()->getInputFrequencyOffset();
|
||||
frequencyOffsetChanged = true;
|
||||
}
|
||||
if (channelSettingsKeys.contains("rfBandwidth")) {
|
||||
settings.m_rfBandwidth = response.getUdpSrcSettings()->getRfBandwidth();
|
||||
}
|
||||
if (channelSettingsKeys.contains("fmDeviation")) {
|
||||
settings.m_fmDeviation = response.getUdpSrcSettings()->getFmDeviation();
|
||||
}
|
||||
if (channelSettingsKeys.contains("channelMute")) {
|
||||
settings.m_channelMute = response.getUdpSrcSettings()->getChannelMute() != 0;
|
||||
}
|
||||
if (channelSettingsKeys.contains("gain")) {
|
||||
settings.m_gain = response.getUdpSrcSettings()->getGain();
|
||||
}
|
||||
if (channelSettingsKeys.contains("squelchDB")) {
|
||||
settings.m_squelchdB = response.getUdpSrcSettings()->getSquelchDb();
|
||||
}
|
||||
if (channelSettingsKeys.contains("squelchGate")) {
|
||||
settings.m_squelchGate = response.getUdpSrcSettings()->getSquelchGate();
|
||||
}
|
||||
if (channelSettingsKeys.contains("squelchEnabled")) {
|
||||
settings.m_squelchEnabled = response.getUdpSrcSettings()->getSquelchEnabled() != 0;
|
||||
}
|
||||
if (channelSettingsKeys.contains("agc")) {
|
||||
settings.m_agc = response.getUdpSrcSettings()->getAgc() != 0;
|
||||
}
|
||||
if (channelSettingsKeys.contains("audioActive")) {
|
||||
settings.m_audioActive = response.getUdpSrcSettings()->getAudioActive() != 0;
|
||||
}
|
||||
if (channelSettingsKeys.contains("audioStereo")) {
|
||||
settings.m_audioStereo = response.getUdpSrcSettings()->getAudioStereo() != 0;
|
||||
}
|
||||
if (channelSettingsKeys.contains("volume")) {
|
||||
settings.m_volume = response.getUdpSrcSettings()->getVolume();
|
||||
}
|
||||
if (channelSettingsKeys.contains("udpAddress")) {
|
||||
settings.m_udpAddress = *response.getUdpSrcSettings()->getUdpAddress();
|
||||
}
|
||||
if (channelSettingsKeys.contains("udpPort")) {
|
||||
settings.m_udpPort = response.getUdpSrcSettings()->getUdpPort();
|
||||
}
|
||||
if (channelSettingsKeys.contains("audioPort")) {
|
||||
settings.m_audioPort = response.getUdpSrcSettings()->getAudioPort();
|
||||
}
|
||||
if (channelSettingsKeys.contains("rgbColor")) {
|
||||
settings.m_rgbColor = response.getUdpSrcSettings()->getRgbColor();
|
||||
}
|
||||
if (channelSettingsKeys.contains("title")) {
|
||||
settings.m_title = *response.getUdpSrcSettings()->getTitle();
|
||||
}
|
||||
|
||||
if (frequencyOffsetChanged)
|
||||
{
|
||||
UDPSrc::MsgConfigureChannelizer *msgChan = UDPSrc::MsgConfigureChannelizer::create(
|
||||
(int) settings.m_outputSampleRate,
|
||||
(int) settings.m_inputFrequencyOffset);
|
||||
m_inputMessageQueue.push(msgChan);
|
||||
}
|
||||
|
||||
MsgConfigureUDPSrc *msg = MsgConfigureUDPSrc::create(settings, force);
|
||||
m_inputMessageQueue.push(msg);
|
||||
|
||||
qDebug("UDPSrc::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
||||
if (m_guiMessageQueue) // forward to GUI if any
|
||||
{
|
||||
MsgConfigureUDPSrc *msgToGUI = MsgConfigureUDPSrc::create(settings, force);
|
||||
m_guiMessageQueue->push(msgToGUI);
|
||||
}
|
||||
|
||||
webapiFormatChannelSettings(response, settings);
|
||||
|
||||
return 200;
|
||||
}
|
||||
|
||||
int UDPSrc::webapiReportGet(
|
||||
SWGSDRangel::SWGChannelReport& response,
|
||||
QString& errorMessage __attribute__((unused)))
|
||||
{
|
||||
response.setUdpSrcReport(new SWGSDRangel::SWGUDPSrcReport());
|
||||
response.getUdpSrcReport()->init();
|
||||
webapiFormatChannelReport(response);
|
||||
return 200;
|
||||
}
|
||||
|
||||
void UDPSrc::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const UDPSrcSettings& settings)
|
||||
{
|
||||
response.getUdpSrcSettings()->setOutputSampleRate(settings.m_outputSampleRate);
|
||||
|
@ -114,6 +114,20 @@ public:
|
||||
virtual QByteArray serialize() const;
|
||||
virtual bool deserialize(const QByteArray& data);
|
||||
|
||||
virtual int webapiSettingsGet(
|
||||
SWGSDRangel::SWGChannelSettings& response,
|
||||
QString& errorMessage);
|
||||
|
||||
virtual int webapiSettingsPutPatch(
|
||||
bool force,
|
||||
const QStringList& channelSettingsKeys,
|
||||
SWGSDRangel::SWGChannelSettings& response,
|
||||
QString& errorMessage);
|
||||
|
||||
virtual int webapiReportGet(
|
||||
SWGSDRangel::SWGChannelReport& response,
|
||||
QString& errorMessage);
|
||||
|
||||
static const QString m_channelIdURI;
|
||||
static const QString m_channelId;
|
||||
static const int udpBlockSize = 512; // UDP block size in number of bytes
|
||||
|
@ -89,10 +89,34 @@ bool UDPSrcGUI::deserialize(const QByteArray& data)
|
||||
}
|
||||
}
|
||||
|
||||
bool UDPSrcGUI::handleMessage(const Message& message __attribute__((unused)))
|
||||
bool UDPSrcGUI::handleMessage(const Message& message )
|
||||
{
|
||||
qDebug() << "UDPSrcGUI::handleMessage";
|
||||
return false;
|
||||
if (UDPSrc::MsgConfigureUDPSrc::match(message))
|
||||
{
|
||||
const UDPSrc::MsgConfigureUDPSrc& cfg = (UDPSrc::MsgConfigureUDPSrc&) message;
|
||||
m_settings = cfg.getSettings();
|
||||
blockApplySettings(true);
|
||||
displaySettings();
|
||||
blockApplySettings(false);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void UDPSrcGUI::handleSourceMessages()
|
||||
{
|
||||
Message* message;
|
||||
|
||||
while ((message = getInputMessageQueue()->pop()) != 0)
|
||||
{
|
||||
if (handleMessage(*message))
|
||||
{
|
||||
delete message;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void UDPSrcGUI::channelMarkerChangedByCursor()
|
||||
@ -150,6 +174,7 @@ UDPSrcGUI::UDPSrcGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSam
|
||||
m_spectrumVis = new SpectrumVis(SDR_RX_SCALEF, ui->glSpectrum);
|
||||
m_udpSrc = (UDPSrc*) rxChannel; //new UDPSrc(m_deviceUISet->m_deviceSourceAPI);
|
||||
m_udpSrc->setSpectrum(m_spectrumVis);
|
||||
m_udpSrc->setMessageQueueToGUI(getInputMessageQueue());
|
||||
|
||||
ui->fmDeviation->setEnabled(false);
|
||||
|
||||
@ -186,6 +211,7 @@ UDPSrcGUI::UDPSrcGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSam
|
||||
|
||||
connect(&m_channelMarker, SIGNAL(changedByCursor()), this, SLOT(channelMarkerChangedByCursor()));
|
||||
connect(&m_channelMarker, SIGNAL(highlightedByCursor()), this, SLOT(channelMarkerHighlightedByCursor()));
|
||||
connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages()));
|
||||
|
||||
ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum);
|
||||
|
||||
|
@ -92,6 +92,7 @@ private:
|
||||
void enterEvent(QEvent*);
|
||||
|
||||
private slots:
|
||||
void handleSourceMessages();
|
||||
void on_deltaFrequency_changed(qint64 value);
|
||||
void on_sampleFormat_currentIndexChanged(int index);
|
||||
void on_outputUDPAddress_editingFinished();
|
||||
|
@ -83,7 +83,7 @@ bool UDPSinkGUI::deserialize(const QByteArray& data)
|
||||
}
|
||||
}
|
||||
|
||||
bool UDPSinkGUI::handleMessage(const Message& message __attribute__((unused)))
|
||||
bool UDPSinkGUI::handleMessage(const Message& message)
|
||||
{
|
||||
if (UDPSink::MsgConfigureUDPSink::match(message))
|
||||
{
|
||||
|
@ -1973,6 +1973,20 @@ bool WebAPIRequestMapper::validateChannelSettings(
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (*channelType == "UDPSrc")
|
||||
{
|
||||
if (channelSettings.getTx() == 0)
|
||||
{
|
||||
QJsonObject udpSrcSettingsJsonObject = jsonObject["UDPSrcSettings"].toObject();
|
||||
channelSettingsKeys = udpSrcSettingsJsonObject.keys();
|
||||
channelSettings.setUdpSrcSettings(new SWGSDRangel::SWGUDPSrcSettings());
|
||||
channelSettings.getUdpSrcSettings()->fromJsonObject(udpSrcSettingsJsonObject);
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (*channelType == "WFMDemod")
|
||||
{
|
||||
if (channelSettings.getTx() == 0)
|
||||
|
@ -199,6 +199,13 @@ def setupChannel(deviceset_url, options):
|
||||
settings["DSDDemodSettings"]["enableCosineFiltering"] = 1
|
||||
settings["DSDDemodSettings"]["pllLock"] = 1
|
||||
settings["DSDDemodSettings"]["title"] = "Channel %d" % i
|
||||
elif options.channel_id == "UDPSrc":
|
||||
settings["UDPSrcSettings"]["inputFrequencyOffset"] = options.channel_freq
|
||||
settings["UDPSrcSettings"]["rfBandwidth"] = options.rf_bw
|
||||
settings["UDPSrcSettings"]["volume"] = options.volume
|
||||
settings["UDPSrcSettings"]["squelchDB"] = options.squelch_db
|
||||
settings["UDPSrcSettings"]["channelMute"] = 0
|
||||
settings["UDPSrcSettings"]["title"] = "Channel %d" % i
|
||||
|
||||
r = callAPI(deviceset_url + "/channel/%d/settings" % i, "PATCH", None, settings, "Change demod")
|
||||
if r is None:
|
||||
|
Loading…
Reference in New Issue
Block a user