mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-09-06 07:07:48 -04:00
Web API: NFM modulator settings parameters optional
This commit is contained in:
parent
d08917897c
commit
7577e6f145
@ -537,42 +537,99 @@ int NFMMod::webapiSettingsPutPatch(
|
|||||||
QString& errorMessage __attribute__((unused)))
|
QString& errorMessage __attribute__((unused)))
|
||||||
{
|
{
|
||||||
NFMModSettings settings;
|
NFMModSettings settings;
|
||||||
settings.m_afBandwidth = response.getNfmModSettings()->getAfBandwidth();
|
|
||||||
settings.m_audioSampleRate = response.getNfmModSettings()->getAudioSampleRate();
|
// for (int i = 0; i < channelSettingsKeys.size(); i++) {
|
||||||
settings.m_basebandSampleRate = response.getNfmModSettings()->getBasebandSampleRate();
|
// qDebug("NFMMod::webapiSettingsPutPatch: settingKey: %s", qPrintable(channelSettingsKeys.at(i)));
|
||||||
settings.m_channelMute = response.getNfmModSettings()->getChannelMute() != 0;
|
// }
|
||||||
settings.m_ctcssIndex = response.getNfmModSettings()->getCtcssIndex();
|
|
||||||
settings.m_ctcssOn = response.getNfmModSettings()->getCtcssOn() != 0;
|
if (channelSettingsKeys.contains("afBandwidth")) {
|
||||||
settings.m_fmDeviation = response.getNfmModSettings()->getFmDeviation();
|
settings.m_afBandwidth = response.getNfmModSettings()->getAfBandwidth();
|
||||||
settings.m_inputFrequencyOffset = response.getNfmModSettings()->getInputFrequencyOffset();
|
}
|
||||||
settings.m_modAFInput = (NFMModSettings::NFMModInputAF) response.getNfmModSettings()->getModAfInput();
|
if (channelSettingsKeys.contains("audioSampleRate")) {
|
||||||
settings.m_outputSampleRate = response.getNfmModSettings()->getOutputSampleRate();
|
settings.m_audioSampleRate = response.getNfmModSettings()->getAudioSampleRate();
|
||||||
settings.m_playLoop = response.getNfmModSettings()->getPlayLoop() != 0;
|
}
|
||||||
settings.m_rfBandwidth = response.getNfmModSettings()->getRfBandwidth();
|
if (channelSettingsKeys.contains("basebandSampleRate")) {
|
||||||
settings.m_rgbColor = response.getNfmModSettings()->getRgbColor();
|
settings.m_basebandSampleRate = response.getNfmModSettings()->getBasebandSampleRate();
|
||||||
settings.m_title = *response.getNfmModSettings()->getTitle();
|
}
|
||||||
settings.m_toneFrequency = response.getNfmModSettings()->getToneFrequency();
|
if (channelSettingsKeys.contains("channelMute")) {
|
||||||
settings.m_volumeFactor = response.getNfmModSettings()->getVolumeFactor();
|
settings.m_channelMute = response.getNfmModSettings()->getChannelMute() != 0;
|
||||||
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getNfmModSettings()->getCwKeyer();
|
}
|
||||||
CWKeyerSettings cwKeyerSettings;
|
if (channelSettingsKeys.contains("ctcssIndex")) {
|
||||||
cwKeyerSettings.m_loop = apiCwKeyerSettings->getLoop() != 0;
|
settings.m_ctcssIndex = response.getNfmModSettings()->getCtcssIndex();
|
||||||
cwKeyerSettings.m_mode = (CWKeyerSettings::CWMode) apiCwKeyerSettings->getMode();
|
}
|
||||||
cwKeyerSettings.m_sampleRate = apiCwKeyerSettings->getSampleRate();
|
if (channelSettingsKeys.contains("ctcssOn")) {
|
||||||
cwKeyerSettings.m_text = *apiCwKeyerSettings->getText();
|
settings.m_ctcssOn = response.getNfmModSettings()->getCtcssOn() != 0;
|
||||||
cwKeyerSettings.m_wpm = apiCwKeyerSettings->getWpm();
|
}
|
||||||
m_cwKeyer.setLoop(cwKeyerSettings.m_loop);
|
if (channelSettingsKeys.contains("fmDeviation")) {
|
||||||
m_cwKeyer.setMode(cwKeyerSettings.m_mode);
|
settings.m_fmDeviation = response.getNfmModSettings()->getFmDeviation();
|
||||||
m_cwKeyer.setSampleRate(cwKeyerSettings.m_sampleRate);
|
}
|
||||||
m_cwKeyer.setText(cwKeyerSettings.m_text);
|
if (channelSettingsKeys.contains("inputFrequencyOffset")) {
|
||||||
m_cwKeyer.setWPM(cwKeyerSettings.m_wpm);
|
settings.m_inputFrequencyOffset = response.getNfmModSettings()->getInputFrequencyOffset();
|
||||||
|
}
|
||||||
|
if (channelSettingsKeys.contains("modAFInput")) {
|
||||||
|
settings.m_modAFInput = (NFMModSettings::NFMModInputAF) response.getNfmModSettings()->getModAfInput();
|
||||||
|
}
|
||||||
|
if (channelSettingsKeys.contains("outputSampleRate")) {
|
||||||
|
settings.m_outputSampleRate = response.getNfmModSettings()->getOutputSampleRate();
|
||||||
|
}
|
||||||
|
if (channelSettingsKeys.contains("playLoop")) {
|
||||||
|
settings.m_playLoop = response.getNfmModSettings()->getPlayLoop() != 0;
|
||||||
|
}
|
||||||
|
if (channelSettingsKeys.contains("rfBandwidth")) {
|
||||||
|
settings.m_rfBandwidth = response.getNfmModSettings()->getRfBandwidth();
|
||||||
|
}
|
||||||
|
if (channelSettingsKeys.contains("rgbColor")) {
|
||||||
|
settings.m_rgbColor = response.getNfmModSettings()->getRgbColor();
|
||||||
|
}
|
||||||
|
if (channelSettingsKeys.contains("title")) {
|
||||||
|
settings.m_title = *response.getNfmModSettings()->getTitle();
|
||||||
|
}
|
||||||
|
if (channelSettingsKeys.contains("toneFrequency")) {
|
||||||
|
settings.m_toneFrequency = response.getNfmModSettings()->getToneFrequency();
|
||||||
|
}
|
||||||
|
if (channelSettingsKeys.contains("volumeFactor")) {
|
||||||
|
settings.m_volumeFactor = response.getNfmModSettings()->getVolumeFactor();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (channelSettingsKeys.contains("cwKeyer"))
|
||||||
|
{
|
||||||
|
SWGSDRangel::SWGCWKeyerSettings *apiCwKeyerSettings = response.getNfmModSettings()->getCwKeyer();
|
||||||
|
CWKeyerSettings cwKeyerSettings = m_cwKeyer.getSettings();
|
||||||
|
|
||||||
|
if (channelSettingsKeys.contains("cwKeyer.loop")) {
|
||||||
|
cwKeyerSettings.m_loop = apiCwKeyerSettings->getLoop() != 0;
|
||||||
|
}
|
||||||
|
if (channelSettingsKeys.contains("cwKeyer.mode")) {
|
||||||
|
cwKeyerSettings.m_mode = (CWKeyerSettings::CWMode) apiCwKeyerSettings->getMode();
|
||||||
|
}
|
||||||
|
if (channelSettingsKeys.contains("cwKeyer.text")) {
|
||||||
|
cwKeyerSettings.m_text = *apiCwKeyerSettings->getText();
|
||||||
|
}
|
||||||
|
if (channelSettingsKeys.contains("cwKeyer.sampleRate")) {
|
||||||
|
cwKeyerSettings.m_sampleRate = apiCwKeyerSettings->getSampleRate();
|
||||||
|
}
|
||||||
|
if (channelSettingsKeys.contains("cwKeyer.wpm")) {
|
||||||
|
cwKeyerSettings.m_wpm = apiCwKeyerSettings->getWpm();
|
||||||
|
}
|
||||||
|
|
||||||
|
m_cwKeyer.setLoop(cwKeyerSettings.m_loop);
|
||||||
|
m_cwKeyer.setMode(cwKeyerSettings.m_mode);
|
||||||
|
m_cwKeyer.setSampleRate(cwKeyerSettings.m_sampleRate);
|
||||||
|
m_cwKeyer.setText(cwKeyerSettings.m_text);
|
||||||
|
m_cwKeyer.setWPM(cwKeyerSettings.m_wpm);
|
||||||
|
|
||||||
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
|
{
|
||||||
|
CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
||||||
|
m_guiMessageQueue->push(msgCwKeyer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MsgConfigureNFMMod *msg = MsgConfigureNFMMod::create(settings, force);
|
MsgConfigureNFMMod *msg = MsgConfigureNFMMod::create(settings, force);
|
||||||
m_inputMessageQueue.push(msg);
|
m_inputMessageQueue.push(msg);
|
||||||
|
|
||||||
if (m_guiMessageQueue) // forward to GUI if any
|
if (m_guiMessageQueue) // forward to GUI if any
|
||||||
{
|
{
|
||||||
CWKeyer::MsgConfigureCWKeyer *msgCwKeyer = CWKeyer::MsgConfigureCWKeyer::create(cwKeyerSettings, force);
|
|
||||||
m_guiMessageQueue->push(msgCwKeyer);
|
|
||||||
MsgConfigureNFMMod *msgToGUI = MsgConfigureNFMMod::create(settings, force);
|
MsgConfigureNFMMod *msgToGUI = MsgConfigureNFMMod::create(settings, force);
|
||||||
m_guiMessageQueue->push(msgToGUI);
|
m_guiMessageQueue->push(msgToGUI);
|
||||||
}
|
}
|
||||||
|
@ -1468,6 +1468,13 @@ bool WebAPIRequestMapper::validateChannelSettings(
|
|||||||
{
|
{
|
||||||
QJsonObject nfmModSettingsJsonObject = jsonObject["NFMModSettings"].toObject();
|
QJsonObject nfmModSettingsJsonObject = jsonObject["NFMModSettings"].toObject();
|
||||||
channelSettingsKeys = nfmModSettingsJsonObject.keys();
|
channelSettingsKeys = nfmModSettingsJsonObject.keys();
|
||||||
|
|
||||||
|
if (channelSettingsKeys.contains("cwKeyer"))
|
||||||
|
{
|
||||||
|
QJsonObject cwKeyerSettingsJsonObject;
|
||||||
|
appendSettingsSubKeys(nfmModSettingsJsonObject, cwKeyerSettingsJsonObject, "cwKeyer", channelSettingsKeys);
|
||||||
|
}
|
||||||
|
|
||||||
channelSettings.setNfmModSettings(new SWGSDRangel::SWGNFMModSettings());
|
channelSettings.setNfmModSettings(new SWGSDRangel::SWGNFMModSettings());
|
||||||
channelSettings.getNfmModSettings()->fromJsonObject(nfmModSettingsJsonObject);
|
channelSettings.getNfmModSettings()->fromJsonObject(nfmModSettingsJsonObject);
|
||||||
return true;
|
return true;
|
||||||
@ -1482,6 +1489,20 @@ bool WebAPIRequestMapper::validateChannelSettings(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WebAPIRequestMapper::appendSettingsSubKeys(
|
||||||
|
const QJsonObject& parentSettingsJsonObject,
|
||||||
|
QJsonObject& childSettingsJsonObject,
|
||||||
|
const QString& parentKey,
|
||||||
|
QStringList& keyList)
|
||||||
|
{
|
||||||
|
childSettingsJsonObject = parentSettingsJsonObject[parentKey].toObject();
|
||||||
|
QStringList childSettingsKeys = childSettingsJsonObject.keys();
|
||||||
|
|
||||||
|
for (int i = 0; i < childSettingsKeys.size(); i++) {
|
||||||
|
keyList.append(parentKey + QString(".") + childSettingsKeys.at(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void WebAPIRequestMapper::resetDeviceSettings(SWGSDRangel::SWGDeviceSettings& deviceSettings)
|
void WebAPIRequestMapper::resetDeviceSettings(SWGSDRangel::SWGDeviceSettings& deviceSettings)
|
||||||
{
|
{
|
||||||
deviceSettings.cleanup();
|
deviceSettings.cleanup();
|
||||||
|
@ -73,6 +73,12 @@ private:
|
|||||||
bool validateDeviceSettings(SWGSDRangel::SWGDeviceSettings& deviceSettings, QJsonObject& jsonObject);
|
bool validateDeviceSettings(SWGSDRangel::SWGDeviceSettings& deviceSettings, QJsonObject& jsonObject);
|
||||||
bool validateChannelSettings(SWGSDRangel::SWGChannelSettings& deviceSettings, QJsonObject& jsonObject, QStringList& channelSettingsKeys);
|
bool validateChannelSettings(SWGSDRangel::SWGChannelSettings& deviceSettings, QJsonObject& jsonObject, QStringList& channelSettingsKeys);
|
||||||
|
|
||||||
|
void appendSettingsSubKeys(
|
||||||
|
const QJsonObject& parentSettingsJsonObject,
|
||||||
|
QJsonObject& childSettingsJsonObject,
|
||||||
|
const QString& parentKey,
|
||||||
|
QStringList& keyList);
|
||||||
|
|
||||||
bool parseJsonBody(QString& jsonStr, QJsonObject& jsonObject, qtwebapp::HttpResponse& response);
|
bool parseJsonBody(QString& jsonStr, QJsonObject& jsonObject, qtwebapp::HttpResponse& response);
|
||||||
|
|
||||||
void resetDeviceSettings(SWGSDRangel::SWGDeviceSettings& deviceSettings);
|
void resetDeviceSettings(SWGSDRangel::SWGDeviceSettings& deviceSettings);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user