From f0884c00960754f6f913916dc2a5173d4b138b07 Mon Sep 17 00:00:00 2001 From: Jakob Meier Date: Fri, 29 Apr 2022 08:34:23 +0200 Subject: [PATCH] read gpio tm handling --- fsfw | 2 +- linux/devices/ploc/PlocSupervisorHandler.cpp | 19 +++++++++++++++++++ linux/devices/ploc/PlocSupervisorHandler.h | 5 +++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/fsfw b/fsfw index 0aee8644..9731dc1e 160000 --- a/fsfw +++ b/fsfw @@ -1 +1 @@ -Subproject commit 0aee86442eafa6d8827435e2c2e22074ba733e34 +Subproject commit 9731dc1e619e6e52207174e67daf0468a675a5ec diff --git a/linux/devices/ploc/PlocSupervisorHandler.cpp b/linux/devices/ploc/PlocSupervisorHandler.cpp index fd7406cf..8788cdb8 100644 --- a/linux/devices/ploc/PlocSupervisorHandler.cpp +++ b/linux/devices/ploc/PlocSupervisorHandler.cpp @@ -859,6 +859,7 @@ ReturnValue_t PlocSupervisorHandler::handleAckReport(const uint8_t* data) { } case supv::APID_ACK_SUCCESS: { setNextReplyId(); + handleSpecialAcknowledgments(data); break; } default: { @@ -1811,3 +1812,21 @@ ReturnValue_t PlocSupervisorHandler::eventSubscription() { } return result; } + +void PlocSupervisorHandler::handleSpecialAcknowledgments(const uint8_t* data) { + DeviceCommandId_t commandId = getPendingCommand(); + switch(commandId) { + case supv::READ_GPIO: { + supv::AcknowledgmentReport ack; + ack.addWholeData(data, supv::SIZE_ACK_REPORT); + uint16_t gpioState = ack.getStatusCode(); +#if OBSW_DEBUG_PLOC_SUPERVISOR == 1 + sif::info << "PlocsupervisorHandler: Read GPIO TM, State: " << gpioState << std::endl; +#endif /* OBSW_DEBUG_PLOC_SUPERVISOR == 1 */ + handleDeviceTM(reinterpret_cast(&gpioState), sizeof(gpioState), supv::ACK_REPORT); + break; + } + default: + break; + } +} diff --git a/linux/devices/ploc/PlocSupervisorHandler.h b/linux/devices/ploc/PlocSupervisorHandler.h index 19ccfa63..9fa1bed3 100644 --- a/linux/devices/ploc/PlocSupervisorHandler.h +++ b/linux/devices/ploc/PlocSupervisorHandler.h @@ -349,6 +349,11 @@ class PlocSupervisorHandler : public DeviceHandlerBase { ReturnValue_t extractUpdateCommand(const uint8_t* commandData, size_t size, std::string* file, uint8_t* memoryId, uint32_t* startAddress); ReturnValue_t eventSubscription(); + + /** + * @brief Handles acknowledgment reports which contains additional informations in the data field + */ + void handleSpecialAcknowledgments(const uint8_t* data); }; #endif /* MISSION_DEVICES_PLOCSUPERVISORHANDLER_H_ */