2020-11-02 15:51:52 +01:00
|
|
|
#ifndef FSFW_ACTION_ACTIONMESSAGE_H_
|
|
|
|
#define FSFW_ACTION_ACTIONMESSAGE_H_
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2020-08-13 20:53:35 +02:00
|
|
|
#include "../ipc/CommandMessage.h"
|
|
|
|
#include "../objectmanager/ObjectManagerIF.h"
|
|
|
|
#include "../storagemanager/StorageManagerIF.h"
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2021-01-18 19:49:15 +01:00
|
|
|
using ActionId_t = uint32_t;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief These messages are part of the action module of the FSFW.
|
|
|
|
* @details
|
2021-01-18 19:49:59 +01:00
|
|
|
* These messages are sent amongst objects implementing the HasActionsIF. Classes like the
|
|
|
|
* ActionHelper are able to process these messages.
|
2021-01-18 19:49:15 +01:00
|
|
|
*/
|
2016-06-15 23:48:41 +02:00
|
|
|
class ActionMessage {
|
|
|
|
private:
|
2021-01-28 11:50:33 +01:00
|
|
|
ActionMessage();
|
2016-06-15 23:48:41 +02:00
|
|
|
public:
|
2021-01-28 11:50:33 +01:00
|
|
|
static const uint8_t MESSAGE_ID = messagetypes::ACTION;
|
|
|
|
static const Command_t EXECUTE_ACTION = MAKE_COMMAND_ID(1);
|
|
|
|
static const Command_t STEP_SUCCESS = MAKE_COMMAND_ID(2);
|
|
|
|
static const Command_t STEP_FAILED = MAKE_COMMAND_ID(3);
|
|
|
|
static const Command_t DATA_REPLY = MAKE_COMMAND_ID(4);
|
|
|
|
static const Command_t COMPLETION_SUCCESS = MAKE_COMMAND_ID(5);
|
|
|
|
static const Command_t COMPLETION_FAILED = MAKE_COMMAND_ID(6);
|
2021-03-03 15:13:03 +01:00
|
|
|
|
2021-01-28 11:50:33 +01:00
|
|
|
virtual ~ActionMessage();
|
|
|
|
static void setCommand(CommandMessage* message, ActionId_t fid,
|
|
|
|
store_address_t parameters);
|
2021-03-03 15:13:03 +01:00
|
|
|
|
2021-01-28 11:50:33 +01:00
|
|
|
static ActionId_t getActionId(const CommandMessage* message );
|
2021-03-03 15:13:03 +01:00
|
|
|
static store_address_t getStoreId(const CommandMessage* message);
|
|
|
|
|
2021-01-28 11:50:33 +01:00
|
|
|
static void setStepReply(CommandMessage* message, ActionId_t fid,
|
|
|
|
uint8_t step, ReturnValue_t result = HasReturnvaluesIF::RETURN_OK);
|
|
|
|
static uint8_t getStep(const CommandMessage* message );
|
|
|
|
static ReturnValue_t getReturnCode(const CommandMessage* message );
|
|
|
|
static void setDataReply(CommandMessage* message, ActionId_t actionId,
|
|
|
|
store_address_t data);
|
2021-03-03 15:13:03 +01:00
|
|
|
static void setCompletionReply(bool success, CommandMessage* message, ActionId_t fid,
|
2021-01-28 11:50:33 +01:00
|
|
|
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK);
|
2021-03-03 15:13:03 +01:00
|
|
|
|
2021-01-28 11:50:33 +01:00
|
|
|
static void clear(CommandMessage* message);
|
2016-06-15 23:48:41 +02:00
|
|
|
};
|
|
|
|
|
2020-11-02 15:51:52 +01:00
|
|
|
#endif /* FSFW_ACTION_ACTIONMESSAGE_H_ */
|