/** * @RDE_HEADER@ * PositionsCnr * $Id$ * $HeadURL$ * $Author$ * Created by Christian Fröbel, NLE, 2019-08-05 */ #pragma once #include "WebSocketInterface/Messages/reply_message.h" #include #include namespace AudioVideoManagement { namespace Interface { class Dtc; } class CnrConfig; class FrequencyPlanning; } namespace ParticipantManagement { namespace Interface { class Dtc; } class Participant; } namespace CombatNetRadio { class ExerciseManager; /** * Will be instantiated for each Exercise in order to provide the relevant positions * according to the active FrequencyPlanning * * @author Christian Fröbel */ class PositionsCnr { public: explicit PositionsCnr(int exerciseId, ExerciseManager *exerciseManager, ParticipantManagement::Interface::Dtc *ppmDtc, AudioVideoManagement::Interface::Dtc *avmDtc); WebSocketInterface::Messages::PositionsCnrMessage::PositionsCnrMessageData data() const; /** * For a global CnrConfig return die positions of the Participants from this Exercise. * Will be called by ExerciseManager which will collect the positions from all Exercises for a global CnrConfig. */ QVector positionsForGlobal(const AudioVideoManagement::CnrConfig &config) const; private: QVector positionsFor(const AudioVideoManagement::CnrConfig &config) const; QVector positionsForLocal(const AudioVideoManagement::CnrConfig &config) const; boost::optional activePlan() const; int m_exerciseId; ExerciseManager *m_exerciseManager; ParticipantManagement::Interface::Dtc *m_ppmDtc; AudioVideoManagement::Interface::Dtc *m_avmDtc; }; } // namespace CombatNetRadio