forked from espressif/esp-idf
Merge branch 'otbr-rcp-update' into 'master'
openthread: support automatic RCP update upon boot in border router See merge request espressif/esp-idf!17322
This commit is contained in:
@@ -131,6 +131,12 @@ execute_process(
|
|||||||
OUTPUT_VARIABLE OPENTHREAD_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE
|
OUTPUT_VARIABLE OPENTHREAD_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
)
|
)
|
||||||
|
|
||||||
|
string(TIMESTAMP OT_BUILD_TIMESTAMP " %Y-%m-%d %H:%M:%S UTC" UTC)
|
||||||
|
string(CONCAT OT_FULL_VERSION_STRING
|
||||||
|
"openthread-esp32/"
|
||||||
|
"${IDF_VERSION_FOR_OPENTHREAD_PACKAGE}-${OPENTHREAD_VERSION}\; "
|
||||||
|
"${CONFIG_IDF_TARGET}\; ${OT_BUILD_TIMESTAMP}")
|
||||||
|
|
||||||
idf_component_register(SRC_DIRS "${src_dirs}"
|
idf_component_register(SRC_DIRS "${src_dirs}"
|
||||||
EXCLUDE_SRCS "${exclude_srcs}"
|
EXCLUDE_SRCS "${exclude_srcs}"
|
||||||
INCLUDE_DIRS "${public_include_dirs}"
|
INCLUDE_DIRS "${public_include_dirs}"
|
||||||
@@ -152,7 +158,12 @@ if(CONFIG_OPENTHREAD_ENABLED)
|
|||||||
"OPENTHREAD_CONFIG_FILE=\"openthread-core-esp32x-${CONFIG_FILE_TYPE}-config.h\""
|
"OPENTHREAD_CONFIG_FILE=\"openthread-core-esp32x-${CONFIG_FILE_TYPE}-config.h\""
|
||||||
"${device_type}"
|
"${device_type}"
|
||||||
PRIVATE
|
PRIVATE
|
||||||
"PACKAGE_VERSION=\"${IDF_VERSION_FOR_OPENTHREAD_PACKAGE}-${OPENTHREAD_VERSION}\"")
|
"PACKAGE_VERSION=\"${IDF_VERSION_FOR_OPENTHREAD_PACKAGE}-${OPENTHREAD_VERSION}\""
|
||||||
|
"OPENTHREAD_BUILD_DATETIME=\"${OT_BUILD_TIMESTAMP}\""
|
||||||
|
)
|
||||||
|
if(CONFIG_OPENTHREAD_RADIO)
|
||||||
|
file(WRITE ${CMAKE_BINARY_DIR}/rcp_version ${OT_FULL_VERSION_STRING})
|
||||||
|
endif()
|
||||||
|
|
||||||
if(CONFIG_OPENTHREAD_ESP_LIB_FROM_INTERNAL_SRC)
|
if(CONFIG_OPENTHREAD_ESP_LIB_FROM_INTERNAL_SRC)
|
||||||
idf_component_get_property(openthread_port_lib openthread_port COMPONENT_LIB)
|
idf_component_get_property(openthread_port_lib openthread_port COMPONENT_LIB)
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -60,6 +60,18 @@ esp_err_t esp_openthread_border_router_deinit(void);
|
|||||||
*/
|
*/
|
||||||
esp_netif_t *esp_openthread_get_backbone_netif(void);
|
esp_netif_t *esp_openthread_get_backbone_netif(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Registers the callback for RCP failure.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void esp_openthread_register_rcp_failure_handler(esp_openthread_rcp_failure_handler handler);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Deinitializes the conneciton to RCP.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void esp_openthread_rcp_deinit(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -39,7 +39,6 @@ esp_err_t esp_openthread_cli_input(const char *line);
|
|||||||
*/
|
*/
|
||||||
void esp_openthread_cli_create_task(void);
|
void esp_openthread_cli_create_task(void);
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,50 +0,0 @@
|
|||||||
/*
|
|
||||||
* SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "esp_openthread.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function triggers an RCP firmware update.
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
* - ESP_OK
|
|
||||||
* - ESP_FAIL
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
esp_err_t esp_openthread_rcp_update_start(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function writes sequential firmware update data to the RCP.
|
|
||||||
*
|
|
||||||
* @param[in] data The firmware data slice
|
|
||||||
* @param[in] size The data slice size
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
* - ESP_OK
|
|
||||||
* - ESP_FAIL
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
esp_err_t esp_openthread_rcp_update_write(uint8_t *data, size_t size);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function commits the firmware update and reboots the RCP.
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
* - ESP_OK
|
|
||||||
* - ESP_FAIL
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
esp_err_t esp_openthread_rcp_update_commit(void);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
@@ -1,42 +1,45 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "hal/uart_types.h"
|
#include <stdint.h>
|
||||||
#include "sys/_stdint.h"
|
|
||||||
#include "sys/select.h"
|
#include <sys/select.h>
|
||||||
|
|
||||||
#include "esp_event_base.h"
|
#include "esp_event_base.h"
|
||||||
|
#include "hal/uart_types.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief OpenThread event declarations
|
* @brief OpenThread event declarations
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum
|
||||||
OPENTHREAD_EVENT_START, /*!< OpenThread stack start */
|
{
|
||||||
OPENTHREAD_EVENT_STOP, /*!< OpenThread stack stop */
|
OPENTHREAD_EVENT_START, /*!< OpenThread stack start */
|
||||||
OPENTHREAD_EVENT_IF_UP, /*!< OpenThread network interface up */
|
OPENTHREAD_EVENT_STOP, /*!< OpenThread stack stop */
|
||||||
OPENTHREAD_EVENT_IF_DOWN, /*!< OpenThread network interface down */
|
OPENTHREAD_EVENT_IF_UP, /*!< OpenThread network interface up */
|
||||||
OPENTHREAD_EVENT_GOT_IP6, /*!< OpenThread stack added IPv6 address */
|
OPENTHREAD_EVENT_IF_DOWN, /*!< OpenThread network interface down */
|
||||||
OPENTHREAD_EVENT_LOST_IP6, /*!< OpenThread stack removed IPv6 address */
|
OPENTHREAD_EVENT_GOT_IP6, /*!< OpenThread stack added IPv6 address */
|
||||||
OPENTHREAD_EVENT_MULTICAST_GROUP_JOIN, /*!< OpenThread stack joined IPv6 multicast group */
|
OPENTHREAD_EVENT_LOST_IP6, /*!< OpenThread stack removed IPv6 address */
|
||||||
OPENTHREAD_EVENT_MULTICAST_GROUP_LEAVE, /*!< OpenThread stack left IPv6 multicast group */
|
OPENTHREAD_EVENT_MULTICAST_GROUP_JOIN, /*!< OpenThread stack joined IPv6 multicast group */
|
||||||
OPENTHREAD_EVENT_TREL_ADD_IP6, /*!< OpenThread stack added TREL IPv6 address */
|
OPENTHREAD_EVENT_MULTICAST_GROUP_LEAVE, /*!< OpenThread stack left IPv6 multicast group */
|
||||||
OPENTHREAD_EVENT_TREL_REMOVE_IP6, /*!< OpenThread stack removed TREL IPv6 address */
|
OPENTHREAD_EVENT_TREL_ADD_IP6, /*!< OpenThread stack added TREL IPv6 address */
|
||||||
OPENTHREAD_EVENT_TREL_MULTICAST_GROUP_JOIN, /*!< OpenThread stack joined TREL IPv6 multicast group */
|
OPENTHREAD_EVENT_TREL_REMOVE_IP6, /*!< OpenThread stack removed TREL IPv6 address */
|
||||||
|
OPENTHREAD_EVENT_TREL_MULTICAST_GROUP_JOIN, /*!< OpenThread stack joined TREL IPv6 multicast group */
|
||||||
} esp_openthread_event_t;
|
} esp_openthread_event_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief OpenThread event base declaration
|
* @brief OpenThread event base declaration
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
ESP_EVENT_DECLARE_BASE(OPENTHREAD_EVENT);
|
ESP_EVENT_DECLARE_BASE(OPENTHREAD_EVENT);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -44,11 +47,11 @@ ESP_EVENT_DECLARE_BASE(OPENTHREAD_EVENT);
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
fd_set read_fds; /*!< The read file descriptors */
|
fd_set read_fds; /*!< The read file descriptors */
|
||||||
fd_set write_fds; /*!< The write file descriptors */
|
fd_set write_fds; /*!< The write file descriptors */
|
||||||
fd_set error_fds; /*!< The error file descriptors */
|
fd_set error_fds; /*!< The error file descriptors */
|
||||||
int max_fd; /*!< The max file descriptor */
|
int max_fd; /*!< The max file descriptor */
|
||||||
struct timeval timeout; /*!< The timeout */
|
struct timeval timeout; /*!< The timeout */
|
||||||
} esp_openthread_mainloop_context_t;
|
} esp_openthread_mainloop_context_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -56,28 +59,30 @@ typedef struct {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uart_port_t port; /*!< UART port number */
|
uart_port_t port; /*!< UART port number */
|
||||||
uart_config_t uart_config; /*!< UART configuration, see uart_config_t docs */
|
uart_config_t uart_config; /*!< UART configuration, see uart_config_t docs */
|
||||||
int rx_pin; /*!< UART RX pin */
|
int rx_pin; /*!< UART RX pin */
|
||||||
int tx_pin; /*!< UART TX pin */
|
int tx_pin; /*!< UART TX pin */
|
||||||
} esp_openthread_uart_config_t;
|
} esp_openthread_uart_config_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief The radio mode of OpenThread.
|
* @brief The radio mode of OpenThread.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum
|
||||||
RADIO_MODE_NATIVE = 0x0, /*!< Use the native 15.4 radio */
|
{
|
||||||
RADIO_MODE_UART_RCP = 0x1, /*!< UART connection to a 15.4 capable radio co-processor (RCP) */
|
RADIO_MODE_NATIVE = 0x0, /*!< Use the native 15.4 radio */
|
||||||
RADIO_MODE_SPI_RCP = 0x2, /*!< SPI connection to a 15.4 capable radio co-processor (RCP) */
|
RADIO_MODE_UART_RCP = 0x1, /*!< UART connection to a 15.4 capable radio co-processor (RCP) */
|
||||||
|
RADIO_MODE_SPI_RCP = 0x2, /*!< SPI connection to a 15.4 capable radio co-processor (RCP) */
|
||||||
} esp_openthread_radio_mode_t;
|
} esp_openthread_radio_mode_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief How OpenThread connects to the host.
|
* @brief How OpenThread connects to the host.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum
|
||||||
HOST_CONNECTION_MODE_NONE = 0x0, /*!< Disable host connection */
|
{
|
||||||
|
HOST_CONNECTION_MODE_NONE = 0x0, /*!< Disable host connection */
|
||||||
HOST_CONNECTION_MODE_CLI_UART = 0x1, /*!< CLI UART connection to the host */
|
HOST_CONNECTION_MODE_CLI_UART = 0x1, /*!< CLI UART connection to the host */
|
||||||
HOST_CONNECTION_MODE_RCP_UART = 0x2, /*!< RCP UART connection to the host */
|
HOST_CONNECTION_MODE_RCP_UART = 0x2, /*!< RCP UART connection to the host */
|
||||||
} esp_openthread_host_connection_mode_t;
|
} esp_openthread_host_connection_mode_t;
|
||||||
@@ -87,8 +92,8 @@ typedef enum {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
esp_openthread_radio_mode_t radio_mode; /*!< The radio mode */
|
esp_openthread_radio_mode_t radio_mode; /*!< The radio mode */
|
||||||
esp_openthread_uart_config_t radio_uart_config; /*!< The uart configuration to RCP */
|
esp_openthread_uart_config_t radio_uart_config; /*!< The uart configuration to RCP */
|
||||||
} esp_openthread_radio_config_t;
|
} esp_openthread_radio_config_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -96,8 +101,8 @@ typedef struct {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
esp_openthread_host_connection_mode_t host_connection_mode; /*!< The host connection mode */
|
esp_openthread_host_connection_mode_t host_connection_mode; /*!< The host connection mode */
|
||||||
esp_openthread_uart_config_t host_uart_config; /*!< The uart configuration to host */
|
esp_openthread_uart_config_t host_uart_config; /*!< The uart configuration to host */
|
||||||
} esp_openthread_host_connection_config_t;
|
} esp_openthread_host_connection_config_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -115,11 +120,13 @@ typedef struct {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
esp_openthread_radio_config_t radio_config; /*!< The radio configuration */
|
esp_openthread_radio_config_t radio_config; /*!< The radio configuration */
|
||||||
esp_openthread_host_connection_config_t host_config; /*!< The host connection configuration */
|
esp_openthread_host_connection_config_t host_config; /*!< The host connection configuration */
|
||||||
esp_openthread_port_config_t port_config; /*!< The port configuration */
|
esp_openthread_port_config_t port_config; /*!< The port configuration */
|
||||||
} esp_openthread_platform_config_t;
|
} esp_openthread_platform_config_t;
|
||||||
|
|
||||||
|
typedef void (*esp_openthread_rcp_failure_handler)(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Submodule components/openthread/lib updated: 3ec1c7b743...d3446f57c1
@@ -77,7 +77,6 @@
|
|||||||
*/
|
*/
|
||||||
#define OPENTHREAD_CONFIG_COAP_API_ENABLE 1
|
#define OPENTHREAD_CONFIG_COAP_API_ENABLE 1
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @def OPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE
|
* @def OPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE
|
||||||
*
|
*
|
||||||
@@ -200,6 +199,17 @@
|
|||||||
#define OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE 1
|
#define OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @def OPENTHREAD_SPINEL_CONFIG_RCP_RESTORATION_MAX_COUNT
|
||||||
|
*
|
||||||
|
* Defines the max count of RCP failures allowed to be recovered.
|
||||||
|
* 0 means to disable RCP failure recovering.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#ifndef OPENTHREAD_SPINEL_CONFIG_RCP_RESTORATION_MAX_COUNT
|
||||||
|
#define OPENTHREAD_SPINEL_CONFIG_RCP_RESTORATION_MAX_COUNT 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // CONFIG_OPENTHREAD_BORDER_ROUTER
|
#endif // CONFIG_OPENTHREAD_BORDER_ROUTER
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* This file includes compile-time configuration constants for OpenThread.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENTHREAD_SPINEL_CONFIG_H_
|
||||||
|
#define OPENTHREAD_SPINEL_CONFIG_H_
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @def OPENTHREAD_SPINEL_CONFIG_OPENTHREAD_MESSAGE_ENABLE
|
||||||
|
*
|
||||||
|
* Define 1 to enable feeding an OpenThread message to encoder/decoder.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#ifndef OPENTHREAD_SPINEL_CONFIG_OPENTHREAD_MESSAGE_ENABLE
|
||||||
|
#define OPENTHREAD_SPINEL_CONFIG_OPENTHREAD_MESSAGE_ENABLE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @def OPENTHREAD_SPINEL_CONFIG_RCP_RESTORATION_MAX_COUNT
|
||||||
|
*
|
||||||
|
* Defines the max count of RCP failures allowed to be recovered.
|
||||||
|
* 0 means to disable RCP failure recovering.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#ifndef OPENTHREAD_SPINEL_CONFIG_RCP_RESTORATION_MAX_COUNT
|
||||||
|
#define OPENTHREAD_SPINEL_CONFIG_RCP_RESTORATION_MAX_COUNT 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @def OPENTHREAD_SPINEL_CONFIG_RCP_CUSTOM_RESTORATION
|
||||||
|
*
|
||||||
|
* Define 1 to call the custom RCP failure handler on RCP failure.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#ifndef OPENTHREAD_SPINEL_CONFIG_RCP_CUSTOM_RESTORATION
|
||||||
|
#define OPENTHREAD_SPINEL_CONFIG_RCP_CUSTOM_RESTORATION 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // OPENTHREAD_SPINEL_CONFIG_H_
|
@@ -1,8 +1,6 @@
|
|||||||
# Name, Type, SubType, Offset, Size, Flags
|
# Name, Type, SubType, Offset, Size, Flags
|
||||||
# Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap
|
# Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap
|
||||||
nvs, data, nvs, 0x9000, 0x6000,
|
nvs, data, nvs, 0x9000, 0x6000,
|
||||||
otadata, data, ota, , 0x2000,
|
|
||||||
phy_init, data, phy, , 0x1000,
|
phy_init, data, phy, , 0x1000,
|
||||||
ot_storage, data, 0x3a, , 0x2000,
|
factory, app, factory, 0x10000, 1M,
|
||||||
ota_0, app, ota_0, , 900K,
|
ot_storage, data, 0x3a, , 0x2000,
|
||||||
ota_1, app, ota_1, , 900K,
|
|
||||||
|
|
Reference in New Issue
Block a user