From 4c1fb526b1b5f618c93cfc2d2c191dcca406bd94 Mon Sep 17 00:00:00 2001 From: Henry Winkel Date: Wed, 5 Jul 2023 15:50:15 +0200 Subject: [PATCH] ADD: added new function to unpack a SimTrack message from a string --- include/SimCore/Messages/SimTrack.hpp | 8 ++++- src/SimCore/Messages/SimTrack.cpp | 45 +++++++++++++++++++++++---- 2 files changed, 46 insertions(+), 7 deletions(-) diff --git a/include/SimCore/Messages/SimTrack.hpp b/include/SimCore/Messages/SimTrack.hpp index 636b84a..5ae2e2a 100644 --- a/include/SimCore/Messages/SimTrack.hpp +++ b/include/SimCore/Messages/SimTrack.hpp @@ -9,6 +9,7 @@ #include #include +#include namespace SimCore { @@ -52,13 +53,18 @@ namespace SimCore /// @brief return a WHISPER Message out of a simtrack object /// @param parentID /// @return WHISPER::Message - WHISPER::Message buildMessage(SimCore::Identifier parentID); + WHISPER::Message buildMessage(); /// @brief creates a SimTrack out of a whisper message /// @param msg /// @return SimTrack Oject static SimTrack unpack(WHISPER::Message msg); + /// @brief creates a SimTrack out of a string message + /// @param msg + /// @return SimTrack Oject + static std::unique_ptr unpack(std::string msg); + public: Data Speed; Data Course; diff --git a/src/SimCore/Messages/SimTrack.cpp b/src/SimCore/Messages/SimTrack.cpp index 033e569..a58d2ea 100644 --- a/src/SimCore/Messages/SimTrack.cpp +++ b/src/SimCore/Messages/SimTrack.cpp @@ -1,4 +1,8 @@ +#include "WHISPER/Messages/Message.hpp" #include +#include +#include +#include /// @brief namespace SimCore @@ -6,21 +10,34 @@ namespace SimCore SimTrack::SimTrack() :ID_(SimCore::Identifier()),SourceType_(WHISPER::SourceType::SIMCOMTROLER) { - EntityKind.setValue(SimCore::EntityKind::UNKNOWN); + EntityKind.setValue(SimCore::EntityKind::UNKNOWN); + + Speed.setValue(0); + Course.setValue(0); + Pitch.setValue(0); + RCS.setValue(0); } SimTrack::SimTrack(WHISPER::SourceType sourcetype,SimCore::EntityKind entityKind) :ID_(SimCore::Identifier()),SourceType_(sourcetype) { - EntityKind.setValue(entityKind); - + EntityKind.setValue(entityKind); + + Speed.setValue(0); + Course.setValue(0); + Pitch.setValue(0); + RCS.setValue(0); } SimTrack::SimTrack(SimCore::Identifier id ,WHISPER::SourceType sourcetype,SimCore::EntityKind entityKind ) :ID_(id),SourceType_(sourcetype) { - EntityKind.setValue(entityKind); + EntityKind.setValue(entityKind); + Speed.setValue(0); + Course.setValue(0); + Pitch.setValue(0); + RCS.setValue(0); } @@ -51,9 +68,9 @@ namespace SimCore } - WHISPER::Message SimTrack::buildMessage(SimCore::Identifier parentID) + WHISPER::Message SimTrack::buildMessage() { - WHISPER::Message msg(parentID.getParentNumber(), parentID.getNumber(),WHISPER::MsgTopics::TRACK , WHISPER::MsgType::GROUND_TRUTH_TRACK, this->SourceType_); + WHISPER::Message msg(ID_.getUUID(),WHISPER::MsgTopics::TRACK , WHISPER::MsgType::GROUND_TRUTH_TRACK, this->SourceType_); messages::SimTrack::SimTrack SimTrack; @@ -183,6 +200,22 @@ namespace SimCore return track; } + + + std::unique_ptr SimTrack::unpack(std::string msg) + { + if (std::empty(msg) == false && msg != "NULL") + { + WHISPER::Message whisperMessage(msg); + return std::make_unique(std::move(unpack(whisperMessage))); + } + + return nullptr; + } + + + + void SimTrack::addEmission(Emission emission) { auto tmp = std::make_shared(std::move(emission));