firmware
IEM Firmware Documentation
Loading...
Searching...
No Matches
event_groups.h
Go to the documentation of this file.
1/*
2 * FreeRTOS Kernel V11.1.0
3 * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
4 *
5 * SPDX-License-Identifier: MIT
6 *
7 * Permission is hereby granted, free of charge, to any person obtaining a copy of
8 * this software and associated documentation files (the "Software"), to deal in
9 * the Software without restriction, including without limitation the rights to
10 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 * the Software, and to permit persons to whom the Software is furnished to do so,
12 * subject to the following conditions:
13 *
14 * The above copyright notice and this permission notice shall be included in all
15 * copies or substantial portions of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 *
24 * https://www.FreeRTOS.org
25 * https://github.com/FreeRTOS
26 *
27 */
28
29#ifndef EVENT_GROUPS_H
30#define EVENT_GROUPS_H
31
32#ifndef INC_FREERTOS_H
33 #error "include FreeRTOS.h" must appear in source files before "include event_groups.h"
34#endif
35
36/* FreeRTOS includes. */
37#include "timers.h"
38
39/* The following bit fields convey control information in a task's event list
40 * item value. It is important they don't clash with the
41 * taskEVENT_LIST_ITEM_VALUE_IN_USE definition. */
42#if ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_16_BITS )
43 #define eventCLEAR_EVENTS_ON_EXIT_BIT ( ( uint16_t ) 0x0100U )
44 #define eventUNBLOCKED_DUE_TO_BIT_SET ( ( uint16_t ) 0x0200U )
45 #define eventWAIT_FOR_ALL_BITS ( ( uint16_t ) 0x0400U )
46 #define eventEVENT_BITS_CONTROL_BYTES ( ( uint16_t ) 0xff00U )
47#elif ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_32_BITS )
48 #define eventCLEAR_EVENTS_ON_EXIT_BIT ( ( uint32_t ) 0x01000000U )
49 #define eventUNBLOCKED_DUE_TO_BIT_SET ( ( uint32_t ) 0x02000000U )
50 #define eventWAIT_FOR_ALL_BITS ( ( uint32_t ) 0x04000000U )
51 #define eventEVENT_BITS_CONTROL_BYTES ( ( uint32_t ) 0xff000000U )
52#elif ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_64_BITS )
53 #define eventCLEAR_EVENTS_ON_EXIT_BIT ( ( uint64_t ) 0x0100000000000000U )
54 #define eventUNBLOCKED_DUE_TO_BIT_SET ( ( uint64_t ) 0x0200000000000000U )
55 #define eventWAIT_FOR_ALL_BITS ( ( uint64_t ) 0x0400000000000000U )
56 #define eventEVENT_BITS_CONTROL_BYTES ( ( uint64_t ) 0xff00000000000000U )
57#endif /* if ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_16_BITS ) */
58
59/* *INDENT-OFF* */
60#ifdef __cplusplus
61 extern "C" {
62#endif
63/* *INDENT-ON* */
64
89
90
91
102struct EventGroupDef_t;
103typedef struct EventGroupDef_t * EventGroupHandle_t;
104
105/*
106 * The type that holds event bits always matches TickType_t - therefore the
107 * number of bits it holds is set by configTICK_TYPE_WIDTH_IN_BITS (16 bits if set to 0,
108 * 32 bits if set to 1, 64 bits if set to 2.
109 *
110 * \defgroup EventBits_t EventBits_t
111 * \ingroup EventGroup
112 */
114
171#if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
172 EventGroupHandle_t xEventGroupCreate( void ) PRIVILEGED_FUNCTION;
173#endif
174
228#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
229 EventGroupHandle_t xEventGroupCreateStatic( StaticEventGroup_t * pxEventGroupBuffer ) PRIVILEGED_FUNCTION;
230#endif
231
329 const EventBits_t uxBitsToWaitFor,
330 const BaseType_t xClearOnExit,
331 const BaseType_t xWaitForAllBits,
332 TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
333
393 const EventBits_t uxBitsToClear ) PRIVILEGED_FUNCTION;
394
455#if ( configUSE_TRACE_FACILITY == 1 )
457 const EventBits_t uxBitsToClear ) PRIVILEGED_FUNCTION;
458#else
459 #define xEventGroupClearBitsFromISR( xEventGroup, uxBitsToClear ) \
460 xTimerPendFunctionCallFromISR( vEventGroupClearBitsCallback, ( void * ) ( xEventGroup ), ( uint32_t ) ( uxBitsToClear ), NULL )
461#endif
462
539 const EventBits_t uxBitsToSet ) PRIVILEGED_FUNCTION;
540
613#if ( configUSE_TRACE_FACILITY == 1 )
615 const EventBits_t uxBitsToSet,
616 BaseType_t * pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
617#else
618 #define xEventGroupSetBitsFromISR( xEventGroup, uxBitsToSet, pxHigherPriorityTaskWoken ) \
619 xTimerPendFunctionCallFromISR( vEventGroupSetBitsCallback, ( void * ) ( xEventGroup ), ( uint32_t ) ( uxBitsToSet ), ( pxHigherPriorityTaskWoken ) )
620#endif
621
750 const EventBits_t uxBitsToSet,
751 const EventBits_t uxBitsToWaitFor,
752 TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
753
754
774#define xEventGroupGetBits( xEventGroup ) xEventGroupClearBits( ( xEventGroup ), 0 )
775
795
812
833#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
834 BaseType_t xEventGroupGetStaticBuffer( EventGroupHandle_t xEventGroup,
835 StaticEventGroup_t ** ppxEventGroupBuffer ) PRIVILEGED_FUNCTION;
836#endif /* configSUPPORT_STATIC_ALLOCATION */
837
838/* For internal use only. */
839void vEventGroupSetBitsCallback( void * pvEventGroup,
840 uint32_t ulBitsToSet ) PRIVILEGED_FUNCTION;
841void vEventGroupClearBitsCallback( void * pvEventGroup,
842 uint32_t ulBitsToClear ) PRIVILEGED_FUNCTION;
843
844
845#if ( configUSE_TRACE_FACILITY == 1 )
846 UBaseType_t uxEventGroupGetNumber( void * xEventGroup ) PRIVILEGED_FUNCTION;
847 void vEventGroupSetNumber( void * xEventGroup,
848 UBaseType_t uxEventGroupNumber ) PRIVILEGED_FUNCTION;
849#endif
850
851/* *INDENT-OFF* */
852#ifdef __cplusplus
853 }
854#endif
855/* *INDENT-ON* */
856
857#endif /* EVENT_GROUPS_H */
struct xSTATIC_EVENT_GROUP StaticEventGroup_t
EventBits_t xEventGroupSetBits(EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet) PRIVILEGED_FUNCTION
EventBits_t xEventGroupClearBits(EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear) PRIVILEGED_FUNCTION
void vEventGroupClearBitsCallback(void *pvEventGroup, uint32_t ulBitsToClear) PRIVILEGED_FUNCTION
void vEventGroupSetBitsCallback(void *pvEventGroup, uint32_t ulBitsToSet) PRIVILEGED_FUNCTION
#define xEventGroupClearBitsFromISR(xEventGroup, uxBitsToClear)
Definition event_groups.h:459
void vEventGroupDelete(EventGroupHandle_t xEventGroup) PRIVILEGED_FUNCTION
#define xEventGroupSetBitsFromISR(xEventGroup, uxBitsToSet, pxHigherPriorityTaskWoken)
Definition event_groups.h:618
EventBits_t xEventGroupSync(EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, const EventBits_t uxBitsToWaitFor, TickType_t xTicksToWait) PRIVILEGED_FUNCTION
EventBits_t xEventGroupGetBitsFromISR(EventGroupHandle_t xEventGroup) PRIVILEGED_FUNCTION
EventBits_t xEventGroupWaitBits(EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToWaitFor, const BaseType_t xClearOnExit, const BaseType_t xWaitForAllBits, TickType_t xTicksToWait) PRIVILEGED_FUNCTION
TickType_t EventBits_t
Definition event_groups.h:113
struct EventGroupDef_t * EventGroupHandle_t
Definition event_groups.h:103
#define PRIVILEGED_FUNCTION
Definition mpu_wrappers.h:269
long BaseType_t
Definition portmacro.h:59
unsigned long UBaseType_t
Definition portmacro.h:60
uint16_t TickType_t
Definition portmacro.h:63