/** * 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 // tr_lts #include "tetra_prtcnv.h" #include "logger.h" namespace WlsTetra { class TetraHandlerRx; class TetraHandlerTx; class TetraDispatcher final : public TrainingAreaBase::Plugin::Interface { Q_OBJECT public: explicit TetraDispatcher(TrainingAreaBase::Plugin::DataProvider *pdp, const std::shared_ptr &recvFromTabCb); public Q_SLOTS: bool init() override; void onBroadcastTelegramsRequest(int equipmentNumber, int broadcastIndex, int resetCounter); void onWlsTelegramReceived(const TrainingAreaBase::TetraIcd::TrainingAreaTelegram *tele); void onWlsTelegramSent(const TrainingAreaBase::TetraIcd::TrainingAreaTelegram *tele); Q_SIGNALS: void participantLicenseChange(const TrainingAreaBase::TetraIcd::ParticipantLicenseChange &lc); 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: bool init(PrtCnv::PrtCnvApplication *prtCnvApp); private Q_SLOTS: void onTetraConnectionChanged(bool bConnected); void onSendInitialData(); private: void disconnectSocket(QWebSocket *s); private: std::shared_ptr m_rxHandler; std::shared_ptr m_txHandler; TetraPrtCnv *m_tetraPrtCnv; TrainingAreaBase::Plugin::DataProvider *m_dataProvider; NGL::INGLLogger &m_logger; }; } // namespace WlsTetra