/** * Send / Receive telegrams to/from PrtCnv * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2016-09-26 */ #pragma once #include #include #include #include #include #include #include #include // tr_lts #include "logger.h" namespace Nmea { class NmeaHandlerRx; class NmeaHandlerTx; class NmeaDispatcher final : public TrainingAreaBase::Plugin::Interface { Q_OBJECT public: explicit NmeaDispatcher(TrainingAreaBase::Plugin::DataProvider *pdp, const std::shared_ptr &recvFromTabCb, NGL::Settings *settings); public slots: bool init() override; public: std::shared_ptr sendToTab() override; bool isDebugInterface() const override { return false; } bool canSendData() const override; void exerciseChanged() override; const char *name() const override { return tr_lts("dds", "TETRA"); } private slots: void connected(); void disconnected(); void bytesWritten(qint64 bytes); void readyRead(); void reconnectTimerSlot(); private: void reconnect(); QString getNmeaHost(); int getNmeaPort(); private: std::shared_ptr m_rxHandler; std::shared_ptr m_txHandler; TrainingAreaBase::Plugin::DataProvider *m_dataProvider; int m_nmeaPort; QString m_nmeaHost; QUdpSocket *m_socket; QTimer *m_reconnectTimer; NGL::INGLLogger &m_logger; NGL::Settings *m_settings; }; } // namespace WlsTetra