feat(openthread): make esp_netif glue optional

Signed-off-by: Zhibin (Ryan) Wen <wenzhibin@espressif.com>
This commit is contained in:
Zhibin (Ryan) Wen
2026-03-24 15:32:27 +08:00
parent d22e05fbc2
commit fd402bfb17
7 changed files with 51 additions and 26 deletions
+11 -2
View File
@@ -249,7 +249,7 @@ menu "OpenThread"
config OPENTHREAD_BORDER_ROUTER
bool "Enable Border Router"
depends on OPENTHREAD_FTD
depends on OPENTHREAD_FTD && OPENTHREAD_PLATFORM_NETIF
default n
help
Select this option to enable border router features in OpenThread.
@@ -299,7 +299,7 @@ menu "OpenThread"
config OPENTHREAD_DNS64_CLIENT
bool "Enable DNS64 Client"
depends on LWIP_IPV4
depends on LWIP_IPV4 && OPENTHREAD_PLATFORM_NETIF
select LWIP_HOOK_DNS_EXTERNAL_RESOLVE_SELECT_CUSTOM
default n
help
@@ -508,6 +508,15 @@ menu "OpenThread"
failure.
endmenu
config OPENTHREAD_PLATFORM_NETIF
bool "Enable esp_netif/lwIP glue"
depends on OPENTHREAD_FTD || OPENTHREAD_MTD
default y
help
Enable the default ESP-IDF OpenThread integration which creates an
OpenThread esp_netif, attaches the esp_netif glue, and enables
lwIP-specific DNS/netif handling.
endmenu
menu "Thread Log"
@@ -454,6 +454,21 @@
#endif
#define OPENTHREAD_CONFIG_PARENT_SEARCH_RSS_MARGIN CONFIG_OPENTHREAD_PARENT_SEARCH_RSS_MARGIN
/**
* @def OPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE
*
* Define to 1 to enable platform NETIF support.
*
*/
#ifdef OPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE
#error `OPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE` is redefined.
#endif
#ifdef CONFIG_OPENTHREAD_PLATFORM_NETIF
#ifndef OPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE
#define OPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE 1
#endif
#endif
/*----The following options set fixed default values but can be overridden by the user header file.----*/
#if CONFIG_OPENTHREAD_BORDER_ROUTER
@@ -703,16 +718,6 @@
#define OPENTHREAD_CONFIG_COAP_API_ENABLE 1
#endif
/**
* @def OPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE
*
* Define to 1 to enable platform NETIF support.
*
*/
#ifndef OPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE
#define OPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE 1
#endif
/**
* @def OPENTHREAD_CONFIG_HEAP_EXTERNAL_ENABLE
*
@@ -245,6 +245,21 @@
#endif
#define OPENTHREAD_CONFIG_MAC_MAX_CSMA_BACKOFFS_DIRECT CONFIG_OPENTHREAD_MAC_MAX_CSMA_BACKOFFS_DIRECT
/**
* @def OPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE
*
* Define to 1 to enable platform NETIF support.
*
*/
#ifdef OPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE
#error `OPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE` is redefined.
#endif
#ifdef CONFIG_OPENTHREAD_PLATFORM_NETIF
#ifndef OPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE
#define OPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE 1
#endif
#endif
/*----The following options set fixed default values but can be overridden by the user header file.----*/
/**
@@ -257,16 +272,6 @@
#define OPENTHREAD_CONFIG_COAP_API_ENABLE 1
#endif
/**
* @def OPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE
*
* Define to 1 to enable platform NETIF support.
*
*/
#ifndef OPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE
#define OPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE 1
#endif
/**
* @def OPENTHREAD_CONFIG_PLATFORM_ASSERT_MANAGEMENT
*
+2 -2
View File
@@ -253,7 +253,7 @@ static void ot_task_worker(void *aContext)
// Initialize the OpenThread stack
ESP_ERROR_CHECK(esp_openthread_init(&(config->platform_config)));
#if CONFIG_OPENTHREAD_FTD || CONFIG_OPENTHREAD_MTD
#if CONFIG_OPENTHREAD_PLATFORM_NETIF
esp_netif_t *openthread_netif = esp_netif_new(&(config->netif_config));
assert(openthread_netif != NULL);
ESP_ERROR_CHECK(esp_netif_attach(openthread_netif, esp_openthread_netif_glue_init(&(config->platform_config))));
@@ -285,7 +285,7 @@ static void ot_task_worker(void *aContext)
esp_openthread_cli_console_command_unregister();
#endif // CONFIG_OPENTHREAD_CLI
#if CONFIG_OPENTHREAD_FTD || CONFIG_OPENTHREAD_MTD
#if CONFIG_OPENTHREAD_PLATFORM_NETIF
// Clean up
esp_openthread_netif_glue_deinit();
esp_netif_destroy(openthread_netif);
@@ -46,8 +46,6 @@ static esp_openthread_netif_glue_t s_openthread_netif_glue = {
.event_fd = -1,
};
ESP_EVENT_DEFINE_BASE(OPENTHREAD_EVENT);
static QueueHandle_t s_packet_queue;
static esp_netif_t *s_openthread_netif;
static const char *netif_glue_workflow = "netif_glue";
@@ -21,6 +21,8 @@
#define TAG "OT_STATE"
ESP_EVENT_DEFINE_BASE(OPENTHREAD_EVENT);
#if CONFIG_OPENTHREAD_BORDER_ROUTER
static void handle_ot_border_router_state_changed(otInstance* instance)
{
+6
View File
@@ -107,6 +107,12 @@ if(NOT CONFIG_OPENTHREAD_DNS64_CLIENT)
"src/esp_openthread_dns64.c")
endif()
if(NOT CONFIG_OPENTHREAD_PLATFORM_NETIF)
list(APPEND exclude_srcs
"src/esp_openthread_lwip_netif.c"
"src/esp_openthread_netif_glue.c")
endif()
if(NOT CONFIG_FREERTOS_USE_TICKLESS_IDLE)
list(APPEND exclude_srcs
"src/port/esp_openthread_sleep.c")