File indexing completed on 2024-05-12 11:43:55
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2012 Ralf Habacker <ralf.habacker@freenet.de> 0004 0005 #ifndef FLIGHTGEARPOSITIONPROVIDERPLUGIN_H 0006 #define FLIGHTGEARPOSITIONPROVIDERPLUGIN_H 0007 0008 #include "PositionProviderPlugin.h" 0009 0010 #include "GeoDataAccuracy.h" 0011 #include "GeoDataCoordinates.h" 0012 #include <QDateTime> 0013 0014 class QUdpSocket; 0015 0016 namespace Marble 0017 { 0018 0019 class FlightGearPositionProviderPlugin : public PositionProviderPlugin 0020 { 0021 Q_OBJECT 0022 Q_PLUGIN_METADATA(IID "org.kde.marble.FlightGearPositionProviderPlugin") 0023 Q_INTERFACES( Marble::PositionProviderPluginInterface ) 0024 0025 public: 0026 FlightGearPositionProviderPlugin(); 0027 ~FlightGearPositionProviderPlugin() override; 0028 0029 QString name() const override; 0030 QString nameId() const override; 0031 QString guiString() const override; 0032 QString version() const override; 0033 QString description() const override; 0034 QString copyrightYears() const override; 0035 QVector<PluginAuthor> pluginAuthors() const override; 0036 QIcon icon() const override; 0037 void initialize() override; 0038 bool isInitialized() const override; 0039 0040 PositionProviderPlugin * newInstance() const override; 0041 0042 PositionProviderStatus status() const override; 0043 GeoDataCoordinates position() const override; 0044 GeoDataAccuracy accuracy() const override; 0045 QString error() const override; 0046 qreal speed() const override; 0047 qreal direction() const override; 0048 QDateTime timestamp() const override; 0049 0050 private Q_SLOTS: 0051 void readPendingDatagrams(); 0052 0053 private: 0054 void parseNmeaSentence(const QString &sentence); 0055 static double parsePosition(const QString &value, bool isNegative); 0056 QUdpSocket* m_socket; 0057 PositionProviderStatus m_status; 0058 GeoDataCoordinates m_position; 0059 GeoDataAccuracy m_accuracy; 0060 qreal m_speed; 0061 qreal m_track; 0062 QDateTime m_timestamp; 0063 }; 0064 0065 } 0066 0067 #endif // FLIGHTGEARPOSITIONPROVIDERPLUGIN_H