From 824cbc153b121137fd408efe3faae4e4d401d0d0 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 22802fc3e23..feb77a39e06 100644 --- a/components/openthread/src/esp_openthread.cpp +++ b/components/openthread/src/esp_openthread.cpp @@ -296,11 +296,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);