WIP: Update DHB command and reply map helpers #103

Closed
muellerr wants to merge 7 commits from mueller/update-cmd-reply-maps-refactoring into develop
2 changed files with 17 additions and 11 deletions
Showing only changes of commit bb640f8758 - Show all commits

View File

@ -8,7 +8,6 @@
#include "DeviceHandlerIF.h" #include "DeviceHandlerIF.h"
#include "DeviceHandlerThermalSet.h" #include "DeviceHandlerThermalSet.h"
#include "DhbCfgHelpers.h" #include "DhbCfgHelpers.h"
#include "fsfw/action/ActionHelper.h" #include "fsfw/action/ActionHelper.h"
#include "fsfw/action/HasActionsIF.h" #include "fsfw/action/HasActionsIF.h"
#include "fsfw/datapool/PoolVariableIF.h" #include "fsfw/datapool/PoolVariableIF.h"
@ -490,7 +489,9 @@ class DeviceHandlerBase : public DeviceHandlerIF,
* @return - @c RETURN_OK when the command was successfully inserted, * @return - @c RETURN_OK when the command was successfully inserted,
* - @c RETURN_FAILED else. * - @c RETURN_FAILED else.
*/ */
ReturnValue_t insertInCommandMap(CmdCfg cfg); ReturnValue_t insertInCommandMap(
DeviceCommandId_t deviceCommand, bool useAlternativeReply = false,
DeviceCommandId_t alternativeReplyId = DeviceHandlerIF::NO_COMMAND_ID);
/** /**
* Enables a periodic reply for a given command. It sets to delay cycles to the specified * Enables a periodic reply for a given command. It sets to delay cycles to the specified

View File

@ -6,8 +6,8 @@
* combination * combination
*/ */
struct CfgBase { struct CfgBase {
public: public:
explicit CfgBase(DeviceCommandId_t cmdAndOrReplyId): cmdAndOrReplyId(cmdAndOrReplyId) {}; explicit CfgBase(DeviceCommandId_t cmdAndOrReplyId) : cmdAndOrReplyId(cmdAndOrReplyId){};
DeviceCommandId_t cmdAndOrReplyId; DeviceCommandId_t cmdAndOrReplyId;
}; };
@ -15,8 +15,8 @@ public:
* @brief Configuration class for commands * @brief Configuration class for commands
*/ */
struct CmdCfg { struct CmdCfg {
public: public:
explicit CmdCfg(DeviceCommandId_t cmdId): baseCfg(cmdId) {}; explicit CmdCfg(DeviceCommandId_t cmdId) : baseCfg(cmdId){};
CfgBase baseCfg; CfgBase baseCfg;
//! This can be used if a command can trigger multiple replies //! This can be used if a command can trigger multiple replies
@ -27,9 +27,14 @@ public:
* @brief Configuration class for replies * @brief Configuration class for replies
*/ */
struct ReplyCfg { struct ReplyCfg {
public: public:
ReplyCfg(DeviceCommandId_t replyId, uint16_t maxDelayCycles); ReplyCfg(DeviceCommandId_t replyId, uint16_t maxDelayCycles)
ReplyCfg(DeviceCommandId_t replyId, uint16_t maxDelayCycles); : baseCfg(replyId), maxDelayCycles(maxDelayCycles){};
ReplyCfg(DeviceCommandId_t replyId, uint16_t maxDelayCycles, LocalPoolDataSetBase* set)
: ReplyCfg(replyId, maxDelayCycles) {
dataSet = set;
};
CfgBase baseCfg; CfgBase baseCfg;
//! A data set can be mapped to a reply ID. This allows to omit the #getDataSetHandle //! A data set can be mapped to a reply ID. This allows to omit the #getDataSetHandle
//! override in a user device handler as this pointer will be passed as long as the device //! override in a user device handler as this pointer will be passed as long as the device
@ -58,8 +63,8 @@ public:
* @brief Configuration class for commands and replies * @brief Configuration class for commands and replies
*/ */
struct CmdReplyCfg { struct CmdReplyCfg {
public: public:
CmdReplyCfg(CmdCfg cmdCfg, ReplyCfg replyCfg): cmdCfg(cmdCfg), replyCfg(replyCfg) {} CmdReplyCfg(CmdCfg cmdCfg, ReplyCfg replyCfg) : cmdCfg(cmdCfg), replyCfg(replyCfg) {}
CmdCfg cmdCfg; CmdCfg cmdCfg;
ReplyCfg replyCfg; ReplyCfg replyCfg;
}; };