Chapter 2. API Reference
by always operating on the notification value at index 0 within the array. Calling xTaskNotifyFromISR() is
equivalent to calling xTaskNotifyIndexedFromISR() with the uxIndexToNotify parameter set to 0.
eSetBits - The task's notification value is bitwise ORed with ulValue. xTaskNotify() always returns pdPASS
in this case.
Parameters
• uxIndexToNotify:
to which the notification is to be sent.
TASK_NOTIFICATION_ARRAY_ENTRIES. xTaskNotifyFromISR() does not have this param-
eter and always sends notifications to index 0.
• xTaskToNotify: The handle of the task being notified. The handle to a task can be returned
from the xTaskCreate() API function used to create the task, and the handle of the currently running
task can be obtained by calling xTaskGetCurrentTaskHandle().
• ulValue: Data that can be sent with the notification. How the data is used depends on the value
of the eAction parameter.
• eAction: Specifies how the notification updates the task' s notification value, if at all. Valid values
for eAction are as follows:
eIncrement - The task's notification value is incremented. ulValue is not used and xTaskNotify() always
returns pdPASS in this case.
eSetValueWithOverwrite - The task's notification value is set to the value of ulValue, even if the task being
notified had not yet processed the previous notification (the task already had a notification pending). xTaskNo-
tify() always returns pdPASS in this case.
eSetValueWithoutOverwrite - If the task being notified did not already have a notification pending then the
task's notification value is set to ulValue and xTaskNotify() will return pdPASS. If the task being notified
already had a notification pending then no action is performed and pdFAIL is returned.
eNoAction - The task receives a notification without its notification value being updated. ulValue is not used
and xTaskNotify() always returns pdPASS in this case.
Return Dependent on the value of eAction. See the description of the eAction parameter.
Parameters
• pxHigherPriorityTaskWoken: xTaskNotifyFromISR() will set *pxHigherPriorityTaskWo-
ken to pdTRUE if sending the notification caused the task to which the notification was sent to leave
the Blocked state, and the unblocked task has a priority higher than the currently running task. If
xTaskNotifyFromISR() sets this value to pdTRUE then a context switch should be requested before
the interrupt is exited. How a context switch is requested from an ISR is dependent on the port - see
the documentation page for the port in use.
BaseType_t xTaskGenericNotifyWait(UBaseType_t
Waits for a direct to task notification to be pending at a given index within an array of direct to task notifications.
See
https://www.FreeRTOS.org/RTOS-task-notifications.html
configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this function to be available.
Each task has a private array of "notification values"(or 'notifications'), each of which is a 32-bit un-
signed integer (uint32_t). The constant configTASK_NOTIFICATION_ARRAY_ENTRIES sets the number
of indexes in the array, and (for backward compatibility) defaults to 1 if left undefined. Prior to FreeRTOS
V10.4.0 there was only one notification value per task.
Events can be sent to a task using an intermediary object. Examples of such objects are queues, semaphores,
mutexes and event groups. Task notifications are a method of sending an event directly to a task without the
need for such an intermediary object.
A notification sent to a task can optionally perform an action, such as update, overwrite or increment one of
the task's notification values. In that way task notifications can be used to send data to a task, or be used as
light weight and fast binary or counting semaphores.
Espressif Systems
The index within the target task's array of notification values
uxIndexToWaitOn,
ClearOnEntry,
uint32_t
*pulNotificationValue, TickType_t xTicksToWait)
874
Submit Document Feedback
uxIndexToNotify must be less than config-
uint32_t
ulBitsToClearOnExit,
for details.
ulBitsTo-
uint32_t
Release v4.4
Need help?
Do you have a question about the ESP32-S2 and is the answer not in the manual?