mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 03:00:34 +03:00
feat(openthread): support openthread ephemeral key
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -16,7 +16,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Default configuration reference of OT esp-netif
|
||||
* @brief Default configuration reference of OpenThread esp-netif
|
||||
*/
|
||||
#define ESP_NETIF_INHERENT_DEFAULT_OPENTHREAD() \
|
||||
{ \
|
||||
@@ -67,6 +67,15 @@ void esp_openthread_netif_glue_deinit(void);
|
||||
*/
|
||||
esp_netif_t *esp_openthread_get_netif(void);
|
||||
|
||||
/**
|
||||
* @brief This function register a handler for meshcop-e service publish event and remove event.
|
||||
*
|
||||
* @param[in] handler The handler.
|
||||
* @param[in] for_publish The usage of handler, true for publish event and false for remove event.
|
||||
*
|
||||
*/
|
||||
void esp_openthread_register_meshcop_e_handler(esp_event_handler_t handler, bool for_publish);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -44,6 +44,8 @@ typedef enum {
|
||||
OPENTHREAD_EVENT_TREL_REMOVE_IP6, /*!< OpenThread stack removed TREL IPv6 address */
|
||||
OPENTHREAD_EVENT_TREL_MULTICAST_GROUP_JOIN, /*!< OpenThread stack joined TREL IPv6 multicast group */
|
||||
OPENTHREAD_EVENT_SET_DNS_SERVER, /*!< OpenThread stack set DNS server >*/
|
||||
OPENTHREAD_EVENT_PUBLISH_MESHCOP_E, /*!< OpenThread stack start to publish meshcop-e service >*/
|
||||
OPENTHREAD_EVENT_REMOVE_MESHCOP_E, /*!< OpenThread stack start to remove meshcop-e service >*/
|
||||
} esp_openthread_event_t;
|
||||
|
||||
/**
|
||||
|
||||
Submodule components/openthread/lib updated: fcee30db4b...a0f6a77960
Submodule components/openthread/openthread updated: 456c448284...be7d36e4ff
@@ -632,4 +632,8 @@
|
||||
#define OPENTHREAD_CONFIG_MAC_MAX_CSMA_BACKOFFS_DIRECT CONFIG_OPENTHREAD_MAC_MAX_CSMA_BACKOFFS_DIRECT
|
||||
#endif
|
||||
|
||||
#ifndef OPENTHREAD_CONFIG_THREAD_VERSION
|
||||
#define OPENTHREAD_CONFIG_THREAD_VERSION OT_THREAD_VERSION_1_4
|
||||
#endif
|
||||
|
||||
#define OPENTHREAD_FTD 1
|
||||
|
||||
@@ -5,4 +5,4 @@ supplier: 'Organization: Espressif Systems (Shanghai) CO LTD'
|
||||
originator: 'Organization: Google LLC'
|
||||
description: OpenThread released by Google is an open-source implementation of the Thread networking
|
||||
url: https://github.com/espressif/openthread
|
||||
hash: 456c448284486abe2a9118a9fdaa468fe2383fcd
|
||||
hash: be7d36e4ff9cf7df6dfce54e58a31163c87b93f7
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -203,6 +203,33 @@ exit:
|
||||
return error;
|
||||
}
|
||||
|
||||
static esp_event_handler_t meshcop_e_publish_handler = NULL;
|
||||
static void esp_openthread_meshcop_e_publish_handler(void *args, esp_event_base_t base, int32_t event_id, void *data)
|
||||
{
|
||||
if (meshcop_e_publish_handler) {
|
||||
meshcop_e_publish_handler(args, base, event_id, data);
|
||||
}
|
||||
}
|
||||
|
||||
static esp_event_handler_t meshcop_e_remove_handler = NULL;
|
||||
static void esp_openthread_meshcop_e_remove_handler(void *args, esp_event_base_t base, int32_t event_id, void *data)
|
||||
{
|
||||
if (meshcop_e_remove_handler) {
|
||||
meshcop_e_remove_handler(args, base, event_id, data);
|
||||
}
|
||||
}
|
||||
|
||||
void esp_openthread_register_meshcop_e_handler(esp_event_handler_t handler, bool for_publish)
|
||||
{
|
||||
if (for_publish) {
|
||||
meshcop_e_publish_handler = handler;
|
||||
} else if (!for_publish) {
|
||||
meshcop_e_remove_handler = handler;
|
||||
} else {
|
||||
ESP_ERROR_CHECK(ESP_FAIL);
|
||||
}
|
||||
}
|
||||
|
||||
static esp_err_t register_openthread_event_handlers(esp_netif_t *esp_netif)
|
||||
{
|
||||
ESP_RETURN_ON_ERROR(
|
||||
@@ -229,6 +256,12 @@ static esp_err_t register_openthread_event_handlers(esp_netif_t *esp_netif)
|
||||
ESP_RETURN_ON_ERROR(esp_event_handler_register(OPENTHREAD_EVENT, OPENTHREAD_EVENT_MULTICAST_GROUP_LEAVE,
|
||||
esp_netif_action_leave_ip6_multicast_group, esp_netif),
|
||||
OT_PLAT_LOG_TAG, "OpenThread interface leave ip6 multicast group event register failed");
|
||||
ESP_RETURN_ON_ERROR(esp_event_handler_register(OPENTHREAD_EVENT, OPENTHREAD_EVENT_PUBLISH_MESHCOP_E,
|
||||
esp_openthread_meshcop_e_publish_handler, NULL),
|
||||
OT_PLAT_LOG_TAG, "OpenThread publish meshcop-e service event register failed");
|
||||
ESP_RETURN_ON_ERROR(esp_event_handler_register(OPENTHREAD_EVENT, OPENTHREAD_EVENT_REMOVE_MESHCOP_E,
|
||||
esp_openthread_meshcop_e_remove_handler, NULL),
|
||||
OT_PLAT_LOG_TAG, "OpenThread remove meshcop-e service event register failed");
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
@@ -244,6 +277,8 @@ static void unregister_openthread_event_handlers(void)
|
||||
esp_netif_action_join_ip6_multicast_group);
|
||||
esp_event_handler_unregister(OPENTHREAD_EVENT, OPENTHREAD_EVENT_MULTICAST_GROUP_LEAVE,
|
||||
esp_netif_action_leave_ip6_multicast_group);
|
||||
esp_event_handler_unregister(OPENTHREAD_EVENT, OPENTHREAD_EVENT_PUBLISH_MESHCOP_E, esp_openthread_meshcop_e_publish_handler);
|
||||
esp_event_handler_unregister(OPENTHREAD_EVENT, OPENTHREAD_EVENT_REMOVE_MESHCOP_E, esp_openthread_meshcop_e_remove_handler);
|
||||
}
|
||||
|
||||
static esp_err_t openthread_netif_post_attach(esp_netif_t *esp_netif, void *args)
|
||||
|
||||
Reference in New Issue
Block a user