/** * Handler for aes data to be send to the oc-laptop transparent * $Id$ * $HeadURL$ * $Author$ * Created by Philipp Dassow, NLST, 18-04-2018 */ #pragma once #include #include #include #include #include #include "main_handler.h" #include "position_converter.h" #include "oc_situation.h" #include "logger.h" namespace OcSituationServer { class HandlerOcAesData : public QObject , protected TrainingAreaBase::Interface::Ftc::SendOcDataReplyHandler { Q_OBJECT public: explicit HandlerOcAesData(MainHandler *mainHandler, QObject *parent = nullptr); ~HandlerOcAesData(); bool init(); int dangerAreaResetCnt() { return m_dangerAreaResetCnt; } int iedResetCnt() { return m_iedResetCnt; } void demandAesItems(OcSituation::AesType aesType, int eqNumber); void onSendOcDataReply(const Core::FunctionReplyObject &reply); private slots: void onDangerAreaChanged(const AreaEffectSimulation::DangerArea &data, DataModification mod); void onIedChanged(const GuezIedManagement::Ied &data, DataModification mod); void onIedPositionChanged(const GuezIedManagement::IedPosition &data, DataModification mod); void onCollectionTimeOutDemandDangerAreas(); void onCollectionTimeOutDemandIeds(); void sendIedPositions(); private: void collectionTimeout(OcSituation::AesType type, const std::function &sendFunction); void sendDangerAreasToTab(int eqNumber); void sendIedsToTab(int eqNumber); void incrementResetCnt(OcSituation::AesType aesType); void setResetCnt(OcSituation::AesType aesType, int resetCnt); std::shared_ptr m_aesDtc; std::shared_ptr m_gimDtc; std::shared_ptr m_tabFtc; std::shared_ptr m_dbHandler; std::shared_ptr m_positionConverter; // add new reset counter also in oss_predefined_data.sql !! int m_dangerAreaResetCnt; int m_iedResetCnt; QMap m_collectionTimer; QMap> m_demandingEquipments; QMap m_iedPositionsToBeSend; QTimer *m_iedPositionCycleTimer; LOGGER_T &m_logger; }; } // namespace OcSituationServer