add a way to detect off devices
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good

This commit is contained in:
Robin Müller 2023-04-11 17:12:31 +02:00
parent d552b51c0d
commit 271830422a
No known key found for this signature in database
GPG Key ID: 11D4952C8CCEF814

View File

@ -95,11 +95,14 @@ ReturnValue_t SusPolling::readReceivedMessage(CookieIF* cookie, uint8_t** buffer
if (susIdx < 0) { if (susIdx < 0) {
return FAILED; return FAILED;
} }
if(susDevs[susIdx].replyResult != returnvalue::OK) {
return susDevs[susIdx].replyResult;
}
MutexGuard mg(ipcLock); MutexGuard mg(ipcLock);
std::memcpy(&susDevs[susIdx].readerReply, &susDevs[susIdx].ownReply, sizeof(acs::SusReply)); std::memcpy(&susDevs[susIdx].readerReply, &susDevs[susIdx].ownReply, sizeof(acs::SusReply));
*buffer = reinterpret_cast<uint8_t*>(&susDevs[susIdx].readerReply); *buffer = reinterpret_cast<uint8_t*>(&susDevs[susIdx].readerReply);
*size = sizeof(acs::SusReply); *size = sizeof(acs::SusReply);
return OK; return susDevs[susIdx].replyResult;
} }
ReturnValue_t SusPolling::handleSusPolling() { ReturnValue_t SusPolling::handleSusPolling() {
@ -164,11 +167,18 @@ ReturnValue_t SusPolling::handleSusPolling() {
} }
MutexGuard mg(ipcLock); MutexGuard mg(ipcLock);
susDevs[idx].ownReply.tempRaw = ((rawReply[0] & 0x0f) << 8) | rawReply[1]; susDevs[idx].ownReply.tempRaw = ((rawReply[0] & 0x0f) << 8) | rawReply[1];
for (unsigned chIdx = 0; chIdx < 6; chIdx++) { // Reply is all ones. Sensor is probably off or faulty when
susDevs[idx].ownReply.channelsRaw[chIdx] = // it should not be.
(rawReply[chIdx * 2 + 2] << 8) | rawReply[chIdx * 2 + 3]; if(susDevs[idx].ownReply.tempRaw == 0x0fff) {
susDevs[idx].replyResult = returnvalue::FAILED;
} else {
susDevs[idx].replyResult = returnvalue::OK;
for (unsigned chIdx = 0; chIdx < 6; chIdx++) {
susDevs[idx].ownReply.channelsRaw[chIdx] =
(rawReply[chIdx * 2 + 2] << 8) | rawReply[chIdx * 2 + 3];
}
susDevs[idx].ownReply.dataWasSet = true;
} }
susDevs[idx].ownReply.dataWasSet = true;
} }
} }
return OK; return OK;