/**************************************************************************** * * (c) 2009-2016 QGROUNDCONTROL PROJECT * * 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 #include #include /** ** class GPSManager * handles a GPS provider and RTK */ class GPSManager : public QGCTool { Q_OBJECT public: GPSManager(QGCApplication* app, QGCToolbox* toolbox); ~GPSManager(); void connectGPS(const QString& device); 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); private: void cleanup(); GPSProvider* _gpsProvider = nullptr; RTCMMavlink* _rtcmMavlink = nullptr; std::atomic_bool _requestGpsStop; ///< signals the thread to quit };