Kenji Arai / mbed-os_TYBLE16

Dependents:   TYBLE16_simple_data_logger TYBLE16_MP3_Air

Embed: (wiki syntax)

« Back to documentation index

Mail< T, queue_sz > Class Template Reference

Mail< T, queue_sz > Class Template Reference
[Mail class]

The Mail class allows you to control, send, receive or wait for mail. More...

#include <Mail.h>

Inherits NonCopyable< Mail< T, queue_sz > >.

Public Member Functions

 Mail ()
 Create and initialize Mail queue.
bool empty () const
 Check if the mail queue is empty.
bool full () const
 Check if the mail queue is full.
T * alloc (MBED_UNUSED uint32_t millisec=0)
 Allocate a memory block of type T, without blocking.
T * alloc_for (uint32_t millisec)
 Allocate a memory block of type T, optionally blocking.
T * alloc_until (uint64_t millisec)
 Allocate a memory block of type T, blocking.
T * calloc (MBED_UNUSED uint32_t millisec=0)
 Allocate a memory block of type T, and set memory block to zero.
T * calloc_for (uint32_t millisec)
 Allocate a memory block of type T, optionally blocking, and set memory block to zero.
T * calloc_until (uint64_t millisec)
 Allocate a memory block of type T, blocking, and set memory block to zero.
osStatus put (T *mptr)
 Put a mail in the queue.
osEvent get (uint32_t millisec=osWaitForever)
 Get a mail from the queue.
osStatus free (T *mptr)
 Free a memory block from a mail.

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::Mail< T, queue_sz >

The Mail class allows you to control, send, receive or wait for mail.

A mail is a memory block that is sent to a thread or interrupt service routine (ISR).

Template Parameters:
TData type of a single mail message element.
queue_szMaximum number of mail messages in queue.
Note:
Memory considerations: The mail data store and control structures are part of this class - they do not (themselves) allocate memory on the heap, both for the Mbed OS and underlying RTOS objects (static or dynamic RTOS memory pools are not being used).

Definition at line 63 of file Mail.h.


Constructor & Destructor Documentation

Mail (  )

Create and initialize Mail queue.

Note:
You cannot call this function from ISR context.

Definition at line 69 of file Mail.h.


Member Function Documentation

T* alloc ( MBED_UNUSED uint32_t  millisec = 0 )

Allocate a memory block of type T, without blocking.

Parameters:
millisecNot used (see note).
Returns:
Pointer to memory block that you can fill with mail or nullptr in case error.
Note:
You may call this function from ISR context.
If blocking is required, use Mail::alloc_for or Mail::alloc_until

Definition at line 106 of file Mail.h.

T* alloc_for ( uint32_t  millisec )

Allocate a memory block of type T, optionally blocking.

Parameters:
millisecTimeout value, or osWaitForever.
Returns:
Pointer to memory block that you can fill with mail or nullptr in case error.
Note:
You may call this function from ISR context if the millisec parameter is set to 0.

Definition at line 119 of file Mail.h.

T* alloc_until ( uint64_t  millisec )

Allocate a memory block of type T, blocking.

Parameters:
millisecAbsolute timeout time, referenced to Kernel::get_ms_count().
Returns:
Pointer to memory block that you can fill with mail or nullptr in case error.
Note:
You cannot call this function from ISR context.
the underlying RTOS may have a limit to the maximum wait time due to internal 32-bit computations, but this is guaranteed to work if the wait is <= 0x7fffffff milliseconds (~24 days). If the limit is exceeded, the wait will time out earlier than specified.

Definition at line 136 of file Mail.h.

T* calloc ( MBED_UNUSED uint32_t  millisec = 0 )

Allocate a memory block of type T, and set memory block to zero.

Parameters:
millisecNot used (see note).
Returns:
Pointer to memory block that you can fill with mail or nullptr in case error.
Note:
You may call this function from ISR context if the millisec parameter is set to 0.
If blocking is required, use Mail::calloc_for or Mail::calloc_until

Definition at line 150 of file Mail.h.

T* calloc_for ( uint32_t  millisec )

Allocate a memory block of type T, optionally blocking, and set memory block to zero.

Parameters:
millisecTimeout value, or osWaitForever.
Returns:
Pointer to memory block that you can fill with mail or nullptr in case error.
Note:
You may call this function from ISR context if the millisec parameter is set to 0.

Definition at line 163 of file Mail.h.

T* calloc_until ( uint64_t  millisec )

Allocate a memory block of type T, blocking, and set memory block to zero.

Parameters:
millisecAbsolute timeout time, referenced to Kernel::get_ms_count().
Returns:
Pointer to memory block that you can fill with mail or nullptr in case error.
Note:
You cannot call this function from ISR context.
the underlying RTOS may have a limit to the maximum wait time due to internal 32-bit computations, but this is guaranteed to work if the wait is <= 0x7fffffff milliseconds (~24 days). If the limit is exceeded, the wait will time out earlier than specified.

Definition at line 180 of file Mail.h.

bool empty (  ) const

Check if the mail queue is empty.

Returns:
State of queue.
Return values:
trueMail queue is empty.
falseMail queue contains mail.
Note:
You may call this function from ISR context.

Definition at line 79 of file Mail.h.

osStatus free ( T *  mptr )

Free a memory block from a mail.

Parameters:
mptrPointer to the memory block that was obtained with Mail::get.
Returns:
Status code that indicates the execution status of the function (osOK on success).
Note:
You may call this function from ISR context.

Definition at line 227 of file Mail.h.

bool full (  ) const

Check if the mail queue is full.

Returns:
State of queue.
Return values:
trueMail queue is full.
falseMail queue is not full.
Note:
You may call this function from ISR context.

Definition at line 92 of file Mail.h.

osEvent get ( uint32_t  millisec = osWaitForever )

Get a mail from the queue.

Parameters:
millisecTimeout value (default: osWaitForever).
Returns:
Event that contains mail information or error code.
Return values:
osEventMessageMessage received.
osOKNo mail is available (and no timeout was specified).
osEventTimeoutNo mail has arrived during the given timeout period.
osErrorParameterA 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.

Definition at line 210 of file Mail.h.

osStatus put ( T *  mptr )

Put a mail in the queue.

Parameters:
mptrMemory block previously allocated with Mail::alloc or Mail::calloc.
Returns:
Status code that indicates the execution status of the function (osOK on success).
Note:
You may call this function from ISR context.

Definition at line 193 of file Mail.h.