Files
qt5-legatus-legacy/Lts/Proxies/TrainingAreaBase/Plugins/WlsTetra/tetra_handler_rx.h
T
2026-08-13 18:33:10 +02:00

50 lines
1.2 KiB
C++
Executable File

/**
* 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 <TrainingAreaBase/recv_from_tab.h>
#include <QObject>
#include <memory>
#include "logger.h"
class QTimer;
namespace WlsTetra
{
class TetraHandlerRx : public QObject
{
Q_OBJECT
public:
explicit TetraHandlerRx(const std::shared_ptr<TrainingAreaBase::RecvFromTab> &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<typename T>
void rxData(const T &data);
protected:
const std::shared_ptr<TrainingAreaBase::RecvFromTab> m_rxHandler;
QTimer *m_ackTimer;
int m_receiveCounter;
bool m_bWarnedOnce;
bool m_bWaitForInitialAck;
NGL::INGLLogger &m_logger;
};
} // namespace WlsTetra