2021-01-13 15:51:38 -05:00
///////////////////////////////////////////////////////////////////////////////////
// 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_STARTRACKERSETTINGS_H_
# define INCLUDE_FEATURE_STARTRACKERSETTINGS_H_
# include <QByteArray>
# include <QString>
# include "util/message.h"
class Serializable ;
struct StarTrackerSettings
{
2023-05-23 17:32:26 -04:00
struct AvailableFeature
{
int m_featureSetIndex ;
int m_featureIndex ;
QString m_type ;
AvailableFeature ( ) = default ;
AvailableFeature ( const AvailableFeature & ) = default ;
AvailableFeature & operator = ( const AvailableFeature & ) = default ;
bool operator = = ( const AvailableFeature & a ) const {
return ( m_featureSetIndex = = a . m_featureSetIndex ) & & ( m_featureIndex = = a . m_featureIndex ) & & ( m_type = = a . m_type ) ;
}
QString getName ( ) const {
return QString ( " F%1:%2 %3 " ) . arg ( m_featureSetIndex ) . arg ( m_featureIndex ) . arg ( m_type ) ;
}
} ;
2021-01-13 15:51:38 -05:00
QString m_ra ;
QString m_dec ;
double m_latitude ;
double m_longitude ;
QString m_target ; // Sun, Moon, Custom
QString m_dateTime ; // Date/time for observation, or "" for now
QString m_refraction ; // Refraction correction. "None", "Saemundsson" or "Positional Astronomy Library"
double m_pressure ; // Air pressure in millibars
double m_temperature ; // Air temperature in C
double m_humidity ; // Humidity in %
double m_heightAboveSeaLevel ; // In metres
double m_temperatureLapseRate ; // In K/km
double m_frequency ; // Observation frequency in Hz
2021-10-12 06:07:56 -04:00
double m_beamwidth ; // Halfpower beamwidth in degrees
2021-01-13 15:51:38 -05:00
uint16_t m_serverPort ;
bool m_enableServer ; // Enable Stellarium server
2021-05-24 08:22:38 -04:00
enum AzElUnits { DMS , DM , D , Decimal } m_azElUnits ; // This needs to match DMSSpinBox::DisplayUnits
2021-01-29 07:57:58 -05:00
enum SolarFluxData { DRAO_2800 , L_245 , L_410 , L_610 , L_1415 , L2695 , L_4995 , L_8800 , L_15400 , TARGET_FREQ } m_solarFluxData ; // What Solar flux density data to display
2021-01-22 11:58:24 -05:00
enum SolarFluxUnits { SFU , JANSKY , WATTS_M_HZ } m_solarFluxUnits ;
2021-01-13 15:51:38 -05:00
float m_updatePeriod ;
bool m_jnow ; // Use JNOW epoch rather than J2000
bool m_drawSunOnMap ;
bool m_drawMoonOnMap ;
bool m_drawStarOnMap ;
2021-04-19 20:27:43 -04:00
bool m_chartsDarkTheme ; // Dark theme for charts
2021-01-13 15:51:38 -05:00
QString m_title ;
quint32 m_rgbColor ;
bool m_useReverseAPI ;
QString m_reverseAPIAddress ;
uint16_t m_reverseAPIPort ;
uint16_t m_reverseAPIFeatureSetIndex ;
uint16_t m_reverseAPIFeatureIndex ;
2021-10-12 06:07:56 -04:00
double m_az ; // Azimuth for Custom Az/El
double m_el ; // Elevation for Custom Az/El
double m_l ; // Galactic longitude for Custom l/b
double m_b ; // Galactic lattiude for Custom l/b
bool m_link ; // Link settings to Radio Astronomy plugin
QString m_owmAPIKey ; // API key for openweathermap.org
int m_weatherUpdatePeriod ; // Time in minutes between weather updates
2023-03-30 11:48:02 -04:00
double m_azimuthOffset ;
double m_elevationOffset ;
2021-10-12 06:07:56 -04:00
bool m_drawSunOnSkyTempChart ;
bool m_drawMoonOnSkyTempChart ;
2022-01-08 23:27:12 -05:00
Serializable * m_rollupState ;
2022-04-05 10:26:57 -04:00
int m_workspaceIndex ;
QByteArray m_geometryBytes ;
2023-04-03 11:53:51 -04:00
enum Rotators { ALL_ROTATORS , NO_ROTATORS , MATCHING_TARGET } m_drawRotators ; //!< Which rotators to draw on polar chart
2021-01-13 15:51:38 -05:00
StarTrackerSettings ( ) ;
void resetToDefaults ( ) ;
QByteArray serialize ( ) const ;
bool deserialize ( const QByteArray & data ) ;
2022-01-08 23:27:12 -05:00
void setRollupState ( Serializable * rollupState ) { m_rollupState = rollupState ; }
2022-11-30 01:21:59 -05:00
void applySettings ( const QStringList & settingsKeys , const StarTrackerSettings & settings ) ;
QString getDebugString ( const QStringList & settingsKeys , bool force = false ) const ;
2021-10-12 06:07:56 -04:00
static const QStringList m_pipeTypes ;
static const QStringList m_pipeURIs ;
2021-01-13 15:51:38 -05:00
} ;
# endif // INCLUDE_FEATURE_STARTRACKERSETTINGS_H_