Merge pull request 'Fresh DHB pre-queue check hook' (#162) from fresh-dhb-pre-queue-hook into develop

Reviewed-on: eive/fsfw#162
Reviewed-by: Marius Eggert <eggertm@irs.uni-stuttgart.de>
This commit is contained in:
Robin Müller 2023-11-29 14:18:23 +01:00
commit b28174db24
2 changed files with 13 additions and 0 deletions

View File

@ -28,12 +28,17 @@ FreshDeviceHandlerBase::~FreshDeviceHandlerBase() {
} }
ReturnValue_t FreshDeviceHandlerBase::performOperation(uint8_t opCode) { ReturnValue_t FreshDeviceHandlerBase::performOperation(uint8_t opCode) {
performDeviceOperationPreQueueHandling(opCode);
handleQueue(); handleQueue();
performDeviceOperation(opCode); performDeviceOperation(opCode);
poolManager.performHkOperation(); poolManager.performHkOperation();
return returnvalue::OK; return returnvalue::OK;
} }
ReturnValue_t FreshDeviceHandlerBase::performDeviceOperationPreQueueHandling(uint8_t opCode) {
return returnvalue::OK;
}
void FreshDeviceHandlerBase::startTransition(Mode_t mode_, Submode_t submode_) { void FreshDeviceHandlerBase::startTransition(Mode_t mode_, Submode_t submode_) {
triggerEvent(CHANGING_MODE, mode_, submode_); triggerEvent(CHANGING_MODE, mode_, submode_);
// Complete mode transition immediately by default. // Complete mode transition immediately by default.

View File

@ -82,6 +82,12 @@ class FreshDeviceHandlerBase : public SystemObject,
MessageQueueIF* messageQueue; MessageQueueIF* messageQueue;
/**
* The default queue handler will process all messages for the interfaces implemented
* by this class. If there are special requirements, for example that action commands are
* received on a different queue, the user can override this function for those special
* requirements.
*/
virtual ReturnValue_t handleQueue(); virtual ReturnValue_t handleQueue();
// Mode Helpers. // Mode Helpers.
@ -153,6 +159,8 @@ class FreshDeviceHandlerBase : public SystemObject,
ReturnValue_t getParameter(uint8_t domainId, uint8_t uniqueId, ParameterWrapper* parameterWrapper, ReturnValue_t getParameter(uint8_t domainId, uint8_t uniqueId, ParameterWrapper* parameterWrapper,
const ParameterWrapper* newValues, uint16_t startAtIndex) override; const ParameterWrapper* newValues, uint16_t startAtIndex) override;
virtual ReturnValue_t performDeviceOperationPreQueueHandling(uint8_t opCode);
private: private:
// Executable Overrides. // Executable Overrides.
void setTaskIF(PeriodicTaskIF* task) override; void setTaskIF(PeriodicTaskIF* task) override;