Merge branch 'feat/add_154_mac_logs_when_ot_assert' into 'master'

feat(openthread): add option to dump 802.15.4 MAC debug info on assert

See merge request espressif/esp-idf!40936
This commit is contained in:
Zhang Wen Xu
2025-08-11 02:35:43 +00:00
3 changed files with 41 additions and 2 deletions

View File

@@ -560,4 +560,22 @@ menu "OpenThread"
failure. failure.
endmenu endmenu
menuconfig OPENTHREAD_DEBUG
bool "Enable ESP OpenThread Debug"
default n
help
Enable additional debugging support for ESP OpenThread integration.
This includes various diagnostic tools and logs to help track down
issues in OpenThread networking or system integration
config OPENTHREAD_DUMP_MAC_ON_ASSERT
bool "Dump 802.15.4 MAC debug info on OpenThread assert"
depends on OPENTHREAD_DEBUG && OPENTHREAD_RADIO_NATIVE && IEEE802154_DEBUG
default n
help
When enabled, this option triggers the printing of 802.15.4 MAC layer debug
information whenever an OpenThread assert occurs. This can help developers
analyze unexpected failures by providing additional MAC layer context.
endmenu endmenu

View File

@@ -1,11 +1,13 @@
/* /*
* SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
#pragma once #pragma once
#include "sdkconfig.h"
#define OT_PLAT_LOG_TAG "OPENTHREAD" #define OT_PLAT_LOG_TAG "OPENTHREAD"
#ifndef MS_PER_S #ifndef MS_PER_S
@@ -21,3 +23,22 @@
#endif #endif
#define ESP_OPENTHREAD_UART_BUFFER_SIZE CONFIG_OPENTHREAD_UART_BUFFER_SIZE #define ESP_OPENTHREAD_UART_BUFFER_SIZE CONFIG_OPENTHREAD_UART_BUFFER_SIZE
#if CONFIG_OPENTHREAD_DEBUG
#if CONFIG_OPENTHREAD_DUMP_MAC_ON_ASSERT && CONFIG_IEEE802154_RECORD
#include "esp_ieee802154.h"
#define IEEE802154_RECORD_PRINT() esp_ieee802154_record_print()
#else
#define IEEE802154_RECORD_PRINT()
#endif
#define ESP_OPENTHREAD_ASSERT(a) do { \
if(unlikely(!(a))) { \
IEEE802154_RECORD_PRINT(); \
assert(a); \
} \
} while (0)
#else
#define ESP_OPENTHREAD_ASSERT(a) assert(a)
#endif

View File

@@ -76,5 +76,5 @@ otPlatMcuPowerState otPlatGetMcuPowerState(otInstance *instance)
void otPlatAssertFail(const char *filename, int line) void otPlatAssertFail(const char *filename, int line)
{ {
ESP_LOGE(OT_PLAT_LOG_TAG, "Assert failed at %s:%d", filename, line); ESP_LOGE(OT_PLAT_LOG_TAG, "Assert failed at %s:%d", filename, line);
assert(false); ESP_OPENTHREAD_ASSERT(false);
} }