/**************************************************************************** * * (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 "LifetimeChecker.h" #include "AirMapSharedState.h" #include #include #include /// Class to send telemetry data to AirMap class AirMapTelemetry : public QObject, public LifetimeChecker { Q_OBJECT public: AirMapTelemetry (AirMapSharedState& shared); virtual ~AirMapTelemetry () = default; void startTelemetryStream (const QString& flightID); void stopTelemetryStream (); bool isTelemetryStreaming (); signals: void error (const QString& what, const QString& airmapdMessage, const QString& airmapdDetails); public slots: void vehicleMessageReceived (const mavlink_message_t& message); private: void _handleGlobalPositionInt (const mavlink_message_t& message); void _handleGPSRawInt (const mavlink_message_t& message); enum class State { Idle, StartCommunication, EndCommunication, Streaming, }; State _state = State::Idle; AirMapSharedState& _shared; std::string _key; ///< key for AES encryption (16 bytes) QString _flightID; float _lastHdop = 1.f; QElapsedTimer _timerLastSent; };