From 0b195947d84f962ff69ebdd122ecc7d3e8ce790f Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 23 Aug 2018 22:17:26 +0200 Subject: [PATCH] SDRDaemon: Web API: check channel settings --- sdrdaemon/channel/sdrdaemonchannelsink.cpp | 36 ++++++++++++++++++---- sdrdaemon/sdrdaemonparser.cpp | 2 +- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/sdrdaemon/channel/sdrdaemonchannelsink.cpp b/sdrdaemon/channel/sdrdaemonchannelsink.cpp index 730572525..7a551fa0d 100644 --- a/sdrdaemon/channel/sdrdaemonchannelsink.cpp +++ b/sdrdaemon/channel/sdrdaemonchannelsink.cpp @@ -333,17 +333,41 @@ int SDRDaemonChannelSink::webapiSettingsPutPatch( { SDRDaemonChannelSinkSettings settings = m_settings; - if (channelSettingsKeys.contains("nbFECBlocks")) { - settings.m_nbFECBlocks = response.getSdrDaemonChannelSinkSettings()->getNbFecBlocks(); + if (channelSettingsKeys.contains("nbFECBlocks")) + { + int nbFECBlocks = response.getSdrDaemonChannelSinkSettings()->getNbFecBlocks(); + + if ((nbFECBlocks < 0) || (nbFECBlocks > 127)) { + settings.m_nbFECBlocks = 8; + } else { + settings.m_nbFECBlocks = response.getSdrDaemonChannelSinkSettings()->getNbFecBlocks(); + } } - if (channelSettingsKeys.contains("txDelay")) { - settings.m_txDelay = response.getSdrDaemonChannelSinkSettings()->getTxDelay(); + + if (channelSettingsKeys.contains("txDelay")) + { + int txDelay = response.getSdrDaemonChannelSinkSettings()->getTxDelay(); + + if (txDelay < 0) { + settings.m_txDelay = 100; + } else { + settings.m_txDelay = txDelay; + } } + if (channelSettingsKeys.contains("dataAddress")) { settings.m_dataAddress = *response.getSdrDaemonChannelSinkSettings()->getDataAddress(); } - if (channelSettingsKeys.contains("dataPort")) { - settings.m_dataPort = response.getSdrDaemonChannelSinkSettings()->getDataPort(); + + if (channelSettingsKeys.contains("dataPort")) + { + int dataPort = response.getSdrDaemonChannelSinkSettings()->getDataPort(); + + if ((dataPort < 1024) || (dataPort > 65535)) { + settings.m_dataPort = 9090; + } else { + settings.m_dataPort = dataPort; + } } MsgConfigureSDRDaemonChannelSink *msg = MsgConfigureSDRDaemonChannelSink::create(settings, force); diff --git a/sdrdaemon/sdrdaemonparser.cpp b/sdrdaemon/sdrdaemonparser.cpp index 398ab9d48..a3fd6e222 100644 --- a/sdrdaemon/sdrdaemonparser.cpp +++ b/sdrdaemon/sdrdaemonparser.cpp @@ -229,7 +229,7 @@ void SDRDaemonParser::parse(const QCoreApplication& app) QString txDelayStr = m_parser.value(m_txDelayOption); int txDelay = txDelayStr.toInt(&ok); - if (ok && (txDelay > 0)) + if (ok && (txDelay >= 0)) { m_txDelay = txDelay; qDebug() << "SDRDaemonParser::parse: Tx delay: " << m_txDelay;