mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-03 13:11:20 -05:00 
			
		
		
		
	SatelliteTracker: use device set index. API: fixed doppler channels
This commit is contained in:
		
							parent
							
								
									3e6fe8afef
								
							
						
					
					
						commit
						59937d9a1c
					
				@ -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();
 | 
				
			||||||
 | 
				
			|||||||
@ -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;
 | 
				
			||||||
 | 
				
			|||||||
@ -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);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -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();
 | 
				
			||||||
 | 
				
			|||||||
@ -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;
 | 
				
			||||||
 | 
				
			|||||||
@ -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;
 | 
				
			||||||
 | 
				
			|||||||
@ -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);
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -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>
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
				
			||||||
 | 
				
			|||||||
@ -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>
 | 
				
			||||||
 | 
				
			|||||||
@ -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;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -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;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user