diff --git a/src/Entities/Entity.cpp b/src/Entities/Entity.cpp index dad106c..238a37f 100644 --- a/src/Entities/Entity.cpp +++ b/src/Entities/Entity.cpp @@ -1,6 +1,7 @@ #include "DirectCommunicationServer.hpp" #include "Entities/Movement.hpp" #include "Orders/MoveOrder.hpp" +#include "Orders/Order.hpp" #include "SimCore/Messages/Control.hpp" #include "SimCore/Messages/SimTrack.hpp" #include "SimCore/UtilFunctions.hpp" @@ -235,20 +236,48 @@ namespace Entities { case WHISPER::MsgType::ORDER: { - - auto MoveOrder = Orders::MoveOrder::unpack(whisperMsg); - if (MoveOrder != nullptr) - { - LOG_S(INFO)<< "Moveorder Received"; - if(MoveOrder->Speed.isValid()) this->setSpeed(MoveOrder->Speed.getValue()); - if(MoveOrder->Course.isValid()) this->setCourse(MoveOrder->Course.getValue()); - if(MoveOrder->getPosition().isValid()) - { - LOG_S(INFO)<<"New Position received"; + Orders::OrderType OrderType = Orders::Order::getType(whisperMsg); + switch (OrderType) { + case Orders::UNKNOWN : + { + break; + } + case Orders::HOLD_ORDER : + { + this->setSpeed(0); + break; + } + case Orders::MOVE_ORDER : + { + auto MoveOrder = Orders::MoveOrder::unpack(whisperMsg); + if (MoveOrder != nullptr) + { + LOG_S(INFO)<< "Moveorder Received"; + if(MoveOrder->Speed.isValid()) this->setSpeed(MoveOrder->Speed.getValue()); + if(MoveOrder->Course.isValid()) this->setCourse(MoveOrder->Course.getValue()); + if(MoveOrder->getPosition().isValid()) + { + LOG_S(INFO)<<"New Position received"; - this->setPosition(MoveOrder->getPosition()); - } - } + this->setPosition(MoveOrder->getPosition()); + } + } + break; + } + case Orders::ENGAGE_ORDER: + { + + } + case Orders::SYSTEM_STATE_ORDER: + { + break; + } + case Orders::TRACKLIST_ORDER : + { + + break; + } + } break; } diff --git a/src/Entities/Sensor.cpp b/src/Entities/Sensor.cpp index 902ebff..06d3d2b 100644 --- a/src/Entities/Sensor.cpp +++ b/src/Entities/Sensor.cpp @@ -146,7 +146,15 @@ void Sensor::HandleOrders(WHISPER::Message WHmsg) break; } + case Orders::TRACKLIST_ORDER: + { + + } + break; case Orders::UNKNOWN: + { + + } break; } }