diff --git a/bsp_q7s/core/InitMission.cpp b/bsp_q7s/core/InitMission.cpp index 6c69fd87..e32e8c96 100644 --- a/bsp_q7s/core/InitMission.cpp +++ b/bsp_q7s/core/InitMission.cpp @@ -155,7 +155,7 @@ void initmission::initTasks() { #endif PeriodicTaskIF* tcsPollingTask = factory->createPeriodicTask( - "TCS_POLLING_TASK", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.4, missedDeadlineFunc); + "TCS_POLLING_TASK", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 2, 0.5, missedDeadlineFunc); result = tcsPollingTask->addComponent(objects::SPI_RTD_COM_IF); if (result != HasReturnvaluesIF::RETURN_OK) { initmission::printAddObjectError("SPI_RTD_POLLING", objects::SPI_RTD_COM_IF); @@ -181,6 +181,7 @@ void initmission::initTasks() { objects::RTD_15_IC18_IMTQ, }; #if OBSW_ADD_RTD_DEVICES == 1 + tcsTask->addComponent(objects::TCS_BOARD_ASS); for (const auto& rtd : rtdIds) { tcsTask->addComponent(rtd, DeviceHandlerIF::PERFORM_OPERATION); tcsTask->addComponent(rtd, DeviceHandlerIF::SEND_WRITE); @@ -188,7 +189,6 @@ void initmission::initTasks() { tcsTask->addComponent(rtd, DeviceHandlerIF::SEND_READ); tcsTask->addComponent(rtd, DeviceHandlerIF::GET_READ); } - tcsTask->addComponent(objects::TCS_BOARD_ASS); #endif /* OBSW_ADD_RTD_DEVICES */ // FS task, task interval does not matter because it runs in permanent loop, priority low diff --git a/linux/devices/Max31865RtdLowlevelHandler.cpp b/linux/devices/Max31865RtdLowlevelHandler.cpp index 5879eebf..f1c8d0e6 100644 --- a/linux/devices/Max31865RtdLowlevelHandler.cpp +++ b/linux/devices/Max31865RtdLowlevelHandler.cpp @@ -10,15 +10,6 @@ Max31865RtdReader::Max31865RtdReader(object_id_t objectId, SpiComIF* lowLevelCom } ReturnValue_t Max31865RtdReader::performOperation(uint8_t operationCode) { - using namespace MAX31865; - while (true) { - rtdMainLoop(); - // Read all RTDs at once every 500 ms for now - TaskFactory::delayTask(500); - } -} - -void Max31865RtdReader::rtdMainLoop() { using namespace MAX31865; ReturnValue_t result = RETURN_OK; // Stopwatch watch; @@ -27,17 +18,17 @@ void Max31865RtdReader::rtdMainLoop() { TaskFactory::delayTask(10); } else { // No devices usable (e.g. TCS board off) - return; + return RETURN_OK; } result = periodicReadReqHandling(); if (result != RETURN_OK) { - return; + return result; } // After requesting, 65 milliseconds delay required TaskFactory::delayTask(65); - periodicReadHandling(); + return periodicReadHandling(); } bool Max31865RtdReader::rtdIsActive(uint8_t idx) { diff --git a/linux/devices/Max31865RtdLowlevelHandler.h b/linux/devices/Max31865RtdLowlevelHandler.h index 718c3e85..3266bbbd 100644 --- a/linux/devices/Max31865RtdLowlevelHandler.h +++ b/linux/devices/Max31865RtdLowlevelHandler.h @@ -44,7 +44,7 @@ class Max31865RtdReader : public SystemObject, public: Max31865RtdReader(object_id_t objectId, SpiComIF* lowLevelComIF, GpioIF* gpioIF); - [[noreturn]] ReturnValue_t performOperation(uint8_t operationCode) override; + ReturnValue_t performOperation(uint8_t operationCode) override; ReturnValue_t initialize() override; private: @@ -59,7 +59,6 @@ class Max31865RtdReader : public SystemObject, uint32_t csTimeoutMs = 0; MutexIF* csLock = nullptr; - void rtdMainLoop(); bool periodicInitHandling(); ReturnValue_t periodicReadReqHandling(); ReturnValue_t periodicReadHandling();