/** * @RDE_HEADER@ * TTCI-Server Library * $Id$ * $HeadURL$ * $Author$ * Created by Patric Karwat, NLS, 2019-01-17 */ #pragma once #include #include #include #include #include namespace NGL { class INGLLogger; } namespace TrainingAreaBaseOC { // a connection to a PU over TTCI class Device : public QObject { Q_OBJECT public: explicit Device(QObject *parent = nullptr, bool tcpMode = false); virtual ~Device(); bool close(); QString portName() const; QTcpSocket *port() { return m_socket; } bool isOpen() const; bool writeData(const QChar destination, const QByteArray &payload); signals: void dataAvailable(const QByteArray &payload); void disconnectedFromEq(); public slots: void onDataAvailable(); void reOpen(); bool open(); void handleError(QAbstractSocket::SocketError error); void handleSerialError(QSerialPort::SerialPortError error); protected: void parseBuffer(); static unsigned char calcChecksum(const QByteArray &checksumData); private: LtsSerialPortQuerry::LtsSerialPortQuerry *m_spQuerry = nullptr; QTcpSocket *m_socket = nullptr; QSerialPort *m_serialPort = nullptr; QByteArray m_buffer; QByteArray m_payload; QTimer *m_restartTimer = nullptr; QTimer *m_receiveTimeoutTimer = nullptr; int m_errCnt = 0; bool m_tcpMode = false; NGL::INGLLogger &m_logger; }; } // namespace TrainingAreaBaseOC