1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-05 15:34:57 -04:00

Star Tracker. Add support for tracking satellites. Fix settings keys.

This commit is contained in:
Jon Beniston
2023-05-23 22:32:26 +01:00
parent aba0e30a4f
commit 302c040515
9 changed files with 223 additions and 19 deletions
+79 -8
View File
@@ -214,10 +214,67 @@ bool StarTrackerGUI::handleMessage(const Message& message)
}
return true;
}
else if (StarTracker::MsgReportAvailableSatelliteTrackers::match(message))
{
StarTracker::MsgReportAvailableSatelliteTrackers& report = (StarTracker::MsgReportAvailableSatelliteTrackers&) message;
updateSatelliteTrackerList(report.getFeatures());
return true;
}
return false;
}
void StarTrackerGUI::updateSatelliteTrackerList(const QList<StarTrackerSettings::AvailableFeature>& satelliteTrackers)
{
// Update list of satellite trackers
ui->target->blockSignals(true);
// Remove Satellite Trackers no longer available
for (int i = 0; i < ui->target->count(); )
{
QString text = ui->target->itemText(i);
bool found = false;
if (text.contains("SatelliteTracker"))
{
for (const auto& satelliteTracker : satelliteTrackers)
{
if (satelliteTracker.getName() == text)
{
found = true;
break;
}
}
if (!found) {
ui->target->removeItem(i);
} else {
i++;
}
}
else
{
i++;
}
}
// Add new Satellite Trackers
for (const auto& satelliteTracker : satelliteTrackers)
{
QString name = satelliteTracker.getName();
if (ui->target->findText(name) == -1) {
ui->target->addItem(name);
}
}
// Satellite Tracker feature can be created after this plugin, so select it
// if the chosen tracker appears
int index = ui->target->findText(m_settings.m_target);
if (index >= 0) {
ui->target->setCurrentIndex(index);
}
ui->target->blockSignals(false);
}
void StarTrackerGUI::handleInputMessages()
{
Message* message;
@@ -568,7 +625,7 @@ void StarTrackerGUI::on_declination_editingFinished()
void StarTrackerGUI::on_azimuth_valueChanged(double value)
{
m_settings.m_az = value;
m_settingsKeys.append("az");
m_settingsKeys.append("azimuth");
applySettings();
plotChart();
}
@@ -576,7 +633,7 @@ void StarTrackerGUI::on_azimuth_valueChanged(double value)
void StarTrackerGUI::on_elevation_valueChanged(double value)
{
m_settings.m_el = value;
m_settingsKeys.append("el");
m_settingsKeys.append("elevation");
applySettings();
plotChart();
}
@@ -691,7 +748,14 @@ void StarTrackerGUI::updateForTarget()
on_rightAscension_editingFinished();
on_declination_editingFinished();
}
if (m_settings.m_target != "Custom Az/El")
if (m_settings.m_target.contains("SatelliteTracker"))
{
ui->azimuth->setReadOnly(true);
ui->elevation->setReadOnly(true);
ui->rightAscension->setReadOnly(true);
ui->declination->setReadOnly(true);
}
else if (m_settings.m_target != "Custom Az/El")
{
ui->azimuth->setReadOnly(true);
ui->elevation->setReadOnly(true);
@@ -710,11 +774,14 @@ void StarTrackerGUI::updateForTarget()
void StarTrackerGUI::on_target_currentTextChanged(const QString &text)
{
m_settings.m_target = text;
m_settingsKeys.append("target");
applySettings();
updateForTarget();
plotChart();
if (!text.isEmpty())
{
m_settings.m_target = text;
m_settingsKeys.append("target");
applySettings();
updateForTarget();
plotChart();
}
}
void StarTrackerGUI::updateLST()
@@ -1672,6 +1739,8 @@ void StarTrackerGUI::plotElevationLineChart()
if (maxElevation < 0) {
m_azElLineChart->setTitle("Not visible from this latitude");
} else if (m_settings.m_target.contains("SatelliteTracker")) {
m_azElLineChart->setTitle("See Satellite Tracker for chart that accounts for satellite's movement");
} else {
m_azElLineChart->setTitle("");
}
@@ -2027,6 +2096,8 @@ void StarTrackerGUI::plotElevationPolarChart()
if (maxElevation < 0) {
m_azElPolarChart->setTitle("Not visible from this latitude");
} else if (m_settings.m_target.contains("SatelliteTracker")) {
m_azElPolarChart->setTitle("See Satellite Tracker for chart that accounts for satellite's movement");
} else {
m_azElPolarChart->setTitle("");
}