mq doc improvements
This commit is contained in:
parent
1d4d01d190
commit
d1500a7868
@ -50,14 +50,16 @@ ReturnValue_t MessageQueue::reply(MessageQueueMessage* message) {
|
|||||||
ReturnValue_t MessageQueue::sendMessageFrom(MessageQueueId_t sendTo,
|
ReturnValue_t MessageQueue::sendMessageFrom(MessageQueueId_t sendTo,
|
||||||
MessageQueueMessage* message, MessageQueueId_t sentFrom,
|
MessageQueueMessage* message, MessageQueueId_t sentFrom,
|
||||||
bool ignoreFault) {
|
bool ignoreFault) {
|
||||||
return sendMessageFromMessageQueue(sendTo,message,sentFrom,ignoreFault, callContext);
|
return sendMessageFromMessageQueue(sendTo, message, sentFrom,
|
||||||
|
ignoreFault, callContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ReturnValue_t MessageQueue::handleSendResult(BaseType_t result, bool ignoreFault) {
|
ReturnValue_t MessageQueue::handleSendResult(BaseType_t result, bool ignoreFault) {
|
||||||
if (result != pdPASS) {
|
if (result != pdPASS) {
|
||||||
if (!ignoreFault) {
|
if (!ignoreFault) {
|
||||||
InternalErrorReporterIF* internalErrorReporter = objectManager->get<InternalErrorReporterIF>(
|
InternalErrorReporterIF* internalErrorReporter =
|
||||||
|
objectManager->get<InternalErrorReporterIF>(
|
||||||
objects::INTERNAL_ERROR_REPORTER);
|
objects::INTERNAL_ERROR_REPORTER);
|
||||||
if (internalErrorReporter != NULL) {
|
if (internalErrorReporter != NULL) {
|
||||||
internalErrorReporter->queueMessageNotSent();
|
internalErrorReporter->queueMessageNotSent();
|
||||||
@ -78,7 +80,8 @@ ReturnValue_t MessageQueue::receiveMessage(MessageQueueMessage* message,
|
|||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t MessageQueue::receiveMessage(MessageQueueMessage* message) {
|
ReturnValue_t MessageQueue::receiveMessage(MessageQueueMessage* message) {
|
||||||
BaseType_t result = xQueueReceive(handle,reinterpret_cast<void*>(message->getBuffer()), 0);
|
BaseType_t result = xQueueReceive(handle,reinterpret_cast<void*>(
|
||||||
|
message->getBuffer()), 0);
|
||||||
if (result == pdPASS){
|
if (result == pdPASS){
|
||||||
this->lastPartner = message->getSender();
|
this->lastPartner = message->getSender();
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
@ -12,28 +12,28 @@ extern "C" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//TODO this class assumes that MessageQueueId_t is the same size as void* (the FreeRTOS handle type), compiler will catch this but it might be nice to have something checking or even an always working solution
|
//TODO this class assumes that MessageQueueId_t is the same size as void* (the FreeRTOS handle type), compiler will catch this but it might be nice to have something checking or even an always working solution
|
||||||
// https://scaryreasoner.wordpress.com/2009/02/28/checking-sizeof-at-compile-time/
|
// https://scaryreasoner.wordpress.com/2009/02/28/checking-sizeof-at-compile-time/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This class manages sending and receiving of message queue messages.
|
* @brief This class manages sending and receiving of
|
||||||
*
|
* message queue messages.
|
||||||
* @details Message queues are used to pass asynchronous messages between processes.
|
* @details
|
||||||
|
* Message queues are used to pass asynchronous messages between processes.
|
||||||
* They work like post boxes, where all incoming messages are stored in FIFO
|
* They work like post boxes, where all incoming messages are stored in FIFO
|
||||||
* order. This class creates a new receiving queue and provides methods to fetch
|
* order. This class creates a new receiving queue and provides methods to fetch
|
||||||
* received messages. Being a child of MessageQueueSender, this class also provides
|
* received messages. Being a child of MessageQueueSender, this class also
|
||||||
* methods to send a message to a user-defined or a default destination. In addition
|
* provides methods to send a message to a user-defined or a default destination.
|
||||||
* it also provides a reply method to answer to the queue it received its last message
|
* In addition it also provides a reply method to answer to the queue it
|
||||||
* from.
|
* received its last message from.
|
||||||
*
|
*
|
||||||
* The MessageQueue should be used as "post box" for a single owning object. So all
|
* The MessageQueue should be used as "post box" for a single owning object.
|
||||||
* message queue communication is "n-to-one".
|
* So all message queue communication is "n-to-one".
|
||||||
* For creating the queue, as well as sending and receiving messages, the class makes
|
* For creating the queue, as well as sending and receiving messages, the class
|
||||||
* use of the operating system calls provided.
|
* makes use of the operating system calls provided.
|
||||||
*
|
*
|
||||||
* Please keep in mind that FreeRTOS offers
|
* Please keep in mind that FreeRTOS offers different calls for message queue
|
||||||
* different calls for message queue operations if called from an ISR.
|
* operations if called from an ISR.
|
||||||
* For now, the system context needs to be switched manually.
|
* For now, the system context needs to be switched manually.
|
||||||
* @ingroup osal
|
* @ingroup osal
|
||||||
* @ingroup message_queue
|
* @ingroup message_queue
|
||||||
@ -43,21 +43,26 @@ class MessageQueue : public MessageQueueIF {
|
|||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* @brief The constructor initializes and configures the message queue.
|
* @brief The constructor initializes and configures the message queue.
|
||||||
* @details By making use of the according operating system call, a message queue is created
|
* @details
|
||||||
|
* By making use of the according operating system call, a message queue is created
|
||||||
* and initialized. The message depth - the maximum number of messages to be
|
* and initialized. The message depth - the maximum number of messages to be
|
||||||
* buffered - may be set with the help of a parameter, whereas the message size is
|
* buffered - may be set with the help of a parameter, whereas the message size is
|
||||||
* automatically set to the maximum message queue message size. The operating system
|
* automatically set to the maximum message queue message size. The operating system
|
||||||
* sets the message queue id, or i case of failure, it is set to zero.
|
* sets the message queue id, or i case of failure, it is set to zero.
|
||||||
* @param message_depth The number of messages to be buffered before passing an error to the
|
* @param message_depth
|
||||||
|
* The number of messages to be buffered before passing an error to the
|
||||||
* sender. Default is three.
|
* sender. Default is three.
|
||||||
* @param max_message_size With this parameter, the maximum message size can be adjusted.
|
* @param max_message_size
|
||||||
|
* With this parameter, the maximum message size can be adjusted.
|
||||||
* This should be left default.
|
* This should be left default.
|
||||||
*/
|
*/
|
||||||
MessageQueue( size_t message_depth = 3, size_t max_message_size = MessageQueueMessage::MAX_MESSAGE_SIZE );
|
MessageQueue( size_t message_depth = 3,
|
||||||
|
size_t max_message_size = MessageQueueMessage::MAX_MESSAGE_SIZE );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief The destructor deletes the formerly created message queue.
|
* @brief The destructor deletes the formerly created message queue.
|
||||||
* @details This is accomplished by using the delete call provided by the operating system.
|
* @details This is accomplished by using the delete call provided
|
||||||
|
* by the operating system.
|
||||||
*/
|
*/
|
||||||
virtual ~MessageQueue();
|
virtual ~MessageQueue();
|
||||||
|
|
||||||
@ -90,27 +95,28 @@ public:
|
|||||||
ReturnValue_t reply( MessageQueueMessage* message );
|
ReturnValue_t reply( MessageQueueMessage* message );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief With the sendMessage call, a queue message is sent to a receiving queue.
|
* @brief With the sendMessage call, a queue message is sent to a receiving queue.
|
||||||
* \details This method takes the message provided, adds the sentFrom information and passes
|
* @details This method takes the message provided, adds the sentFrom information and passes
|
||||||
* it on to the destination provided with an operating system call. The OS's return
|
* it on to the destination provided with an operating system call. The OS's return
|
||||||
* value is returned.
|
* value is returned.
|
||||||
* \param sendTo This parameter specifies the message queue id to send the message to.
|
* @param sendTo This parameter specifies the message queue id to send the message to.
|
||||||
* \param message This is a pointer to a previously created message, which is sent.
|
* @param message This is a pointer to a previously created message, which is sent.
|
||||||
* \param sentFrom The sentFrom information can be set to inject the sender's queue id into the message.
|
* @param sentFrom The sentFrom information can be set to inject the sender's queue id into the message.
|
||||||
* This variable is set to zero by default.
|
* This variable is set to zero by default.
|
||||||
* \param ignoreFault If set to true, the internal software fault counter is not incremented if queue is full.
|
* @param ignoreFault If set to true, the internal software fault counter is not incremented if queue is full.
|
||||||
*/
|
*/
|
||||||
virtual ReturnValue_t sendMessageFrom( MessageQueueId_t sendTo, MessageQueueMessage* message,
|
virtual ReturnValue_t sendMessageFrom( MessageQueueId_t sendTo, MessageQueueMessage* message,
|
||||||
MessageQueueId_t sentFrom = NO_QUEUE, bool ignoreFault = false );
|
MessageQueueId_t sentFrom = NO_QUEUE, bool ignoreFault = false );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief The sendToDefault method sends a queue message to the default destination.
|
* @brief The sendToDefault method sends a queue message to the default destination.
|
||||||
* \details In all other aspects, it works identical to the sendMessage method.
|
* @details In all other aspects, it works identical to the sendMessage method.
|
||||||
* \param message This is a pointer to a previously created message, which is sent.
|
* @param message This is a pointer to a previously created message, which is sent.
|
||||||
* \param sentFrom The sentFrom information can be set to inject the sender's queue id into the message.
|
* @param sentFrom The sentFrom information can be set to inject the sender's queue id into the message.
|
||||||
* This variable is set to zero by default.
|
* This variable is set to zero by default.
|
||||||
*/
|
*/
|
||||||
virtual ReturnValue_t sendToDefaultFrom( MessageQueueMessage* message, MessageQueueId_t sentFrom = NO_QUEUE, bool ignoreFault = false );
|
virtual ReturnValue_t sendToDefaultFrom( MessageQueueMessage* message,
|
||||||
|
MessageQueueId_t sentFrom = NO_QUEUE, bool ignoreFault = false );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This function reads available messages from the message queue and returns the sender.
|
* @brief This function reads available messages from the message queue and returns the sender.
|
||||||
@ -147,27 +153,34 @@ public:
|
|||||||
MessageQueueId_t getId() const;
|
MessageQueueId_t getId() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief This method is a simple setter for the default destination.
|
* @brief This method is a simple setter for the default destination.
|
||||||
*/
|
*/
|
||||||
void setDefaultDestination(MessageQueueId_t defaultDestination);
|
void setDefaultDestination(MessageQueueId_t defaultDestination);
|
||||||
/**
|
/**
|
||||||
* \brief This method is a simple getter for the default destination.
|
* @brief This method is a simple getter for the default destination.
|
||||||
*/
|
*/
|
||||||
MessageQueueId_t getDefaultDestination() const;
|
MessageQueueId_t getDefaultDestination() const;
|
||||||
|
|
||||||
bool isDefaultDestinationSet() const;
|
bool isDefaultDestinationSet() const;
|
||||||
protected:
|
protected:
|
||||||
/**
|
/**
|
||||||
* Implementation to be called from any send Call within MessageQueue and MessageQueueSenderIF
|
* @brief Implementation to be called from any send Call within
|
||||||
* \details This method takes the message provided, adds the sentFrom information and passes
|
* MessageQueue and MessageQueueSenderIF.
|
||||||
* it on to the destination provided with an operating system call. The OS's return
|
* @details
|
||||||
* value is returned.
|
* This method takes the message provided, adds the sentFrom information and
|
||||||
* \param sendTo This parameter specifies the message queue id to send the message to.
|
* passes it on to the destination provided with an operating system call.
|
||||||
* \param message This is a pointer to a previously created message, which is sent.
|
* The OS's return value is returned.
|
||||||
* \param sentFrom The sentFrom information can be set to inject the sender's queue id into the message.
|
* @param sendTo
|
||||||
* This variable is set to zero by default.
|
* This parameter specifies the message queue id to send the message to.
|
||||||
* \param ignoreFault If set to true, the internal software fault counter is not incremented if queue is full.
|
* @param message
|
||||||
* \param context
|
* This is a pointer to a previously created message, which is sent.
|
||||||
|
* @param sentFrom
|
||||||
|
* The sentFrom information can be set to inject the sender's queue id into
|
||||||
|
* the message. This variable is set to zero by default.
|
||||||
|
* @param ignoreFault
|
||||||
|
* If set to true, the internal software fault counter is not incremented
|
||||||
|
* if queue is full.
|
||||||
|
* @param context Specify whether call is made from task or from an ISR.
|
||||||
*/
|
*/
|
||||||
static ReturnValue_t sendMessageFromMessageQueue(MessageQueueId_t sendTo,
|
static ReturnValue_t sendMessageFromMessageQueue(MessageQueueId_t sendTo,
|
||||||
MessageQueueMessage* message, MessageQueueId_t sentFrom = NO_QUEUE,
|
MessageQueueMessage* message, MessageQueueId_t sentFrom = NO_QUEUE,
|
||||||
@ -175,7 +188,6 @@ protected:
|
|||||||
|
|
||||||
static ReturnValue_t handleSendResult(BaseType_t result, bool ignoreFault);
|
static ReturnValue_t handleSendResult(BaseType_t result, bool ignoreFault);
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QueueHandle_t handle;
|
QueueHandle_t handle;
|
||||||
MessageQueueId_t defaultDestination;
|
MessageQueueId_t defaultDestination;
|
||||||
|
Loading…
Reference in New Issue
Block a user