81 lines
2.1 KiB
C
81 lines
2.1 KiB
C
|
#ifndef FRAMEWORK_IPC_MESSAGEQUEUEMESSAGEIF_H_
|
||
|
#define FRAMEWORK_IPC_MESSAGEQUEUEMESSAGEIF_H_
|
||
|
|
||
|
#include <fsfw/ipc/messageQueueDefinitions.h>
|
||
|
#include <cstddef>
|
||
|
#include <cstdint>
|
||
|
|
||
|
class MessageQueueMessageIF {
|
||
|
public:
|
||
|
|
||
|
/**
|
||
|
* @brief This constants defines the size of the header,
|
||
|
* which is added to every message.
|
||
|
*/
|
||
|
static const size_t HEADER_SIZE = sizeof(MessageQueueId_t);
|
||
|
|
||
|
virtual ~MessageQueueMessageIF() {};
|
||
|
|
||
|
/**
|
||
|
* @brief With this method, the whole content and the message
|
||
|
* size is set to zero.
|
||
|
* @details
|
||
|
* Implementations should also take care to clear data which is stored
|
||
|
* indirectly (e.g. storage data).
|
||
|
*/
|
||
|
virtual void clear() = 0;
|
||
|
|
||
|
/**
|
||
|
* @brief Get read-only pointer to the complete data of the message.
|
||
|
* @return
|
||
|
*/
|
||
|
virtual const uint8_t* getBuffer() const = 0;
|
||
|
|
||
|
/**
|
||
|
* @brief This method is used to get the complete data of the message.
|
||
|
*/
|
||
|
virtual uint8_t* getBuffer() = 0;
|
||
|
|
||
|
/**
|
||
|
* @brief This method is used to set the sender's message queue id
|
||
|
* information prior to sending the message.
|
||
|
* @param setId
|
||
|
* The message queue id that identifies the sending message queue.
|
||
|
*/
|
||
|
virtual void setSender(MessageQueueId_t setId) = 0;
|
||
|
|
||
|
/**
|
||
|
* @brief This method is used to extract the sender's message queue id
|
||
|
* information from a received message.
|
||
|
*/
|
||
|
virtual MessageQueueId_t getSender() const = 0;
|
||
|
|
||
|
/**
|
||
|
* @brief This method is used to fetch the data content of the message.
|
||
|
* @details
|
||
|
* It shall be used by child classes to add data at the right position.
|
||
|
*/
|
||
|
virtual const uint8_t* getData() const = 0;
|
||
|
/**
|
||
|
* @brief This method is used to fetch the data content of the message.
|
||
|
* @details
|
||
|
* It shall be used by child classes to add data at the right position.
|
||
|
*/
|
||
|
virtual uint8_t* getData() = 0;
|
||
|
|
||
|
/**
|
||
|
* Get constant message size of current message implementation.
|
||
|
* @return
|
||
|
*/
|
||
|
virtual size_t getMessageSize() const = 0;
|
||
|
|
||
|
virtual void setMessageSize(size_t messageSize) = 0;
|
||
|
virtual size_t getMinimumMessageSize() const = 0;
|
||
|
virtual size_t getMaximumMessageSize() const = 0;
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
#endif /* FRAMEWORK_IPC_MESSAGEQUEUEMESSAGEIF_H_ */
|