43 lines
1.5 KiB
C++
43 lines
1.5 KiB
C++
#include "FsfwReaderTask.h"
|
|
|
|
#include <OBSWConfig.h>
|
|
#include <fsfw/datapool/PoolReadGuard.h>
|
|
#include <fsfw/serviceinterface.h>
|
|
#include <fsfw/tasks/TaskFactory.h>
|
|
#include <fsfw/timemanager/Stopwatch.h>
|
|
|
|
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;
|
|
}
|