2022-04-11 11:19:38 +02:00
|
|
|
#ifndef FSFW_SRC_FSFW_IPC_MESSAGEQUEUEBASE_H_
|
|
|
|
#define FSFW_SRC_FSFW_IPC_MESSAGEQUEUEBASE_H_
|
|
|
|
|
|
|
|
#include <fsfw/ipc/MessageQueueIF.h>
|
2022-04-27 08:39:21 +02:00
|
|
|
#include <fsfw/ipc/definitions.h>
|
2022-04-11 11:19:38 +02:00
|
|
|
|
2022-04-27 08:39:21 +02:00
|
|
|
class MessageQueueBase : public MessageQueueIF {
|
|
|
|
public:
|
2022-04-11 11:19:38 +02:00
|
|
|
MessageQueueBase(MessageQueueId_t id, MessageQueueId_t defaultDest, MqArgs* mqArgs);
|
2022-07-25 14:04:06 +02:00
|
|
|
~MessageQueueBase() override;
|
2022-04-11 11:19:38 +02:00
|
|
|
|
|
|
|
// Default implementations for MessageQueueIF where possible
|
2022-07-25 14:04:06 +02:00
|
|
|
[[nodiscard]] MessageQueueId_t getLastPartner() const override;
|
|
|
|
[[nodiscard]] MessageQueueId_t getId() const override;
|
|
|
|
MqArgs& getMqArgs() override;
|
|
|
|
void setDefaultDestination(MessageQueueId_t defaultDestination) override;
|
|
|
|
[[nodiscard]] MessageQueueId_t getDefaultDestination() const override;
|
|
|
|
[[nodiscard]] bool isDefaultDestinationSet() const override;
|
|
|
|
ReturnValue_t sendMessage(MessageQueueId_t sendTo, MessageQueueMessageIF* message,
|
2022-07-25 19:36:56 +02:00
|
|
|
bool ignoreFault) override;
|
2022-07-25 14:04:06 +02:00
|
|
|
ReturnValue_t sendToDefault(MessageQueueMessageIF* message) override;
|
|
|
|
ReturnValue_t reply(MessageQueueMessageIF* message) override;
|
|
|
|
ReturnValue_t receiveMessage(MessageQueueMessageIF* message,
|
2022-07-25 19:36:56 +02:00
|
|
|
MessageQueueId_t* receivedFrom) override;
|
2022-07-25 14:04:06 +02:00
|
|
|
ReturnValue_t sendToDefaultFrom(MessageQueueMessageIF* message, MessageQueueId_t sentFrom,
|
2022-07-25 19:36:56 +02:00
|
|
|
bool ignoreFault = false) override;
|
2022-04-11 11:19:38 +02:00
|
|
|
|
|
|
|
// OSAL specific, forward the abstract function
|
2022-07-25 14:04:06 +02:00
|
|
|
ReturnValue_t receiveMessage(MessageQueueMessageIF* message) override = 0;
|
|
|
|
ReturnValue_t sendMessageFrom(MessageQueueId_t sendTo, MessageQueueMessageIF* message,
|
2022-07-25 19:36:56 +02:00
|
|
|
MessageQueueId_t sentFrom, bool ignoreFault = false) override = 0;
|
2022-04-27 08:39:21 +02:00
|
|
|
|
|
|
|
protected:
|
2022-04-11 11:19:38 +02:00
|
|
|
MessageQueueId_t id = MessageQueueIF::NO_QUEUE;
|
|
|
|
MessageQueueId_t last = MessageQueueIF::NO_QUEUE;
|
|
|
|
MessageQueueId_t defaultDest = MessageQueueIF::NO_QUEUE;
|
|
|
|
MqArgs args = {};
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif /* FSFW_SRC_FSFW_IPC_MESSAGEQUEUEBASE_H_ */
|