new addSlot function taking executable pointer
This commit is contained in:
parent
4542f31c40
commit
eb79386c92
@ -11,19 +11,17 @@ bool FixedTimeslotTaskBase::isEmpty() const { return pollingSeqTable.isEmpty();
|
|||||||
|
|
||||||
ReturnValue_t FixedTimeslotTaskBase::checkSequence() { return pollingSeqTable.checkSequence(); }
|
ReturnValue_t FixedTimeslotTaskBase::checkSequence() { return pollingSeqTable.checkSequence(); }
|
||||||
|
|
||||||
ReturnValue_t FixedTimeslotTaskBase::addSlot(object_id_t componentId, uint32_t slotTimeMs,
|
ReturnValue_t FixedTimeslotTaskBase::addSlot(object_id_t execId, ExecutableObjectIF* execObj,
|
||||||
int8_t executionStep) {
|
uint32_t slotTimeMs, int8_t executionStep) {
|
||||||
auto* executableObject = ObjectManager::instance()->get<ExecutableObjectIF>(componentId);
|
if (execObj == nullptr) {
|
||||||
if (executableObject != nullptr) {
|
|
||||||
pollingSeqTable.addSlot(componentId, slotTimeMs, executionStep, executableObject, this);
|
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
||||||
sif::error << "Component 0x" << std::hex << std::setw(8) << std::setfill('0') << componentId
|
sif::error << "Component 0x" << std::hex << std::setw(8) << std::setfill('0') << execObj
|
||||||
<< std::setfill(' ') << " not found, not adding it to PST" << std::dec << std::endl;
|
<< std::setfill(' ') << " not found, not adding it to PST" << std::dec << std::endl;
|
||||||
#else
|
#else
|
||||||
sif::printError("Component 0x%08x not found, not adding it to PST\n");
|
sif::printError("Component 0x%08x not found, not adding it to PST\n");
|
||||||
#endif
|
#endif
|
||||||
return HasReturnvaluesIF::RETURN_FAILED;
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
|
}
|
||||||
|
pollingSeqTable.addSlot(execId, slotTimeMs, executionStep, execObj, this);
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ class FixedTimeslotTaskBase : public FixedTimeslotTaskIF {
|
|||||||
|
|
||||||
[[nodiscard]] bool isEmpty() const override;
|
[[nodiscard]] bool isEmpty() const override;
|
||||||
|
|
||||||
ReturnValue_t addSlot(object_id_t componentId, uint32_t slotTimeMs,
|
ReturnValue_t addSlot(object_id_t execId, ExecutableObjectIF* componentId, uint32_t slotTimeMs,
|
||||||
int8_t executionStep) override;
|
int8_t executionStep) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#define FRAMEWORK_TASKS_FIXEDTIMESLOTTASKIF_H_
|
#define FRAMEWORK_TASKS_FIXEDTIMESLOTTASKIF_H_
|
||||||
|
|
||||||
#include "PeriodicTaskIF.h"
|
#include "PeriodicTaskIF.h"
|
||||||
|
#include "fsfw/objectmanager/ObjectManager.h"
|
||||||
#include "fsfw/objectmanager/ObjectManagerIF.h"
|
#include "fsfw/objectmanager/ObjectManagerIF.h"
|
||||||
#include "fsfw/returnvalues/FwClassIds.h"
|
#include "fsfw/returnvalues/FwClassIds.h"
|
||||||
|
|
||||||
@ -15,6 +16,7 @@ class FixedTimeslotTaskIF : public PeriodicTaskIF {
|
|||||||
|
|
||||||
static constexpr ReturnValue_t SLOT_LIST_EMPTY =
|
static constexpr ReturnValue_t SLOT_LIST_EMPTY =
|
||||||
HasReturnvaluesIF::makeReturnCode(CLASS_ID::FIXED_SLOT_TASK_IF, 0);
|
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
|
||||||
@ -25,6 +27,20 @@ class FixedTimeslotTaskIF : public PeriodicTaskIF {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
virtual ReturnValue_t addSlot(object_id_t componentId, uint32_t slotTimeMs,
|
virtual ReturnValue_t addSlot(object_id_t componentId, uint32_t slotTimeMs,
|
||||||
|
int8_t executionStep) {
|
||||||
|
auto* execObj = ObjectManager::instance()->get<ExecutableObjectIF>(componentId);
|
||||||
|
return addSlot(componentId, execObj, slotTimeMs, executionStep);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 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
|
||||||
|
* code in #performOperation)
|
||||||
|
* @param componentId
|
||||||
|
* @param slotTimeMs
|
||||||
|
* @param executionStep
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
virtual ReturnValue_t addSlot(object_id_t execId, ExecutableObjectIF* obj, uint32_t slotTimeMs,
|
||||||
int8_t executionStep) = 0;
|
int8_t executionStep) = 0;
|
||||||
/**
|
/**
|
||||||
* Check whether the sequence is valid and perform all other required
|
* Check whether the sequence is valid and perform all other required
|
||||||
|
@ -31,25 +31,33 @@ class PeriodicTaskIF {
|
|||||||
* @param object Id of the object to add.
|
* @param object Id of the object to add.
|
||||||
* @return RETURN_OK on success, RETURN_FAILED if the object could not be added.
|
* @return RETURN_OK on success, RETURN_FAILED if the object could not be added.
|
||||||
*/
|
*/
|
||||||
virtual ReturnValue_t addComponent(object_id_t object, uint8_t opCode = 0) {
|
virtual ReturnValue_t addComponent(object_id_t object, uint8_t opCode) {
|
||||||
return HasReturnvaluesIF::RETURN_FAILED;
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
virtual ReturnValue_t addComponent(object_id_t object) {
|
||||||
|
return addComponent(object, 0);
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds an object to the list of objects to be executed.
|
* Adds an object to the list of objects to be executed.
|
||||||
* The objects are executed in the order added.
|
* The objects are executed in the order added.
|
||||||
* @param object pointer to the object to add.
|
* @param object pointer to the object to add.
|
||||||
* @return RETURN_OK on success, RETURN_FAILED if the object could not be added.
|
* @return RETURN_OK on success, RETURN_FAILED if the object could not be added.
|
||||||
*/
|
*/
|
||||||
virtual ReturnValue_t addComponent(ExecutableObjectIF* object, uint8_t opCode = 0) {
|
virtual ReturnValue_t addComponent(ExecutableObjectIF* object, uint8_t opCode) {
|
||||||
return HasReturnvaluesIF::RETURN_FAILED;
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
virtual ReturnValue_t addComponent(ExecutableObjectIF* object) {
|
||||||
|
return addComponent(object, 0);
|
||||||
|
}
|
||||||
|
|
||||||
virtual ReturnValue_t sleepFor(uint32_t ms) = 0;
|
virtual ReturnValue_t sleepFor(uint32_t ms) = 0;
|
||||||
|
|
||||||
virtual uint32_t getPeriodMs() const = 0;
|
[[nodiscard]] virtual uint32_t getPeriodMs() const = 0;
|
||||||
|
|
||||||
virtual bool isEmpty() const = 0;
|
[[nodiscard]] virtual bool isEmpty() const = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* PERIODICTASKIF_H_ */
|
#endif /* FRAMEWORK_TASK_PERIODICTASKIF_H_ */
|
||||||
|
Loading…
Reference in New Issue
Block a user