ELEC-C7222
Libraries for ELEC C7222 Course Work
Loading...
Searching...
No Matches
c7222::FreeRtosQueue Class Reference

Ownership-based wrapper for a fixed-size item queue. More...

#include <freertos_queue.hpp>

Inheritance diagram for c7222::FreeRtosQueue:
Inheritance graph
Collaboration diagram for c7222::FreeRtosQueue:
Collaboration graph

Public Member Functions

 FreeRtosQueue ()=default
 Construct an uninitialized queue wrapper.
 
 FreeRtosQueue (std::size_t length, std::size_t item_size)
 Construct and initialize a queue.
 
bool Initialize (std::size_t length, std::size_t item_size)
 Initialize (or re-initialize) the queue.
 
 ~FreeRtosQueue ()
 Destroy queue resources if initialized.
 
bool Send (const void *item, std::uint32_t ticks_to_wait=0)
 Enqueue one item from task context.
 
bool SendFromISR (const void *item)
 Enqueue one item from ISR context.
 
bool Receive (void *out_item, std::uint32_t ticks_to_wait=0)
 Dequeue one item from task context.
 
bool ReceiveFromISR (void *out_item)
 Dequeue one item from ISR context.
 
bool Overwrite (const void *item)
 Overwrite queue storage with a new item.
 
bool Reset ()
 Reset the queue contents.
 
std::size_t MessagesWaiting () const
 
std::size_t SpacesAvailable () const
 
bool IsValid () const
 
- Public Member Functions inherited from c7222::NonCopyable
 NonCopyable (const NonCopyable &)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
 NonCopyable (NonCopyable &&)=default
 
NonCopyableoperator= (NonCopyable &&)=default
 
- Public Member Functions inherited from c7222::NonMovable
 NonMovable (const NonMovable &)=default
 
NonMovableoperator= (const NonMovable &)=default
 
 NonMovable (NonMovable &&)=delete
 
NonMovableoperator= (NonMovable &&)=delete
 

Additional Inherited Members

- Protected Member Functions inherited from c7222::NonCopyableNonMovable
 NonCopyableNonMovable ()=default
 
 ~NonCopyableNonMovable ()=default
 
- Protected Member Functions inherited from c7222::NonCopyable
 NonCopyable ()=default
 
 ~NonCopyable ()=default
 
- Protected Member Functions inherited from c7222::NonMovable
 NonMovable ()=default
 
 ~NonMovable ()=default
 

Detailed Description

Ownership-based wrapper for a fixed-size item queue.

This wrapper models the classic FreeRTOS queue behavior with task-context and ISR-context send/receive helpers. Send/receive operations are explicit; RAII here refers to queue-handle cleanup.

Typical usage:

c7222::FreeRtosQueue queue(8, sizeof(std::uint32_t));
std::uint32_t tx = 42;
(void)queue.Send(&tx, 10);
std::uint32_t rx = 0;
if(queue.Receive(&rx, 10)) {
// use rx
}
Ownership-based wrapper for a fixed-size item queue.
Definition freertos_queue.hpp:36

Constructor & Destructor Documentation

◆ FreeRtosQueue() [1/2]

c7222::FreeRtosQueue::FreeRtosQueue ( )
default

Construct an uninitialized queue wrapper.

◆ FreeRtosQueue() [2/2]

c7222::FreeRtosQueue::FreeRtosQueue ( std::size_t  length,
std::size_t  item_size 
)

Construct and initialize a queue.

Parameters
lengthNumber of queue elements.
item_sizeSize of each element in bytes.

◆ ~FreeRtosQueue()

c7222::FreeRtosQueue::~FreeRtosQueue ( )

Destroy queue resources if initialized.

Member Function Documentation

◆ Initialize()

bool c7222::FreeRtosQueue::Initialize ( std::size_t  length,
std::size_t  item_size 
)

Initialize (or re-initialize) the queue.

Parameters
lengthNumber of queue elements.
item_sizeSize of each element in bytes.
Returns
true on success.

◆ IsValid()

bool c7222::FreeRtosQueue::IsValid ( ) const
Returns
true if the wrapper owns a valid queue handle.

◆ MessagesWaiting()

std::size_t c7222::FreeRtosQueue::MessagesWaiting ( ) const
Returns
Number of queued items.

◆ Overwrite()

bool c7222::FreeRtosQueue::Overwrite ( const void *  item)

Overwrite queue storage with a new item.

Intended for queue length of 1 (mailbox pattern).

◆ Receive()

bool c7222::FreeRtosQueue::Receive ( void *  out_item,
std::uint32_t  ticks_to_wait = 0 
)

Dequeue one item from task context.

Parameters
out_itemPointer to destination storage.
ticks_to_waitMax ticks to wait if empty.
Returns
true if an item was received.

◆ ReceiveFromISR()

bool c7222::FreeRtosQueue::ReceiveFromISR ( void *  out_item)

Dequeue one item from ISR context.

◆ Reset()

bool c7222::FreeRtosQueue::Reset ( )

Reset the queue contents.

◆ Send()

bool c7222::FreeRtosQueue::Send ( const void *  item,
std::uint32_t  ticks_to_wait = 0 
)

Enqueue one item from task context.

Parameters
itemPointer to source item data.
ticks_to_waitMax ticks to wait if full.
Returns
true on success.

◆ SendFromISR()

bool c7222::FreeRtosQueue::SendFromISR ( const void *  item)

Enqueue one item from ISR context.

◆ SpacesAvailable()

std::size_t c7222::FreeRtosQueue::SpacesAvailable ( ) const
Returns
Number of free item slots.

The documentation for this class was generated from the following file: