1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-11-23 08:28:36 -05:00
sdrangel/plugins/feature/satellitetracker/satellitetrackersettings.h
Jon Beniston 04aed0b3b3 Satellite Tracker updates.
Add support for replaying of passes in the past, where current time is
determined from File Input device.
Add latitude and longitude to satellite data table.
Update ground track generation to better work with 3D map.
Add support for 3D models.
Add Cubesat image for 2D map.
Send LOS to other plugins, when no device settings are setup.
Pass TLEs to other plugins, so they can use a consistent copy for
replays.
2022-02-04 17:14:12 +00:00

108 lines
6.2 KiB
C++

///////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2021 Jon Beniston, M7RCE //
// Copyright (C) 2020 Edouard Griffiths, F4EXB //
// //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation as version 3 of the License, or //
// (at your option) any later version. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License V3 for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
///////////////////////////////////////////////////////////////////////////////////
#ifndef INCLUDE_FEATURE_SATELLITETRACKERSETTINGS_H_
#define INCLUDE_FEATURE_SATELLITETRACKERSETTINGS_H_
#include <QByteArray>
#include <QString>
#include <QHash>
#include <QList>
#include <QTime>
class Serializable;
#define SAT_COL_COLUMNS 18
struct SatelliteTrackerSettings
{
struct SatelliteDeviceSettings
{
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
quint64 m_presetFrequency;
QString m_presetDescription;
QList<int> m_doppler; //!< Which channels to apply Doppler correction to, if any
bool m_startOnAOS; //!< Start acquistion on AOS
bool m_stopOnLOS; //!< Stop acquistion on LOS
bool m_startStopFileSink; //!< Start&stop file sinks recording on AOS/LOS
quint64 m_frequency; //!< Optional center frequency to set (in Hz), to override preset value
QString m_aosCommand; //!< Command/script to execute on AOS
QString m_losCommand; //!< Command/script to execute on LOS
SatelliteDeviceSettings();
};
double m_latitude; //!< Antenna location, degrees
double m_longitude;
double m_heightAboveSeaLevel; //!< In metres
QString m_target; //!< Target satellite
QList<QString> m_satellites; //!< Selected satellites
QList<QString> m_tles; //!< TLE URLs
QString m_dateTime; //!< Date/time for observation, or "" for now (UTC or local as per m_utc)
int m_minAOSElevation; //!< Minimum elevation for AOS
int m_minPassElevation; //!< Minimum elevation for a pass
int m_rotatorMaxAzimuth; //!< Maximum rotator azimuth 360/450
int m_rotatorMaxElevation; //!< Maximum rotator elevation 90/180
enum AzElUnits {DMS, DM, D, Decimal} m_azElUnits;
int m_groundTrackPoints; //!< Number of points in ground tracks
QString m_dateFormat; //!< Format used for displaying dates in the GUI
bool m_utc; //!< Set/display times as UTC rather than local
float m_updatePeriod; //!< How long in seconds between updates of satellite's position
float m_dopplerPeriod; //!< How long in seconds between Doppler corrections
int m_predictionPeriod; //!< How many days ahead to predict passes in
QTime m_passStartTime; //!< Time after which pass must start
QTime m_passFinishTime; //!< Time before which pass must finish
float m_defaultFrequency; //!< Frequency used for Doppler & path loss calculation in satellite table
bool m_drawOnMap;
bool m_autoTarget; //!< Automatically select target on AOS
QString m_aosSpeech; //!< Text to say on AOS
QString m_losSpeech; //!< Text to say on LOS
QString m_aosCommand; //!< Command/script to execute on AOS
QString m_losCommand; //!< Command/script to execute on LOS
bool m_chartsDarkTheme; //!< Set dark theme for charts (effective for GUI only)
QHash<QString, QList<SatelliteDeviceSettings *> *> m_deviceSettings; //!< Settings for each device set for each satellite
bool m_replayEnabled; //!< Replay a pass in the past, by setting date and time to m_replayStartDateTime
QDateTime m_replayStartDateTime; //!< Time to start the replay at
bool m_useFileInputTime; //!< Get time from FileInput device
bool m_sendTimeToMap; //!< Send time to map when start pressed
int m_columnIndexes[SAT_COL_COLUMNS];//!< How the columns are ordered in the table
int m_columnSizes[SAT_COL_COLUMNS]; //!< Size of the coumns in the table
QString m_title;
quint32 m_rgbColor;
bool m_useReverseAPI;
QString m_reverseAPIAddress;
uint16_t m_reverseAPIPort;
uint16_t m_reverseAPIFeatureSetIndex;
uint16_t m_reverseAPIFeatureIndex;
Serializable *m_rollupState;
SatelliteTrackerSettings();
void resetToDefaults();
QByteArray serialize() const;
bool deserialize(const QByteArray& data);
void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; }
QByteArray serializeStringList(const QList<QString>& strings) const;
void deserializeStringList(const QByteArray& data, QList<QString>& strings);
QByteArray serializeDeviceSettings(QHash<QString, QList<SatelliteDeviceSettings *> *> deviceSettings) const;
void deserializeDeviceSettings(const QByteArray& data, QHash<QString, QList<SatelliteDeviceSettings *> *>& deviceSettings);
};
#endif // INCLUDE_FEATURE_SATELLITETRACKERSETTINGS_H_