#ifndef FSFW_ACTION_COMMANDSACTIONSIF_H_ #define FSFW_ACTION_COMMANDSACTIONSIF_H_ #include "CommandActionHelper.h" #include "../returnvalues/HasReturnvaluesIF.h" #include "../ipc/MessageQueueIF.h" /** * Interface to separate commanding actions of other objects. * In next iteration, IF should be shortened to three calls: * - dataReceived(data) * - successReceived(id, step) * - failureReceived(id, step, cause) * or even * - replyReceived(id, step, cause) (if cause == OK, it's a success). */ class CommandsActionsIF { friend class CommandActionHelper; public: static const uint8_t INTERFACE_ID = CLASS_ID::COMMANDS_ACTIONS_IF; static const ReturnValue_t OBJECT_HAS_NO_FUNCTIONS = MAKE_RETURN_CODE(1); static const ReturnValue_t ALREADY_COMMANDING = MAKE_RETURN_CODE(2); virtual ~CommandsActionsIF() {} virtual MessageQueueIF* getCommandQueuePtr() = 0; protected: virtual void stepSuccessfulReceived(ActionId_t actionId, uint8_t step) = 0; virtual void stepFailedReceived(ActionId_t actionId, uint8_t step, ReturnValue_t returnCode) = 0; virtual void dataReceived(ActionId_t actionId, const uint8_t* data, uint32_t size) = 0; virtual void completionSuccessfulReceived(ActionId_t actionId) = 0; virtual void completionFailedReceived(ActionId_t actionId, ReturnValue_t returnCode) = 0; }; #endif /* FSFW_ACTION_COMMANDSACTIONSIF_H_ */