handle syrlinks overheating in COM SS
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
This commit is contained in:
parent
096253a9a3
commit
350ed59033
@ -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;
|
||||
|
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user