/** * Send / Receive telegrams to/from Wls * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2016-09-26 */ #pragma once #include #include #include #include // tr_lts #include "logger.h" class QTimer; namespace WlsTetra { class WlsHandlerRx; class WlsHandlerTx; class WlsDispatcher final : public TrainingAreaBase::Plugin::Interface { Q_OBJECT public: WlsDispatcher(TrainingAreaBase::Plugin::DataProvider *pdp, const std::shared_ptr &recvFromTabCb, NGL::Settings *settings); public Q_SLOTS: bool init() override; public: std::shared_ptr sendToTab() override; bool isDebugInterface() const override { return false; } bool canSendData() const override; void exerciseChanged() override { return; } const char *name() const override { return tr_lts("dds", "WLS"); } public Q_SLOTS: void onWlsConnected(); void onWlsDisconnected(); void onWlsExternalConnectionStateChanged(bool bConnected); void onWebSocketError(); void onTextMessageReceived(const QString &message); void onParticipantLicenseChange(const TrainingAreaBase::TetraIcd::ParticipantLicenseChange &lc); Q_SIGNALS: void broadcastTelegramsRequest(int equipmentNumber, int broadcastIndex, int resetCounter); void wlsTelegramReceived(const TrainingAreaBase::TetraIcd::TrainingAreaTelegram *tele); void wlsTelegramSent(const TrainingAreaBase::TetraIcd::TrainingAreaTelegram *tele); private: QUrl webSocketUrl() const; private: std::shared_ptr m_recvFromTabCb; std::shared_ptr m_recvFromWls; std::shared_ptr m_sendToWls; NGL::Settings *m_settings; QWebSocket *m_webSocket; QTimer *m_webSocketReconnectTimer; bool m_bWarnedOnce; NGL::INGLLogger &m_logger; }; } // namespace WlsTetra