Select one of the symbols to view example projects that use it.
 
Outline
#include <stdbool.h>
#include "esp_err.h"
#include "freertos/FreeRTOS.h"
esp_openthread_lock_init();
esp_openthread_lock_deinit();
esp_openthread_lock_acquire(TickType_t);
esp_openthread_lock_release();
esp_openthread_task_switching_lock_acquire(TickType_t);
esp_openthread_task_switching_lock_release();
Files
loading...
SourceVuESP-IDF Framework and ExamplesESP-IDFcomponents/openthread/include/esp_openthread_lock.h
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/* * SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 *//* ... */ #pragma once #include <stdbool.h> #include "esp_err.h" #include "freertos/FreeRTOS.h" #ifdef __cplusplus extern "C" { #endif /** * @brief This function initializes the OpenThread API lock. * * @return * - ESP_OK on success * - ESP_ERR_NO_MEM if allocation has failed * - ESP_ERR_INVALID_STATE if already initialized * *//* ... */ esp_err_t esp_openthread_lock_init(void); /** * This function deinitializes the OpenThread API lock. * *//* ... */ void esp_openthread_lock_deinit(void); /** * @brief This function acquires the OpenThread API lock. * * @note Every Openthread APIs that takes an otInstance argument MUST be protected with this API lock * except that the call site is in Openthread callbacks. * * @param[in] block_ticks The maximum number of RTOS ticks to wait for the lock. * * @return * - True on lock acquired * - False on failing to acquire the lock with the timeout. * *//* ... */ bool esp_openthread_lock_acquire(TickType_t block_ticks); /** * @brief This function releases the OpenThread API lock. * *//* ... */ void esp_openthread_lock_release(void); /** * @brief This function acquires the OpenThread API task switching lock. * * @note In OpenThread API context, it waits for some actions to be done in other tasks (like lwip), * after task switching, it needs to call OpenThread API again. Normally it's not allowed, * since the previous OpenThread API lock is not released yet. This task_switching lock allows * the OpenThread API can be called in this case. * * @note Please use esp_openthread_lock_acquire() for normal cases. * * @param[in] block_ticks The maximum number of RTOS ticks to wait for the lock. * * @return * - True on lock acquired * - False on failing to acquire the lock with the timeout. * *//* ... */ bool esp_openthread_task_switching_lock_acquire(TickType_t block_ticks); /** * @brief This function releases the OpenThread API task switching lock. * * @note This API must be called after `esp_openthread_task_switching_lock_acquire` or * `esp_openthread_lock_acquire` and will cause a crash if the current task is not the task switching lock holder. * This error could be caused by calling OpenThread APIs without locking OpenThread stack. *//* ... */ void esp_openthread_task_switching_lock_release(void); #ifdef __cplusplus }{...} #endif
Details