/** * MainHandler for HighLevelArchitecture * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2017-04-07 */ #pragma once #include #include #include "dds_handler.h" #include "ppm_handler.h" #include "aes_handler.h" #include "ngs_handler.h" #include #include namespace HighLevelArchitecture { class SocketReader; class NgsHandler : public QObject { Q_OBJECT public: explicit NgsHandler(QObject *parent = nullptr); ~NgsHandler(); bool init(const std::shared_ptr &ddsHandler); std::shared_ptr ddsHandler() const { return m_ddsHandler; } std::shared_ptr ngsConnector() const { return m_ngsConnector; } std::shared_ptr ppmHandler() const { return m_ppmHandler; } std::shared_ptr aesHandler() const { return m_aesHandler; } bool isConnectedToHla() const; Q_SIGNALS: // HLA -> TAB void externalEquipmentNumberAdded(int equipNo); void externalEquipmentNumberRemoved(int equipNo); // TAB -> HLA void participantInitRequest(const TrainingAreaBase::TetraIcd::Init &request); void participantVulnerabilityStateRequest(const TrainingAreaBase::TetraIcd::DemandVulnerabilityStateChange &request); void participantCesHitInformationRequest(const TrainingAreaBase::TetraIcd::CesHitInformation &request); private slots: void onFirstTickFinished(); // SocketReader -> HLA void onNewSocketReaderData(const QByteArray &data, int hlaRequestIdentifier); private: void initSocketReaders(); void deInitSocketReaders(); std::shared_ptr m_ddsHandler; std::shared_ptr m_ppmHandler; std::shared_ptr m_aesHandler; std::shared_ptr m_ngsConnector; QList m_socketReaders; LOGGER_T m_logger; }; } // namespace HighLevelArchitecture