File indexing completed on 2024-04-28 03:50:07

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