Merge pull request 'hotfix ACS/SUS' (#600) from hotfix_acs_sus into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good

Reviewed-on: #600
This commit is contained in:
Robin Müller 2023-04-14 18:47:07 +02:00
commit 36420a6855
4 changed files with 15 additions and 6 deletions

View File

@ -27,6 +27,9 @@ will consitute of a breaking change warranting a new major release:
- Bugfix for STR where an invalid reply was received for special requests - Bugfix for STR where an invalid reply was received for special requests
like firmware updates. like firmware updates.
- Bugfix for shell command executors in command controller which lead to a crash. - Bugfix for shell command executors in command controller which lead to a crash.
- Fixed regression where the reply result for ACS board and SUS board devices was set to FAILED
even when going to OFF mode. In that case, it has to be set to OK so the device handler can
complete the OFF transition.
## Changed ## Changed

View File

@ -122,13 +122,14 @@ ReturnValue_t AcsBoardPolling::sendMessage(CookieIF* cookie, const uint8_t* send
} else { } else {
sif::warning << "AcsBoardPolling: Unknown ADIS type" << std::endl; sif::warning << "AcsBoardPolling: Unknown ADIS type" << std::endl;
} }
adis.replyResult = returnvalue::FAILED;
adis.performStartup = true; adis.performStartup = true;
} else if (req->mode == acs::SimpleSensorMode::OFF) { } else if (req->mode == acs::SimpleSensorMode::OFF) {
adis.performStartup = false; adis.performStartup = false;
adis.ownReply.cfgWasSet = false; adis.ownReply.cfgWasSet = false;
adis.ownReply.dataWasSet = false; adis.ownReply.dataWasSet = false;
adis.replyResult = returnvalue::OK;
} }
adis.replyResult = returnvalue::FAILED;
adis.mode = req->mode; adis.mode = req->mode;
} }
return returnvalue::OK; return returnvalue::OK;
@ -144,10 +145,11 @@ ReturnValue_t AcsBoardPolling::sendMessage(CookieIF* cookie, const uint8_t* send
if (req->mode == acs::SimpleSensorMode::NORMAL) { if (req->mode == acs::SimpleSensorMode::NORMAL) {
std::memcpy(gyro.sensorCfg, req->ctrlRegs, 5); std::memcpy(gyro.sensorCfg, req->ctrlRegs, 5);
gyro.performStartup = true; gyro.performStartup = true;
gyro.replyResult = returnvalue::FAILED;
} else { } else {
gyro.ownReply.cfgWasSet = false; gyro.ownReply.cfgWasSet = false;
gyro.replyResult = returnvalue::OK;
} }
gyro.replyResult = returnvalue::FAILED;
gyro.mode = req->mode; gyro.mode = req->mode;
} }
return returnvalue::OK; return returnvalue::OK;
@ -162,11 +164,12 @@ ReturnValue_t AcsBoardPolling::sendMessage(CookieIF* cookie, const uint8_t* send
if (req->mode != mgm.mode) { if (req->mode != mgm.mode) {
if (req->mode == acs::SimpleSensorMode::NORMAL) { if (req->mode == acs::SimpleSensorMode::NORMAL) {
mgm.performStartup = true; mgm.performStartup = true;
mgm.replyResult = returnvalue::FAILED;
} else { } else {
mgm.ownReply.dataWasSet = false; mgm.ownReply.dataWasSet = false;
mgm.replyResult = returnvalue::OK;
mgm.ownReply.temperatureWasSet = false; mgm.ownReply.temperatureWasSet = false;
} }
mgm.replyResult = returnvalue::FAILED;
mgm.mode = req->mode; mgm.mode = req->mode;
} }
return returnvalue::OK; return returnvalue::OK;
@ -181,10 +184,11 @@ ReturnValue_t AcsBoardPolling::sendMessage(CookieIF* cookie, const uint8_t* send
if (req->mode != mgm.mode) { if (req->mode != mgm.mode) {
if (req->mode == acs::SimpleSensorMode::NORMAL) { if (req->mode == acs::SimpleSensorMode::NORMAL) {
mgm.performStartup = true; mgm.performStartup = true;
mgm.replyResult = returnvalue::FAILED;
} else { } else {
mgm.ownReply.dataWasRead = false; mgm.ownReply.dataWasRead = false;
mgm.replyResult = returnvalue::OK;
} }
mgm.replyResult = returnvalue::FAILED;
mgm.mode = req->mode; mgm.mode = req->mode;
} }
return returnvalue::OK; return returnvalue::OK;

View File

@ -69,11 +69,13 @@ ReturnValue_t SusPolling::sendMessage(CookieIF* cookie, const uint8_t* sendData,
if (susDevs[susIdx].mode != susReq->mode) { if (susDevs[susIdx].mode != susReq->mode) {
if (susReq->mode == acs::SimpleSensorMode::NORMAL) { if (susReq->mode == acs::SimpleSensorMode::NORMAL) {
susDevs[susIdx].performStartup = true; susDevs[susIdx].performStartup = true;
susDevs[susIdx].replyResult = returnvalue::FAILED;
} else { } else {
susDevs[susIdx].ownReply.cfgWasSet = false; susDevs[susIdx].ownReply.cfgWasSet = false;
susDevs[susIdx].ownReply.dataWasSet = false; susDevs[susIdx].ownReply.dataWasSet = false;
// We are off now, but DHB wants a proper reply.
susDevs[susIdx].replyResult = returnvalue::OK;
} }
susDevs[susIdx].replyResult = returnvalue::FAILED;
susDevs[susIdx].mode = susReq->mode; susDevs[susIdx].mode = susReq->mode;
} }
if (state == InternalState::IDLE) { if (state == InternalState::IDLE) {

2
tmtc

@ -1 +1 @@
Subproject commit f8da9cff7c5d6d6bdd483f90ccefb67b2d1e11a4 Subproject commit f57342602da3232c0bfecaecb0c10be6d692b384