/** * Plugin CES Mission Plan * $Id: $ * $HeadURL: svn://slssvn/TDS/branches/product/features/25_03_etb_uas/Lts/Services/CentralEffectSimulation/Plugins/MissionPlan/ces_mission_plan_object.h $ * $Author: Kemayou_s $ * Created by Steve Kemayou, ESZS, 2025-06-25 */ #pragma once #include #include #include #include #include #include #include namespace CES_MISSIONPLAN { class CesMissionPlanHandler; class CesMissionPlanObject : public QObject { Q_OBJECT public: explicit CesMissionPlanObject(const ParticipantManagement::MissionPlan &missionPlan, const std::shared_ptr &ddsHandler, QObject *parent = nullptr); friend class CesMissionPlanHandler; void setMissionActionFulfilled(const ParticipantManagement::MissionAction &msa); int planId() const; int participantId() const; /// uas participantId bool isMissionFulfilled(const ParticipantManagement::MissionPlan &mission); protected: void sendActionAttact(); AreaEffectSimulation::ExplosionClusterSingleEffectOnlyRequest getExplosionCluster(); ParticipantManagement::MissionPlan &missionPlan(); const ParticipantManagement::MissionAction getNextAction() ; public slots: void sendNextMissionAction(); void setMissionPlan(const ParticipantManagement::MissionPlan &plan); void setMissionCompleted(); void abortMission(); signals: void ready2SendNextAction(const ParticipantManagement::MissionAction & msa); void missionPlanCompleted(const int planId); void missionPlanCompleted(const ParticipantManagement::MissionPlan &missionPlan); void missionActionFulfilled(const ParticipantManagement::MissionAction &missionAction); // void missionAction private: // private methods void deleteMissionPlanObject(); private: QTimer *m_missionStartimer{nullptr}; QTimer *m_loiterTimer{nullptr}; std::shared_ptr m_ddsHandler; ParticipantManagement::MissionPlan m_missionPlan; NGL::INGLLogger &m_logger; ///< Interface to the Logging-Facility }; }