/** * Handler emergency call from tetra radio * $Id$ * $HeadURL$ * $Author$ * Created by Astrid Müller, SGAS, 2018-02-23 */ #pragma once #include #include #include "dds_handler.h" #include "logger.h" #include "alm_fts.h" namespace AlarmManagement { class Initialization; class HandlerConfigureAlarms; class ObjectEmergencyCall; class HandlerEmergencyCall final : public QObject , protected Interface::Fts::EmergencyCallAcknowledgeRequestHandler { Q_OBJECT public: explicit HandlerEmergencyCall(const std::shared_ptr &configAlarmHandler, Initialization *mainHandler); ~HandlerEmergencyCall(); bool init(); private: bool createEmergencyCallObject(const AlmEmergencyCall &data); void onEmergencyCallAcknowledgeRequest(const rti::core::SampleIdentity &cookie, const EmergencyCallAcknowledgeRequest &request) override final; Core::FunctionReplyObject emergencyCallAcknowledgeRequest(const EmergencyCallAcknowledgeRequest &request); bool isExerciseValidForEmergencyCall() const; bool isNewEmergencyCall(const AlmEmergencyCall &newdata); private slots: void onEmergencyCallChanged(const TrainingAreaBase::EmergencyCall &data, DataModification modType); void onAcknowledgeSOSInExercises(const AlarmManagement::AcknowledgeSOSInAllExercises &data, DataModification modType); private: Initialization *m_mainHandler; std::shared_ptr m_configAlarmHandler; NGL::INGLLogger &m_logger; QMap m_emergencyObjMap; // Key = DangerAreaId }; } // namespace AlarmManagement