mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-09-03 13:47:50 -04:00
REST API: config: GET (5): all API supported channels refactoring to use static methods for settings GET. PUT. PATCH
This commit is contained in:
parent
ef82b89182
commit
2274d20856
@ -598,6 +598,7 @@ int AMDemod::webapiSettingsPutPatch(
|
|||||||
SWGSDRangel::SWGChannelSettings& response,
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
QString& errorMessage)
|
QString& errorMessage)
|
||||||
{
|
{
|
||||||
|
(void) errorMessage;
|
||||||
AMDemodSettings settings = m_settings;
|
AMDemodSettings settings = m_settings;
|
||||||
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
|
@ -596,12 +596,37 @@ int BFMDemod::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
(void) errorMessage;
|
(void) errorMessage;
|
||||||
BFMDemodSettings settings = m_settings;
|
BFMDemodSettings settings = m_settings;
|
||||||
bool frequencyOffsetChanged = false;
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
if (channelSettingsKeys.contains("inputFrequencyOffset"))
|
if (settings.m_inputFrequencyOffset != m_settings.m_inputFrequencyOffset)
|
||||||
{
|
{
|
||||||
|
MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create(
|
||||||
|
requiredBW(settings.m_rfBandwidth), settings.m_inputFrequencyOffset);
|
||||||
|
m_inputMessageQueue.push(channelConfigMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
MsgConfigureBFMDemod *msg = MsgConfigureBFMDemod::create(settings, force);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
|
qDebug("BFMDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
MsgConfigureBFMDemod *msgToGUI = MsgConfigureBFMDemod::create(settings, force);
|
||||||
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
webapiFormatChannelSettings(response, settings);
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BFMDemod::webapiUpdateChannelSettings(
|
||||||
|
BFMDemodSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response)
|
||||||
|
{
|
||||||
|
if (channelSettingsKeys.contains("inputFrequencyOffset")) {
|
||||||
settings.m_inputFrequencyOffset = response.getBfmDemodSettings()->getInputFrequencyOffset();
|
settings.m_inputFrequencyOffset = response.getBfmDemodSettings()->getInputFrequencyOffset();
|
||||||
frequencyOffsetChanged = true;
|
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("rfBandwidth")) {
|
if (channelSettingsKeys.contains("rfBandwidth")) {
|
||||||
settings.m_rfBandwidth = response.getBfmDemodSettings()->getRfBandwidth();
|
settings.m_rfBandwidth = response.getBfmDemodSettings()->getRfBandwidth();
|
||||||
@ -651,27 +676,6 @@ int BFMDemod::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
||||||
settings.m_reverseAPIChannelIndex = response.getBfmDemodSettings()->getReverseApiChannelIndex();
|
settings.m_reverseAPIChannelIndex = response.getBfmDemodSettings()->getReverseApiChannelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (frequencyOffsetChanged)
|
|
||||||
{
|
|
||||||
MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create(
|
|
||||||
requiredBW(settings.m_rfBandwidth), settings.m_inputFrequencyOffset);
|
|
||||||
m_inputMessageQueue.push(channelConfigMsg);
|
|
||||||
}
|
|
||||||
|
|
||||||
MsgConfigureBFMDemod *msg = MsgConfigureBFMDemod::create(settings, force);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
|
|
||||||
qDebug("BFMDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
MsgConfigureBFMDemod *msgToGUI = MsgConfigureBFMDemod::create(settings, force);
|
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
|
||||||
}
|
|
||||||
|
|
||||||
webapiFormatChannelSettings(response, settings);
|
|
||||||
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int BFMDemod::webapiReportGet(
|
int BFMDemod::webapiReportGet(
|
||||||
|
@ -194,6 +194,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelReport& response,
|
SWGSDRangel::SWGChannelReport& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const BFMDemodSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
BFMDemodSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
static int requiredBW(int rfBW)
|
static int requiredBW(int rfBW)
|
||||||
{
|
{
|
||||||
if (rfBW <= 48000) {
|
if (rfBW <= 48000) {
|
||||||
@ -292,7 +301,6 @@ private:
|
|||||||
void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false);
|
void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false);
|
||||||
void applySettings(const BFMDemodSettings& settings, bool force = false);
|
void applySettings(const BFMDemodSettings& settings, bool force = false);
|
||||||
|
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const BFMDemodSettings& settings);
|
|
||||||
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
||||||
void webapiFormatRDSReport(SWGSDRangel::SWGRDSReport *report);
|
void webapiFormatRDSReport(SWGSDRangel::SWGRDSReport *report);
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const BFMDemodSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const BFMDemodSettings& settings, bool force);
|
||||||
|
@ -846,12 +846,37 @@ int DSDDemod::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
(void) errorMessage;
|
(void) errorMessage;
|
||||||
DSDDemodSettings settings = m_settings;
|
DSDDemodSettings settings = m_settings;
|
||||||
bool frequencyOffsetChanged = false;
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
if (channelSettingsKeys.contains("inputFrequencyOffset"))
|
if (settings.m_inputFrequencyOffset != m_settings.m_inputFrequencyOffset)
|
||||||
{
|
{
|
||||||
|
MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create(
|
||||||
|
m_audioSampleRate, settings.m_inputFrequencyOffset);
|
||||||
|
m_inputMessageQueue.push(channelConfigMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
MsgConfigureDSDDemod *msg = MsgConfigureDSDDemod::create(settings, force);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
|
qDebug("DSDDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
MsgConfigureDSDDemod *msgToGUI = MsgConfigureDSDDemod::create(settings, force);
|
||||||
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
webapiFormatChannelSettings(response, settings);
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DSDDemod::webapiUpdateChannelSettings(
|
||||||
|
DSDDemodSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response)
|
||||||
|
{
|
||||||
|
if (channelSettingsKeys.contains("inputFrequencyOffset")) {
|
||||||
settings.m_inputFrequencyOffset = response.getDsdDemodSettings()->getInputFrequencyOffset();
|
settings.m_inputFrequencyOffset = response.getDsdDemodSettings()->getInputFrequencyOffset();
|
||||||
frequencyOffsetChanged = true;
|
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("rfBandwidth")) {
|
if (channelSettingsKeys.contains("rfBandwidth")) {
|
||||||
settings.m_rfBandwidth = response.getDsdDemodSettings()->getRfBandwidth();
|
settings.m_rfBandwidth = response.getDsdDemodSettings()->getRfBandwidth();
|
||||||
@ -931,27 +956,6 @@ int DSDDemod::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
||||||
settings.m_reverseAPIChannelIndex = response.getDsdDemodSettings()->getReverseApiChannelIndex();
|
settings.m_reverseAPIChannelIndex = response.getDsdDemodSettings()->getReverseApiChannelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (frequencyOffsetChanged)
|
|
||||||
{
|
|
||||||
MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create(
|
|
||||||
m_audioSampleRate, settings.m_inputFrequencyOffset);
|
|
||||||
m_inputMessageQueue.push(channelConfigMsg);
|
|
||||||
}
|
|
||||||
|
|
||||||
MsgConfigureDSDDemod *msg = MsgConfigureDSDDemod::create(settings, force);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
|
|
||||||
qDebug("DSDDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
MsgConfigureDSDDemod *msgToGUI = MsgConfigureDSDDemod::create(settings, force);
|
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
|
||||||
}
|
|
||||||
|
|
||||||
webapiFormatChannelSettings(response, settings);
|
|
||||||
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int DSDDemod::webapiReportGet(
|
int DSDDemod::webapiReportGet(
|
||||||
|
@ -164,6 +164,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelReport& response,
|
SWGSDRangel::SWGChannelReport& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const DSDDemodSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
DSDDemodSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
static const QString m_channelIdURI;
|
static const QString m_channelIdURI;
|
||||||
static const QString m_channelId;
|
static const QString m_channelId;
|
||||||
|
|
||||||
@ -272,7 +281,6 @@ private:
|
|||||||
void applySettings(const DSDDemodSettings& settings, bool force = false);
|
void applySettings(const DSDDemodSettings& settings, bool force = false);
|
||||||
void formatStatusText();
|
void formatStatusText();
|
||||||
|
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const DSDDemodSettings& settings);
|
|
||||||
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const DSDDemodSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const DSDDemodSettings& settings, bool force);
|
||||||
|
|
||||||
|
@ -820,12 +820,37 @@ int FreeDVDemod::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
(void) errorMessage;
|
(void) errorMessage;
|
||||||
FreeDVDemodSettings settings = m_settings;
|
FreeDVDemodSettings settings = m_settings;
|
||||||
bool frequencyOffsetChanged = false;
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
if (channelSettingsKeys.contains("inputFrequencyOffset"))
|
if (settings.m_inputFrequencyOffset != m_settings.m_inputFrequencyOffset)
|
||||||
{
|
{
|
||||||
|
MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create(
|
||||||
|
m_modemSampleRate, settings.m_inputFrequencyOffset);
|
||||||
|
m_inputMessageQueue.push(channelConfigMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
MsgConfigureFreeDVDemod *msg = MsgConfigureFreeDVDemod::create(settings, force);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
|
qDebug("FreeDVDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
MsgConfigureFreeDVDemod *msgToGUI = MsgConfigureFreeDVDemod::create(settings, force);
|
||||||
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
webapiFormatChannelSettings(response, settings);
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FreeDVDemod::webapiUpdateChannelSettings(
|
||||||
|
FreeDVDemodSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response)
|
||||||
|
{
|
||||||
|
if (channelSettingsKeys.contains("inputFrequencyOffset")) {
|
||||||
settings.m_inputFrequencyOffset = response.getFreeDvDemodSettings()->getInputFrequencyOffset();
|
settings.m_inputFrequencyOffset = response.getFreeDvDemodSettings()->getInputFrequencyOffset();
|
||||||
frequencyOffsetChanged = true;
|
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("freeDVMode")) {
|
if (channelSettingsKeys.contains("freeDVMode")) {
|
||||||
settings.m_freeDVMode = (FreeDVDemodSettings::FreeDVMode) response.getFreeDvDemodSettings()->getFreeDvMode();
|
settings.m_freeDVMode = (FreeDVDemodSettings::FreeDVMode) response.getFreeDvDemodSettings()->getFreeDvMode();
|
||||||
@ -869,27 +894,6 @@ int FreeDVDemod::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
||||||
settings.m_reverseAPIChannelIndex = response.getFreeDvDemodSettings()->getReverseApiChannelIndex();
|
settings.m_reverseAPIChannelIndex = response.getFreeDvDemodSettings()->getReverseApiChannelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (frequencyOffsetChanged)
|
|
||||||
{
|
|
||||||
MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create(
|
|
||||||
m_modemSampleRate, settings.m_inputFrequencyOffset);
|
|
||||||
m_inputMessageQueue.push(channelConfigMsg);
|
|
||||||
}
|
|
||||||
|
|
||||||
MsgConfigureFreeDVDemod *msg = MsgConfigureFreeDVDemod::create(settings, force);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
|
|
||||||
qDebug("FreeDVDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
MsgConfigureFreeDVDemod *msgToGUI = MsgConfigureFreeDVDemod::create(settings, force);
|
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
|
||||||
}
|
|
||||||
|
|
||||||
webapiFormatChannelSettings(response, settings);
|
|
||||||
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int FreeDVDemod::webapiReportGet(
|
int FreeDVDemod::webapiReportGet(
|
||||||
|
@ -193,6 +193,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelReport& response,
|
SWGSDRangel::SWGChannelReport& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const FreeDVDemodSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
FreeDVDemodSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
static const QString m_channelIdURI;
|
static const QString m_channelIdURI;
|
||||||
static const QString m_channelId;
|
static const QString m_channelId;
|
||||||
|
|
||||||
@ -416,7 +425,6 @@ private:
|
|||||||
void applyAudioSampleRate(int sampleRate);
|
void applyAudioSampleRate(int sampleRate);
|
||||||
void applyFreeDVMode(FreeDVDemodSettings::FreeDVMode mode);
|
void applyFreeDVMode(FreeDVDemodSettings::FreeDVMode mode);
|
||||||
void processOneSample(Complex &ci);
|
void processOneSample(Complex &ci);
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const FreeDVDemodSettings& settings);
|
|
||||||
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const FreeDVDemodSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const FreeDVDemodSettings& settings, bool force);
|
||||||
|
|
||||||
|
@ -687,8 +687,34 @@ int NFMDemod::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
(void) errorMessage;
|
(void) errorMessage;
|
||||||
NFMDemodSettings settings = m_settings;
|
NFMDemodSettings settings = m_settings;
|
||||||
bool frequencyOffsetChanged = false;
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
|
if (settings.m_inputFrequencyOffset != m_settings.m_inputFrequencyOffset)
|
||||||
|
{
|
||||||
|
MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create(
|
||||||
|
m_audioSampleRate, settings.m_inputFrequencyOffset);
|
||||||
|
m_inputMessageQueue.push(channelConfigMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
MsgConfigureNFMDemod *msg = MsgConfigureNFMDemod::create(settings, force);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
MsgConfigureNFMDemod *msgToGUI = MsgConfigureNFMDemod::create(settings, force);
|
||||||
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
webapiFormatChannelSettings(response, settings);
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NFMDemod::webapiUpdateChannelSettings(
|
||||||
|
NFMDemodSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response)
|
||||||
|
{
|
||||||
if (channelSettingsKeys.contains("afBandwidth")) {
|
if (channelSettingsKeys.contains("afBandwidth")) {
|
||||||
settings.m_afBandwidth = response.getNfmDemodSettings()->getAfBandwidth();
|
settings.m_afBandwidth = response.getNfmDemodSettings()->getAfBandwidth();
|
||||||
}
|
}
|
||||||
@ -710,10 +736,8 @@ int NFMDemod::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("fmDeviation")) {
|
if (channelSettingsKeys.contains("fmDeviation")) {
|
||||||
settings.m_fmDeviation = response.getNfmDemodSettings()->getFmDeviation();
|
settings.m_fmDeviation = response.getNfmDemodSettings()->getFmDeviation();
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("inputFrequencyOffset"))
|
if (channelSettingsKeys.contains("inputFrequencyOffset")) {
|
||||||
{
|
|
||||||
settings.m_inputFrequencyOffset = response.getNfmDemodSettings()->getInputFrequencyOffset();
|
settings.m_inputFrequencyOffset = response.getNfmDemodSettings()->getInputFrequencyOffset();
|
||||||
frequencyOffsetChanged = true;
|
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("rfBandwidth")) {
|
if (channelSettingsKeys.contains("rfBandwidth")) {
|
||||||
settings.m_rfBandwidth = response.getNfmDemodSettings()->getRfBandwidth();
|
settings.m_rfBandwidth = response.getNfmDemodSettings()->getRfBandwidth();
|
||||||
@ -751,26 +775,6 @@ int NFMDemod::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
||||||
settings.m_reverseAPIChannelIndex = response.getNfmDemodSettings()->getReverseApiChannelIndex();
|
settings.m_reverseAPIChannelIndex = response.getNfmDemodSettings()->getReverseApiChannelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (frequencyOffsetChanged)
|
|
||||||
{
|
|
||||||
MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create(
|
|
||||||
m_audioSampleRate, settings.m_inputFrequencyOffset);
|
|
||||||
m_inputMessageQueue.push(channelConfigMsg);
|
|
||||||
}
|
|
||||||
|
|
||||||
MsgConfigureNFMDemod *msg = MsgConfigureNFMDemod::create(settings, force);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
MsgConfigureNFMDemod *msgToGUI = MsgConfigureNFMDemod::create(settings, force);
|
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
|
||||||
}
|
|
||||||
|
|
||||||
webapiFormatChannelSettings(response, settings);
|
|
||||||
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int NFMDemod::webapiReportGet(
|
int NFMDemod::webapiReportGet(
|
||||||
|
@ -156,6 +156,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelReport& response,
|
SWGSDRangel::SWGChannelReport& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const NFMDemodSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
NFMDemodSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
const Real *getCtcssToneSet(int& nbTones) const {
|
const Real *getCtcssToneSet(int& nbTones) const {
|
||||||
nbTones = m_ctcssDetector.getNTones();
|
nbTones = m_ctcssDetector.getNTones();
|
||||||
return m_ctcssDetector.getToneSet();
|
return m_ctcssDetector.getToneSet();
|
||||||
@ -261,7 +270,6 @@ private:
|
|||||||
void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false);
|
void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false);
|
||||||
void applySettings(const NFMDemodSettings& settings, bool force = false);
|
void applySettings(const NFMDemodSettings& settings, bool force = false);
|
||||||
void applyAudioSampleRate(int sampleRate);
|
void applyAudioSampleRate(int sampleRate);
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const NFMDemodSettings& settings);
|
|
||||||
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const NFMDemodSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const NFMDemodSettings& settings, bool force);
|
||||||
|
|
||||||
|
@ -685,12 +685,37 @@ int SSBDemod::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
(void) errorMessage;
|
(void) errorMessage;
|
||||||
SSBDemodSettings settings = m_settings;
|
SSBDemodSettings settings = m_settings;
|
||||||
bool frequencyOffsetChanged = false;
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
if (channelSettingsKeys.contains("inputFrequencyOffset"))
|
if (settings.m_inputFrequencyOffset != m_settings.m_inputFrequencyOffset)
|
||||||
{
|
{
|
||||||
|
MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create(
|
||||||
|
m_audioSampleRate, settings.m_inputFrequencyOffset);
|
||||||
|
m_inputMessageQueue.push(channelConfigMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
MsgConfigureSSBDemod *msg = MsgConfigureSSBDemod::create(settings, force);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
|
qDebug("SSBDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
MsgConfigureSSBDemod *msgToGUI = MsgConfigureSSBDemod::create(settings, force);
|
||||||
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
webapiFormatChannelSettings(response, settings);
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SSBDemod::webapiUpdateChannelSettings(
|
||||||
|
SSBDemodSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response)
|
||||||
|
{
|
||||||
|
if (channelSettingsKeys.contains("inputFrequencyOffset")) {
|
||||||
settings.m_inputFrequencyOffset = response.getSsbDemodSettings()->getInputFrequencyOffset();
|
settings.m_inputFrequencyOffset = response.getSsbDemodSettings()->getInputFrequencyOffset();
|
||||||
frequencyOffsetChanged = true;
|
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("rfBandwidth")) {
|
if (channelSettingsKeys.contains("rfBandwidth")) {
|
||||||
settings.m_rfBandwidth = response.getSsbDemodSettings()->getRfBandwidth();
|
settings.m_rfBandwidth = response.getSsbDemodSettings()->getRfBandwidth();
|
||||||
@ -755,27 +780,6 @@ int SSBDemod::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
||||||
settings.m_reverseAPIChannelIndex = response.getSsbDemodSettings()->getReverseApiChannelIndex();
|
settings.m_reverseAPIChannelIndex = response.getSsbDemodSettings()->getReverseApiChannelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (frequencyOffsetChanged)
|
|
||||||
{
|
|
||||||
MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create(
|
|
||||||
m_audioSampleRate, settings.m_inputFrequencyOffset);
|
|
||||||
m_inputMessageQueue.push(channelConfigMsg);
|
|
||||||
}
|
|
||||||
|
|
||||||
MsgConfigureSSBDemod *msg = MsgConfigureSSBDemod::create(settings, force);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
|
|
||||||
qDebug("SSBDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
MsgConfigureSSBDemod *msgToGUI = MsgConfigureSSBDemod::create(settings, force);
|
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
|
||||||
}
|
|
||||||
|
|
||||||
webapiFormatChannelSettings(response, settings);
|
|
||||||
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int SSBDemod::webapiReportGet(
|
int SSBDemod::webapiReportGet(
|
||||||
|
@ -173,6 +173,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelReport& response,
|
SWGSDRangel::SWGChannelReport& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const SSBDemodSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
SSBDemodSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
static const QString m_channelIdURI;
|
static const QString m_channelIdURI;
|
||||||
static const QString m_channelId;
|
static const QString m_channelId;
|
||||||
|
|
||||||
@ -335,7 +344,6 @@ private:
|
|||||||
void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false);
|
void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false);
|
||||||
void applySettings(const SSBDemodSettings& settings, bool force = false);
|
void applySettings(const SSBDemodSettings& settings, bool force = false);
|
||||||
void applyAudioSampleRate(int sampleRate);
|
void applyAudioSampleRate(int sampleRate);
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const SSBDemodSettings& settings);
|
|
||||||
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const SSBDemodSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const SSBDemodSettings& settings, bool force);
|
||||||
|
|
||||||
|
@ -456,12 +456,37 @@ int WFMDemod::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
(void) errorMessage;
|
(void) errorMessage;
|
||||||
WFMDemodSettings settings = m_settings;
|
WFMDemodSettings settings = m_settings;
|
||||||
bool frequencyOffsetChanged = false;
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
if (channelSettingsKeys.contains("inputFrequencyOffset"))
|
if (settings.m_inputFrequencyOffset != m_settings.m_inputFrequencyOffset)
|
||||||
{
|
{
|
||||||
|
MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create(
|
||||||
|
requiredBW(settings.m_rfBandwidth), settings.m_inputFrequencyOffset);
|
||||||
|
m_inputMessageQueue.push(channelConfigMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
MsgConfigureWFMDemod *msg = MsgConfigureWFMDemod::create(settings, force);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
|
qDebug("WFMDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
MsgConfigureWFMDemod *msgToGUI = MsgConfigureWFMDemod::create(settings, force);
|
||||||
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
webapiFormatChannelSettings(response, settings);
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WFMDemod::webapiUpdateChannelSettings(
|
||||||
|
WFMDemodSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response)
|
||||||
|
{
|
||||||
|
if (channelSettingsKeys.contains("inputFrequencyOffset")) {
|
||||||
settings.m_inputFrequencyOffset = response.getWfmDemodSettings()->getInputFrequencyOffset();
|
settings.m_inputFrequencyOffset = response.getWfmDemodSettings()->getInputFrequencyOffset();
|
||||||
frequencyOffsetChanged = true;
|
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("rfBandwidth")) {
|
if (channelSettingsKeys.contains("rfBandwidth")) {
|
||||||
settings.m_rfBandwidth = response.getWfmDemodSettings()->getRfBandwidth();
|
settings.m_rfBandwidth = response.getWfmDemodSettings()->getRfBandwidth();
|
||||||
@ -502,27 +527,6 @@ int WFMDemod::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
||||||
settings.m_reverseAPIChannelIndex = response.getWfmDemodSettings()->getReverseApiChannelIndex();
|
settings.m_reverseAPIChannelIndex = response.getWfmDemodSettings()->getReverseApiChannelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (frequencyOffsetChanged)
|
|
||||||
{
|
|
||||||
MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create(
|
|
||||||
requiredBW(settings.m_rfBandwidth), settings.m_inputFrequencyOffset);
|
|
||||||
m_inputMessageQueue.push(channelConfigMsg);
|
|
||||||
}
|
|
||||||
|
|
||||||
MsgConfigureWFMDemod *msg = MsgConfigureWFMDemod::create(settings, force);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
|
|
||||||
qDebug("WFMDemod::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
MsgConfigureWFMDemod *msgToGUI = MsgConfigureWFMDemod::create(settings, force);
|
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
|
||||||
}
|
|
||||||
|
|
||||||
webapiFormatChannelSettings(response, settings);
|
|
||||||
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int WFMDemod::webapiReportGet(
|
int WFMDemod::webapiReportGet(
|
||||||
|
@ -155,6 +155,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelReport& response,
|
SWGSDRangel::SWGChannelReport& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const WFMDemodSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
WFMDemodSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
static int requiredBW(int rfBW)
|
static int requiredBW(int rfBW)
|
||||||
{
|
{
|
||||||
if (rfBW <= 48000) {
|
if (rfBW <= 48000) {
|
||||||
@ -228,7 +237,6 @@ private:
|
|||||||
void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false);
|
void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false);
|
||||||
void applySettings(const WFMDemodSettings& settings, bool force = false);
|
void applySettings(const WFMDemodSettings& settings, bool force = false);
|
||||||
|
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const WFMDemodSettings& settings);
|
|
||||||
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const WFMDemodSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const WFMDemodSettings& settings, bool force);
|
||||||
|
|
||||||
|
@ -552,7 +552,28 @@ int FreqTracker::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
(void) errorMessage;
|
(void) errorMessage;
|
||||||
FreqTrackerSettings settings = m_settings;
|
FreqTrackerSettings settings = m_settings;
|
||||||
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
|
MsgConfigureFreqTracker *msg = MsgConfigureFreqTracker::create(settings, force);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
|
qDebug("FreqTracker::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
MsgConfigureFreqTracker *msgToGUI = MsgConfigureFreqTracker::create(settings, force);
|
||||||
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
webapiFormatChannelSettings(response, settings);
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FreqTracker::webapiUpdateChannelSettings(
|
||||||
|
FreqTrackerSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response)
|
||||||
|
{
|
||||||
if (channelSettingsKeys.contains("inputFrequencyOffset")) {
|
if (channelSettingsKeys.contains("inputFrequencyOffset")) {
|
||||||
settings.m_inputFrequencyOffset = response.getFreqTrackerSettings()->getInputFrequencyOffset();
|
settings.m_inputFrequencyOffset = response.getFreqTrackerSettings()->getInputFrequencyOffset();
|
||||||
}
|
}
|
||||||
@ -612,20 +633,6 @@ int FreqTracker::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
||||||
settings.m_reverseAPIChannelIndex = response.getAmDemodSettings()->getReverseApiChannelIndex();
|
settings.m_reverseAPIChannelIndex = response.getAmDemodSettings()->getReverseApiChannelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
MsgConfigureFreqTracker *msg = MsgConfigureFreqTracker::create(settings, force);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
|
|
||||||
qDebug("FreqTracker::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
MsgConfigureFreqTracker *msgToGUI = MsgConfigureFreqTracker::create(settings, force);
|
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
|
||||||
}
|
|
||||||
|
|
||||||
webapiFormatChannelSettings(response, settings);
|
|
||||||
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int FreqTracker::webapiReportGet(
|
int FreqTracker::webapiReportGet(
|
||||||
@ -653,13 +660,13 @@ void FreqTracker::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& r
|
|||||||
response.getFreqTrackerSettings()->setTitle(new QString(settings.m_title));
|
response.getFreqTrackerSettings()->setTitle(new QString(settings.m_title));
|
||||||
}
|
}
|
||||||
|
|
||||||
response.getFreqTrackerSettings()->setAlphaEma(m_settings.m_alphaEMA);
|
response.getFreqTrackerSettings()->setAlphaEma(settings.m_alphaEMA);
|
||||||
response.getFreqTrackerSettings()->setTracking(m_settings.m_tracking ? 1 : 0);
|
response.getFreqTrackerSettings()->setTracking(settings.m_tracking ? 1 : 0);
|
||||||
response.getFreqTrackerSettings()->setTrackerType((int) m_settings.m_trackerType);
|
response.getFreqTrackerSettings()->setTrackerType((int) settings.m_trackerType);
|
||||||
response.getFreqTrackerSettings()->setPllPskOrder(m_settings.m_pllPskOrder);
|
response.getFreqTrackerSettings()->setPllPskOrder(settings.m_pllPskOrder);
|
||||||
response.getFreqTrackerSettings()->setRrc(m_settings.m_rrc ? 1 : 0);
|
response.getFreqTrackerSettings()->setRrc(settings.m_rrc ? 1 : 0);
|
||||||
response.getFreqTrackerSettings()->setRrcRolloff(m_settings.m_rrcRolloff);
|
response.getFreqTrackerSettings()->setRrcRolloff(settings.m_rrcRolloff);
|
||||||
response.getFreqTrackerSettings()->setSquelchGate(m_settings.m_squelchGate);
|
response.getFreqTrackerSettings()->setSquelchGate(settings.m_squelchGate);
|
||||||
response.getFreqTrackerSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0);
|
response.getFreqTrackerSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0);
|
||||||
|
|
||||||
if (response.getFreqTrackerSettings()->getReverseApiAddress()) {
|
if (response.getFreqTrackerSettings()->getReverseApiAddress()) {
|
||||||
|
@ -157,6 +157,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelReport& response,
|
SWGSDRangel::SWGChannelReport& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const FreqTrackerSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
FreqTrackerSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
uint32_t getSampleRate() const { return m_channelSampleRate; }
|
uint32_t getSampleRate() const { return m_channelSampleRate; }
|
||||||
double getMagSq() const { return m_magsq; }
|
double getMagSq() const { return m_magsq; }
|
||||||
bool getSquelchOpen() const { return m_squelchOpen; }
|
bool getSquelchOpen() const { return m_squelchOpen; }
|
||||||
@ -250,7 +259,6 @@ private:
|
|||||||
void configureChannelizer();
|
void configureChannelizer();
|
||||||
void connectTimer();
|
void connectTimer();
|
||||||
void disconnectTimer();
|
void disconnectTimer();
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const FreqTrackerSettings& settings);
|
|
||||||
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const FreqTrackerSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const FreqTrackerSettings& settings, bool force);
|
||||||
|
|
||||||
|
@ -355,7 +355,34 @@ int LocalSink::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
(void) errorMessage;
|
(void) errorMessage;
|
||||||
LocalSinkSettings settings = m_settings;
|
LocalSinkSettings settings = m_settings;
|
||||||
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
|
MsgConfigureLocalSink *msg = MsgConfigureLocalSink::create(settings, force);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
|
if ((settings.m_log2Decim != m_settings.m_log2Decim) || (settings.m_filterChainHash != m_settings.m_filterChainHash) || force)
|
||||||
|
{
|
||||||
|
MsgConfigureChannelizer *msg = MsgConfigureChannelizer::create(settings.m_log2Decim, settings.m_filterChainHash);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
qDebug("LocalSink::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
MsgConfigureLocalSink *msgToGUI = MsgConfigureLocalSink::create(settings, force);
|
||||||
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
webapiFormatChannelSettings(response, settings);
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LocalSink::webapiUpdateChannelSettings(
|
||||||
|
LocalSinkSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response)
|
||||||
|
{
|
||||||
if (channelSettingsKeys.contains("localDeviceIndex")) {
|
if (channelSettingsKeys.contains("localDeviceIndex")) {
|
||||||
settings.m_localDeviceIndex = response.getLocalSinkSettings()->getLocalDeviceIndex();
|
settings.m_localDeviceIndex = response.getLocalSinkSettings()->getLocalDeviceIndex();
|
||||||
}
|
}
|
||||||
@ -390,26 +417,6 @@ int LocalSink::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
||||||
settings.m_reverseAPIChannelIndex = response.getLocalSinkSettings()->getReverseApiChannelIndex();
|
settings.m_reverseAPIChannelIndex = response.getLocalSinkSettings()->getReverseApiChannelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
MsgConfigureLocalSink *msg = MsgConfigureLocalSink::create(settings, force);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
|
|
||||||
if ((settings.m_log2Decim != m_settings.m_log2Decim) || (settings.m_filterChainHash != m_settings.m_filterChainHash) || force)
|
|
||||||
{
|
|
||||||
MsgConfigureChannelizer *msg = MsgConfigureChannelizer::create(settings.m_log2Decim, settings.m_filterChainHash);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
qDebug("LocalSink::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
MsgConfigureLocalSink *msgToGUI = MsgConfigureLocalSink::create(settings, force);
|
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
|
||||||
}
|
|
||||||
|
|
||||||
webapiFormatChannelSettings(response, settings);
|
|
||||||
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LocalSink::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const LocalSinkSettings& settings)
|
void LocalSink::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const LocalSinkSettings& settings)
|
||||||
|
@ -138,6 +138,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelSettings& response,
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const LocalSinkSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
LocalSinkSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
/** Set center frequency given in Hz */
|
/** Set center frequency given in Hz */
|
||||||
void setCenterFrequency(uint64_t centerFrequency) { m_centerFrequency = centerFrequency; }
|
void setCenterFrequency(uint64_t centerFrequency) { m_centerFrequency = centerFrequency; }
|
||||||
|
|
||||||
@ -173,9 +182,8 @@ private:
|
|||||||
void applySettings(const LocalSinkSettings& settings, bool force = false);
|
void applySettings(const LocalSinkSettings& settings, bool force = false);
|
||||||
DeviceSampleSource *getLocalDevice(uint32_t index);
|
DeviceSampleSource *getLocalDevice(uint32_t index);
|
||||||
void propagateSampleRateAndFrequency(uint32_t index);
|
void propagateSampleRateAndFrequency(uint32_t index);
|
||||||
void validateFilterChainHash(LocalSinkSettings& settings);
|
static void validateFilterChainHash(LocalSinkSettings& settings);
|
||||||
void calculateFrequencyOffset();
|
void calculateFrequencyOffset();
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const LocalSinkSettings& settings);
|
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const LocalSinkSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const LocalSinkSettings& settings, bool force);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
@ -448,7 +448,34 @@ int RemoteSink::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
(void) errorMessage;
|
(void) errorMessage;
|
||||||
RemoteSinkSettings settings = m_settings;
|
RemoteSinkSettings settings = m_settings;
|
||||||
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
|
MsgConfigureRemoteSink *msg = MsgConfigureRemoteSink::create(settings, force);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
|
if ((settings.m_log2Decim != m_settings.m_log2Decim) || (settings.m_filterChainHash != m_settings.m_filterChainHash) || force)
|
||||||
|
{
|
||||||
|
MsgConfigureChannelizer *msg = MsgConfigureChannelizer::create(settings.m_log2Decim, settings.m_filterChainHash);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
qDebug("RemoteSink::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
MsgConfigureRemoteSink *msgToGUI = MsgConfigureRemoteSink::create(settings, force);
|
||||||
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
webapiFormatChannelSettings(response, settings);
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemoteSink::webapiUpdateChannelSettings(
|
||||||
|
RemoteSinkSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response)
|
||||||
|
{
|
||||||
if (channelSettingsKeys.contains("nbFECBlocks"))
|
if (channelSettingsKeys.contains("nbFECBlocks"))
|
||||||
{
|
{
|
||||||
int nbFECBlocks = response.getRemoteSinkSettings()->getNbFecBlocks();
|
int nbFECBlocks = response.getRemoteSinkSettings()->getNbFecBlocks();
|
||||||
@ -517,26 +544,6 @@ int RemoteSink::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
||||||
settings.m_reverseAPIChannelIndex = response.getRemoteSinkSettings()->getReverseApiChannelIndex();
|
settings.m_reverseAPIChannelIndex = response.getRemoteSinkSettings()->getReverseApiChannelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
MsgConfigureRemoteSink *msg = MsgConfigureRemoteSink::create(settings, force);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
|
|
||||||
if ((settings.m_log2Decim != m_settings.m_log2Decim) || (settings.m_filterChainHash != m_settings.m_filterChainHash) || force)
|
|
||||||
{
|
|
||||||
MsgConfigureChannelizer *msg = MsgConfigureChannelizer::create(settings.m_log2Decim, settings.m_filterChainHash);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
qDebug("RemoteSink::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
MsgConfigureRemoteSink *msgToGUI = MsgConfigureRemoteSink::create(settings, force);
|
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
|
||||||
}
|
|
||||||
|
|
||||||
webapiFormatChannelSettings(response, settings);
|
|
||||||
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoteSink::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const RemoteSinkSettings& settings)
|
void RemoteSink::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const RemoteSinkSettings& settings)
|
||||||
|
@ -145,6 +145,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelSettings& response,
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const RemoteSinkSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
RemoteSinkSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
/** Set center frequency given in Hz */
|
/** Set center frequency given in Hz */
|
||||||
void setCenterFrequency(uint64_t centerFrequency) { m_centerFrequency = centerFrequency; }
|
void setCenterFrequency(uint64_t centerFrequency) { m_centerFrequency = centerFrequency; }
|
||||||
|
|
||||||
@ -192,9 +201,8 @@ private:
|
|||||||
QNetworkRequest m_networkRequest;
|
QNetworkRequest m_networkRequest;
|
||||||
|
|
||||||
void applySettings(const RemoteSinkSettings& settings, bool force = false);
|
void applySettings(const RemoteSinkSettings& settings, bool force = false);
|
||||||
void validateFilterChainHash(RemoteSinkSettings& settings);
|
static void validateFilterChainHash(RemoteSinkSettings& settings);
|
||||||
void calculateFrequencyOffset();
|
void calculateFrequencyOffset();
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const RemoteSinkSettings& settings);
|
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const RemoteSinkSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const RemoteSinkSettings& settings, bool force);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
@ -736,18 +736,44 @@ int UDPSink::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
(void) errorMessage;
|
(void) errorMessage;
|
||||||
UDPSinkSettings settings = m_settings;
|
UDPSinkSettings settings = m_settings;
|
||||||
bool frequencyOffsetChanged = false;
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
|
if (m_settings.m_inputFrequencyOffset != settings.m_inputFrequencyOffset)
|
||||||
|
{
|
||||||
|
UDPSink::MsgConfigureChannelizer *msgChan = UDPSink::MsgConfigureChannelizer::create(
|
||||||
|
(int) settings.m_outputSampleRate,
|
||||||
|
(int) settings.m_inputFrequencyOffset);
|
||||||
|
m_inputMessageQueue.push(msgChan);
|
||||||
|
}
|
||||||
|
|
||||||
|
MsgConfigureUDPSource *msg = MsgConfigureUDPSource::create(settings, force);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
|
qDebug("getUdpSinkSettings::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
MsgConfigureUDPSource *msgToGUI = MsgConfigureUDPSource::create(settings, force);
|
||||||
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
webapiFormatChannelSettings(response, settings);
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDPSink::webapiUpdateChannelSettings(
|
||||||
|
UDPSinkSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response)
|
||||||
|
{
|
||||||
if (channelSettingsKeys.contains("outputSampleRate")) {
|
if (channelSettingsKeys.contains("outputSampleRate")) {
|
||||||
settings.m_outputSampleRate = response.getUdpSinkSettings()->getOutputSampleRate();
|
settings.m_outputSampleRate = response.getUdpSinkSettings()->getOutputSampleRate();
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("sampleFormat")) {
|
if (channelSettingsKeys.contains("sampleFormat")) {
|
||||||
settings.m_sampleFormat = (UDPSinkSettings::SampleFormat) response.getUdpSinkSettings()->getSampleFormat();
|
settings.m_sampleFormat = (UDPSinkSettings::SampleFormat) response.getUdpSinkSettings()->getSampleFormat();
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("inputFrequencyOffset"))
|
if (channelSettingsKeys.contains("inputFrequencyOffset")) {
|
||||||
{
|
|
||||||
settings.m_inputFrequencyOffset = response.getUdpSinkSettings()->getInputFrequencyOffset();
|
settings.m_inputFrequencyOffset = response.getUdpSinkSettings()->getInputFrequencyOffset();
|
||||||
frequencyOffsetChanged = true;
|
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("rfBandwidth")) {
|
if (channelSettingsKeys.contains("rfBandwidth")) {
|
||||||
settings.m_rfBandwidth = response.getUdpSinkSettings()->getRfBandwidth();
|
settings.m_rfBandwidth = response.getUdpSinkSettings()->getRfBandwidth();
|
||||||
@ -812,28 +838,6 @@ int UDPSink::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
||||||
settings.m_reverseAPIChannelIndex = response.getUdpSinkSettings()->getReverseApiChannelIndex();
|
settings.m_reverseAPIChannelIndex = response.getUdpSinkSettings()->getReverseApiChannelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (frequencyOffsetChanged)
|
|
||||||
{
|
|
||||||
UDPSink::MsgConfigureChannelizer *msgChan = UDPSink::MsgConfigureChannelizer::create(
|
|
||||||
(int) settings.m_outputSampleRate,
|
|
||||||
(int) settings.m_inputFrequencyOffset);
|
|
||||||
m_inputMessageQueue.push(msgChan);
|
|
||||||
}
|
|
||||||
|
|
||||||
MsgConfigureUDPSource *msg = MsgConfigureUDPSource::create(settings, force);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
|
|
||||||
qDebug("getUdpSinkSettings::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
MsgConfigureUDPSource *msgToGUI = MsgConfigureUDPSource::create(settings, force);
|
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
|
||||||
}
|
|
||||||
|
|
||||||
webapiFormatChannelSettings(response, settings);
|
|
||||||
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int UDPSink::webapiReportGet(
|
int UDPSink::webapiReportGet(
|
||||||
|
@ -142,6 +142,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelReport& response,
|
SWGSDRangel::SWGChannelReport& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const UDPSinkSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
UDPSinkSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
static const QString m_channelIdURI;
|
static const QString m_channelIdURI;
|
||||||
static const QString m_channelId;
|
static const QString m_channelId;
|
||||||
static const int udpBlockSize = 512; // UDP block size in number of bytes
|
static const int udpBlockSize = 512; // UDP block size in number of bytes
|
||||||
@ -252,7 +261,6 @@ protected:
|
|||||||
void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = true);
|
void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = true);
|
||||||
void applySettings(const UDPSinkSettings& settings, bool force = false);
|
void applySettings(const UDPSinkSettings& settings, bool force = false);
|
||||||
|
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const UDPSinkSettings& settings);
|
|
||||||
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const UDPSinkSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const UDPSinkSettings& settings, bool force);
|
||||||
|
|
||||||
|
@ -531,7 +531,28 @@ int FileSource::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
(void) errorMessage;
|
(void) errorMessage;
|
||||||
FileSourceSettings settings = m_settings;
|
FileSourceSettings settings = m_settings;
|
||||||
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
|
MsgConfigureFileSource *msg = MsgConfigureFileSource::create(settings, force);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
|
qDebug("FileSource::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
MsgConfigureFileSource *msgToGUI = MsgConfigureFileSource::create(settings, force);
|
||||||
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
webapiFormatChannelSettings(response, settings);
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FileSource::webapiUpdateChannelSettings(
|
||||||
|
FileSourceSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response)
|
||||||
|
{
|
||||||
if (channelSettingsKeys.contains("log2Interp")) {
|
if (channelSettingsKeys.contains("log2Interp")) {
|
||||||
settings.m_log2Interp = response.getFileSourceSettings()->getLog2Interp();
|
settings.m_log2Interp = response.getFileSourceSettings()->getLog2Interp();
|
||||||
}
|
}
|
||||||
@ -566,20 +587,6 @@ int FileSource::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
||||||
settings.m_reverseAPIChannelIndex = response.getFileSourceSettings()->getReverseApiChannelIndex();
|
settings.m_reverseAPIChannelIndex = response.getFileSourceSettings()->getReverseApiChannelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
MsgConfigureFileSource *msg = MsgConfigureFileSource::create(settings, force);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
|
|
||||||
qDebug("FileSource::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
MsgConfigureFileSource *msgToGUI = MsgConfigureFileSource::create(settings, force);
|
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
|
||||||
}
|
|
||||||
|
|
||||||
webapiFormatChannelSettings(response, settings);
|
|
||||||
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int FileSource::webapiReportGet(
|
int FileSource::webapiReportGet(
|
||||||
|
@ -347,6 +347,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelReport& response,
|
SWGSDRangel::SWGChannelReport& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const FileSourceSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
FileSourceSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
/** Set center frequency given in Hz */
|
/** Set center frequency given in Hz */
|
||||||
void setCenterFrequency(uint64_t centerFrequency) { m_centerFrequency = centerFrequency; }
|
void setCenterFrequency(uint64_t centerFrequency) { m_centerFrequency = centerFrequency; }
|
||||||
|
|
||||||
@ -421,9 +430,8 @@ private:
|
|||||||
void seekFileStream(int seekMillis);
|
void seekFileStream(int seekMillis);
|
||||||
void handleEOF();
|
void handleEOF();
|
||||||
void applySettings(const FileSourceSettings& settings, bool force = false);
|
void applySettings(const FileSourceSettings& settings, bool force = false);
|
||||||
void validateFilterChainHash(FileSourceSettings& settings);
|
static void validateFilterChainHash(FileSourceSettings& settings);
|
||||||
void calculateFrequencyOffset();
|
void calculateFrequencyOffset();
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const FileSourceSettings& settings);
|
|
||||||
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const FileSourceSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const FileSourceSettings& settings, bool force);
|
||||||
|
|
||||||
|
@ -427,7 +427,34 @@ int LocalSource::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
(void) errorMessage;
|
(void) errorMessage;
|
||||||
LocalSourceSettings settings = m_settings;
|
LocalSourceSettings settings = m_settings;
|
||||||
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
|
MsgConfigureLocalSource *msg = MsgConfigureLocalSource::create(settings, force);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
|
if ((settings.m_log2Interp != m_settings.m_log2Interp) || (settings.m_filterChainHash != m_settings.m_filterChainHash) || force)
|
||||||
|
{
|
||||||
|
MsgConfigureChannelizer *msg = MsgConfigureChannelizer::create(settings.m_log2Interp, settings.m_filterChainHash);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
qDebug("LocalSource::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
MsgConfigureLocalSource *msgToGUI = MsgConfigureLocalSource::create(settings, force);
|
||||||
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
webapiFormatChannelSettings(response, settings);
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LocalSource::webapiUpdateChannelSettings(
|
||||||
|
LocalSourceSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response)
|
||||||
|
{
|
||||||
if (channelSettingsKeys.contains("localDeviceIndex")) {
|
if (channelSettingsKeys.contains("localDeviceIndex")) {
|
||||||
settings.m_localDeviceIndex = response.getLocalSourceSettings()->getLocalDeviceIndex();
|
settings.m_localDeviceIndex = response.getLocalSourceSettings()->getLocalDeviceIndex();
|
||||||
}
|
}
|
||||||
@ -462,26 +489,6 @@ int LocalSource::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
||||||
settings.m_reverseAPIChannelIndex = response.getLocalSourceSettings()->getReverseApiChannelIndex();
|
settings.m_reverseAPIChannelIndex = response.getLocalSourceSettings()->getReverseApiChannelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
MsgConfigureLocalSource *msg = MsgConfigureLocalSource::create(settings, force);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
|
|
||||||
if ((settings.m_log2Interp != m_settings.m_log2Interp) || (settings.m_filterChainHash != m_settings.m_filterChainHash) || force)
|
|
||||||
{
|
|
||||||
MsgConfigureChannelizer *msg = MsgConfigureChannelizer::create(settings.m_log2Interp, settings.m_filterChainHash);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
qDebug("LocalSource::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
MsgConfigureLocalSource *msgToGUI = MsgConfigureLocalSource::create(settings, force);
|
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
|
||||||
}
|
|
||||||
|
|
||||||
webapiFormatChannelSettings(response, settings);
|
|
||||||
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LocalSource::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const LocalSourceSettings& settings)
|
void LocalSource::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const LocalSourceSettings& settings)
|
||||||
|
@ -140,6 +140,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelSettings& response,
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const LocalSourceSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
LocalSourceSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
/** Set center frequency given in Hz */
|
/** Set center frequency given in Hz */
|
||||||
void setCenterFrequency(uint64_t centerFrequency) { m_centerFrequency = centerFrequency; }
|
void setCenterFrequency(uint64_t centerFrequency) { m_centerFrequency = centerFrequency; }
|
||||||
|
|
||||||
@ -182,9 +191,8 @@ private:
|
|||||||
void applySettings(const LocalSourceSettings& settings, bool force = false);
|
void applySettings(const LocalSourceSettings& settings, bool force = false);
|
||||||
DeviceSampleSink *getLocalDevice(uint32_t index);
|
DeviceSampleSink *getLocalDevice(uint32_t index);
|
||||||
void propagateSampleRateAndFrequency(uint32_t index);
|
void propagateSampleRateAndFrequency(uint32_t index);
|
||||||
void validateFilterChainHash(LocalSourceSettings& settings);
|
static void validateFilterChainHash(LocalSourceSettings& settings);
|
||||||
void calculateFrequencyOffset();
|
void calculateFrequencyOffset();
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const LocalSourceSettings& settings);
|
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const LocalSourceSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const LocalSourceSettings& settings, bool force);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
@ -682,6 +682,11 @@ int AMMod::webapiSettingsGet(
|
|||||||
response.setAmModSettings(new SWGSDRangel::SWGAMModSettings());
|
response.setAmModSettings(new SWGSDRangel::SWGAMModSettings());
|
||||||
response.getAmModSettings()->init();
|
response.getAmModSettings()->init();
|
||||||
webapiFormatChannelSettings(response, m_settings);
|
webapiFormatChannelSettings(response, m_settings);
|
||||||
|
|
||||||
|
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getAmModSettings()->getCwKeyer();
|
||||||
|
const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings();
|
||||||
|
CWKeyer::webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings);
|
||||||
|
|
||||||
return 200;
|
return 200;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -693,15 +698,55 @@ int AMMod::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
(void) errorMessage;
|
(void) errorMessage;
|
||||||
AMModSettings settings = m_settings;
|
AMModSettings settings = m_settings;
|
||||||
bool frequencyOffsetChanged = false;
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
|
if (channelSettingsKeys.contains("cwKeyer"))
|
||||||
|
{
|
||||||
|
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getAmModSettings()->getCwKeyer();
|
||||||
|
CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings();
|
||||||
|
CWKeyer::webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings);
|
||||||
|
|
||||||
|
CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
||||||
|
m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer);
|
||||||
|
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
||||||
|
m_guiMessageQueue->push(msgCwKeyerToGUI);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_settings.m_inputFrequencyOffset != settings.m_inputFrequencyOffset)
|
||||||
|
{
|
||||||
|
AMMod::MsgConfigureChannelizer *msgChan = AMMod::MsgConfigureChannelizer::create(
|
||||||
|
m_audioSampleRate, settings.m_inputFrequencyOffset);
|
||||||
|
m_inputMessageQueue.push(msgChan);
|
||||||
|
}
|
||||||
|
|
||||||
|
MsgConfigureAMMod *msg = MsgConfigureAMMod::create(settings, force);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
MsgConfigureAMMod *msgToGUI = MsgConfigureAMMod::create(settings, force);
|
||||||
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
webapiFormatChannelSettings(response, settings);
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AMMod::webapiUpdateChannelSettings(
|
||||||
|
AMModSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response)
|
||||||
|
{
|
||||||
if (channelSettingsKeys.contains("channelMute")) {
|
if (channelSettingsKeys.contains("channelMute")) {
|
||||||
settings.m_channelMute = response.getAmModSettings()->getChannelMute() != 0;
|
settings.m_channelMute = response.getAmModSettings()->getChannelMute() != 0;
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("inputFrequencyOffset"))
|
if (channelSettingsKeys.contains("inputFrequencyOffset")) {
|
||||||
{
|
|
||||||
settings.m_inputFrequencyOffset = response.getAmModSettings()->getInputFrequencyOffset();
|
settings.m_inputFrequencyOffset = response.getAmModSettings()->getInputFrequencyOffset();
|
||||||
frequencyOffsetChanged = true;
|
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("modAFInput")) {
|
if (channelSettingsKeys.contains("modAFInput")) {
|
||||||
settings.m_modAFInput = (AMModSettings::AMModInputAF) response.getAmModSettings()->getModAfInput();
|
settings.m_modAFInput = (AMModSettings::AMModInputAF) response.getAmModSettings()->getModAfInput();
|
||||||
@ -745,42 +790,6 @@ int AMMod::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
||||||
settings.m_reverseAPIChannelIndex = response.getAmModSettings()->getReverseApiChannelIndex();
|
settings.m_reverseAPIChannelIndex = response.getAmModSettings()->getReverseApiChannelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (channelSettingsKeys.contains("cwKeyer"))
|
|
||||||
{
|
|
||||||
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getAmModSettings()->getCwKeyer();
|
|
||||||
CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings();
|
|
||||||
m_cwKeyer.webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings);
|
|
||||||
|
|
||||||
CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
|
||||||
m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer);
|
|
||||||
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
|
||||||
m_guiMessageQueue->push(msgCwKeyerToGUI);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (frequencyOffsetChanged)
|
|
||||||
{
|
|
||||||
AMMod::MsgConfigureChannelizer *msgChan = AMMod::MsgConfigureChannelizer::create(
|
|
||||||
m_audioSampleRate, settings.m_inputFrequencyOffset);
|
|
||||||
m_inputMessageQueue.push(msgChan);
|
|
||||||
}
|
|
||||||
|
|
||||||
MsgConfigureAMMod *msg = MsgConfigureAMMod::create(settings, force);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
MsgConfigureAMMod *msgToGUI = MsgConfigureAMMod::create(settings, force);
|
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
|
||||||
}
|
|
||||||
|
|
||||||
webapiFormatChannelSettings(response, settings);
|
|
||||||
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int AMMod::webapiReportGet(
|
int AMMod::webapiReportGet(
|
||||||
@ -817,10 +826,6 @@ void AMMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respons
|
|||||||
response.getAmModSettings()->setCwKeyer(new SWGSDRangel::SWGCWKeyerSettings);
|
response.getAmModSettings()->setCwKeyer(new SWGSDRangel::SWGCWKeyerSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getAmModSettings()->getCwKeyer();
|
|
||||||
const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings();
|
|
||||||
m_cwKeyer.webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings);
|
|
||||||
|
|
||||||
if (response.getAmModSettings()->getAudioDeviceName()) {
|
if (response.getAmModSettings()->getAudioDeviceName()) {
|
||||||
*response.getAmModSettings()->getAudioDeviceName() = settings.m_audioDeviceName;
|
*response.getAmModSettings()->getAudioDeviceName() = settings.m_audioDeviceName;
|
||||||
} else {
|
} else {
|
||||||
|
@ -242,6 +242,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelReport& response,
|
SWGSDRangel::SWGChannelReport& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const AMModSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
AMModSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
double getMagSq() const { return m_magsq; }
|
double getMagSq() const { return m_magsq; }
|
||||||
|
|
||||||
CWKeyer *getCWKeyer() { return &m_cwKeyer; }
|
CWKeyer *getCWKeyer() { return &m_cwKeyer; }
|
||||||
@ -331,7 +340,6 @@ private:
|
|||||||
void modulateSample();
|
void modulateSample();
|
||||||
void openFileStream();
|
void openFileStream();
|
||||||
void seekFileStream(int seekPercentage);
|
void seekFileStream(int seekPercentage);
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const AMModSettings& settings);
|
|
||||||
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const AMModSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const AMModSettings& settings, bool force);
|
||||||
void webapiReverseSendCWSettings(const CWKeyerSettings& settings);
|
void webapiReverseSendCWSettings(const CWKeyerSettings& settings);
|
||||||
|
@ -812,7 +812,7 @@ void ATVMod::openImage(const QString& fileName)
|
|||||||
|
|
||||||
if (m_imageOK)
|
if (m_imageOK)
|
||||||
{
|
{
|
||||||
m_imageFileName = fileName;
|
m_settings.m_imageFileName = fileName;
|
||||||
m_imageFromFile.copyTo(m_imageOriginal);
|
m_imageFromFile.copyTo(m_imageOriginal);
|
||||||
|
|
||||||
if (m_settings.m_showOverlayText) {
|
if (m_settings.m_showOverlayText) {
|
||||||
@ -823,7 +823,7 @@ void ATVMod::openImage(const QString& fileName)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_imageFileName.clear();
|
m_settings.m_imageFileName.clear();
|
||||||
qDebug("ATVMod::openImage: cannot open image file %s", qPrintable(fileName));
|
qDebug("ATVMod::openImage: cannot open image file %s", qPrintable(fileName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -836,7 +836,7 @@ void ATVMod::openVideo(const QString& fileName)
|
|||||||
|
|
||||||
if (m_videoOK)
|
if (m_videoOK)
|
||||||
{
|
{
|
||||||
m_videoFileName = fileName;
|
m_settings.m_videoFileName = fileName;
|
||||||
m_videoFPS = m_video.get(CV_CAP_PROP_FPS);
|
m_videoFPS = m_video.get(CV_CAP_PROP_FPS);
|
||||||
m_videoWidth = (int) m_video.get(CV_CAP_PROP_FRAME_WIDTH);
|
m_videoWidth = (int) m_video.get(CV_CAP_PROP_FRAME_WIDTH);
|
||||||
m_videoHeight = (int) m_video.get(CV_CAP_PROP_FRAME_HEIGHT);
|
m_videoHeight = (int) m_video.get(CV_CAP_PROP_FRAME_HEIGHT);
|
||||||
@ -864,7 +864,7 @@ void ATVMod::openVideo(const QString& fileName)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_videoFileName.clear();
|
m_settings.m_videoFileName.clear();
|
||||||
qDebug("ATVMod::openVideo: cannot open video file %s", qPrintable(fileName));
|
qDebug("ATVMod::openVideo: cannot open video file %s", qPrintable(fileName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1469,15 +1469,15 @@ void ATVMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respon
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (response.getAtvModSettings()->getImageFileName()) {
|
if (response.getAtvModSettings()->getImageFileName()) {
|
||||||
*response.getAtvModSettings()->getImageFileName() = m_imageFileName;
|
*response.getAtvModSettings()->getImageFileName() = settings.m_imageFileName;
|
||||||
} else {
|
} else {
|
||||||
response.getAtvModSettings()->setImageFileName(new QString(m_imageFileName));
|
response.getAtvModSettings()->setImageFileName(new QString(settings.m_imageFileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (response.getAtvModSettings()->getVideoFileName()) {
|
if (response.getAtvModSettings()->getVideoFileName()) {
|
||||||
*response.getAtvModSettings()->getVideoFileName() = m_videoFileName;
|
*response.getAtvModSettings()->getVideoFileName() = settings.m_videoFileName;
|
||||||
} else {
|
} else {
|
||||||
response.getAtvModSettings()->setVideoFileName(new QString(m_videoFileName));
|
response.getAtvModSettings()->setVideoFileName(new QString(settings.m_videoFileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
response.getAtvModSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0);
|
response.getAtvModSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0);
|
||||||
|
@ -396,6 +396,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelReport& response,
|
SWGSDRangel::SWGChannelReport& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const ATVModSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
ATVModSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
int getEffectiveSampleRate() const { return m_tvSampleRate; };
|
int getEffectiveSampleRate() const { return m_tvSampleRate; };
|
||||||
double getMagSq() const { return m_movingAverage.asDouble(); }
|
double getMagSq() const { return m_movingAverage.asDouble(); }
|
||||||
void getCameraNumbers(std::vector<int>& numbers);
|
void getCameraNumbers(std::vector<int>& numbers);
|
||||||
@ -574,7 +583,6 @@ private:
|
|||||||
void resizeCamera();
|
void resizeCamera();
|
||||||
void mixImageAndText(cv::Mat& image);
|
void mixImageAndText(cv::Mat& image);
|
||||||
|
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const ATVModSettings& settings);
|
|
||||||
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const ATVModSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const ATVModSettings& settings, bool force);
|
||||||
|
|
||||||
|
@ -87,6 +87,8 @@ QByteArray ATVModSettings::serialize() const
|
|||||||
s.writeU32(19, m_reverseAPIPort);
|
s.writeU32(19, m_reverseAPIPort);
|
||||||
s.writeU32(20, m_reverseAPIDeviceIndex);
|
s.writeU32(20, m_reverseAPIDeviceIndex);
|
||||||
s.writeU32(21, m_reverseAPIChannelIndex);
|
s.writeU32(21, m_reverseAPIChannelIndex);
|
||||||
|
s.writeString(22, m_imageFileName);
|
||||||
|
s.writeString(23, m_videoFileName);
|
||||||
|
|
||||||
return s.final();
|
return s.final();
|
||||||
}
|
}
|
||||||
@ -150,6 +152,9 @@ bool ATVModSettings::deserialize(const QByteArray& data)
|
|||||||
m_reverseAPIDeviceIndex = utmp > 99 ? 99 : utmp;
|
m_reverseAPIDeviceIndex = utmp > 99 ? 99 : utmp;
|
||||||
d.readU32(21, &utmp, 0);
|
d.readU32(21, &utmp, 0);
|
||||||
m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp;
|
m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp;
|
||||||
|
d.readString(22, &m_imageFileName);
|
||||||
|
d.readString(23, &m_videoFileName);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -80,6 +80,8 @@ struct ATVModSettings
|
|||||||
QString m_overlayText;
|
QString m_overlayText;
|
||||||
quint32 m_rgbColor;
|
quint32 m_rgbColor;
|
||||||
QString m_title;
|
QString m_title;
|
||||||
|
QString m_imageFileName;
|
||||||
|
QString m_videoFileName;
|
||||||
bool m_useReverseAPI;
|
bool m_useReverseAPI;
|
||||||
QString m_reverseAPIAddress;
|
QString m_reverseAPIAddress;
|
||||||
uint16_t m_reverseAPIPort;
|
uint16_t m_reverseAPIPort;
|
||||||
|
@ -842,6 +842,11 @@ int FreeDVMod::webapiSettingsGet(
|
|||||||
response.setFreeDvModSettings(new SWGSDRangel::SWGFreeDVModSettings());
|
response.setFreeDvModSettings(new SWGSDRangel::SWGFreeDVModSettings());
|
||||||
response.getFreeDvModSettings()->init();
|
response.getFreeDvModSettings()->init();
|
||||||
webapiFormatChannelSettings(response, m_settings);
|
webapiFormatChannelSettings(response, m_settings);
|
||||||
|
|
||||||
|
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getFreeDvModSettings()->getCwKeyer();
|
||||||
|
const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings();
|
||||||
|
CWKeyer::webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings);
|
||||||
|
|
||||||
return 200;
|
return 200;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -853,12 +858,52 @@ int FreeDVMod::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
(void) errorMessage;
|
(void) errorMessage;
|
||||||
FreeDVModSettings settings = m_settings;
|
FreeDVModSettings settings = m_settings;
|
||||||
bool frequencyOffsetChanged = false;
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
if (channelSettingsKeys.contains("inputFrequencyOffset"))
|
if (channelSettingsKeys.contains("cwKeyer"))
|
||||||
{
|
{
|
||||||
|
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getFreeDvModSettings()->getCwKeyer();
|
||||||
|
CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings();
|
||||||
|
CWKeyer::webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings);
|
||||||
|
|
||||||
|
CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
||||||
|
m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer);
|
||||||
|
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
||||||
|
m_guiMessageQueue->push(msgCwKeyerToGUI);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_settings.m_inputFrequencyOffset != settings.m_inputFrequencyOffset)
|
||||||
|
{
|
||||||
|
FreeDVMod::MsgConfigureChannelizer *msgChan = FreeDVMod::MsgConfigureChannelizer::create(
|
||||||
|
m_audioSampleRate, settings.m_inputFrequencyOffset);
|
||||||
|
m_inputMessageQueue.push(msgChan);
|
||||||
|
}
|
||||||
|
|
||||||
|
MsgConfigureFreeDVMod *msg = MsgConfigureFreeDVMod::create(settings, force);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
MsgConfigureFreeDVMod *msgToGUI = MsgConfigureFreeDVMod::create(settings, force);
|
||||||
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
webapiFormatChannelSettings(response, settings);
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FreeDVMod::webapiUpdateChannelSettings(
|
||||||
|
FreeDVModSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response)
|
||||||
|
{
|
||||||
|
if (channelSettingsKeys.contains("inputFrequencyOffset")) {
|
||||||
settings.m_inputFrequencyOffset = response.getFreeDvModSettings()->getInputFrequencyOffset();
|
settings.m_inputFrequencyOffset = response.getFreeDvModSettings()->getInputFrequencyOffset();
|
||||||
frequencyOffsetChanged = true;
|
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("toneFrequency")) {
|
if (channelSettingsKeys.contains("toneFrequency")) {
|
||||||
settings.m_toneFrequency = response.getFreeDvModSettings()->getToneFrequency();
|
settings.m_toneFrequency = response.getFreeDvModSettings()->getToneFrequency();
|
||||||
@ -908,42 +953,6 @@ int FreeDVMod::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
||||||
settings.m_reverseAPIChannelIndex = response.getFreeDvModSettings()->getReverseApiChannelIndex();
|
settings.m_reverseAPIChannelIndex = response.getFreeDvModSettings()->getReverseApiChannelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (channelSettingsKeys.contains("cwKeyer"))
|
|
||||||
{
|
|
||||||
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getFreeDvModSettings()->getCwKeyer();
|
|
||||||
CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings();
|
|
||||||
m_cwKeyer.webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings);
|
|
||||||
|
|
||||||
CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
|
||||||
m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer);
|
|
||||||
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
|
||||||
m_guiMessageQueue->push(msgCwKeyerToGUI);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (frequencyOffsetChanged)
|
|
||||||
{
|
|
||||||
FreeDVMod::MsgConfigureChannelizer *msgChan = FreeDVMod::MsgConfigureChannelizer::create(
|
|
||||||
m_audioSampleRate, settings.m_inputFrequencyOffset);
|
|
||||||
m_inputMessageQueue.push(msgChan);
|
|
||||||
}
|
|
||||||
|
|
||||||
MsgConfigureFreeDVMod *msg = MsgConfigureFreeDVMod::create(settings, force);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
MsgConfigureFreeDVMod *msgToGUI = MsgConfigureFreeDVMod::create(settings, force);
|
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
|
||||||
}
|
|
||||||
|
|
||||||
webapiFormatChannelSettings(response, settings);
|
|
||||||
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int FreeDVMod::webapiReportGet(
|
int FreeDVMod::webapiReportGet(
|
||||||
@ -987,10 +996,6 @@ void FreeDVMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& res
|
|||||||
response.getFreeDvModSettings()->setCwKeyer(new SWGSDRangel::SWGCWKeyerSettings);
|
response.getFreeDvModSettings()->setCwKeyer(new SWGSDRangel::SWGCWKeyerSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getFreeDvModSettings()->getCwKeyer();
|
|
||||||
const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings();
|
|
||||||
m_cwKeyer.webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings);
|
|
||||||
|
|
||||||
response.getFreeDvModSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0);
|
response.getFreeDvModSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0);
|
||||||
|
|
||||||
if (response.getFreeDvModSettings()->getReverseApiAddress()) {
|
if (response.getFreeDvModSettings()->getReverseApiAddress()) {
|
||||||
|
@ -248,6 +248,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelReport& response,
|
SWGSDRangel::SWGChannelReport& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const FreeDVModSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
FreeDVModSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
uint32_t getAudioSampleRate() const { return m_audioSampleRate; }
|
uint32_t getAudioSampleRate() const { return m_audioSampleRate; }
|
||||||
uint32_t getModemSampleRate() const { return m_modemSampleRate; }
|
uint32_t getModemSampleRate() const { return m_modemSampleRate; }
|
||||||
double getMagSq() const { return m_magsq; }
|
double getMagSq() const { return m_magsq; }
|
||||||
@ -352,7 +361,6 @@ private:
|
|||||||
void modulateSample();
|
void modulateSample();
|
||||||
void openFileStream();
|
void openFileStream();
|
||||||
void seekFileStream(int seekPercentage);
|
void seekFileStream(int seekPercentage);
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const FreeDVModSettings& settings);
|
|
||||||
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const FreeDVModSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const FreeDVModSettings& settings, bool force);
|
||||||
void webapiReverseSendCWSettings(const CWKeyerSettings& settings);
|
void webapiReverseSendCWSettings(const CWKeyerSettings& settings);
|
||||||
|
@ -727,6 +727,11 @@ int NFMMod::webapiSettingsGet(
|
|||||||
response.setNfmModSettings(new SWGSDRangel::SWGNFMModSettings());
|
response.setNfmModSettings(new SWGSDRangel::SWGNFMModSettings());
|
||||||
response.getNfmModSettings()->init();
|
response.getNfmModSettings()->init();
|
||||||
webapiFormatChannelSettings(response, m_settings);
|
webapiFormatChannelSettings(response, m_settings);
|
||||||
|
|
||||||
|
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getNfmModSettings()->getCwKeyer();
|
||||||
|
const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings();
|
||||||
|
CWKeyer::webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings);
|
||||||
|
|
||||||
return 200;
|
return 200;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -738,12 +743,50 @@ int NFMMod::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
(void) errorMessage;
|
(void) errorMessage;
|
||||||
NFMModSettings settings = m_settings;
|
NFMModSettings settings = m_settings;
|
||||||
bool frequencyOffsetChanged = false;
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
// for (int i = 0; i < channelSettingsKeys.size(); i++) {
|
if (channelSettingsKeys.contains("cwKeyer"))
|
||||||
// qDebug("NFMMod::webapiSettingsPutPatch: settingKey: %s", qPrintable(channelSettingsKeys.at(i)));
|
{
|
||||||
// }
|
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getNfmModSettings()->getCwKeyer();
|
||||||
|
CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings();
|
||||||
|
CWKeyer::webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings);
|
||||||
|
|
||||||
|
CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
||||||
|
m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer);
|
||||||
|
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
||||||
|
m_guiMessageQueue->push(msgCwKeyerToGUI);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_settings.m_inputFrequencyOffset != settings.m_inputFrequencyOffset)
|
||||||
|
{
|
||||||
|
NFMMod::MsgConfigureChannelizer *msgChan = NFMMod::MsgConfigureChannelizer::create(
|
||||||
|
m_audioSampleRate, settings.m_inputFrequencyOffset);
|
||||||
|
m_inputMessageQueue.push(msgChan);
|
||||||
|
}
|
||||||
|
|
||||||
|
MsgConfigureNFMMod *msg = MsgConfigureNFMMod::create(settings, force);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
MsgConfigureNFMMod *msgToGUI = MsgConfigureNFMMod::create(settings, force);
|
||||||
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
webapiFormatChannelSettings(response, settings);
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NFMMod::webapiUpdateChannelSettings(
|
||||||
|
NFMModSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response)
|
||||||
|
{
|
||||||
if (channelSettingsKeys.contains("afBandwidth")) {
|
if (channelSettingsKeys.contains("afBandwidth")) {
|
||||||
settings.m_afBandwidth = response.getNfmModSettings()->getAfBandwidth();
|
settings.m_afBandwidth = response.getNfmModSettings()->getAfBandwidth();
|
||||||
}
|
}
|
||||||
@ -759,10 +802,8 @@ int NFMMod::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("fmDeviation")) {
|
if (channelSettingsKeys.contains("fmDeviation")) {
|
||||||
settings.m_fmDeviation = response.getNfmModSettings()->getFmDeviation();
|
settings.m_fmDeviation = response.getNfmModSettings()->getFmDeviation();
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("inputFrequencyOffset"))
|
if (channelSettingsKeys.contains("inputFrequencyOffset")) {
|
||||||
{
|
|
||||||
settings.m_inputFrequencyOffset = response.getNfmModSettings()->getInputFrequencyOffset();
|
settings.m_inputFrequencyOffset = response.getNfmModSettings()->getInputFrequencyOffset();
|
||||||
frequencyOffsetChanged = true;
|
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("modAFInput")) {
|
if (channelSettingsKeys.contains("modAFInput")) {
|
||||||
settings.m_modAFInput = (NFMModSettings::NFMModInputAF) response.getNfmModSettings()->getModAfInput();
|
settings.m_modAFInput = (NFMModSettings::NFMModInputAF) response.getNfmModSettings()->getModAfInput();
|
||||||
@ -800,42 +841,6 @@ int NFMMod::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
||||||
settings.m_reverseAPIChannelIndex = response.getNfmModSettings()->getReverseApiChannelIndex();
|
settings.m_reverseAPIChannelIndex = response.getNfmModSettings()->getReverseApiChannelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (channelSettingsKeys.contains("cwKeyer"))
|
|
||||||
{
|
|
||||||
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getNfmModSettings()->getCwKeyer();
|
|
||||||
CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings();
|
|
||||||
m_cwKeyer.webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings);
|
|
||||||
|
|
||||||
CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
|
||||||
m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer);
|
|
||||||
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
|
||||||
m_guiMessageQueue->push(msgCwKeyerToGUI);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (frequencyOffsetChanged)
|
|
||||||
{
|
|
||||||
NFMMod::MsgConfigureChannelizer *msgChan = NFMMod::MsgConfigureChannelizer::create(
|
|
||||||
m_audioSampleRate, settings.m_inputFrequencyOffset);
|
|
||||||
m_inputMessageQueue.push(msgChan);
|
|
||||||
}
|
|
||||||
|
|
||||||
MsgConfigureNFMMod *msg = MsgConfigureNFMMod::create(settings, force);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
MsgConfigureNFMMod *msgToGUI = MsgConfigureNFMMod::create(settings, force);
|
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
|
||||||
}
|
|
||||||
|
|
||||||
webapiFormatChannelSettings(response, settings);
|
|
||||||
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int NFMMod::webapiReportGet(
|
int NFMMod::webapiReportGet(
|
||||||
@ -875,18 +880,12 @@ void NFMMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respon
|
|||||||
response.getNfmModSettings()->setCwKeyer(new SWGSDRangel::SWGCWKeyerSettings);
|
response.getNfmModSettings()->setCwKeyer(new SWGSDRangel::SWGCWKeyerSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getNfmModSettings()->getCwKeyer();
|
|
||||||
const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings();
|
|
||||||
m_cwKeyer.webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings);
|
|
||||||
|
|
||||||
if (response.getNfmModSettings()->getAudioDeviceName()) {
|
if (response.getNfmModSettings()->getAudioDeviceName()) {
|
||||||
*response.getNfmModSettings()->getAudioDeviceName() = settings.m_audioDeviceName;
|
*response.getNfmModSettings()->getAudioDeviceName() = settings.m_audioDeviceName;
|
||||||
} else {
|
} else {
|
||||||
response.getNfmModSettings()->setAudioDeviceName(new QString(settings.m_audioDeviceName));
|
response.getNfmModSettings()->setAudioDeviceName(new QString(settings.m_audioDeviceName));
|
||||||
}
|
}
|
||||||
|
|
||||||
apiCwKeyerSettings->setWpm(cwKeyerSettings.m_wpm);
|
|
||||||
|
|
||||||
response.getNfmModSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0);
|
response.getNfmModSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0);
|
||||||
|
|
||||||
if (response.getNfmModSettings()->getReverseApiAddress()) {
|
if (response.getNfmModSettings()->getReverseApiAddress()) {
|
||||||
|
@ -244,6 +244,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelReport& response,
|
SWGSDRangel::SWGChannelReport& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const NFMModSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
NFMModSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
double getMagSq() const { return m_magsq; }
|
double getMagSq() const { return m_magsq; }
|
||||||
|
|
||||||
CWKeyer *getCWKeyer() { return &m_cwKeyer; }
|
CWKeyer *getCWKeyer() { return &m_cwKeyer; }
|
||||||
@ -339,7 +348,6 @@ private:
|
|||||||
void modulateSample();
|
void modulateSample();
|
||||||
void openFileStream();
|
void openFileStream();
|
||||||
void seekFileStream(int seekPercentage);
|
void seekFileStream(int seekPercentage);
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const NFMModSettings& settings);
|
|
||||||
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const NFMModSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const NFMModSettings& settings, bool force);
|
||||||
void webapiReverseSendCWSettings(const CWKeyerSettings& settings);
|
void webapiReverseSendCWSettings(const CWKeyerSettings& settings);
|
||||||
|
@ -1015,6 +1015,11 @@ int SSBMod::webapiSettingsGet(
|
|||||||
response.setSsbModSettings(new SWGSDRangel::SWGSSBModSettings());
|
response.setSsbModSettings(new SWGSDRangel::SWGSSBModSettings());
|
||||||
response.getSsbModSettings()->init();
|
response.getSsbModSettings()->init();
|
||||||
webapiFormatChannelSettings(response, m_settings);
|
webapiFormatChannelSettings(response, m_settings);
|
||||||
|
|
||||||
|
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getSsbModSettings()->getCwKeyer();
|
||||||
|
const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings();
|
||||||
|
CWKeyer::webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings);
|
||||||
|
|
||||||
return 200;
|
return 200;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1026,12 +1031,52 @@ int SSBMod::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
(void) errorMessage;
|
(void) errorMessage;
|
||||||
SSBModSettings settings = m_settings;
|
SSBModSettings settings = m_settings;
|
||||||
bool frequencyOffsetChanged = false;
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
if (channelSettingsKeys.contains("inputFrequencyOffset"))
|
if (channelSettingsKeys.contains("cwKeyer"))
|
||||||
{
|
{
|
||||||
|
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getSsbModSettings()->getCwKeyer();
|
||||||
|
CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings();
|
||||||
|
CWKeyer::webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings);
|
||||||
|
|
||||||
|
CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
||||||
|
m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer);
|
||||||
|
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
||||||
|
m_guiMessageQueue->push(msgCwKeyerToGUI);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_settings.m_inputFrequencyOffset != settings.m_inputFrequencyOffset)
|
||||||
|
{
|
||||||
|
SSBMod::MsgConfigureChannelizer *msgChan = SSBMod::MsgConfigureChannelizer::create(
|
||||||
|
m_audioSampleRate, settings.m_inputFrequencyOffset);
|
||||||
|
m_inputMessageQueue.push(msgChan);
|
||||||
|
}
|
||||||
|
|
||||||
|
MsgConfigureSSBMod *msg = MsgConfigureSSBMod::create(settings, force);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
MsgConfigureSSBMod *msgToGUI = MsgConfigureSSBMod::create(settings, force);
|
||||||
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
webapiFormatChannelSettings(response, settings);
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SSBMod::webapiUpdateChannelSettings(
|
||||||
|
SSBModSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response)
|
||||||
|
{
|
||||||
|
if (channelSettingsKeys.contains("inputFrequencyOffset")) {
|
||||||
settings.m_inputFrequencyOffset = response.getSsbModSettings()->getInputFrequencyOffset();
|
settings.m_inputFrequencyOffset = response.getSsbModSettings()->getInputFrequencyOffset();
|
||||||
frequencyOffsetChanged = true;
|
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("bandwidth")) {
|
if (channelSettingsKeys.contains("bandwidth")) {
|
||||||
settings.m_bandwidth = response.getSsbModSettings()->getBandwidth();
|
settings.m_bandwidth = response.getSsbModSettings()->getBandwidth();
|
||||||
@ -1096,42 +1141,6 @@ int SSBMod::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
||||||
settings.m_reverseAPIChannelIndex = response.getSsbModSettings()->getReverseApiChannelIndex();
|
settings.m_reverseAPIChannelIndex = response.getSsbModSettings()->getReverseApiChannelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (channelSettingsKeys.contains("cwKeyer"))
|
|
||||||
{
|
|
||||||
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getSsbModSettings()->getCwKeyer();
|
|
||||||
CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings();
|
|
||||||
m_cwKeyer.webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings);
|
|
||||||
|
|
||||||
CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
|
||||||
m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer);
|
|
||||||
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
|
||||||
m_guiMessageQueue->push(msgCwKeyerToGUI);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (frequencyOffsetChanged)
|
|
||||||
{
|
|
||||||
SSBMod::MsgConfigureChannelizer *msgChan = SSBMod::MsgConfigureChannelizer::create(
|
|
||||||
m_audioSampleRate, settings.m_inputFrequencyOffset);
|
|
||||||
m_inputMessageQueue.push(msgChan);
|
|
||||||
}
|
|
||||||
|
|
||||||
MsgConfigureSSBMod *msg = MsgConfigureSSBMod::create(settings, force);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
MsgConfigureSSBMod *msgToGUI = MsgConfigureSSBMod::create(settings, force);
|
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
|
||||||
}
|
|
||||||
|
|
||||||
webapiFormatChannelSettings(response, settings);
|
|
||||||
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int SSBMod::webapiReportGet(
|
int SSBMod::webapiReportGet(
|
||||||
@ -1180,10 +1189,6 @@ void SSBMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respon
|
|||||||
response.getSsbModSettings()->setCwKeyer(new SWGSDRangel::SWGCWKeyerSettings);
|
response.getSsbModSettings()->setCwKeyer(new SWGSDRangel::SWGCWKeyerSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getSsbModSettings()->getCwKeyer();
|
|
||||||
const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings();
|
|
||||||
m_cwKeyer.webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings);
|
|
||||||
|
|
||||||
response.getSsbModSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0);
|
response.getSsbModSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0);
|
||||||
|
|
||||||
if (response.getSsbModSettings()->getReverseApiAddress()) {
|
if (response.getSsbModSettings()->getReverseApiAddress()) {
|
||||||
|
@ -246,6 +246,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelReport& response,
|
SWGSDRangel::SWGChannelReport& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const SSBModSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
SSBModSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
uint32_t getAudioSampleRate() const { return m_audioSampleRate; }
|
uint32_t getAudioSampleRate() const { return m_audioSampleRate; }
|
||||||
double getMagSq() const { return m_magsq; }
|
double getMagSq() const { return m_magsq; }
|
||||||
|
|
||||||
@ -353,7 +362,6 @@ private:
|
|||||||
void modulateSample();
|
void modulateSample();
|
||||||
void openFileStream();
|
void openFileStream();
|
||||||
void seekFileStream(int seekPercentage);
|
void seekFileStream(int seekPercentage);
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const SSBModSettings& settings);
|
|
||||||
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const SSBModSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const SSBModSettings& settings, bool force);
|
||||||
void webapiReverseSendCWSettings(const CWKeyerSettings& settings);
|
void webapiReverseSendCWSettings(const CWKeyerSettings& settings);
|
||||||
|
@ -608,6 +608,11 @@ int WFMMod::webapiSettingsGet(
|
|||||||
response.setWfmModSettings(new SWGSDRangel::SWGWFMModSettings());
|
response.setWfmModSettings(new SWGSDRangel::SWGWFMModSettings());
|
||||||
response.getWfmModSettings()->init();
|
response.getWfmModSettings()->init();
|
||||||
webapiFormatChannelSettings(response, m_settings);
|
webapiFormatChannelSettings(response, m_settings);
|
||||||
|
|
||||||
|
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getWfmModSettings()->getCwKeyer();
|
||||||
|
const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings();
|
||||||
|
CWKeyer::webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings);
|
||||||
|
|
||||||
return 200;
|
return 200;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -619,15 +624,56 @@ int WFMMod::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
(void) errorMessage;
|
(void) errorMessage;
|
||||||
WFMModSettings settings = m_settings;
|
WFMModSettings settings = m_settings;
|
||||||
bool channelizerChange = false;
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
|
if (channelSettingsKeys.contains("cwKeyer"))
|
||||||
|
{
|
||||||
|
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getWfmModSettings()->getCwKeyer();
|
||||||
|
CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings();
|
||||||
|
CWKeyer::webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings);
|
||||||
|
|
||||||
|
CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
||||||
|
m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer);
|
||||||
|
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
||||||
|
m_guiMessageQueue->push(msgCwKeyerToGUI);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((m_settings.m_inputFrequencyOffset != settings.m_inputFrequencyOffset)
|
||||||
|
||(m_settings.m_rfBandwidth != settings.m_rfBandwidth))
|
||||||
|
{
|
||||||
|
WFMMod::MsgConfigureChannelizer *msgChan = WFMMod::MsgConfigureChannelizer::create(
|
||||||
|
settings.m_rfBandwidth, settings.m_inputFrequencyOffset);
|
||||||
|
m_inputMessageQueue.push(msgChan);
|
||||||
|
}
|
||||||
|
|
||||||
|
MsgConfigureWFMMod *msg = MsgConfigureWFMMod::create(settings, force);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
MsgConfigureWFMMod *msgToGUI = MsgConfigureWFMMod::create(settings, force);
|
||||||
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
webapiFormatChannelSettings(response, settings);
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WFMMod::webapiUpdateChannelSettings(
|
||||||
|
WFMModSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response)
|
||||||
|
{
|
||||||
if (channelSettingsKeys.contains("channelMute")) {
|
if (channelSettingsKeys.contains("channelMute")) {
|
||||||
settings.m_channelMute = response.getWfmModSettings()->getChannelMute() != 0;
|
settings.m_channelMute = response.getWfmModSettings()->getChannelMute() != 0;
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("inputFrequencyOffset"))
|
if (channelSettingsKeys.contains("inputFrequencyOffset")) {
|
||||||
{
|
|
||||||
settings.m_inputFrequencyOffset = response.getWfmModSettings()->getInputFrequencyOffset();
|
settings.m_inputFrequencyOffset = response.getWfmModSettings()->getInputFrequencyOffset();
|
||||||
channelizerChange = true;
|
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("modAFInput")) {
|
if (channelSettingsKeys.contains("modAFInput")) {
|
||||||
settings.m_modAFInput = (WFMModSettings::WFMModInputAF) response.getWfmModSettings()->getModAfInput();
|
settings.m_modAFInput = (WFMModSettings::WFMModInputAF) response.getWfmModSettings()->getModAfInput();
|
||||||
@ -637,7 +683,6 @@ int WFMMod::webapiSettingsPutPatch(
|
|||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("rfBandwidth")) {
|
if (channelSettingsKeys.contains("rfBandwidth")) {
|
||||||
settings.m_rfBandwidth = response.getWfmModSettings()->getRfBandwidth();
|
settings.m_rfBandwidth = response.getWfmModSettings()->getRfBandwidth();
|
||||||
channelizerChange = true;
|
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("afBandwidth")) {
|
if (channelSettingsKeys.contains("afBandwidth")) {
|
||||||
settings.m_afBandwidth = response.getWfmModSettings()->getAfBandwidth();
|
settings.m_afBandwidth = response.getWfmModSettings()->getAfBandwidth();
|
||||||
@ -672,42 +717,6 @@ int WFMMod::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
||||||
settings.m_reverseAPIChannelIndex = response.getWfmModSettings()->getReverseApiChannelIndex();
|
settings.m_reverseAPIChannelIndex = response.getWfmModSettings()->getReverseApiChannelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (channelSettingsKeys.contains("cwKeyer"))
|
|
||||||
{
|
|
||||||
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getWfmModSettings()->getCwKeyer();
|
|
||||||
CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings();
|
|
||||||
m_cwKeyer.webapiSettingsPutPatch(channelSettingsKeys, cwKeyerSettings, apiCwKeyerSettings);
|
|
||||||
|
|
||||||
CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
|
||||||
m_cwKeyer.getInputMessageQueue()->push(msgCwKeyer);
|
|
||||||
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
CWKeyer::MsgConfigureCWKeyer *msgCwKeyerToGUI = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
|
||||||
m_guiMessageQueue->push(msgCwKeyerToGUI);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (channelizerChange)
|
|
||||||
{
|
|
||||||
WFMMod::MsgConfigureChannelizer *msgChan = WFMMod::MsgConfigureChannelizer::create(
|
|
||||||
settings.m_rfBandwidth, settings.m_inputFrequencyOffset);
|
|
||||||
m_inputMessageQueue.push(msgChan);
|
|
||||||
}
|
|
||||||
|
|
||||||
MsgConfigureWFMMod *msg = MsgConfigureWFMMod::create(settings, force);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
MsgConfigureWFMMod *msgToGUI = MsgConfigureWFMMod::create(settings, force);
|
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
|
||||||
}
|
|
||||||
|
|
||||||
webapiFormatChannelSettings(response, settings);
|
|
||||||
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int WFMMod::webapiReportGet(
|
int WFMMod::webapiReportGet(
|
||||||
@ -745,10 +754,6 @@ void WFMMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respon
|
|||||||
response.getWfmModSettings()->setCwKeyer(new SWGSDRangel::SWGCWKeyerSettings);
|
response.getWfmModSettings()->setCwKeyer(new SWGSDRangel::SWGCWKeyerSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getWfmModSettings()->getCwKeyer();
|
|
||||||
const CWKeyerSettings& cwKeyerSettings = m_cwKeyer.getSettings();
|
|
||||||
m_cwKeyer.webapiFormatChannelSettings(apiCwKeyerSettings, cwKeyerSettings);
|
|
||||||
|
|
||||||
if (response.getWfmModSettings()->getAudioDeviceName()) {
|
if (response.getWfmModSettings()->getAudioDeviceName()) {
|
||||||
*response.getWfmModSettings()->getAudioDeviceName() = settings.m_audioDeviceName;
|
*response.getWfmModSettings()->getAudioDeviceName() = settings.m_audioDeviceName;
|
||||||
} else {
|
} else {
|
||||||
|
@ -243,6 +243,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelReport& response,
|
SWGSDRangel::SWGChannelReport& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const WFMModSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
WFMModSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
double getMagSq() const { return m_magsq; }
|
double getMagSq() const { return m_magsq; }
|
||||||
|
|
||||||
CWKeyer *getCWKeyer() { return &m_cwKeyer; }
|
CWKeyer *getCWKeyer() { return &m_cwKeyer; }
|
||||||
@ -323,7 +332,6 @@ private:
|
|||||||
void calculateLevel(const Real& sample);
|
void calculateLevel(const Real& sample);
|
||||||
void openFileStream();
|
void openFileStream();
|
||||||
void seekFileStream(int seekPercentage);
|
void seekFileStream(int seekPercentage);
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const WFMModSettings& settings);
|
|
||||||
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const WFMModSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const WFMModSettings& settings, bool force);
|
||||||
void webapiReverseSendCWSettings(const CWKeyerSettings& settings);
|
void webapiReverseSendCWSettings(const CWKeyerSettings& settings);
|
||||||
|
@ -404,7 +404,28 @@ int RemoteSource::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
(void) errorMessage;
|
(void) errorMessage;
|
||||||
RemoteSourceSettings settings = m_settings;
|
RemoteSourceSettings settings = m_settings;
|
||||||
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
|
MsgConfigureRemoteSource *msg = MsgConfigureRemoteSource::create(settings, force);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
|
qDebug("RemoteSource::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
MsgConfigureRemoteSource *msgToGUI = MsgConfigureRemoteSource::create(settings, force);
|
||||||
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
webapiFormatChannelSettings(response, settings);
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemoteSource::webapiUpdateChannelSettings(
|
||||||
|
RemoteSourceSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response)
|
||||||
|
{
|
||||||
if (channelSettingsKeys.contains("dataAddress")) {
|
if (channelSettingsKeys.contains("dataAddress")) {
|
||||||
settings.m_dataAddress = *response.getRemoteSourceSettings()->getDataAddress();
|
settings.m_dataAddress = *response.getRemoteSourceSettings()->getDataAddress();
|
||||||
}
|
}
|
||||||
@ -439,20 +460,6 @@ int RemoteSource::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
||||||
settings.m_reverseAPIChannelIndex = response.getRemoteSourceSettings()->getReverseApiChannelIndex();
|
settings.m_reverseAPIChannelIndex = response.getRemoteSourceSettings()->getReverseApiChannelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
MsgConfigureRemoteSource *msg = MsgConfigureRemoteSource::create(settings, force);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
|
|
||||||
qDebug("RemoteSource::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue);
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
MsgConfigureRemoteSource *msgToGUI = MsgConfigureRemoteSource::create(settings, force);
|
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
|
||||||
}
|
|
||||||
|
|
||||||
webapiFormatChannelSettings(response, settings);
|
|
||||||
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int RemoteSource::webapiReportGet(
|
int RemoteSource::webapiReportGet(
|
||||||
|
@ -223,6 +223,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelReport& response,
|
SWGSDRangel::SWGChannelReport& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const RemoteSourceSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
RemoteSourceSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
void setDataLink(const QString& dataAddress, uint16_t dataPort);
|
void setDataLink(const QString& dataAddress, uint16_t dataPort);
|
||||||
|
|
||||||
static const QString m_channelIdURI;
|
static const QString m_channelIdURI;
|
||||||
@ -255,7 +264,6 @@ private:
|
|||||||
void handleDataBlock(RemoteDataBlock *dataBlock);
|
void handleDataBlock(RemoteDataBlock *dataBlock);
|
||||||
void printMeta(const QString& header, RemoteMetaDataFEC *metaData);
|
void printMeta(const QString& header, RemoteMetaDataFEC *metaData);
|
||||||
uint32_t calculateDataReadQueueSize(int sampleRate);
|
uint32_t calculateDataReadQueueSize(int sampleRate);
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const RemoteSourceSettings& settings);
|
|
||||||
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const RemoteSourceSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const RemoteSourceSettings& settings, bool force);
|
||||||
|
|
||||||
|
@ -690,18 +690,43 @@ int UDPSource::webapiSettingsPutPatch(
|
|||||||
{
|
{
|
||||||
(void) errorMessage;
|
(void) errorMessage;
|
||||||
UDPSourceSettings settings = m_settings;
|
UDPSourceSettings settings = m_settings;
|
||||||
bool frequencyOffsetChanged = false;
|
webapiUpdateChannelSettings(settings, channelSettingsKeys, response);
|
||||||
|
|
||||||
|
if (m_settings.m_inputFrequencyOffset != settings.m_inputFrequencyOffset)
|
||||||
|
{
|
||||||
|
UDPSource::MsgConfigureChannelizer *msgChan = UDPSource::MsgConfigureChannelizer::create(
|
||||||
|
settings.m_inputSampleRate,
|
||||||
|
settings.m_inputFrequencyOffset);
|
||||||
|
m_inputMessageQueue.push(msgChan);
|
||||||
|
}
|
||||||
|
|
||||||
|
MsgConfigureUDPSource *msg = MsgConfigureUDPSource::create(settings, force);
|
||||||
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
MsgConfigureUDPSource *msgToGUI = MsgConfigureUDPSource::create(settings, force);
|
||||||
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
webapiFormatChannelSettings(response, settings);
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDPSource::webapiUpdateChannelSettings(
|
||||||
|
UDPSourceSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response)
|
||||||
|
{
|
||||||
if (channelSettingsKeys.contains("sampleFormat")) {
|
if (channelSettingsKeys.contains("sampleFormat")) {
|
||||||
settings.m_sampleFormat = (UDPSourceSettings::SampleFormat) response.getUdpSourceSettings()->getSampleFormat();
|
settings.m_sampleFormat = (UDPSourceSettings::SampleFormat) response.getUdpSourceSettings()->getSampleFormat();
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("inputSampleRate")) {
|
if (channelSettingsKeys.contains("inputSampleRate")) {
|
||||||
settings.m_inputSampleRate = response.getUdpSourceSettings()->getInputSampleRate();
|
settings.m_inputSampleRate = response.getUdpSourceSettings()->getInputSampleRate();
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("inputFrequencyOffset"))
|
if (channelSettingsKeys.contains("inputFrequencyOffset")) {
|
||||||
{
|
|
||||||
settings.m_inputFrequencyOffset = response.getUdpSourceSettings()->getInputFrequencyOffset();
|
settings.m_inputFrequencyOffset = response.getUdpSourceSettings()->getInputFrequencyOffset();
|
||||||
frequencyOffsetChanged = true;
|
|
||||||
}
|
}
|
||||||
if (channelSettingsKeys.contains("rfBandwidth")) {
|
if (channelSettingsKeys.contains("rfBandwidth")) {
|
||||||
settings.m_rfBandwidth = response.getUdpSourceSettings()->getRfBandwidth();
|
settings.m_rfBandwidth = response.getUdpSourceSettings()->getRfBandwidth();
|
||||||
@ -766,27 +791,6 @@ int UDPSource::webapiSettingsPutPatch(
|
|||||||
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
if (channelSettingsKeys.contains("reverseAPIChannelIndex")) {
|
||||||
settings.m_reverseAPIChannelIndex = response.getUdpSourceSettings()->getReverseApiChannelIndex();
|
settings.m_reverseAPIChannelIndex = response.getUdpSourceSettings()->getReverseApiChannelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (frequencyOffsetChanged)
|
|
||||||
{
|
|
||||||
UDPSource::MsgConfigureChannelizer *msgChan = UDPSource::MsgConfigureChannelizer::create(
|
|
||||||
settings.m_inputSampleRate,
|
|
||||||
settings.m_inputFrequencyOffset);
|
|
||||||
m_inputMessageQueue.push(msgChan);
|
|
||||||
}
|
|
||||||
|
|
||||||
MsgConfigureUDPSource *msg = MsgConfigureUDPSource::create(settings, force);
|
|
||||||
m_inputMessageQueue.push(msg);
|
|
||||||
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
|
||||||
{
|
|
||||||
MsgConfigureUDPSource *msgToGUI = MsgConfigureUDPSource::create(settings, force);
|
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
|
||||||
}
|
|
||||||
|
|
||||||
webapiFormatChannelSettings(response, settings);
|
|
||||||
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int UDPSource::webapiReportGet(
|
int UDPSource::webapiReportGet(
|
||||||
|
@ -132,6 +132,15 @@ public:
|
|||||||
SWGSDRangel::SWGChannelReport& response,
|
SWGSDRangel::SWGChannelReport& response,
|
||||||
QString& errorMessage);
|
QString& errorMessage);
|
||||||
|
|
||||||
|
static void webapiFormatChannelSettings(
|
||||||
|
SWGSDRangel::SWGChannelSettings& response,
|
||||||
|
const UDPSourceSettings& settings);
|
||||||
|
|
||||||
|
static void webapiUpdateChannelSettings(
|
||||||
|
UDPSourceSettings& settings,
|
||||||
|
const QStringList& channelSettingsKeys,
|
||||||
|
SWGSDRangel::SWGChannelSettings& response);
|
||||||
|
|
||||||
double getMagSq() const { return m_magsq; }
|
double getMagSq() const { return m_magsq; }
|
||||||
double getInMagSq() const { return m_inMagsq; }
|
double getInMagSq() const { return m_inMagsq; }
|
||||||
int32_t getBufferGauge() const { return m_udpHandler.getBufferGauge(); }
|
int32_t getBufferGauge() const { return m_udpHandler.getBufferGauge(); }
|
||||||
@ -257,7 +266,6 @@ private:
|
|||||||
void calculateLevel(Real sample);
|
void calculateLevel(Real sample);
|
||||||
void calculateLevel(Complex sample);
|
void calculateLevel(Complex sample);
|
||||||
|
|
||||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const UDPSourceSettings& settings);
|
|
||||||
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
||||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const UDPSourceSettings& settings, bool force);
|
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const UDPSourceSettings& settings, bool force);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user