Skip to content
Snippets Groups Projects
GPSManager.h 1.3 KiB
Newer Older
  • Learn to ignore specific revisions
  • /****************************************************************************
     *
     *   (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
     *
     * QGroundControl is licensed according to the terms in the file
     * COPYING.md in the root of the source code directory.
     *
     ****************************************************************************/
    
    
    
    #pragma once
    
    #include "GPSProvider.h"
    #include "RTCM/RTCMMavlink.h"
    #include <QGCToolbox.h>
    
    #include <QString>
    #include <QObject>
    
    /**
     ** class GPSManager
     * handles a GPS provider and RTK
     */
    class GPSManager : public QGCTool
    {
        Q_OBJECT
    public:
    
        GPSManager(QGCApplication* app, QGCToolbox* toolbox);
    
        void connectGPS     (const QString& device);
        void disconnectGPS  (void);
        bool connected      (void) const { return _gpsProvider && _gpsProvider->isRunning(); }
    
    signals:
        void onConnect();
        void onDisconnect();
        void surveyInStatus(float duration, float accuracyMM, bool valid, bool active);
        void satelliteUpdate(int numSats);
    
    
    private slots:
        void GPSPositionUpdate(GPSPositionMessage msg);
        void GPSSatelliteUpdate(GPSSatelliteMessage msg);
    
    
        GPSProvider* _gpsProvider = nullptr;
        RTCMMavlink* _rtcmMavlink = nullptr;
    
        std::atomic_bool _requestGpsStop; ///< signals the thread to quit
    };