#include "FsfwReaderTask.h" #include #include #include #include #include FsfwReaderTask::FsfwReaderTask(object_id_t objectId, bool enablePrintout) : SystemObject(objectId), printoutEnabled(enablePrintout), opDivider(10), readSet(this->getObjectId(), gp_id_t(objects::TEST_DUMMY_1, FsfwDemoSet::PoolIds::VARIABLE), gp_id_t(objects::TEST_DUMMY_2, FsfwDemoSet::PoolIds::VARIABLE), gp_id_t(objects::TEST_DUMMY_3, FsfwDemoSet::PoolIds::VARIABLE)) { /* Special protection for set reading because each variable is read from a * different pool */ readSet.setReadCommitProtectionBehaviour(true); } FsfwReaderTask::~FsfwReaderTask() {} ReturnValue_t FsfwReaderTask::initializeAfterTaskCreation() { /* Give other task some time to set up local data pools. */ TaskFactory::delayTask(20); return HasReturnvaluesIF::RETURN_OK; } ReturnValue_t FsfwReaderTask::performOperation(uint8_t operationCode) { PoolReadGuard readHelper(&readSet); uint32_t variable1 = readSet.variable1.value; uint32_t variable2 = readSet.variable2.value; uint32_t variable3 = readSet.variable3.value; if (opDivider.checkAndIncrement() and printoutEnabled) { FSFW_LOGI( "FsfwPeriodicTask::performOperation: Reading variables from Demo " "Object 1,2,3\n1 {} | 2 {} | 3 {}\n", variable1, variable2, variable3); } return HasReturnvaluesIF::RETURN_OK; }