Mbed OS Reference
Loading...
Searching...
No Matches
PolledQueue Class Reference

PolledQueue. More...

#include <PolledQueue.h>

Inheritance diagram for PolledQueue:
TaskQueue

Public Member Functions

 PolledQueue (mbed::Callback< void()> cb=nullptr)
 Create a PolledQueue. More...
 
virtual void post (TaskBase *event)
 Add this event to the queue for execution. More...
 
virtual void cancel (TaskBase *event)
 Cancel an in-flight event. More...
 
void dispatch ()
 Process all the events in this queue. More...
 
void attach (mbed::Callback< void()> cb)
 Attach a callback indicating that this queue needs to be processed. More...
 

Static Protected Member Functions

static uint32_t task_size (TaskBase *task)
 Get the size required to run this task. More...
 
static TaskBase::run_callback_t task_start (TaskBase *task, uint8_t *dest, uint32_t size)
 Start processing this event by copying out its data. More...
 
static void task_finish (TaskBase *task)
 Finish processing this event. More...
 

Detailed Description

PolledQueue.

This class is an implementation of TaskQueue which is processed synchronously by calls to dispatch.

Definition at line 37 of file PolledQueue.h.

Constructor & Destructor Documentation

◆ PolledQueue()

PolledQueue ( mbed::Callback< void()>  cb = nullptr)

Create a PolledQueue.

Create an event queue.

Parameters
cbCallback called when dispatch needs to be called

Member Function Documentation

◆ post()

virtual void post ( TaskBase event)
virtual

Add this event to the queue for execution.

If the event is already in the queue then it is canceled and added to the end of the queue.

Parameters
eventPointer to the event

Implements TaskQueue.

◆ cancel()

virtual void cancel ( TaskBase event)
virtual

Cancel an in-flight event.

Cancels the given event so the event's memory can be reused.

The cancel function is IRQ safe.

If called while the event queue's dispatch loop is active, the cancel function does not guarantee that the event will not execute after it returns, as the event may have already begun executing. It does guarantee that the event queue is no longer using event data so the event can be freed or reused.

Parameters
eventPointer to the event

Implements TaskQueue.

◆ dispatch()

void dispatch ( )

Process all the events in this queue.

◆ attach()

void attach ( mbed::Callback< void()>  cb)

Attach a callback indicating that this queue needs to be processed.

Parameters
cbCallback called when dispatch needs to be called

◆ task_size()

static uint32_t task_size ( TaskBase task)
staticprotectedinherited

Get the size required to run this task.

Get the minimum size required for TaskQueue::task_start

Parameters
taskThe task to check size on
Returns
required size
Note
This call must be made in a critical section

Definition at line 95 of file TaskQueue.h.

◆ task_start()

static TaskBase::run_callback_t task_start ( TaskBase task,
uint8_t *  dest,
uint32_t  size 
)
staticprotectedinherited

Start processing this event by copying out its data.

Inform this event both that callback execution has started and that the event is free to be posted again.

Parameters
taskThe task to start processing
destThe buffer to copy the callback arguments to
sizemaximum size to copy
Returns
Pointer to function run
Note
event_start must not be called on a canceled event as the memory may have been freed already
Every call to event_start must be paired with event_finish
This call must be made in a critical section

Definition at line 117 of file TaskQueue.h.

◆ task_finish()

static void task_finish ( TaskBase task)
staticprotectedinherited

Finish processing this event.

Inform this event that the callback has run to completion.

Parameters
taskThe task to finish processing
Note
Every call to event_finish must be preceded by a call to event_start
This call must be made in a critical section

Definition at line 133 of file TaskQueue.h.