#ifndef FSFW_DATAPOOL_POOLVARIABLEIF_H_ #define FSFW_DATAPOOL_POOLVARIABLEIF_H_ #include "ReadCommitIF.h" #include "../returnvalues/HasReturnvaluesIF.h" #include "../serialize/SerializeIF.h" /** * @brief This interface is used to control data pool * variable representations. * @details * To securely handle data pool variables, all pool entries are locally * managed by data pool variable access classes, which are called pool * variables. To ensure a common state of a set of variables needed in a * function, these local pool variables again are managed by other classes, * like the DataSet classes. This interface provides unified access to * local pool variables for such manager classes. * @author Bastian Baetz * @ingroup data_pool */ class PoolVariableIF : public SerializeIF, public ReadCommitIF { public: static constexpr uint8_t INTERFACE_ID = CLASS_ID::POOL_VARIABLE_IF; static constexpr ReturnValue_t INVALID_READ_WRITE_MODE = MAKE_RETURN_CODE(0xA0); static constexpr ReturnValue_t INVALID_POOL_ENTRY = MAKE_RETURN_CODE(0xA1); static constexpr bool VALID = 1; static constexpr bool INVALID = 0; static constexpr uint32_t NO_PARAMETER = 0xffffffff; enum ReadWriteMode_t { VAR_READ, VAR_WRITE, VAR_READ_WRITE }; /** * @brief This is an empty virtual destructor, * as it is proposed for C++ interfaces. */ virtual ~PoolVariableIF() {} /** * @brief This method returns if the variable is write-only, * read-write or read-only. */ virtual ReadWriteMode_t getReadWriteMode() const = 0; virtual void setReadWriteMode(ReadWriteMode_t newMode) = 0; /** * @brief This operation shall return the data pool id of the variable. */ virtual uint32_t getDataPoolId() const = 0; /** * @brief With this call, the valid information of the * variable is returned. */ virtual bool isValid() const = 0; /** * @brief With this call, the valid information of the variable is set. */ virtual void setValid(bool validity) = 0; }; using pool_rwm_t = PoolVariableIF::ReadWriteMode_t; #endif /* FSFW_DATAPOOL_POOLVARIABLEIF_H_ */