Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: nRF51_Vdd TextLCD BME280
Queue< T, queue_sz > Class Template Reference
[Queue class]
The Queue class represents a collection of objects that are stored first by order of priority, and then in first-in, first-out (FIFO) order. More...
#include <Queue.h>
Inherits NonCopyable< Queue< T, queue_sz > >.
Public Member Functions | |
Queue () | |
Create and initialize a message Queue of objects of the parameterized type `T` and maximum capacity specified by `queue_sz`. | |
~Queue () | |
Queue destructor. | |
bool | empty () const |
Check if the queue is empty. | |
bool | full () const |
Check if the queue is full. | |
osStatus | put (T *data, uint32_t millisec=0, uint8_t prio=0) |
Inserts the given element to the end of the queue. | |
osEvent | get (uint32_t millisec=osWaitForever) |
Get a message or wait for a message from the queue. | |
Private Member Functions | |
MBED_DEPRECATED ("Invalid copy construction of a NonCopyable resource.") NonCopyable(const NonCopyable &) | |
NonCopyable copy constructor. | |
MBED_DEPRECATED ("Invalid copy assignment of a NonCopyable resource.") NonCopyable &operator | |
NonCopyable copy assignment operator. |
Detailed Description
template<typename T, uint32_t queue_sz>
class rtos::Queue< T, queue_sz >
The Queue class represents a collection of objects that are stored first by order of priority, and then in first-in, first-out (FIFO) order.
You can use a queue when you need to store data and then access it in the same order that it has been stored. The order in which you retrieve the data is in order of descending priority. If multiple elements have the same priority, they are retrieved in FIFO order.
The object type stored in the queue can be an integer, pointer or a generic type given by the template parameter T.
- Template Parameters:
-
T Specifies the type of elements stored in the queue. queue_sz Maximum number of messages that you can store in the queue.
- Note:
- Memory considerations: The queue control structures are created on the current thread's stack, both for the Mbed OS and underlying RTOS objects (static or dynamic RTOS memory pools are not being used).
Definition at line 59 of file Queue.h.
Constructor & Destructor Documentation
Queue | ( | ) |
~Queue | ( | ) |
Member Function Documentation
bool empty | ( | ) | const |
bool full | ( | ) | const |
osEvent get | ( | uint32_t | millisec = osWaitForever ) |
Get a message or wait for a message from the queue.
This function retrieves a message from the queue. The message is stored in the value field of the returned `osEvent` object.
The timeout specified by the parameter `millisec` specifies how long the function waits to retrieve the message from the queue.
The timeout parameter can have the following values:
- When the timeout is 0, the function returns instantly.
- When the timeout is osWaitForever (default), the function waits infinite time until the message is retrieved.
- When the timeout is any other value, the function waits for the specified time before returning a timeout error.
Messages are retrieved in descending priority order. If two messages share the same priority level, they are retrieved in first-in, first-out (FIFO) order.
- Parameters:
-
millisec Timeout value or 0 in case of no time-out. (default: osWaitForever).
- Returns:
- Event information that includes the message in event. Message value and the status code in event.status: osEventMessage Message successfully received. osOK No message is available in the queue, and no timeout was specified. osEventTimeout No message was received before a timeout event occurred. osErrorParameter A parameter is invalid or outside of a permitted range.
- Note:
- You may call this function from ISR context if the millisec parameter is set to 0.
osStatus put | ( | T * | data, |
uint32_t | millisec = 0 , |
||
uint8_t | prio = 0 |
||
) |
Inserts the given element to the end of the queue.
This function puts the message pointed to by `data` into the queue. The parameter `prio` is used to sort the message according to their priority (higher numbers indicate higher priority) on insertion.
The timeout indicated by the parameter `millisec` specifies how long the function blocks waiting for the message to be inserted into the queue.
The parameter `millisec` can have the following values:
- When the timeout is 0 (the default), the function returns instantly.
- When the timeout is osWaitForever, the function waits for an infinite time.
- For all other values, the function waits for the given number of milliseconds.
- Parameters:
-
data Pointer to the element to insert into the queue. millisec Timeout for the operation to be executed, or 0 in case of no timeout. (default: 0) prio Priority of the operation or 0 in case of default. (default: 0)
- Returns:
- Status code that indicates the execution status of the function: osOK The message has been successfully inserted into the queue. osErrorTimeout The message could not be inserted into the queue in the given time. osErrorResource The message could not be inserted because the queue is full. osErrorParameter Internal error or nonzero timeout specified in an ISR.
- Note:
- You may call this function from ISR context if the millisec parameter is set to 0.
Generated on Tue Jul 12 2022 15:16:20 by
