FreeRTOS Addons
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | List of all members
cpp_freertos::EventGroup Class Reference

#include <event_groups.hpp>

Public Member Functions

 EventGroup ()
 
 EventGroup (StaticEventGroup_t *pxEventGroupBuffer)
 
virtual ~EventGroup ()
 
EventBits_t ClearBits (const EventBits_t uxBitsToClear)
 
BaseType_t ClearBitsFromISR (const EventBits_t uxBitsToClear)
 
EventBits_t GetBits ()
 
EventBits_t GetBitsFromISR ()
 
EventBits_t SetBits (const EventBits_t uxBitsToSet)
 
BaseType_t SetBitsFromISR (const EventBits_t uxBitsToSet, BaseType_t *pxHigherPriorityTaskWoken)
 
EventBits_t Sync (const EventBits_t uxBitsToSet, const EventBits_t uxBitsToWaitFor, TickType_t xTicksToWait)
 
EventBits_t WaitBits (const EventBits_t uxBitsToWaitFor, bool xClearOnExit, bool xWaitForAllBits, TickType_t xTicksToWait)
 

Protected Attributes

EventGroupHandle_t handle
 

Detailed Description

Todo:
  • document this class

Constructor & Destructor Documentation

◆ EventGroup() [1/2]

EventGroup::EventGroup ( )

Construct a Event Group

◆ EventGroup() [2/2]

EventGroup::EventGroup ( StaticEventGroup_t *  pxEventGroupBuffer)

Construct a Event Group with static allocation

◆ ~EventGroup()

EventGroup::~EventGroup ( )
virtual

Our destructor

Member Function Documentation

◆ ClearBits()

EventBits_t EventGroup::ClearBits ( const EventBits_t  uxBitsToClear)

Clear bits (flags) within an event group.

Parameters
uxBitsToClearA bitwise value that indicates the bit or bits to clear in the event group.
Returns
The value of the event group before the specified bits were cleared.

◆ ClearBitsFromISR()

BaseType_t EventGroup::ClearBitsFromISR ( const EventBits_t  uxBitsToClear)

Clear bits (flags) within an event group from ISR context.

Parameters
uxBitsToClearA bitwise value that indicates the bit or bits to clear in the event group.
Returns
The value of the event group before the specified bits were cleared.

◆ GetBits()

EventBits_t EventGroup::GetBits ( )

Returns the current value of the event bits (event flags) in an event group.

Returns
The value of the event bits in the event group at the time EventGroup::GetBitsFromISR was called.

◆ GetBitsFromISR()

EventBits_t EventGroup::GetBitsFromISR ( )

Returns the current value of the event bits (event flags) in an event group from ISR context.

Returns
The value of the event bits in the event group at the time EventGroup::GetBitsFromISR was called.

◆ SetBits()

EventBits_t EventGroup::SetBits ( const EventBits_t  uxBitsToSet)

Set bits (flags) within an event group.

Parameters
uxBitsToSetA bitwise value that indicates the bit or bits to set in the event group.
Returns
The value of the event group at the time the call to EventGroup::SetBits returns

◆ SetBitsFromISR()

BaseType_t EventGroup::SetBitsFromISR ( const EventBits_t  uxBitsToSet,
BaseType_t *  pxHigherPriorityTaskWoken 
)

Set bits (flags) within an event group from ISR context.

Parameters
uxBitsToSetA bitwise value that indicates the bit or bits to set in the event group.
pxHigherPriorityTaskWokenA bitwise value that indicates the bit or bits to set in the event group.
Returns
Calling this function will result in a message being sent to the RTOS daemon task. If the priority of the daemon task is higher than the priority of the currently running task (the task the interrupt interrupted) then *pxHigherPriorityTaskWoken will be set to true by EventGroupSetBitsFromISR, indicating that a context switch should be requested before the interrupt exits. For that reason *pxHigherPriorityTaskWoken must be initialised to false.

◆ Sync()

EventBits_t EventGroup::Sync ( const EventBits_t  uxBitsToSet,
const EventBits_t  uxBitsToWaitFor,
TickType_t  xTicksToWait 
)

Allow two or more tasks to use an event group to sync each other.

Parameters
uxBitsToSetA bit mask that specifies the event bit, or event bits, to set 1 in the event group. The value of the event groups is updated by bitwise ORing the event group's existing value with the passed in uxBitsToSet.
uxBitsToWaitForThe bit or bits to set in the event group before determining if (and possibly waiting for), all the bits specified by the uxBitsToWait parameter are set.
xTicksToWaitThe maximum amount of time (specified in 'ticks') to wait for all the bits specified by the uxBitsToWaitFor parameter value to become set.
Returns
If EventGroup::Sync returned because all the bits it was waiting for were set then the returned value is the event group value before any bits were automatically cleared. If EventGroup::Sync returned because its timeout expired then not all the bits being waited for will be set.

◆ WaitBits()

EventBits_t EventGroup::WaitBits ( const EventBits_t  uxBitsToWaitFor,
bool  xClearOnExit,
bool  xWaitForAllBits,
TickType_t  xTicksToWait 
)

Read bits within an RTOS event group, optionally entering the Blocked state (with a timeout) to wait for a bit or group of bits to become set.

Parameters
uxBitsToWaitForA bitwise value that indicates the bit or bits to test inside the event group.
xClearOnExitIf xClearOnExit is set to true then any bits set in the value passed as the uxBitsToWaitFor parameter will be cleared in the event group before EventGroup::WaitBits returns if EventGroup::WaitBits returns for any reason other than a timeout. The timeout value is set by the xTicksToWait parameter. If xClearOnExit is set to false then the bits set in the event group are not altered when the call to EventGroup::WaitBits returns.
xWaitForAllBitsis used to create either a logical AND test (where all bits must be set) or a logical OR test (where one or more bits must be set) as follows:
@par    If xWaitForAllBits is set to true then
        EventGroup::WaitBits will return when either all the
        bits set in the value passed as the uxBitsToWaitFor
        parameter are set in the event group or the specified
        block time expires.

@par   If xWaitForAllBits is set to false then
        EventGroup::WaitBits will return when any of the bits
        set in the value passed as the uxBitsToWaitFor
        parameter are set in the event group or the specified
        block time expires.
xTicksToWaitThe maximum amount of time (specified in 'ticks') to wait for one/all (depending on the xWaitForAllBits value) of the bits specified by uxBitsToWaitFor to become set.
Returns
The value of the event group at the time either the event bits being waited for became set, or the block time expired. The current value of the event bits in an event group will be different to the returned value if a higher priority task or interrupt changed the value of an event bit between the calling task leaving the Blocked state and exiting the EventGroup::WaitBits function. Test the return value to know which bits were set. If EventGroup::WaitBits returned because its timeout expired then not all the bits being waited for will be set. If EventGroup::WaitBits returned because the bits it was waiting for were set then the returned value is the event group value before any bits were automatically cleared because the xClearOnExit parameter was set to true.

Member Data Documentation

◆ handle

EventGroupHandle_t cpp_freertos::EventGroup::handle
protected

FreeRTOS Event Group handle.


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