/////////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2017 Edouard Griffiths, F4EXB // // Copyright (C) 2020 Jon Beniston, M7RCE // // // // 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 . // /////////////////////////////////////////////////////////////////////////////////// #ifndef PLUGINS_CHANNELRX_DEMODADSB_ADSBDEMODSETTINGS_H_ #define PLUGINS_CHANNELRX_DEMODADSB_ADSBDEMODSETTINGS_H_ #include #include #include #include #include "dsp/dsptypes.h" class Serializable; // Number of columns in the table #define ADSBDEMOD_COLUMNS 34 // ADS-B table columns #define ADSB_COL_ICAO 0 #define ADSB_COL_CALLSIGN 1 #define ADSB_COL_MODEL 2 #define ADSB_COL_AIRLINE 3 #define ADSB_COL_ALTITUDE 4 #define ADSB_COL_SPEED 5 #define ADSB_COL_HEADING 6 #define ADSB_COL_VERTICALRATE 7 #define ADSB_COL_RANGE 8 #define ADSB_COL_AZEL 9 #define ADSB_COL_LATITUDE 10 #define ADSB_COL_LONGITUDE 11 #define ADSB_COL_CATEGORY 12 #define ADSB_COL_STATUS 13 #define ADSB_COL_SQUAWK 14 #define ADSB_COL_REGISTRATION 15 #define ADSB_COL_COUNTRY 16 #define ADSB_COL_REGISTERED 17 #define ADSB_COL_MANUFACTURER 18 #define ADSB_COL_OWNER 19 #define ADSB_COL_OPERATOR_ICAO 20 #define ADSB_COL_TIME 21 #define ADSB_COL_FRAMECOUNT 22 #define ADSB_COL_CORRELATION 23 #define ADSB_COL_RSSI 24 #define ADSB_COL_FLIGHT_STATUS 25 #define ADSB_COL_DEP 26 #define ADSB_COL_ARR 27 #define ADSB_COL_STD 28 #define ADSB_COL_ETD 29 #define ADSB_COL_ATD 30 #define ADSB_COL_STA 31 #define ADSB_COL_ETA 32 #define ADSB_COL_ATA 33 struct ADSBDemodSettings { struct NotificationSettings { int m_matchColumn; QString m_regExp; QString m_speech; QString m_command; QRegularExpression m_regularExpression; bool m_autoTarget; NotificationSettings(); void updateRegularExpression(); }; int32_t m_inputFrequencyOffset; Real m_rfBandwidth; Real m_correlationThreshold; //!< Correlation power threshold in dB int m_samplesPerBit; int m_removeTimeout; //!< Time in seconds before removing an aircraft, unless a new frame is received bool m_feedEnabled; QString m_feedHost; uint16_t m_feedPort; enum FeedFormat { BeastBinary, BeastHex } m_feedFormat; quint32 m_rgbColor; QString m_title; int m_streamIndex; //!< MIMO channel. Not relevant when connected to SI (single Rx). bool m_useReverseAPI; QString m_reverseAPIAddress; uint16_t m_reverseAPIPort; uint16_t m_reverseAPIDeviceIndex; uint16_t m_reverseAPIChannelIndex; int m_columnIndexes[ADSBDEMOD_COLUMNS];//!< How the columns are ordered in the table int m_columnSizes[ADSBDEMOD_COLUMNS]; //!< Size of the coumns in the table Serializable *m_channelMarker; float m_airportRange; //!< How far away should we display airports (km) enum AirportType { Small, Medium, Large, Heliport } m_airportMinimumSize; //!< What's the minimum size airport that should be displayed bool m_displayHeliports; //!< Whether to display heliports on the map bool m_flightPaths; //!< Whether to display flight paths bool m_allFlightPaths; //!< Whether to display flight paths for all aircraft bool m_siUnits; //!< Uses m,kph rather than ft/knts QString m_tableFontName; //!< Font to use for table int m_tableFontSize; bool m_displayDemodStats; bool m_correlateFullPreamble; bool m_demodModeS; //!< Demodulate all Mode-S frames, not just ADS-B int m_deviceIndex; //!< Device to set to ATC frequencies bool m_autoResizeTableColumns; int m_interpolatorPhaseSteps; float m_interpolatorTapsPerPhase; QList m_notificationSettings; QString m_apiKey; //!< aviationstack.com API key QString m_logFilename; bool m_logEnabled; QStringList m_airspaces; //!< Airspace names to display float m_airspaceRange; //!< How far away we display airspace (mkm) enum MapType { AVIATION_LIGHT, //!< White map with no place names AVIATION_DARK, STREET, SATELLITE } m_mapType; bool m_displayNavAids; bool m_displayPhotos; ADSBDemodSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } QByteArray serialize() const; bool deserialize(const QByteArray& data); QByteArray serializeNotificationSettings(QList notificationSettings) const; void deserializeNotificationSettings(const QByteArray& data, QList& notificationSettings); }; #endif /* PLUGINS_CHANNELRX_DEMODADSB_ADSBDEMODSETTINGS_H_ */