Skip to content

Commit dc7fb34

Browse files
committed
Merge branch 'backport/openthread_related_bacport_to_5_3' into 'release/v5.3'
Backport some openthread related features (Backport v5.3) See merge request espressif/esp-idf!32251
2 parents aa95bb1 + bed5aa5 commit dc7fb34

16 files changed

+237
-85
lines changed

components/openthread/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,9 +237,9 @@ execute_process(
237237

238238
string(TIMESTAMP OT_BUILD_TIMESTAMP " %Y-%m-%d %H:%M:%S UTC" UTC)
239239
string(CONCAT OT_FULL_VERSION_STRING
240-
"openthread-esp32/"
240+
"${CONFIG_OPENTHREAD_PACKAGE_NAME}/"
241241
"${IDF_VERSION_FOR_OPENTHREAD_PACKAGE}-${OPENTHREAD_VERSION}\; "
242-
"${CONFIG_IDF_TARGET}\; ${OT_BUILD_TIMESTAMP}")
242+
"${CONFIG_OPENTHREAD_PLATFORM_INFO}\; ${OT_BUILD_TIMESTAMP}")
243243

244244
idf_component_register(SRC_DIRS "${src_dirs}"
245245
EXCLUDE_SRCS "${exclude_srcs}"
@@ -266,6 +266,8 @@ if(CONFIG_OPENTHREAD_ENABLED OR CONFIG_OPENTHREAD_SPINEL_ONLY)
266266
PUBLIC
267267
"OPENTHREAD_CONFIG_FILE=\"openthread-core-esp32x-${CONFIG_FILE_TYPE}-config.h\""
268268
"${device_type}"
269+
"OPENTHREAD_PROJECT_LIB_CONFIG_FILE=\"openthread-core-esp32x-${CONFIG_FILE_TYPE}-config.h\""
270+
"${device_type}"
269271
PRIVATE
270272
"PACKAGE_VERSION=\"${IDF_VERSION_FOR_OPENTHREAD_PACKAGE}-${OPENTHREAD_VERSION}\""
271273
"OPENTHREAD_BUILD_DATETIME=\"${OT_BUILD_TIMESTAMP}\""

components/openthread/Kconfig

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,10 +170,26 @@ menu "OpenThread"
170170
Select this to enable SPI connection to host.
171171
endchoice
172172

173+
menu "OpenThread version message"
174+
depends on OPENTHREAD_ENABLED
175+
176+
config OPENTHREAD_PACKAGE_NAME
177+
string "OpenThread package name"
178+
default "openthread-esp32"
179+
help
180+
The OpenThread package name.
181+
182+
config OPENTHREAD_PLATFORM_INFO
183+
string "platform information"
184+
default IDF_TARGET
185+
help
186+
The OpenThread platform information.
187+
endmenu
188+
173189
config OPENTHREAD_NCP_VENDOR_HOOK
174190
bool "Enable vendor command for RCP"
175191
depends on OPENTHREAD_RADIO
176-
default n
192+
default y
177193
help
178194
Select this to enable OpenThread NCP vendor commands.
179195

@@ -259,7 +275,8 @@ menu "OpenThread"
259275
config OPENTHREAD_SPINEL_RX_FRAME_BUFFER_SIZE
260276
int "The size of openthread spinel rx frame buffer"
261277
depends on OPENTHREAD_ENABLED || OPENTHREAD_SPINEL_ONLY
262-
default 2048
278+
default 1024 if OPENTHREAD_MTD || OPENTHREAD_RADIO
279+
default 2048 if OPENTHREAD_FTD || OPENTHREAD_SPINEL_ONLY
263280

264281
config OPENTHREAD_MAC_MAX_CSMA_BACKOFFS_DIRECT
265282
int "Maximum backoffs times before declaring a channel access failure."

components/openthread/openthread

Submodule openthread updated 1560 files

components/openthread/private_include/openthread-core-esp32x-ftd-config.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* The platform-specific string to insert into the OpenThread version string.
1515
*
1616
*/
17-
#define OPENTHREAD_CONFIG_PLATFORM_INFO CONFIG_IDF_TARGET
17+
#define OPENTHREAD_CONFIG_PLATFORM_INFO CONFIG_OPENTHREAD_PLATFORM_INFO
1818

1919
/**
2020
* @def OPENTHREAD_CONFIG_PLATFORM_ASSERT_MANAGEMENT
@@ -317,7 +317,7 @@
317317
* Define to the full name of this package.
318318
*
319319
*/
320-
#define PACKAGE_NAME "openthread-esp32"
320+
#define PACKAGE_NAME CONFIG_OPENTHREAD_PACKAGE_NAME
321321

322322
/**
323323
* @def PACKAGE_STRING
@@ -355,13 +355,13 @@
355355
#define OPENTHREAD_CONFIG_MAX_STATECHANGE_HANDLERS 3
356356

357357
/**
358-
* @def OPENTHREAD_CONFIG_PLATFORM_RADIO_SPINEL_RX_FRAME_BUFFER_SIZE
358+
* @def OPENTHREAD_LIB_SPINEL_RX_FRAME_BUFFER_SIZE
359359
*
360360
* Specifies the rx frame buffer size used by `SpinelInterface` in RCP host code. This is applicable/used when
361361
* `RadioSpinel` platform is used.
362362
*
363363
*/
364-
#define OPENTHREAD_CONFIG_PLATFORM_RADIO_SPINEL_RX_FRAME_BUFFER_SIZE CONFIG_OPENTHREAD_SPINEL_RX_FRAME_BUFFER_SIZE
364+
#define OPENTHREAD_LIB_SPINEL_RX_FRAME_BUFFER_SIZE CONFIG_OPENTHREAD_SPINEL_RX_FRAME_BUFFER_SIZE
365365

366366
/**
367367
* @def OPENTHREAD_CONFIG_PLATFORM_USEC_TIMER_ENABLE

components/openthread/private_include/openthread-core-esp32x-mtd-config.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* The platform-specific string to insert into the OpenThread version string.
1515
*
1616
*/
17-
#define OPENTHREAD_CONFIG_PLATFORM_INFO CONFIG_IDF_TARGET
17+
#define OPENTHREAD_CONFIG_PLATFORM_INFO CONFIG_OPENTHREAD_PLATFORM_INFO
1818

1919
/**
2020
* @def OPENTHREAD_CONFIG_PLATFORM_ASSERT_MANAGEMENT
@@ -131,7 +131,7 @@
131131
* Define to the full name of this package.
132132
*
133133
*/
134-
#define PACKAGE_NAME "openthread-esp32"
134+
#define PACKAGE_NAME CONFIG_OPENTHREAD_PACKAGE_NAME
135135

136136
/**
137137
* @def PACKAGE_STRING
@@ -169,13 +169,13 @@
169169
#define OPENTHREAD_CONFIG_MAX_STATECHANGE_HANDLERS 3
170170

171171
/**
172-
* @def OPENTHREAD_CONFIG_PLATFORM_RADIO_SPINEL_RX_FRAME_BUFFER_SIZE
172+
* @def OPENTHREAD_LIB_SPINEL_RX_FRAME_BUFFER_SIZE
173173
*
174174
* Specifies the rx frame buffer size used by `SpinelInterface` in RCP host code. This is applicable/used when
175175
* `RadioSpinel` platform is used.
176176
*
177177
*/
178-
#define OPENTHREAD_CONFIG_PLATFORM_RADIO_SPINEL_RX_FRAME_BUFFER_SIZE 1024
178+
#define OPENTHREAD_LIB_SPINEL_RX_FRAME_BUFFER_SIZE CONFIG_OPENTHREAD_SPINEL_RX_FRAME_BUFFER_SIZE
179179

180180
/**
181181
* @def OPENTHREAD_CONFIG_PLATFORM_USEC_TIMER_ENABLE

components/openthread/private_include/openthread-core-esp32x-radio-config.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* The platform-specific string to insert into the OpenThread version string.
1414
*
1515
*/
16-
#define OPENTHREAD_CONFIG_PLATFORM_INFO CONFIG_IDF_TARGET
16+
#define OPENTHREAD_CONFIG_PLATFORM_INFO CONFIG_OPENTHREAD_PLATFORM_INFO
1717

1818
/**
1919
* @def OPENTHREAD_CONFIG_PLATFORM_ASSERT_MANAGEMENT
@@ -112,7 +112,7 @@
112112
* Define to the full name of this package.
113113
*
114114
*/
115-
#define PACKAGE_NAME "openthread-esp32"
115+
#define PACKAGE_NAME CONFIG_OPENTHREAD_PACKAGE_NAME
116116

117117
/**
118118
* @def PACKAGE_STRING
@@ -142,13 +142,13 @@
142142
#define OPENTHREAD_CONFIG_MAX_STATECHANGE_HANDLERS 3
143143

144144
/**
145-
* @def OPENTHREAD_CONFIG_PLATFORM_RADIO_SPINEL_RX_FRAME_BUFFER_SIZE
145+
* @def OPENTHREAD_LIB_SPINEL_RX_FRAME_BUFFER_SIZE
146146
*
147147
* Specifies the rx frame buffer size used by `SpinelInterface` in RCP host code. This is applicable/used when
148148
* `RadioSpinel` platform is used.
149149
*
150150
*/
151-
#define OPENTHREAD_CONFIG_PLATFORM_RADIO_SPINEL_RX_FRAME_BUFFER_SIZE 1024
151+
#define OPENTHREAD_LIB_SPINEL_RX_FRAME_BUFFER_SIZE CONFIG_OPENTHREAD_SPINEL_RX_FRAME_BUFFER_SIZE
152152

153153
/**
154154
* @def OPENTHREAD_CONFIG_PLATFORM_USEC_TIMER_ENABLE

components/openthread/private_include/openthread-core-esp32x-spinel-config.h

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,23 @@
66

77
#pragma once
88

9+
#include "sdkconfig.h"
10+
/**
11+
* @def OPENTHREAD_CONFIG_PLATFORM_INFO
12+
*
13+
* The platform-specific string to insert into the OpenThread version string.
14+
*
15+
*/
16+
#define OPENTHREAD_CONFIG_PLATFORM_INFO CONFIG_OPENTHREAD_PLATFORM_INFO
17+
18+
/**
19+
* @def PACKAGE_NAME
20+
*
21+
* Define to the full name of this package.
22+
*
23+
*/
24+
#define PACKAGE_NAME CONFIG_OPENTHREAD_PACKAGE_NAME
25+
926
/**
1027
* @def OPENTHREAD_SPINEL_CONFIG_OPENTHREAD_MESSAGE_ENABLE
1128
*
@@ -25,9 +42,11 @@
2542
*/
2643
#ifndef OPENTHREAD_SPINEL_CONFIG_RCP_RESTORATION_MAX_COUNT
2744
// TZ-567: Set OPENTHREAD_SPINEL_CONFIG_RCP_RESTORATION_MAX_COUNT to 3 after adding rcp failure notification mechanism
28-
#define OPENTHREAD_SPINEL_CONFIG_RCP_RESTORATION_MAX_COUNT 0
45+
#define OPENTHREAD_SPINEL_CONFIG_RCP_RESTORATION_MAX_COUNT 3
2946
#endif
3047

48+
#define OPENTHREAD_SPINEL_CONFIG_VENDOR_HOOK_ENABLE 1
49+
3150
/**
3251
* @def OPENTHREAD_SPINEL_CONFIG_RCP_CUSTOM_RESTORATION
3352
*
@@ -39,13 +58,13 @@
3958
#endif
4059

4160
/**
42-
* @def OPENTHREAD_CONFIG_PLATFORM_RADIO_SPINEL_RX_FRAME_BUFFER_SIZE
61+
* @def OPENTHREAD_LIB_SPINEL_RX_FRAME_BUFFER_SIZE
4362
*
4463
* Specifies the rx frame buffer size used by `SpinelInterface` in RCP host code. This is applicable/used when
4564
* `RadioSpinel` platform is used.
4665
*
4766
*/
48-
#define OPENTHREAD_CONFIG_PLATFORM_RADIO_SPINEL_RX_FRAME_BUFFER_SIZE CONFIG_OPENTHREAD_SPINEL_RX_FRAME_BUFFER_SIZE
67+
#define OPENTHREAD_LIB_SPINEL_RX_FRAME_BUFFER_SIZE CONFIG_OPENTHREAD_SPINEL_RX_FRAME_BUFFER_SIZE
4968

5069
/**
5170
* @def OPENTHREAD_CONFIG_MAC_MAX_CSMA_BACKOFFS_DIRECT

components/openthread/sbom_openthread.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ supplier: 'Organization: Espressif Systems (Shanghai) CO LTD'
55
originator: 'Organization: Google LLC'
66
description: OpenThread released by Google is an open-source implementation of the Thread networking
77
url: https://github.com/espressif/openthread
8-
hash: be7d36e4ff9cf7df6dfce54e58a31163c87b93f7
8+
hash: f32c18bc0840f400182456e58ae3900fc2fb4af7

components/openthread/src/esp_openthread_netif_glue.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ void *esp_openthread_netif_glue_init(const esp_openthread_platform_config_t *con
320320
otIp6SetAddressCallback(instance, process_thread_address, instance);
321321
otIp6SetReceiveCallback(instance, process_thread_receive, instance);
322322
otIp6SetReceiveFilterEnabled(instance, true);
323-
otIcmp6SetEchoMode(instance, OT_ICMP6_ECHO_HANDLER_DISABLED);
323+
otIcmp6SetEchoMode(instance, OT_ICMP6_ECHO_HANDLER_RLOC_ALOC_ONLY);
324324

325325
s_openthread_netif_glue.event_fd = eventfd(0, 0);
326326
if (s_openthread_netif_glue.event_fd < 0) {

components/openthread/src/port/esp_openthread_radio.c

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,13 @@ static otRadioFrame s_ack_frame;
6464
static int s_ed_power;
6565
static esp_ieee802154_tx_error_t s_tx_error;
6666
static int s_radio_event_fd = -1;
67-
static bool s_diag_mode = false;
6867
static const char *s_radio_workflow = "radio";
6968
static uint8_t s_txrx_events;
7069

70+
#if CONFIG_OPENTHREAD_DIAG
71+
static bool s_diag_mode = false;
72+
#endif
73+
7174
#if OPENTHREAD_CONFIG_MAC_HEADER_IE_SUPPORT
7275
static otRadioIeInfo s_transmit_ie_info;
7376
#endif // OPENTHREAD_CONFIG_MAC_HEADER_IE_SUPPORT
@@ -113,7 +116,7 @@ static inline bool get_event(uint8_t event)
113116
esp_err_t esp_openthread_radio_init(const esp_openthread_platform_config_t *config)
114117
{
115118
ESP_RETURN_ON_FALSE(s_radio_event_fd == -1, ESP_ERR_INVALID_STATE, OT_PLAT_LOG_TAG,
116-
"Radio was initalized already!");
119+
"Radio was initialized already!");
117120

118121
s_radio_event_fd = eventfd(0, EFD_SUPPORT_ISR);
119122

@@ -165,7 +168,7 @@ esp_err_t esp_openthread_radio_process(otInstance *aInstance, const esp_openthre
165168

166169
if (get_event(EVENT_TX_DONE)) {
167170
clr_event(EVENT_TX_DONE);
168-
#if OPENTHREAD_CONFIG_DIAG_ENABLE
171+
#if CONFIG_OPENTHREAD_DIAG
169172
if (otPlatDiagModeGet()) {
170173
otPlatDiagRadioTransmitDone(aInstance, &s_transmit_frame, OT_ERROR_NONE);
171174
} else
@@ -183,7 +186,7 @@ esp_err_t esp_openthread_radio_process(otInstance *aInstance, const esp_openthre
183186

184187
if (get_event(EVENT_TX_FAILED)) {
185188
clr_event(EVENT_TX_FAILED);
186-
#if OPENTHREAD_CONFIG_DIAG_ENABLE
189+
#if CONFIG_OPENTHREAD_DIAG
187190
if (otPlatDiagModeGet()) {
188191
otPlatDiagRadioTransmitDone(aInstance, &s_transmit_frame, OT_ERROR_CHANNEL_ACCESS_FAILURE);
189192
} else
@@ -219,7 +222,7 @@ esp_err_t esp_openthread_radio_process(otInstance *aInstance, const esp_openthre
219222

220223
while (atomic_load(&s_recv_queue.used)) {
221224
if (s_receive_frame[s_recv_queue.head].mPsdu != NULL) {
222-
#if OPENTHREAD_CONFIG_DIAG_ENABLE
225+
#if CONFIG_OPENTHREAD_DIAG
223226
if (otPlatDiagModeGet()) {
224227
otPlatDiagRadioReceiveDone(aInstance, &s_receive_frame[s_recv_queue.head], OT_ERROR_NONE);
225228
} else
@@ -302,7 +305,7 @@ otError otPlatRadioTransmit(otInstance *aInstance, otRadioFrame *aFrame)
302305
{
303306
esp_ieee802154_set_channel(aFrame->mChannel);
304307

305-
aFrame->mPsdu[-1] = aFrame->mLength; // lenth locates one byte before the psdu (esp_openthread_radio_tx_psdu);
308+
aFrame->mPsdu[-1] = aFrame->mLength; // length locates one byte before the psdu (esp_openthread_radio_tx_psdu);
306309

307310
if (otMacFrameIsSecurityEnabled(aFrame) && !aFrame->mInfo.mTxInfo.mIsSecurityProcessed) {
308311
if (!s_transmit_frame.mInfo.mTxInfo.mIsARetx) {
@@ -447,6 +450,15 @@ int8_t otPlatRadioGetReceiveSensitivity(otInstance *aInstance)
447450
return ESP_RECEIVE_SENSITIVITY;
448451
}
449452

453+
#if CONFIG_OPENTHREAD_DIAG
454+
455+
void otPlatDiagSetOutputCallback(otInstance *aInstance, otPlatDiagOutputCallback aCallback, void *aContext)
456+
{
457+
OT_UNUSED_VARIABLE(aInstance);
458+
OT_UNUSED_VARIABLE(aCallback);
459+
OT_UNUSED_VARIABLE(aContext);
460+
}
461+
450462
void otPlatDiagModeSet(bool mode)
451463
{
452464
s_diag_mode = mode;
@@ -479,6 +491,8 @@ void otPlatDiagAlarmCallback(otInstance *aInstance)
479491
OT_UNUSED_VARIABLE(aInstance);
480492
}
481493

494+
#endif // CONFIG_OPENTHREAD_DIAG
495+
482496
#if OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_2
483497
void otPlatRadioSetMacKey(otInstance *aInstance, uint8_t aKeyIdMode, uint8_t aKeyId, const otMacKeyMaterial *aPrevKey,
484498
const otMacKeyMaterial *aCurrKey, const otMacKeyMaterial *aNextKey, otRadioKeyType aKeyType)

0 commit comments

Comments
 (0)