/** * MainHandler for TetraRadio * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2016-04-14 */ #pragma once #include #include #include "exm_handler.h" #include "ism_handler.h" #include "pdm_handler.h" #include "ppm_handler.h" #include "tab_db.h" #include "dds_handler.h" #include "position_handler.h" #include "send_to_dds.h" #include "recv_from_dds_aes.h" #include "recv_from_dds_fts.h" #include "send_to_tab.h" #include "tx_mixin.h" #include #include "tab_plugin_interface.h" #include "WebSocketInterface/websocket_interface_handler.h" #include #include "logger.h" namespace NGLDB { template class DbServiceHandler; } namespace LtsPluginManager { struct PluginInstance; } namespace TrainingAreaBase { using DbHandler = NGLDB::DbServiceHandler; class MainHandler final : public QObject, public Plugin::DataProvider { Q_OBJECT public: explicit MainHandler(QObject *parent = nullptr); ~MainHandler(); bool init(int domainId, int exerciseId); std::shared_ptr ddsHandler() const { return m_ddsHandler; } std::shared_ptr dbHandler() const { return m_dbHandler; } std::shared_ptr db() const { return m_dbHandler->db(); } std::shared_ptr rxHandler() const { return m_rxHandler; } std::shared_ptr ftsHandler() const { return m_ftsHandler; } std::shared_ptr txHandler() const { return m_txHandler; } std::shared_ptr aesHandler() const { return m_aesHandler; } std::shared_ptr exmHandler() const { return m_exmHandler; } std::shared_ptr ismHandler() const { return m_ismHandler; } std::shared_ptr pdmHandler() const { return m_pdmHandler; } std::shared_ptr ppmHandler() const { return m_ppmHandler; } std::shared_ptr posHandler() const { return m_posHandler; } // Plugin::DataProvider int exerciseId() const override { return m_ddsHandler->ddsConnector()->getPartitionId(); } bool useTetraScrambling() const override; ProjectDataManagement::RadioGroup exerciseRadioGroup() const override; TetraIcd::ExerciseEnvironmentData exerciseEnvironmentData() const override; TetraIcd::ExerciseStateData exerciseStateData() const override; TetraIcd::ExerciseEquipmentAssignmentComplete exerciseEquipmentAssignment() const override; QVector aesTelegrams() const override; QSqlDatabase databaseConnection() const override; QString databaseSchemaName() const override; int domainId() const override; const std::vector> &getPluginList() const { return m_interfaces; } private Q_SLOTS: void onExerciseChanged(const ExerciseManagement::Exercise &data, DataModification modType); void onExercise2RadioGroupChanged(); void onConnectionState(const QString &name, bool connectionState); void onDirectMessage(const QByteArray &jsonMessage); void onPositionChanged(int equipNo, const ParticipantManagement::ParticipantPosition &pos); private: bool loadPlugin(const LtsPluginManager::PluginInstance &pi); QString getErrorString(const ParticipantManagement::BiteError &error) const; QString getCanDeviceName(int id) const; QString getSubDeviceName(int id) const; private: std::shared_ptr m_ddsHandler; std::shared_ptr m_dbHandler; std::shared_ptr m_rxHandler; std::shared_ptr m_ftsHandler; std::shared_ptr m_txHandler; std::shared_ptr m_aesHandler; std::shared_ptr m_ismHandler; std::shared_ptr m_exmHandler; std::shared_ptr m_pdmHandler; std::shared_ptr m_ppmHandler; std::shared_ptr m_posHandler; std::vector> m_interfaces; std::shared_ptr m_handlerWebSocket; ExerciseManagement::Exercise m_exerciseData; QMap m_ccsMap; QMap m_bctMap; QMap m_ifcConnectionState; LOGGER_T m_logger; }; } // namespace TrainingAreaBase