From 2e5df3eeb6f46ccdc779d11d897be4e22ad66a83 Mon Sep 17 00:00:00 2001 From: Xu Si Yu Date: Wed, 6 May 2026 10:40:42 +0800 Subject: [PATCH] fix(openthread): fix the esp_openthread_stop --- components/openthread/src/esp_openthread.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/openthread/src/esp_openthread.cpp b/components/openthread/src/esp_openthread.cpp index 3ca5d465273..399f7a090e4 100644 --- a/components/openthread/src/esp_openthread.cpp +++ b/components/openthread/src/esp_openthread.cpp @@ -312,11 +312,13 @@ esp_err_t esp_openthread_start(const esp_openthread_config_t *config) esp_err_t esp_openthread_stop(void) { ESP_RETURN_ON_FALSE(s_ot_syn_semaphore != NULL, ESP_ERR_INVALID_STATE, OT_PLAT_LOG_TAG, "OpenThread is not initialized"); +#if (CONFIG_OPENTHREAD_FTD || CONFIG_OPENTHREAD_MTD) esp_openthread_lock_acquire(portMAX_DELAY); otInstance *instance = esp_openthread_get_instance(); bool is_thread_not_active = (otThreadGetDeviceRole(instance) == OT_DEVICE_ROLE_DISABLED && otIp6IsEnabled(instance) == false); esp_openthread_lock_release(); ESP_RETURN_ON_FALSE(is_thread_not_active, ESP_ERR_INVALID_STATE, OT_PLAT_LOG_TAG, "Thread interface is still active"); +#endif esp_openthread_mainloop_exit(); xSemaphoreTake(s_ot_syn_semaphore, portMAX_DELAY); vTaskDelete(s_ot_task_handle);