#pragma once #include #include #include #include #include class QTcpSocket; class QTimer; class TetraIF : public QObject { Q_OBJECT public: TetraIF(const QHostAddress &addr, unsigned short port, unsigned short issi); void start(); void listenMode(const QStringList &args); void randomMode(const QStringList &args); void fileMode(const QStringList &args); static void usage(); protected Q_SLOTS: void onConnected(); void onDisconnected(); void onReadyRead(); void onError(QAbstractSocket::SocketError); void onSendData(); protected: void doInitialLogin(); void handleReceivedTelegram(const QByteArray &data); void handleRegisterRsp(const uint8_t a_registrationStatus); void dumpData(const QByteArray &data); void parseISSIs(const QStringList &issiList); void handleDataIndReq(const QByteArray &data); void handleLoginTelegram(N_CoPrtCnv::CoPrtCnvRadioTelegram *a_loginTelegram); bool sendLoginResponse(const uint32_t a_ISSI); QString getIssisAsString() const; void setupTimer(); protected: QHostAddress m_addr; unsigned short m_port; unsigned short m_issi; QTcpSocket *m_socket; int m_count; int m_telegramsPerSecond; int m_telegramsInCurSecond; int m_secondFragment; QByteArray m_data; QList m_issiList; QTimer *m_timer; uint8_t m_SendCounter; QString m_outputDir; NGL::INGLLogger &m_logger; };