proper post reset handling for PDEC reset
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good

This commit is contained in:
2023-04-14 19:29:22 +02:00
parent 644a768778
commit 62d18826f1
5 changed files with 31 additions and 14 deletions

View File

@ -107,18 +107,7 @@ ReturnValue_t PdecHandler::firstLoop() {
return result;
}
// This configuration must be done while the PDEC is not held in reset.
if (OP_MODE == Modes::IRQ) {
// Configure interrupt mask register to enable interrupts
*(registerBaseAddress + PDEC_IMR_OFFSET) = pdecConfig.getImrReg();
}
result = resetFarStatFlag();
if (result != returnvalue::OK) {
// Requires reconfiguration and reinitialization of PDEC
triggerEvent(INVALID_FAR);
return result;
}
return returnvalue::OK;
return postResetOperation();
}
ReturnValue_t PdecHandler::performOperation(uint8_t operationCode) {
@ -785,6 +774,27 @@ void PdecHandler::pdecResetNoInit() {
pdecToReset();
usleep(20);
releasePdec();
ReturnValue_t result = postResetOperation();
if (result != returnvalue::OK) {
// What can we really do here? Event was already triggered if this is due to the FAR flag
// not being reset.
sif::error << "PdecHandler::pdecResetNoInit: Post reset operation failed unexpectedly"
<< std::endl;
}
}
ReturnValue_t PdecHandler::postResetOperation() {
// This configuration must be done while the PDEC is not held in reset.
if (OP_MODE == Modes::IRQ) {
// Configure interrupt mask register to enable interrupts
*(registerBaseAddress + PDEC_IMR_OFFSET) = pdecConfig.getImrReg();
}
ReturnValue_t result = resetFarStatFlag();
if (result != returnvalue::OK) {
// Requires reconfiguration and reinitialization of PDEC
triggerEvent(INVALID_FAR);
}
return result;
}
std::string PdecHandler::getMonStatusString(uint32_t status) {

View File

@ -365,6 +365,8 @@ class PdecHandler : public SystemObject,
void pdecResetNoInit();
ReturnValue_t postResetOperation();
void initFailedHandler(ReturnValue_t reason);
std::string getMonStatusString(uint32_t status);