1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-05-29 13:32:26 -04:00

SatelliteTracker: use device set index. API: fixed doppler channels

This commit is contained in:
f4exb 2021-10-03 12:12:39 +02:00
parent 3e6fe8afef
commit 59937d9a1c
13 changed files with 174 additions and 128 deletions

View File

@ -41,15 +41,12 @@ SatelliteDeviceSettingsGUI::SatelliteDeviceSettingsGUI(SatelliteTrackerSettings:
m_deviceSetWidget->setEditable(true); m_deviceSetWidget->setEditable(true);
m_deviceSetWidget->setToolTip("Device set to control"); m_deviceSetWidget->setToolTip("Device set to control");
formLayout->addRow("Device set", m_deviceSetWidget); formLayout->addRow("Device set", m_deviceSetWidget);
addDeviceSets(); addDeviceSets();
int devSetIdx = m_deviceSetWidget->findText(devSettings->m_deviceSet);
if (devSetIdx != -1) if (devSettings->m_deviceSetIndex < m_deviceSetWidget->count()) {
{ m_deviceSetWidget->setCurrentIndex(devSettings->m_deviceSetIndex);
m_deviceSetWidget->setCurrentIndex(devSetIdx); } else {
}
else
{
m_deviceSetWidget->addItem(devSettings->m_deviceSet);
m_deviceSetWidget->setCurrentIndex(m_deviceSetWidget->count() - 1); m_deviceSetWidget->setCurrentIndex(m_deviceSetWidget->count() - 1);
} }
@ -59,19 +56,31 @@ SatelliteDeviceSettingsGUI::SatelliteDeviceSettingsGUI(SatelliteTrackerSettings:
m_presetWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); m_presetWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
m_presetWidget->setToolTip("Preset to load on AOS"); m_presetWidget->setToolTip("Preset to load on AOS");
formLayout->addRow("Preset", m_presetWidget); formLayout->addRow("Preset", m_presetWidget);
addPresets(devSettings->m_deviceSet);
const MainSettings& mainSettings = MainCore::instance()->getSettings(); MainCore *mainCore = MainCore::instance();
if (!devSettings->m_deviceSet.isEmpty()) const std::vector<DeviceSet*>& deviceSets = mainCore->getDeviceSets();
if (devSettings->m_deviceSetIndex < (int) deviceSets.size())
{ {
DeviceSet *deviceSet = deviceSets[devSettings->m_deviceSetIndex];
if (deviceSet->m_deviceSourceEngine) {
addPresets("R");
} else if (deviceSet->m_deviceSinkEngine) {
addPresets("T");
} else if (deviceSet->m_deviceMIMOEngine) {
addPresets("M");
}
const MainSettings& mainSettings = MainCore::instance()->getSettings();
int count = mainSettings.getPresetCount(); int count = mainSettings.getPresetCount();
int idx = 0; int idx = 0;
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
{ {
const Preset *preset = mainSettings.getPreset(i); const Preset *preset = mainSettings.getPreset(i);
if ( ((preset->isSourcePreset() && (devSettings->m_deviceSet[0] == "R"))) if (((preset->isSourcePreset() && (deviceSet->m_deviceSourceEngine)))
|| ((preset->isSinkPreset() && (devSettings->m_deviceSet[0] == "T"))) || ((preset->isSinkPreset() && (deviceSet->m_deviceSinkEngine)))
|| ((preset->isMIMOPreset() && (devSettings->m_deviceSet[0] == "M")))) || ((preset->isMIMOPreset() && (deviceSet->m_deviceMIMOEngine))))
{ {
if ( (devSettings->m_presetGroup == preset->getGroup()) if ( (devSettings->m_presetGroup == preset->getGroup())
&& (devSettings->m_presetFrequency == preset->getCenterFrequency()) && (devSettings->m_presetFrequency == preset->getCenterFrequency())
@ -96,6 +105,7 @@ SatelliteDeviceSettingsGUI::SatelliteDeviceSettingsGUI(SatelliteTrackerSettings:
for (int i = 0; i < devSettings->m_doppler.size(); i++) for (int i = 0; i < devSettings->m_doppler.size(); i++)
{ {
int idx = devSettings->m_doppler[i]; int idx = devSettings->m_doppler[i];
if (idx < m_dopplerItems.size()) { if (idx < m_dopplerItems.size()) {
m_dopplerItems[idx]->setData(Qt::Checked, Qt::CheckStateRole); m_dopplerItems[idx]->setData(Qt::Checked, Qt::CheckStateRole);
} else { } else {
@ -158,28 +168,32 @@ void SatelliteDeviceSettingsGUI::addDeviceSets()
{ {
DSPDeviceSourceEngine *deviceSourceEngine = (*it)->m_deviceSourceEngine; DSPDeviceSourceEngine *deviceSourceEngine = (*it)->m_deviceSourceEngine;
DSPDeviceSinkEngine *deviceSinkEngine = (*it)->m_deviceSinkEngine; DSPDeviceSinkEngine *deviceSinkEngine = (*it)->m_deviceSinkEngine;
DSPDeviceMIMOEngine *deviceMIMOEngine = (*it)->m_deviceMIMOEngine;
if (deviceSourceEngine) { if (deviceSourceEngine) {
m_deviceSetWidget->addItem(QString("R%1").arg(deviceIndex), deviceIndex); m_deviceSetWidget->addItem(QString("R%1").arg(deviceIndex), deviceIndex);
} else if (deviceSinkEngine) { } else if (deviceSinkEngine) {
m_deviceSetWidget->addItem(QString("T%1").arg(deviceIndex), deviceIndex); m_deviceSetWidget->addItem(QString("T%1").arg(deviceIndex), deviceIndex);
} else if (deviceMIMOEngine) {
m_deviceSetWidget->addItem(QString("M%1").arg(deviceIndex), deviceIndex);
} }
} }
} }
// Add all available presets for a deviceset to the combobox // Add all available presets for a deviceset to the combobox
void SatelliteDeviceSettingsGUI::addPresets(const QString& deviceSet) void SatelliteDeviceSettingsGUI::addPresets(const QString& deviceSetType)
{ {
m_presetWidget->clear(); m_presetWidget->clear();
const MainSettings& mainSettings = MainCore::instance()->getSettings(); const MainSettings& mainSettings = MainCore::instance()->getSettings();
int count = mainSettings.getPresetCount(); int count = mainSettings.getPresetCount();
m_currentPresets = deviceSet[0]; m_currentPresetType = deviceSetType[0];
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
{ {
const Preset *preset = mainSettings.getPreset(i); const Preset *preset = mainSettings.getPreset(i);
if ( ((preset->isSourcePreset() && (m_currentPresets == "R"))) if (((preset->isSourcePreset() && (m_currentPresetType == "R")))
|| ((preset->isSinkPreset() && (m_currentPresets == "T"))) || ((preset->isSinkPreset() && (m_currentPresetType == "T")))
|| ((preset->isMIMOPreset() && (m_currentPresets == "M")))) || ((preset->isMIMOPreset() && (m_currentPresetType == "M"))))
{ {
m_presetWidget->addItem(QString("%1: %2 - %3") m_presetWidget->addItem(QString("%1: %2 - %3")
.arg(preset->getGroup()) .arg(preset->getGroup())
@ -198,9 +212,9 @@ const Preset* SatelliteDeviceSettingsGUI::getSelectedPreset()
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
{ {
const Preset *preset = mainSettings.getPreset(i); const Preset *preset = mainSettings.getPreset(i);
if ( ((preset->isSourcePreset() && (m_currentPresets == "R"))) if ( ((preset->isSourcePreset() && (m_currentPresetType == "R")))
|| ((preset->isSinkPreset() && (m_currentPresets == "T"))) || ((preset->isSinkPreset() && (m_currentPresetType == "T")))
|| ((preset->isMIMOPreset() && (m_currentPresets == "M")))) || ((preset->isMIMOPreset() && (m_currentPresetType == "M"))))
{ {
if (listIdx == presetIdx) { if (listIdx == presetIdx) {
return preset; return preset;
@ -218,13 +232,14 @@ void SatelliteDeviceSettingsGUI::addChannels()
m_dopplerItems.clear(); m_dopplerItems.clear();
const PluginManager *pluginManager = MainCore::instance()->getPluginManager(); const PluginManager *pluginManager = MainCore::instance()->getPluginManager();
const Preset* preset = getSelectedPreset(); const Preset* preset = getSelectedPreset();
if (preset != nullptr) if (preset != nullptr)
{ {
int channels = preset->getChannelCount(); int channels = preset->getChannelCount();
for (int i = 0; i < channels; i++) for (int i = 0; i < channels; i++)
{ {
const Preset::ChannelConfig& channelConfig = preset->getChannelConfig(i); const Preset::ChannelConfig& channelConfig = preset->getChannelConfig(i);
QStandardItem *item = new QStandardItem(); QStandardItem *item = new QStandardItem();
item->setText(pluginManager->uriToId(channelConfig.m_channelIdURI)); item->setText(pluginManager->uriToId(channelConfig.m_channelIdURI));
item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
@ -240,9 +255,10 @@ void SatelliteDeviceSettingsGUI::on_m_deviceSetWidget_currentTextChanged(const Q
{ {
if (!text.isEmpty()) if (!text.isEmpty())
{ {
if (text[0] != m_currentPresets) { if (text[0] != m_currentPresetType) {
addPresets(text[0]); addPresets(text[0]);
} }
// Set name of tab to match // Set name of tab to match
int currentTabIndex = m_tab->currentIndex(); int currentTabIndex = m_tab->currentIndex();
m_tab->setTabText(currentTabIndex, text); m_tab->setTabText(currentTabIndex, text);
@ -259,8 +275,9 @@ void SatelliteDeviceSettingsGUI::on_m_presetWidget_currentIndexChanged(int index
// Update devSettings with current GUI values // Update devSettings with current GUI values
void SatelliteDeviceSettingsGUI::accept() void SatelliteDeviceSettingsGUI::accept()
{ {
m_devSettings->m_deviceSet = m_deviceSetWidget->currentText(); m_devSettings->m_deviceSetIndex = m_deviceSetWidget->currentIndex();
const Preset* preset = getSelectedPreset(); const Preset* preset = getSelectedPreset();
if (preset != nullptr) if (preset != nullptr)
{ {
m_devSettings->m_presetGroup = preset->getGroup(); m_devSettings->m_presetGroup = preset->getGroup();
@ -273,13 +290,16 @@ void SatelliteDeviceSettingsGUI::accept()
m_devSettings->m_presetFrequency = 0; m_devSettings->m_presetFrequency = 0;
m_devSettings->m_presetDescription = ""; m_devSettings->m_presetDescription = "";
} }
m_devSettings->m_doppler.clear(); m_devSettings->m_doppler.clear();
for (int i = 0; i < m_dopplerItems.size(); i++) for (int i = 0; i < m_dopplerItems.size(); i++)
{ {
if (m_dopplerItems[i]->checkState() == Qt::Checked) { if (m_dopplerItems[i]->checkState() == Qt::Checked) {
m_devSettings->m_doppler.append(i); m_devSettings->m_doppler.append(i);
} }
} }
m_devSettings->m_startOnAOS = m_startOnAOSWidget->isChecked(); m_devSettings->m_startOnAOS = m_startOnAOSWidget->isChecked();
m_devSettings->m_stopOnLOS = m_stopOnLOSWidget->isChecked(); m_devSettings->m_stopOnLOS = m_stopOnLOSWidget->isChecked();
m_devSettings->m_startStopFileSink = m_startStopFileSinkWidget->isChecked(); m_devSettings->m_startStopFileSink = m_startStopFileSinkWidget->isChecked();

View File

@ -68,7 +68,7 @@ protected:
QLineEdit *m_frequencyWidget; QLineEdit *m_frequencyWidget;
QLineEdit *m_aosCommandWidget; QLineEdit *m_aosCommandWidget;
QLineEdit *m_losCommandWidget; QLineEdit *m_losCommandWidget;
QChar m_currentPresets; QChar m_currentPresetType;
QStandardItemModel m_dopplerModel; QStandardItemModel m_dopplerModel;
QList<QStandardItem *> m_dopplerItems; QList<QStandardItem *> m_dopplerItems;

View File

@ -111,7 +111,25 @@ void SatelliteRadioControlDialog::on_satelliteSelect_currentIndexChanged(int ind
for (int i = 0; i < devSettingsList->size(); i++) for (int i = 0; i < devSettingsList->size(); i++)
{ {
SatelliteDeviceSettingsGUI *devSettingsGUI = new SatelliteDeviceSettingsGUI(devSettingsList->at(i), ui->tabWidget, ui->tabWidget); SatelliteDeviceSettingsGUI *devSettingsGUI = new SatelliteDeviceSettingsGUI(devSettingsList->at(i), ui->tabWidget, ui->tabWidget);
ui->tabWidget->addTab(devSettingsGUI, devSettingsList->at(i)->m_deviceSet); QString deviceSetString;
MainCore *mainCore = MainCore::instance();
const std::vector<DeviceSet*>& deviceSets = mainCore->getDeviceSets();
if (devSettingsList->at(i)->m_deviceSetIndex < (int) deviceSets.size())
{
const DeviceSet *deviceSet = deviceSets[devSettingsList->at(i)->m_deviceSetIndex];
if (deviceSet->m_deviceSourceEngine != nullptr) {
deviceSetString = tr("R%1").arg(devSettingsList->at(i)->m_deviceSetIndex);
} else if (deviceSet->m_deviceSinkEngine != nullptr) {
deviceSetString = tr("T%1").arg(devSettingsList->at(i)->m_deviceSetIndex);
} else if (deviceSet->m_deviceMIMOEngine != nullptr) {
deviceSetString = tr("M%1").arg(devSettingsList->at(i)->m_deviceSetIndex);
}
ui->tabWidget->addTab(devSettingsGUI, deviceSetString);
}
m_devSettingsGUIs.append(devSettingsGUI); m_devSettingsGUIs.append(devSettingsGUI);
} }

View File

@ -407,15 +407,14 @@ QList<SWGSDRangel::SWGSatelliteDeviceSettingsList*>* SatelliteTracker::getSWGSat
for (int j = 0; j < l->size(); j++) for (int j = 0; j < l->size(); j++)
{ {
SWGSDRangel::SWGSatelliteDeviceSettings* deviceSettings = new SWGSDRangel::SWGSatelliteDeviceSettings(); SWGSDRangel::SWGSatelliteDeviceSettings* deviceSettings = new SWGSDRangel::SWGSatelliteDeviceSettings();
deviceSettings->setDeviceSet(new QString(l->at(j)->m_deviceSet)); deviceSettings->setDeviceSetIndex(l->at(j)->m_deviceSetIndex);
deviceSettings->setPresetGroup(new QString(l->at(j)->m_presetGroup)); deviceSettings->setPresetGroup(new QString(l->at(j)->m_presetGroup));
deviceSettings->setPresetDescription(new QString(l->at(j)->m_presetDescription)); deviceSettings->setPresetDescription(new QString(l->at(j)->m_presetDescription));
deviceSettings->setPresetFrequency(l->at(j)->m_presetFrequency); deviceSettings->setPresetFrequency(l->at(j)->m_presetFrequency);
QList<qint32>* doppler = new QList<qint32>(); deviceSettings->setDoppler(new QList<QString*>());
for (int k = 0; k < l->at(j)->m_doppler.size(); k++) { for (int k = 0; k < l->at(j)->m_doppler.size(); k++) {
doppler->append(l->at(j)->m_doppler[k]); deviceSettings->getDoppler()->append(new QString(QString::number(l->at(j)->m_doppler[k])));
} }
deviceSettings->setDoppler(doppler);
deviceSettings->setStartOnAos((int)l->at(j)->m_startOnAOS ? 1 : 0); deviceSettings->setStartOnAos((int)l->at(j)->m_startOnAOS ? 1 : 0);
deviceSettings->setStopOnLos((int)l->at(j)->m_stopOnLOS ? 1 : 0); deviceSettings->setStopOnLos((int)l->at(j)->m_stopOnLOS ? 1 : 0);
deviceSettings->setStartStopFileSinks((int)l->at(j)->m_startStopFileSink ? 1 : 0); deviceSettings->setStartStopFileSinks((int)l->at(j)->m_startStopFileSink ? 1 : 0);
@ -459,12 +458,16 @@ QHash<QString, QList<SatelliteTrackerSettings::SatelliteDeviceSettings *> *> Sat
for (int j = 0; j < swgDeviceSettingsList->size(); j++) for (int j = 0; j < swgDeviceSettingsList->size(); j++)
{ {
SatelliteTrackerSettings::SatelliteDeviceSettings *deviceSettings = new SatelliteTrackerSettings::SatelliteDeviceSettings(); SatelliteTrackerSettings::SatelliteDeviceSettings *deviceSettings = new SatelliteTrackerSettings::SatelliteDeviceSettings();
deviceSettings->m_deviceSet = getString(swgDeviceSettingsList->at(j)->getDeviceSet()); deviceSettings->m_deviceSetIndex = swgDeviceSettingsList->at(j)->getDeviceSetIndex();
deviceSettings->m_presetGroup = getString(swgDeviceSettingsList->at(j)->getPresetGroup()); deviceSettings->m_presetGroup = getString(swgDeviceSettingsList->at(j)->getPresetGroup());
deviceSettings->m_presetFrequency = swgDeviceSettingsList->at(j)->getPresetFrequency(); deviceSettings->m_presetFrequency = swgDeviceSettingsList->at(j)->getPresetFrequency();
deviceSettings->m_presetDescription = getString(swgDeviceSettingsList->at(j)->getPresetDescription()); deviceSettings->m_presetDescription = getString(swgDeviceSettingsList->at(j)->getPresetDescription());
if (swgDeviceSettingsList->at(j)->getDoppler()) { deviceSettings->m_doppler.clear();
deviceSettings->m_doppler = *swgDeviceSettingsList->at(j)->getDoppler(); if (swgDeviceSettingsList->at(j)->getDoppler())
{
for (auto dopplerStr : *swgDeviceSettingsList->at(j)->getDoppler()) {
deviceSettings->m_doppler.append(dopplerStr->toInt());
}
} }
deviceSettings->m_startOnAOS = swgDeviceSettingsList->at(j)->getStartOnAos(); deviceSettings->m_startOnAOS = swgDeviceSettingsList->at(j)->getStartOnAos();
deviceSettings->m_stopOnLOS = swgDeviceSettingsList->at(j)->getStopOnLos(); deviceSettings->m_stopOnLOS = swgDeviceSettingsList->at(j)->getStopOnLos();

View File

@ -243,7 +243,7 @@ QDataStream& operator>>(QDataStream& in, QList<SatelliteTrackerSettings::Satelli
QDataStream& operator<<(QDataStream& out, const SatelliteTrackerSettings::SatelliteDeviceSettings* settings) QDataStream& operator<<(QDataStream& out, const SatelliteTrackerSettings::SatelliteDeviceSettings* settings)
{ {
out << settings->m_deviceSet; out << settings->m_deviceSetIndex;
out << settings->m_presetGroup; out << settings->m_presetGroup;
out << settings->m_presetFrequency; out << settings->m_presetFrequency;
out << settings->m_presetDescription; out << settings->m_presetDescription;
@ -260,7 +260,7 @@ QDataStream& operator<<(QDataStream& out, const SatelliteTrackerSettings::Satell
QDataStream& operator>>(QDataStream& in, SatelliteTrackerSettings::SatelliteDeviceSettings*& settings) QDataStream& operator>>(QDataStream& in, SatelliteTrackerSettings::SatelliteDeviceSettings*& settings)
{ {
settings = new SatelliteTrackerSettings::SatelliteDeviceSettings(); settings = new SatelliteTrackerSettings::SatelliteDeviceSettings();
in >> settings->m_deviceSet; in >> settings->m_deviceSetIndex;
in >> settings->m_presetGroup; in >> settings->m_presetGroup;
in >> settings->m_presetFrequency; in >> settings->m_presetFrequency;
in >> settings->m_presetDescription; in >> settings->m_presetDescription;
@ -292,7 +292,7 @@ void SatelliteTrackerSettings::deserializeDeviceSettings(const QByteArray& data,
SatelliteTrackerSettings::SatelliteDeviceSettings::SatelliteDeviceSettings() SatelliteTrackerSettings::SatelliteDeviceSettings::SatelliteDeviceSettings()
{ {
m_deviceSet = "R0"; m_deviceSetIndex = 0;
m_presetFrequency = 0; m_presetFrequency = 0;
m_startOnAOS = true; m_startOnAOS = true;
m_stopOnLOS = true; m_stopOnLOS = true;

View File

@ -33,7 +33,7 @@ struct SatelliteTrackerSettings
{ {
struct SatelliteDeviceSettings struct SatelliteDeviceSettings
{ {
QString m_deviceSet; //!< R0, T1... int m_deviceSetIndex; //!< Device set index in the list of device sets of the SDRangel instance
QString m_presetGroup; //!< Preset to load to device set QString m_presetGroup; //!< Preset to load to device set
quint64 m_presetFrequency; quint64 m_presetFrequency;
QString m_presetDescription; QString m_presetDescription;

View File

@ -544,27 +544,40 @@ void SatelliteTrackerWorker::applyDeviceAOSSettings(const QString& name)
for (int i = 0; i < m_deviceSettingsList->size(); i++) for (int i = 0; i < m_deviceSettingsList->size(); i++)
{ {
SatelliteTrackerSettings::SatelliteDeviceSettings *devSettings = m_deviceSettingsList->at(i); SatelliteTrackerSettings::SatelliteDeviceSettings *devSettings = m_deviceSettingsList->at(i);
if (!devSettings->m_presetGroup.isEmpty() && !devSettings->m_deviceSet.isEmpty()) if (!devSettings->m_presetGroup.isEmpty())
{ {
const MainSettings& mainSettings = mainCore->getSettings(); const MainSettings& mainSettings = mainCore->getSettings();
const std::vector<DeviceSet*>& deviceSets = mainCore->getDeviceSets();
QString presetType = QString(devSettings->m_deviceSet[0]); if (devSettings->m_deviceSetIndex < deviceSets.size())
const Preset* preset = mainSettings.getPreset(devSettings->m_presetGroup, devSettings->m_presetFrequency, devSettings->m_presetDescription, presetType);
if (preset != nullptr)
{ {
qDebug() << "SatelliteTrackerWorker::aos: Loading preset " << preset->getDescription() << " to " << devSettings->m_deviceSet[0]; const DeviceSet *deviceSet = deviceSets[devSettings->m_deviceSetIndex];
unsigned int deviceSetIndex = devSettings->m_deviceSet.mid(1).toInt(); QString presetType;
std::vector<DeviceSet*>& deviceSets = mainCore->getDeviceSets(); if (deviceSet->m_deviceSourceEngine != nullptr) {
if (deviceSetIndex < deviceSets.size()) presetType = "R";
} else if (deviceSet->m_deviceSinkEngine != nullptr) {
presetType = "T";
} else if (deviceSet->m_deviceMIMOEngine != nullptr) {
presetType = "M";
}
const Preset* preset = mainSettings.getPreset(devSettings->m_presetGroup, devSettings->m_presetFrequency, devSettings->m_presetDescription, presetType);
if (preset != nullptr)
{ {
MainCore::MsgLoadPreset *msg = MainCore::MsgLoadPreset::create(preset, deviceSetIndex); qDebug() << "SatelliteTrackerWorker::aos: Loading preset " << preset->getDescription() << " to device set at " << devSettings->m_deviceSetIndex;
MainCore::MsgLoadPreset *msg = MainCore::MsgLoadPreset::create(preset, devSettings->m_deviceSetIndex);
mainCore->getMainMessageQueue()->push(msg); mainCore->getMainMessageQueue()->push(msg);
} }
else else
qWarning() << "SatelliteTrackerWorker::aos: device set " << devSettings->m_deviceSet << " does not exist"; {
qWarning() << "SatelliteTrackerWorker::aos: Unable to get preset: " << devSettings->m_presetGroup << " " << devSettings->m_presetFrequency << " " << devSettings->m_presetDescription;
}
} }
else else
qWarning() << "SatelliteTrackerWorker::aos: Unable to get preset: " << devSettings->m_presetGroup << " " << devSettings->m_presetFrequency << " " << devSettings->m_presetDescription; {
qWarning() << "SatelliteTrackerWorker::aos: device set at " << devSettings->m_deviceSetIndex << " does not exist";
}
} }
} }
@ -580,8 +593,7 @@ void SatelliteTrackerWorker::applyDeviceAOSSettings(const QString& name)
if (devSettings->m_frequency != 0) if (devSettings->m_frequency != 0)
{ {
qDebug() << "SatelliteTrackerWorker::aos: setting frequency to: " << devSettings->m_frequency; qDebug() << "SatelliteTrackerWorker::aos: setting frequency to: " << devSettings->m_frequency;
int deviceSetIndex = devSettings->m_deviceSet.mid(1).toInt(); ChannelWebAPIUtils::setCenterFrequency(devSettings->m_deviceSetIndex, devSettings->m_frequency);
ChannelWebAPIUtils::setCenterFrequency(deviceSetIndex, devSettings->m_frequency);
} }
// Execute per satellite program/script // Execute per satellite program/script
@ -600,8 +612,7 @@ void SatelliteTrackerWorker::applyDeviceAOSSettings(const QString& name)
if (devSettings->m_startOnAOS) if (devSettings->m_startOnAOS)
{ {
qDebug() << "SatelliteTrackerWorker::aos: starting acqusition"; qDebug() << "SatelliteTrackerWorker::aos: starting acqusition";
int deviceSetIndex = devSettings->m_deviceSet.mid(1).toInt(); ChannelWebAPIUtils::run(devSettings->m_deviceSetIndex);
ChannelWebAPIUtils::run(deviceSetIndex);
} }
} }
@ -622,8 +633,8 @@ void SatelliteTrackerWorker::applyDeviceAOSSettings(const QString& name)
for (int j = 0; j < devSettings->m_doppler.size(); j++) for (int j = 0; j < devSettings->m_doppler.size(); j++)
{ {
int offset; int offset;
int deviceSetIndex = devSettings->m_deviceSet.mid(1).toInt();
if (ChannelWebAPIUtils::getFrequencyOffset(deviceSetIndex, devSettings->m_doppler[j], offset)) if (ChannelWebAPIUtils::getFrequencyOffset(devSettings->m_deviceSetIndex, devSettings->m_doppler[j], offset))
{ {
satWorkerState->m_initFrequencyOffset.append(offset); satWorkerState->m_initFrequencyOffset.append(offset);
qDebug() << "SatelliteTrackerWorker::applyDeviceAOSSettings: Initial frequency offset: " << offset; qDebug() << "SatelliteTrackerWorker::applyDeviceAOSSettings: Initial frequency offset: " << offset;
@ -655,8 +666,7 @@ void SatelliteTrackerWorker::applyDeviceAOSSettings(const QString& name)
if (devSettings->m_startStopFileSink) if (devSettings->m_startStopFileSink)
{ {
qDebug() << "SatelliteTrackerWorker::aos: starting file sinks"; qDebug() << "SatelliteTrackerWorker::aos: starting file sinks";
int deviceSetIndex = devSettings->m_deviceSet.mid(1).toInt(); ChannelWebAPIUtils::startStopFileSinks(devSettings->m_deviceSetIndex, true);
ChannelWebAPIUtils::startStopFileSinks(deviceSetIndex, true);
} }
} }
}); });
@ -686,9 +696,9 @@ void SatelliteTrackerWorker::doppler(SatWorkerState *satWorkerState)
if (devSettings->m_doppler.size() > 0) if (devSettings->m_doppler.size() > 0)
{ {
// Get center frequency for this device // Get center frequency for this device
int deviceSetIndex = devSettings->m_deviceSet.mid(1).toInt();
double centerFrequency; double centerFrequency;
if (ChannelWebAPIUtils::getCenterFrequency(deviceSetIndex, centerFrequency))
if (ChannelWebAPIUtils::getCenterFrequency(devSettings->m_deviceSetIndex, centerFrequency))
{ {
// Calculate frequency delta due to Doppler // Calculate frequency delta due to Doppler
double c = 299792458.0; double c = 299792458.0;
@ -697,18 +707,14 @@ void SatelliteTrackerWorker::doppler(SatWorkerState *satWorkerState)
for (int j = 0; j < devSettings->m_doppler.size(); j++) for (int j = 0; j < devSettings->m_doppler.size(); j++)
{ {
// For receive, we subtract, transmit we add // For receive, we subtract, transmit we add
int offset; int offset = satWorkerState->m_initFrequencyOffset[i] - (int)round(deltaF);
if (devSettings->m_deviceSet[0] == "R")
offset = satWorkerState->m_initFrequencyOffset[i] - (int)round(deltaF);
else
offset = satWorkerState->m_initFrequencyOffset[i] + (int)round(deltaF);
if (!ChannelWebAPIUtils::setFrequencyOffset(deviceSetIndex, devSettings->m_doppler[j], offset)) if (!ChannelWebAPIUtils::setFrequencyOffset(devSettings->m_deviceSetIndex, devSettings->m_doppler[j], offset))
qDebug() << "SatelliteTrackerWorker::doppler: Failed to set frequency offset"; qDebug() << "SatelliteTrackerWorker::doppler: Failed to set frequency offset";
} }
} }
else else
qDebug() << "SatelliteTrackerWorker::doppler: couldn't get centre frequency for " << devSettings->m_deviceSet; qDebug() << "SatelliteTrackerWorker::doppler: couldn't get centre frequency for device at " << devSettings->m_deviceSetIndex;
} }
} }
} }
@ -746,8 +752,7 @@ void SatelliteTrackerWorker::los(SatWorkerState *satWorkerState)
if (devSettings->m_startStopFileSink) if (devSettings->m_startStopFileSink)
{ {
qDebug() << "SatelliteTrackerWorker::los: stopping file sinks"; qDebug() << "SatelliteTrackerWorker::los: stopping file sinks";
int deviceSetIndex = devSettings->m_deviceSet.mid(1).toInt(); ChannelWebAPIUtils::startStopFileSinks(devSettings->m_deviceSetIndex, false);
ChannelWebAPIUtils::startStopFileSinks(deviceSetIndex, false);
} }
} }
@ -759,10 +764,9 @@ void SatelliteTrackerWorker::los(SatWorkerState *satWorkerState)
for (int i = 0; i < m_deviceSettingsList->size(); i++) for (int i = 0; i < m_deviceSettingsList->size(); i++)
{ {
SatelliteTrackerSettings::SatelliteDeviceSettings *devSettings = m_deviceSettingsList->at(i); SatelliteTrackerSettings::SatelliteDeviceSettings *devSettings = m_deviceSettingsList->at(i);
if (devSettings->m_stopOnLOS)
{ if (devSettings->m_stopOnLOS) {
int deviceSetIndex = devSettings->m_deviceSet.mid(1).toInt(); ChannelWebAPIUtils::stop(devSettings->m_deviceSetIndex);
ChannelWebAPIUtils::stop(deviceSetIndex);
} }
} }

View File

@ -9976,9 +9976,9 @@ margin-bottom: 20px;
}; };
defs.SatelliteDeviceSettings = { defs.SatelliteDeviceSettings = {
"properties" : { "properties" : {
"deviceSet" : { "deviceSetIndex" : {
"type" : "string", "type" : "integer",
"description" : "Name of the device set (E.g. R0)" "description" : "Index of the device set (E.g. 0)"
}, },
"presetGroup" : { "presetGroup" : {
"type" : "string", "type" : "string",
@ -9995,9 +9995,9 @@ margin-bottom: 20px;
}, },
"doppler" : { "doppler" : {
"type" : "array", "type" : "array",
"description" : "Whether to apply doppler correction to each channel (1 for yes, 0 for no)", "description" : "Channel which to apply doppler correction (index as string)",
"items" : { "items" : {
"type" : "integer" "type" : "string"
} }
}, },
"startOnAOS" : { "startOnAOS" : {
@ -50580,7 +50580,7 @@ except ApiException as e:
</div> </div>
<div id="generator"> <div id="generator">
<div class="content"> <div class="content">
Generated 2021-09-17T00:27:04.059+02:00 Generated 2021-10-03T09:59:26.222+02:00
</div> </div>
</div> </div>
</div> </div>

View File

@ -128,9 +128,9 @@ SatelliteDeviceSettingsList:
SatelliteDeviceSettings: SatelliteDeviceSettings:
description: "Device set settings" description: "Device set settings"
properties: properties:
deviceSet: deviceSetIndex:
description: "Name of the device set (E.g. R0)" description: "Index of the device set (E.g. 0)"
type: string type: integer
presetGroup: presetGroup:
description: "Group for preset to load on AOS" description: "Group for preset to load on AOS"
type: string type: string
@ -142,10 +142,10 @@ SatelliteDeviceSettings:
description: "Description of preset to load on AOS" description: "Description of preset to load on AOS"
type: string type: string
doppler: doppler:
description: "Whether to apply doppler correction to each channel (1 for yes, 0 for no)" description: "Channel which to apply doppler correction (index as string)"
type: array type: array
items: items:
type: integer type: string
startOnAOS: startOnAOS:
description: "Start acquisition on AOS (1 for yes, 0 for no)" description: "Start acquisition on AOS (1 for yes, 0 for no)"
type: integer type: integer

View File

@ -128,9 +128,9 @@ SatelliteDeviceSettingsList:
SatelliteDeviceSettings: SatelliteDeviceSettings:
description: "Device set settings" description: "Device set settings"
properties: properties:
deviceSet: deviceSetIndex:
description: "Name of the device set (E.g. R0)" description: "Index of the device set (E.g. 0)"
type: string type: integer
presetGroup: presetGroup:
description: "Group for preset to load on AOS" description: "Group for preset to load on AOS"
type: string type: string
@ -142,10 +142,10 @@ SatelliteDeviceSettings:
description: "Description of preset to load on AOS" description: "Description of preset to load on AOS"
type: string type: string
doppler: doppler:
description: "Whether to apply doppler correction to each channel (1 for yes, 0 for no)" description: "Channel which to apply doppler correction (index as string)"
type: array type: array
items: items:
type: integer type: string
startOnAOS: startOnAOS:
description: "Start acquisition on AOS (1 for yes, 0 for no)" description: "Start acquisition on AOS (1 for yes, 0 for no)"
type: integer type: integer

View File

@ -9976,9 +9976,9 @@ margin-bottom: 20px;
}; };
defs.SatelliteDeviceSettings = { defs.SatelliteDeviceSettings = {
"properties" : { "properties" : {
"deviceSet" : { "deviceSetIndex" : {
"type" : "string", "type" : "integer",
"description" : "Name of the device set (E.g. R0)" "description" : "Index of the device set (E.g. 0)"
}, },
"presetGroup" : { "presetGroup" : {
"type" : "string", "type" : "string",
@ -9995,9 +9995,9 @@ margin-bottom: 20px;
}, },
"doppler" : { "doppler" : {
"type" : "array", "type" : "array",
"description" : "Whether to apply doppler correction to each channel (1 for yes, 0 for no)", "description" : "Channel which to apply doppler correction (index as string)",
"items" : { "items" : {
"type" : "integer" "type" : "string"
} }
}, },
"startOnAOS" : { "startOnAOS" : {
@ -50580,7 +50580,7 @@ except ApiException as e:
</div> </div>
<div id="generator"> <div id="generator">
<div class="content"> <div class="content">
Generated 2021-09-17T00:27:04.059+02:00 Generated 2021-10-03T09:59:26.222+02:00
</div> </div>
</div> </div>
</div> </div>

View File

@ -28,15 +28,15 @@ SWGSatelliteDeviceSettings::SWGSatelliteDeviceSettings(QString* json) {
} }
SWGSatelliteDeviceSettings::SWGSatelliteDeviceSettings() { SWGSatelliteDeviceSettings::SWGSatelliteDeviceSettings() {
device_set = nullptr; device_set_index = 0;
m_device_set_isSet = false; m_device_set_index_isSet = false;
preset_group = nullptr; preset_group = nullptr;
m_preset_group_isSet = false; m_preset_group_isSet = false;
preset_frequency = 0L; preset_frequency = 0L;
m_preset_frequency_isSet = false; m_preset_frequency_isSet = false;
preset_description = nullptr; preset_description = nullptr;
m_preset_description_isSet = false; m_preset_description_isSet = false;
doppler = new QList<qint32>(); doppler = nullptr;
m_doppler_isSet = false; m_doppler_isSet = false;
start_on_aos = 0; start_on_aos = 0;
m_start_on_aos_isSet = false; m_start_on_aos_isSet = false;
@ -58,15 +58,15 @@ SWGSatelliteDeviceSettings::~SWGSatelliteDeviceSettings() {
void void
SWGSatelliteDeviceSettings::init() { SWGSatelliteDeviceSettings::init() {
device_set = new QString(""); device_set_index = 0;
m_device_set_isSet = false; m_device_set_index_isSet = false;
preset_group = new QString(""); preset_group = new QString("");
m_preset_group_isSet = false; m_preset_group_isSet = false;
preset_frequency = 0L; preset_frequency = 0L;
m_preset_frequency_isSet = false; m_preset_frequency_isSet = false;
preset_description = new QString(""); preset_description = new QString("");
m_preset_description_isSet = false; m_preset_description_isSet = false;
doppler = new QList<qint32>(); doppler = new QList<QString*>();
m_doppler_isSet = false; m_doppler_isSet = false;
start_on_aos = 0; start_on_aos = 0;
m_start_on_aos_isSet = false; m_start_on_aos_isSet = false;
@ -84,9 +84,7 @@ SWGSatelliteDeviceSettings::init() {
void void
SWGSatelliteDeviceSettings::cleanup() { SWGSatelliteDeviceSettings::cleanup() {
if(device_set != nullptr) {
delete device_set;
}
if(preset_group != nullptr) { if(preset_group != nullptr) {
delete preset_group; delete preset_group;
} }
@ -94,7 +92,13 @@ SWGSatelliteDeviceSettings::cleanup() {
if(preset_description != nullptr) { if(preset_description != nullptr) {
delete preset_description; delete preset_description;
} }
if(doppler != nullptr) {
auto arr = doppler;
for(auto o: *arr) {
delete o;
}
delete doppler;
}
@ -118,7 +122,7 @@ SWGSatelliteDeviceSettings::fromJson(QString &json) {
void void
SWGSatelliteDeviceSettings::fromJsonObject(QJsonObject &pJson) { SWGSatelliteDeviceSettings::fromJsonObject(QJsonObject &pJson) {
::SWGSDRangel::setValue(&device_set, pJson["deviceSet"], "QString", "QString"); ::SWGSDRangel::setValue(&device_set_index, pJson["deviceSetIndex"], "qint32", "");
::SWGSDRangel::setValue(&preset_group, pJson["presetGroup"], "QString", "QString"); ::SWGSDRangel::setValue(&preset_group, pJson["presetGroup"], "QString", "QString");
@ -127,7 +131,7 @@ SWGSatelliteDeviceSettings::fromJsonObject(QJsonObject &pJson) {
::SWGSDRangel::setValue(&preset_description, pJson["presetDescription"], "QString", "QString"); ::SWGSDRangel::setValue(&preset_description, pJson["presetDescription"], "QString", "QString");
::SWGSDRangel::setValue(&doppler, pJson["doppler"], "QList", "qint32"); ::SWGSDRangel::setValue(&doppler, pJson["doppler"], "QList", "QString");
::SWGSDRangel::setValue(&start_on_aos, pJson["startOnAOS"], "qint32", ""); ::SWGSDRangel::setValue(&start_on_aos, pJson["startOnAOS"], "qint32", "");
::SWGSDRangel::setValue(&stop_on_los, pJson["stopOnLOS"], "qint32", ""); ::SWGSDRangel::setValue(&stop_on_los, pJson["stopOnLOS"], "qint32", "");
@ -156,8 +160,8 @@ SWGSatelliteDeviceSettings::asJson ()
QJsonObject* QJsonObject*
SWGSatelliteDeviceSettings::asJsonObject() { SWGSatelliteDeviceSettings::asJsonObject() {
QJsonObject* obj = new QJsonObject(); QJsonObject* obj = new QJsonObject();
if(device_set != nullptr && *device_set != QString("")){ if(m_device_set_index_isSet){
toJsonValue(QString("deviceSet"), device_set, obj, QString("QString")); obj->insert("deviceSetIndex", QJsonValue(device_set_index));
} }
if(preset_group != nullptr && *preset_group != QString("")){ if(preset_group != nullptr && *preset_group != QString("")){
toJsonValue(QString("presetGroup"), preset_group, obj, QString("QString")); toJsonValue(QString("presetGroup"), preset_group, obj, QString("QString"));
@ -169,7 +173,7 @@ SWGSatelliteDeviceSettings::asJsonObject() {
toJsonValue(QString("presetDescription"), preset_description, obj, QString("QString")); toJsonValue(QString("presetDescription"), preset_description, obj, QString("QString"));
} }
if(doppler && doppler->size() > 0){ if(doppler && doppler->size() > 0){
toJsonArray((QList<void*>*)doppler, obj, "doppler", ""); toJsonArray((QList<void*>*)doppler, obj, "doppler", "QString");
} }
if(m_start_on_aos_isSet){ if(m_start_on_aos_isSet){
obj->insert("startOnAOS", QJsonValue(start_on_aos)); obj->insert("startOnAOS", QJsonValue(start_on_aos));
@ -193,14 +197,14 @@ SWGSatelliteDeviceSettings::asJsonObject() {
return obj; return obj;
} }
QString* qint32
SWGSatelliteDeviceSettings::getDeviceSet() { SWGSatelliteDeviceSettings::getDeviceSetIndex() {
return device_set; return device_set_index;
} }
void void
SWGSatelliteDeviceSettings::setDeviceSet(QString* device_set) { SWGSatelliteDeviceSettings::setDeviceSetIndex(qint32 device_set_index) {
this->device_set = device_set; this->device_set_index = device_set_index;
this->m_device_set_isSet = true; this->m_device_set_index_isSet = true;
} }
QString* QString*
@ -233,12 +237,12 @@ SWGSatelliteDeviceSettings::setPresetDescription(QString* preset_description) {
this->m_preset_description_isSet = true; this->m_preset_description_isSet = true;
} }
QList<qint32>* QList<QString*>*
SWGSatelliteDeviceSettings::getDoppler() { SWGSatelliteDeviceSettings::getDoppler() {
return doppler; return doppler;
} }
void void
SWGSatelliteDeviceSettings::setDoppler(QList<qint32>* doppler) { SWGSatelliteDeviceSettings::setDoppler(QList<QString*>* doppler) {
this->doppler = doppler; this->doppler = doppler;
this->m_doppler_isSet = true; this->m_doppler_isSet = true;
} }
@ -308,7 +312,7 @@ bool
SWGSatelliteDeviceSettings::isSet(){ SWGSatelliteDeviceSettings::isSet(){
bool isObjectUpdated = false; bool isObjectUpdated = false;
do{ do{
if(device_set && *device_set != QString("")){ if(m_device_set_index_isSet){
isObjectUpdated = true; break; isObjectUpdated = true; break;
} }
if(preset_group && *preset_group != QString("")){ if(preset_group && *preset_group != QString("")){
@ -320,9 +324,6 @@ SWGSatelliteDeviceSettings::isSet(){
if(preset_description && *preset_description != QString("")){ if(preset_description && *preset_description != QString("")){
isObjectUpdated = true; break; isObjectUpdated = true; break;
} }
if(m_doppler_isSet){
isObjectUpdated = true; break;
}
if(doppler && (doppler->size() > 0)){ if(doppler && (doppler->size() > 0)){
isObjectUpdated = true; break; isObjectUpdated = true; break;
} }

View File

@ -43,8 +43,8 @@ public:
virtual void fromJsonObject(QJsonObject &json) override; virtual void fromJsonObject(QJsonObject &json) override;
virtual SWGSatelliteDeviceSettings* fromJson(QString &jsonString) override; virtual SWGSatelliteDeviceSettings* fromJson(QString &jsonString) override;
QString* getDeviceSet(); qint32 getDeviceSetIndex();
void setDeviceSet(QString* device_set); void setDeviceSetIndex(qint32 device_set_index);
QString* getPresetGroup(); QString* getPresetGroup();
void setPresetGroup(QString* preset_group); void setPresetGroup(QString* preset_group);
@ -55,8 +55,8 @@ public:
QString* getPresetDescription(); QString* getPresetDescription();
void setPresetDescription(QString* preset_description); void setPresetDescription(QString* preset_description);
QList<qint32>* getDoppler(); QList<QString*>* getDoppler();
void setDoppler(QList<qint32>* doppler); void setDoppler(QList<QString*>* doppler);
qint32 getStartOnAos(); qint32 getStartOnAos();
void setStartOnAos(qint32 start_on_aos); void setStartOnAos(qint32 start_on_aos);
@ -80,8 +80,8 @@ public:
virtual bool isSet() override; virtual bool isSet() override;
private: private:
QString* device_set; qint32 device_set_index;
bool m_device_set_isSet; bool m_device_set_index_isSet;
QString* preset_group; QString* preset_group;
bool m_preset_group_isSet; bool m_preset_group_isSet;
@ -92,7 +92,7 @@ private:
QString* preset_description; QString* preset_description;
bool m_preset_description_isSet; bool m_preset_description_isSet;
QList<qint32>* doppler; QList<QString*>* doppler;
bool m_doppler_isSet; bool m_doppler_isSet;
qint32 start_on_aos; qint32 start_on_aos;