/** * Read XDR telegrams from a directory and convert it to EtsTetraIcd structures * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2016-04-14 */ #pragma once #include #include #include #include "logger.h" class QTimer; namespace WlsTetra { class TetraHandlerRx : public QObject { Q_OBJECT public: explicit TetraHandlerRx(const std::shared_ptr &rxHandler); bool handleTelegram(const QByteArray &baJson); void resetConnection() { m_bWaitForInitialAck = true; } Q_SIGNALS: void tetraConnectionChanged(bool bConnected); void participantLicenseChange(const TrainingAreaBase::TetraIcd::ParticipantLicenseChange &lc); void initialAckReceived(); void txData(const TrainingAreaBase::TetraIcd::Acknowledge &ack); private Q_SLOTS: void onAckTimeout(); private: void handleAcknowledge(qint64 timeStamp, int counter); template void rxData(const T &data); protected: const std::shared_ptr m_rxHandler; QTimer *m_ackTimer; int m_receiveCounter; bool m_bWarnedOnce; bool m_bWaitForInitialAck; NGL::INGLLogger &m_logger; }; } // namespace WlsTetra