Merge pull request 'return meaningful error code for empty PST' (#485) from eive/fsfw:mueller/check-for-empty-pst into development

Reviewed-on: fsfw/fsfw#485
This commit is contained in:
Robin Müller 2021-10-02 12:24:03 +02:00
commit 2f119f102d
5 changed files with 18 additions and 8 deletions

View File

@ -72,10 +72,12 @@ enum: uint8_t {
PUS_SERVICE_3, //PUS3 PUS_SERVICE_3, //PUS3
PUS_SERVICE_9, //PUS9 PUS_SERVICE_9, //PUS9
FILE_SYSTEM, //FILS FILE_SYSTEM, //FILS
LINUX_OSAL, //UXOS
HAL_SPI, //HSPI HAL_SPI, //HSPI
HAL_UART, //HURT HAL_UART, //HURT
HAL_I2C, //HI2C HAL_I2C, //HI2C
HAL_GPIO, //HGIO HAL_GPIO, //HGIO
FIXED_SLOT_TASK_IF, //FTIF
MGM_LIS3MDL, //MGMLIS3 MGM_LIS3MDL, //MGMLIS3
MGM_RM3100, //MGMRM3100 MGM_RM3100, //MGMRM3100
FW_CLASS_ID_COUNT // [EXPORT] : [END] FW_CLASS_ID_COUNT // [EXPORT] : [END]

View File

@ -1,4 +1,5 @@
#include "fsfw/tasks/FixedSlotSequence.h" #include "fsfw/tasks/FixedSlotSequence.h"
#include "fsfw/tasks/FixedTimeslotTaskIF.h"
#include "fsfw/serviceinterface/ServiceInterface.h" #include "fsfw/serviceinterface/ServiceInterface.h"
#include <cstdlib> #include <cstdlib>
@ -92,10 +93,9 @@ void FixedSlotSequence::addSlot(object_id_t componentId, uint32_t slotTimeMs,
ReturnValue_t FixedSlotSequence::checkSequence() const { ReturnValue_t FixedSlotSequence::checkSequence() const {
if(slotList.empty()) { if(slotList.empty()) {
#if FSFW_CPP_OSTREAM_ENABLED == 1 #if FSFW_CPP_OSTREAM_ENABLED == 1
sif::error << "FixedSlotSequence::checkSequence:" sif::warning << "FixedSlotSequence::checkSequence: Slot list is empty!" << std::endl;
<< " Slot list is empty!" << std::endl;
#endif #endif
return HasReturnvaluesIF::RETURN_FAILED; return FixedTimeslotTaskIF::SLOT_LIST_EMPTY;
} }
if(customCheckFunction != nullptr) { if(customCheckFunction != nullptr) {

View File

@ -2,7 +2,7 @@
#define FSFW_TASKS_FIXEDSLOTSEQUENCE_H_ #define FSFW_TASKS_FIXEDSLOTSEQUENCE_H_
#include "FixedSequenceSlot.h" #include "FixedSequenceSlot.h"
#include "../objectmanager/SystemObject.h" #include "fsfw/objectmanager/SystemObject.h"
#include <set> #include <set>
@ -136,6 +136,7 @@ public:
* @details * @details
* Checks if timing is ok (must be ascending) and if all handlers were found. * Checks if timing is ok (must be ascending) and if all handlers were found.
* @return * @return
* - SLOT_LIST_EMPTY if the slot list is empty
*/ */
ReturnValue_t checkSequence() const; ReturnValue_t checkSequence() const;
@ -147,6 +148,7 @@ public:
* The general check will be continued for now if the custom check function * The general check will be continued for now if the custom check function
* fails but a diagnostic debug output will be given. * fails but a diagnostic debug output will be given.
* @param customCheckFunction * @param customCheckFunction
*
*/ */
void addCustomCheck(ReturnValue_t (*customCheckFunction)(const SlotList &)); void addCustomCheck(ReturnValue_t (*customCheckFunction)(const SlotList &));

View File

@ -2,7 +2,8 @@
#define FRAMEWORK_TASKS_FIXEDTIMESLOTTASKIF_H_ #define FRAMEWORK_TASKS_FIXEDTIMESLOTTASKIF_H_
#include "PeriodicTaskIF.h" #include "PeriodicTaskIF.h"
#include "../objectmanager/ObjectManagerIF.h" #include "fsfw/objectmanager/ObjectManagerIF.h"
#include "fsfw/returnvalues/FwClassIds.h"
/** /**
* @brief Following the same principle as the base class IF. * @brief Following the same principle as the base class IF.
@ -12,6 +13,8 @@ class FixedTimeslotTaskIF : public PeriodicTaskIF {
public: public:
virtual ~FixedTimeslotTaskIF() {} virtual ~FixedTimeslotTaskIF() {}
static constexpr ReturnValue_t SLOT_LIST_EMPTY = HasReturnvaluesIF::makeReturnCode(
CLASS_ID::FIXED_SLOT_TASK_IF, 0);
/** /**
* Add an object with a slot time and the execution step to the task. * Add an object with a slot time and the execution step to the task.
* The execution step will be passed to the object (e.g. as an operation * The execution step will be passed to the object (e.g. as an operation

View File

@ -1,5 +1,8 @@
#ifndef FRAMEWORK_TASKS_TYPEDEF_H_ #ifndef FSFW_TASKS_TYPEDEF_H_
#define FRAMEWORK_TASKS_TYPEDEF_H_ #define FSFW_TASKS_TYPEDEF_H_
#include <cstdint>
#include <cstddef>
typedef const char* TaskName; typedef const char* TaskName;
typedef uint32_t TaskPriority; typedef uint32_t TaskPriority;
@ -7,4 +10,4 @@ typedef size_t TaskStackSize;
typedef double TaskPeriod; typedef double TaskPeriod;
typedef void (*TaskDeadlineMissedFunction)(); typedef void (*TaskDeadlineMissedFunction)();
#endif /* FRAMEWORK_TASKS_TYPEDEF_H_ */ #endif /* FSFW_TASKS_TYPEDEF_H_ */