FreeRTOScpp
FreeRTOScpp::TaskBase Class Reference

Lowest Level Wrapper. More...

#include <TaskCPP.h>

Inheritance diagram for FreeRTOScpp::TaskBase:
Collaboration diagram for FreeRTOScpp::TaskBase:

Public Member Functions

 TaskBase (TaskHandle_t handle)
 Constructor. More...
 
virtual ~TaskBase ()
 Destructor. More...
 
TaskHandle_t getTaskHandle () const
 Get Task Handle. More...
 
bool give ()
 Notify a Task as a semaphore. More...
 
void give_ISR (portBASE_TYPE &waswoken)
 
bool notify (uint32_t value, eNotifyAction act)
 Notify a Task. More...
 
bool notify_ISR (uint32_t value, eNotifyAction act, portBASE_TYPE &waswoken)
 
bool notify_query (uint32_t value, eNotifyAction act, uint32_t &old)
 
bool notify_query_ISR (uint32_t value, eNotifyAction act, uint32_t &old, portBASE_TYPE &waswoken)
 
void priority (TaskPriority priority_)
 Set Task priority. More...
 
void resume ()
 Resume the Task. More...
 
void suspend ()
 Suspend the Task. More...
 

Static Public Member Functions

static void delay (TickType_t time)
 Delay for a period of time. More...
 
static void delay (Time_ms ms)
 Delay for a period of time, specified in milliseconds. More...
 
static uint32_t take (bool clear=true, TickType_t ticks=portMAX_DELAY)
 Wait for a task Give notification. More...
 
static uint32_t take (bool clear, Time_ms ticks)
 Wait for a task Give notification. More...
 
static uint32_t wait (uint32_t clearEnter, uint32_t clearExit=0xFFFFFFFF, uint32_t *value=nullptr, TickType_t ticks=portMAX_DELAY)
 Wait for task notification. More...
 
static uint32_t wait (uint32_t clearEnter, uint32_t clearExit, uint32_t *value, Time_ms ms)
 
static uint32_t waitIndex (UBaseType_t idx, uint32_t clearEnter, uint32_t clearExit=0xFFFFFFFF, uint32_t *value=nullptr, TickType_t ticks=portMAX_DELAY)
 
static uint32_t waitIndex (UBaseType_t idx, uint32_t clearEnter, uint32_t clearExit, uint32_t *value, Time_ms ms)
 

Protected Member Functions

 TaskBase ()
 Default Constructor: Needs a subclass to fill in the handle later, so protected. More...
 

Protected Attributes

TaskHandle_t taskHandle
 Handle for the task we are managing. More...
 

Private Member Functions

 TaskBase (TaskBase const &)=delete
 We are not copyable. More...
 
void operator= (TaskBase const &)=delete
 We are not assignable. More...
 

Detailed Description

Lowest Level Wrapper.

Create the specified task with a provided task function.

If the TaskBase object is destroyed, the FreeRTOS Task will be deleted (if deletion has been enabled)

Todo:
Fully implement task manipulation functions

Constructor & Destructor Documentation

◆ TaskBase() [1/3]

FreeRTOScpp::TaskBase::TaskBase ( )
inlineprotected

Default Constructor: Needs a subclass to fill in the handle later, so protected.

Referenced by FreeRTOScpp::TaskS< stackDepth >::TaskS().

Here is the caller graph for this function:

◆ TaskBase() [2/3]

FreeRTOScpp::TaskBase::TaskBase ( TaskHandle_t  handle)
inline

Constructor.

◆ ~TaskBase()

virtual FreeRTOScpp::TaskBase::~TaskBase ( )
inlinevirtual

Destructor.

If deletion is enabled, delete the task.

References taskHandle.

◆ TaskBase() [3/3]

FreeRTOScpp::TaskBase::TaskBase ( TaskBase const &  )
privatedelete

We are not copyable.

Member Function Documentation

◆ delay() [1/2]

static void FreeRTOScpp::TaskBase::delay ( TickType_t  time)
inlinestatic

Delay for a period of time.

Parameters
timethe number of ticks to delay

This is a static member function as it affects the CALLING task, not the task it might be called on

◆ delay() [2/2]

static void FreeRTOScpp::TaskBase::delay ( Time_ms  ms)
inlinestatic

Delay for a period of time, specified in milliseconds.

Parameters
msThe number of milliseconds to delay

This is a static member function as it affects the CALLING task, not the task it might be called on

References FreeRTOScpp::ms2ticks(), priority(), and taskHandle.

Here is the call graph for this function:

◆ getTaskHandle()

TaskHandle_t FreeRTOScpp::TaskBase::getTaskHandle ( ) const
inline

Get Task Handle.

Returns
the task handle.

References taskHandle.

◆ give()

bool FreeRTOScpp::TaskBase::give ( )
inline

Notify a Task as a semaphore.

Sends a notification to a task using a semaphore based protocol. Generally the task should we using the take() function to receive the notification.

References taskHandle.

Referenced by FreeRTOScpp::TaskClassS< stackDepth >::TaskClassS(), and FreeRTOScpp::TaskClassS< stackDepth >::~TaskClassS().

Here is the caller graph for this function:

◆ give_ISR()

void FreeRTOScpp::TaskBase::give_ISR ( portBASE_TYPE &  waswoken)
inline

References taskHandle.

◆ notify()

bool FreeRTOScpp::TaskBase::notify ( uint32_t  value,
eNotifyAction  act 
)
inline

Notify a Task.

Generic Task Notification operation

References taskHandle.

◆ notify_ISR()

bool FreeRTOScpp::TaskBase::notify_ISR ( uint32_t  value,
eNotifyAction  act,
portBASE_TYPE &  waswoken 
)
inline

References taskHandle.

◆ notify_query()

bool FreeRTOScpp::TaskBase::notify_query ( uint32_t  value,
eNotifyAction  act,
uint32_t &  old 
)
inline

References taskHandle.

◆ notify_query_ISR()

bool FreeRTOScpp::TaskBase::notify_query_ISR ( uint32_t  value,
eNotifyAction  act,
uint32_t &  old,
portBASE_TYPE &  waswoken 
)
inline

References taskHandle.

◆ operator=()

void FreeRTOScpp::TaskBase::operator= ( TaskBase const &  )
privatedelete

We are not assignable.

◆ priority()

void FreeRTOScpp::TaskBase::priority ( TaskPriority  priority_)
inline

Set Task priority.

Only available if INCLUDE_vTaskPrioritySet == 1

Parameters
priority_The TaskPriority to give the Task.

References taskHandle.

Referenced by delay().

Here is the caller graph for this function:

◆ resume()

void FreeRTOScpp::TaskBase::resume ( )
inline

Resume the Task.

Only available if INCLUDE_vTaskSuspend == 1

References taskHandle.

◆ suspend()

void FreeRTOScpp::TaskBase::suspend ( )
inline

Suspend the Task.

Only available if INCLUDE_vTaskSuspend == 1

References taskHandle.

◆ take() [1/2]

static uint32_t FreeRTOScpp::TaskBase::take ( bool  clear = true,
TickType_t  ticks = portMAX_DELAY 
)
inlinestatic

Wait for a task Give notification.

Specialized wait() designed to work with the give()/give_ISR() notifications.

Parameters
clearFlag to indicate if the action on succesful take is to clear (True) or decrement (False) the notification value. Effectively decides between a binary (True) or counting (False) semaphore behavior.
ticksThe time to wait for the semaphore.
Returns
Returns the notification word (prior to being adjusted for the take() ), Will be zero if the take() timed out.

Referenced by taskcpp_task_thunk().

Here is the caller graph for this function:

◆ take() [2/2]

static uint32_t FreeRTOScpp::TaskBase::take ( bool  clear,
Time_ms  ticks 
)
inlinestatic

Wait for a task Give notification.

Specialized wait() designed to work with the give()/give_ISR() notifications.

Parameters
clearFlag to indicate if the action on successful take is to clear (True) or decrement (False) the notification value. Effectively decides between a binary (True) or counting (False) semaphore behavior.
ticksThe time to wait for the semaphore.
Returns
Returns the notification word (prior to being adjusted for the take() ), Will be zero if the take() timed out.

References FreeRTOScpp::ms2ticks().

Here is the call graph for this function:

◆ wait() [1/2]

static uint32_t FreeRTOScpp::TaskBase::wait ( uint32_t  clearEnter,
uint32_t  clearExit = 0xFFFFFFFF,
uint32_t *  value = nullptr,
TickType_t  ticks = portMAX_DELAY 
)
inlinestatic

Wait for task notification.

◆ wait() [2/2]

static uint32_t FreeRTOScpp::TaskBase::wait ( uint32_t  clearEnter,
uint32_t  clearExit,
uint32_t *  value,
Time_ms  ms 
)
inlinestatic

References FreeRTOScpp::ms2ticks().

Here is the call graph for this function:

◆ waitIndex() [1/2]

static uint32_t FreeRTOScpp::TaskBase::waitIndex ( UBaseType_t  idx,
uint32_t  clearEnter,
uint32_t  clearExit = 0xFFFFFFFF,
uint32_t *  value = nullptr,
TickType_t  ticks = portMAX_DELAY 
)
inlinestatic

◆ waitIndex() [2/2]

static uint32_t FreeRTOScpp::TaskBase::waitIndex ( UBaseType_t  idx,
uint32_t  clearEnter,
uint32_t  clearExit,
uint32_t *  value,
Time_ms  ms 
)
inlinestatic

References FreeRTOScpp::ms2ticks().

Here is the call graph for this function:

Member Data Documentation

◆ taskHandle

TaskHandle_t FreeRTOScpp::TaskBase::taskHandle
protected

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