handle syrlinks overheating in COM SS
EIVE/eive-obsw/pipeline/pr-develop This commit looks good Details

This commit is contained in:
Robin Müller 2023-03-15 17:13:25 +01:00
parent 096253a9a3
commit 350ed59033
No known key found for this signature in database
GPG Key ID: 71B58F8A3CDFA9AC
2 changed files with 14 additions and 13 deletions

View File

@ -1,5 +1,6 @@
#include "ComSubsystem.h"
#include <fsfw/events/Event.h>
#include <fsfw/events/EventManagerIF.h>
#include <fsfw/ipc/MutexGuard.h>
#include <fsfw/ipc/QueueFactory.h>
@ -7,6 +8,7 @@
#include <linux/ipcore/PdecHandler.h>
#include <mission/comDefs.h>
#include <mission/config/comCfg.h>
#include <mission/controller/controllerdefinitions/tcsCtrlDefs.h>
#include <utility>
@ -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;

View File

@ -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();