improvements for SoC FDIR
All checks were successful
EIVE/eive-obsw/pipeline/pr-main This commit looks good

This commit is contained in:
Robin Müller 2023-10-19 14:20:40 +02:00
parent f4abb3fed6
commit 1f203e9f76
Signed by: muellerr
GPG Key ID: A649FB78196E3849
2 changed files with 14 additions and 2 deletions

View File

@ -22,6 +22,8 @@ will consitute of a breaking change warranting a new major release:
CFDP interface. CFDP interface.
- Proper back pressure handling for the CFDP handler, where the `LiveTmTask` is able to throttle - Proper back pressure handling for the CFDP handler, where the `LiveTmTask` is able to throttle
the CFDP handler. the CFDP handler.
- The EIVE system will command the payload OFF explicitely again when receiving the
`power::POWER_LEVEL_CRITICAL` event.
## Fixed ## Fixed
@ -36,6 +38,11 @@ will consitute of a breaking change warranting a new major release:
is not in normal mode. is not in normal mode.
- MPSoC debug mode. - MPSoC debug mode.
## Changed
- Added a 3 second delay in the EIVE system between commanding all PL components except the SUPV,
and the SUPV itself OFF when the power level becomes low or critical.
# [v7.1.0] 2023-10-11 # [v7.1.0] 2023-10-11
- Bumped `eive-tmtc` to v5.8.0. - Bumped `eive-tmtc` to v5.8.0.

View File

@ -209,7 +209,11 @@ void EiveSystem::handleEventMessages() {
forcePlOffState = ForcePlOffState::FORCE_ALL_EXCEPT_SUPV_OFF; forcePlOffState = ForcePlOffState::FORCE_ALL_EXCEPT_SUPV_OFF;
break; break;
} }
case power::POWER_LEVEL_CRITICAL: case power::POWER_LEVEL_CRITICAL: {
// Force payload off in any case. It really should not be on when the power level
// becomes critical, but better be safe than sorry..
forcePlOffState = ForcePlOffState::FORCE_ALL_EXCEPT_SUPV_OFF;
// Also set the STR assembly to faulty, which should cause a fallback to SAFE mode.
CommandMessage msg; CommandMessage msg;
HealthMessage::setHealthMessage(&msg, HealthMessage::HEALTH_SET, HasHealthIF::FAULTY); HealthMessage::setHealthMessage(&msg, HealthMessage::HEALTH_SET, HasHealthIF::FAULTY);
ReturnValue_t result = MessageQueueSenderIF::sendMessage( ReturnValue_t result = MessageQueueSenderIF::sendMessage(
@ -219,6 +223,7 @@ void EiveSystem::handleEventMessages() {
<< std::endl; << std::endl;
} }
break; break;
}
} }
break; break;
default: default:
@ -436,7 +441,7 @@ void EiveSystem::forceOffPayload() {
} }
if (forcePlOffState == ForcePlOffState::WAITING and supvOffDelay.hasTimedOut()) { if (forcePlOffState == ForcePlOffState::WAITING and supvOffDelay.hasTimedOut()) {
forcePlOffState == ForcePlOffState::FORCE_SUPV_OFF; forcePlOffState = ForcePlOffState::FORCE_SUPV_OFF;
} }
if (forcePlOffState == ForcePlOffState::FORCE_SUPV_OFF) { if (forcePlOffState == ForcePlOffState::FORCE_SUPV_OFF) {