Merge branch 'fix/fix_esp_openthread_stop_v5.2' into 'release/v5.2'

fix(openthread): fix the esp_openthread_stop (v5.2)

See merge request espressif/esp-idf!48203
This commit is contained in:
Zhang Wen Xu
2026-05-22 10:52:17 +00:00
@@ -298,11 +298,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);