fsfw/src/fsfw/action/Action.h

50 lines
1.1 KiB
C
Raw Normal View History

2022-06-29 23:36:45 +02:00
#pragma once
#include <stdint.h>
#include <vector>
#include <fsfw/serialize/SerializeIF.h>
#include "ActionMessage.h"
#include "ParameterIF.h"
#ifdef FSFW_INTROSPECTION
#include "../introspection/Enum.h"
#endif
class Action: public SerializeIF {
public:
#ifdef FSFW_INTROSPECTION
Action();
void setEnum(EnumIF* id);
const char *getName();
#else
Action(ActionId_t id);
#endif
ActionId_t getId();
2022-07-20 16:59:42 +02:00
MessageQueueId_t commandedBy;
2022-07-28 14:43:22 +02:00
[[nodiscard]] virtual ReturnValue_t handle() = 0;
2022-06-29 23:36:45 +02:00
void registerParameter(ParameterIF *parameter);
std::vector<ParameterIF *> const *getParameters() const;
ReturnValue_t serialize(uint8_t **buffer, size_t *size, size_t maxSize,
Endianness streamEndianness) const override;
size_t getSerializedSize() const override;
ReturnValue_t deSerialize(const uint8_t **buffer, size_t *size,
Endianness streamEndianness) override;
private:
ActionId_t id;
2022-07-20 16:59:42 +02:00
2022-06-29 23:36:45 +02:00
#ifdef FSFW_INTROSPECTION
const char *name;
#endif
std::vector<ParameterIF *> parameterList;
};