Files
qt5-legatus-legacy/Lts/Services/ParticipantManagement/UasHandling/mission_plan_handler.h
T
2026-08-13 18:33:10 +02:00

65 lines
2.3 KiB
C++
Executable File

/**
* The UasHandler class manages all Uas related function topics and holds classes for
* further Uas data.
* $Id$
* $HeadURL$
* $Author$
* Created by Steve Kemayou, ESZS, 2025-06-02
*/
#pragma once
#include <QtCore/QHash>
#include <ParticipantManagement/ppm_fts.h>
#include <ParticipantManagement/ppm_ftc.h>
#include <CentralEffectSimulation/dds_handler.h>
#include "object_mission_plan.h"
#include "logger.h"
namespace ParticipantManagement
{
class ObjectMissionPlan;
class MainHandler;
namespace UasHandling
{
class MissionPlanHandler final
: protected Interface::Fts::ModifyMissionPlanRequestHandler
, protected Interface::Fts::RemoveMissionPlanRequestHandler
, protected Interface::Fts::SetMissionActionFulfilledRequestHandler
{
public:
explicit MissionPlanHandler(MainHandler *mainHandler);
~MissionPlanHandler();
bool init();
void onModifyMissionPlanRequest(const rti::core::SampleIdentity &cookie, const ModifyMissionPlanRequest &request) override final;
void onRemoveMissionPlanRequest(const rti::core::SampleIdentity &cookie, const RemoveMissionPlanRequest &request) override final;
void onSetMissionActionFulfilledRequest(const rti::core::SampleIdentity &cookie, const SetMissionActionFulfilledRequest &request) override final;
bool loadMissionPlansFromDb();
bool setCurrentMissionActionFulfilled(int participantId, const QString &nameOfTheMissionThatEnded);
private:
bool isUasCombatReady(int participantId);
bool isUasInAutoMode(int participantId);
Core::FunctionReplyObject createMissionPlanRequest(const ModifyMissionPlanRequest &request);
Core::FunctionReplyObject modifyMissionPlanRequest(const ModifyMissionPlanRequest &request);
Core::FunctionReplyObject removeMissionPlanRequest(int id);
Core::FunctionReplyObject setMissionActionFulfilledRequest(const SetMissionActionFulfilledRequest &request);
void publishMissionPlan(const MissionPlan &missionplan);
bool isUasParticipant(int participantId) const;
int getNumberOfActionFulfilled(const MissionItem &msi) const;
void setLatestFulfilledItem(MissionPlan &missionPlan); /// update mission plan fulfillment count & fulfillemnt latest time
int64_t getLastestFulfilledAction(const MissionItem &msi) const;
MainHandler *m_mainHandler;
QHash<int32_t, ObjectMissionPlan *> m_objMissionPlans;
LOGGER_T m_logger;
};
}
}// namespace ParticipantManagement