diff --git a/mission/system/objects/ComSubsystem.cpp b/mission/system/objects/ComSubsystem.cpp index b9ed0a05..1d0d9b32 100644 --- a/mission/system/objects/ComSubsystem.cpp +++ b/mission/system/objects/ComSubsystem.cpp @@ -1,5 +1,6 @@ #include "ComSubsystem.h" +#include #include #include #include @@ -7,6 +8,7 @@ #include #include #include +#include #include @@ -93,7 +95,11 @@ ReturnValue_t ComSubsystem::initialize() { "listener" << std::endl; #endif - return ObjectManagerIF::CHILD_INIT_FAILED; + } + result = manager->subscribeToEvent(eventQueue->getId(), + event::getEventId(tcsCtrl::SYRLINKS_OVERHEATING)); + if (result != returnvalue::OK) { + return ObjectManager::CHILD_INIT_FAILED; } result = manager->subscribeToEventRange(eventQueue->getId(), event::getEventId(PdecHandler::CARRIER_LOCK), @@ -144,6 +150,13 @@ void ComSubsystem::readEventQueue() { void ComSubsystem::handleEventMessage(EventMessage *eventMessage) { Event event = eventMessage->getEvent(); switch (event) { + case tcsCtrl::SYRLINKS_OVERHEATING: { + // TODO: To prevent simply overwriting/cancelling on-going transitions, set flag here and + // execute transition at a later stage. + modeHelper.setForced(true); + startTransition(com::RX_ONLY, 0); + break; + } case PdecHandler::BIT_LOCK_PDEC: { handleBitLockEvent(); break; diff --git a/mission/system/objects/EiveSystem.cpp b/mission/system/objects/EiveSystem.cpp index 67b79615..284beb49 100644 --- a/mission/system/objects/EiveSystem.cpp +++ b/mission/system/objects/EiveSystem.cpp @@ -69,7 +69,6 @@ ReturnValue_t EiveSystem::initialize() { #endif return ObjectManagerIF::CHILD_INIT_FAILED; } - manager->subscribeToEvent(eventQueue->getId(), event::getEventId(tcsCtrl::SYRLINKS_OVERHEATING)); manager->subscribeToEvent(eventQueue->getId(), event::getEventId(tcsCtrl::PCDU_SYSTEM_OVERHEATING)); manager->subscribeToEvent(eventQueue->getId(), event::getEventId(tcsCtrl::OBC_OVERHEATING)); @@ -84,17 +83,6 @@ void EiveSystem::handleEventMessages() { switch (event.getMessageId()) { case EventMessage::EVENT_MESSAGE: switch (event.getEvent()) { - case tcsCtrl::SYRLINKS_OVERHEATING: { - CommandMessage msg; - ModeMessage::setModeMessage(&msg, ModeMessage::CMD_MODE_COMMAND_FORCED, com::RX_ONLY, - 0); - ReturnValue_t result = - commandQueue->sendMessage(childrenMap[objects::COM_SUBSYSTEM].commandQueue, &msg); - if (result != returnvalue::OK) { - sif::error << "EiveSystem: Commanding COM to RX_ONLY failed" << std::endl; - } - break; - } case tcsCtrl::OBC_OVERHEATING: case tcsCtrl::PCDU_SYSTEM_OVERHEATING: { commandSelfToSafe();