Skip to content

Commit a5447de

Browse files
ArekBalysNordicnordicjm
authored andcommitted
modules: openthread: New OpenThread radio implementation for nRF
Implemented the new OpenThread radio implementation for the nRF Connect platform. The new radio implementation is based on the nRF IEEE802.15.4 radio driver and does not use Zephyr's IEEE802.15.4 shim layer. In this solution, the Zephyr's networking L2 layer is disabled, and radio packets are passed directly to the nRF radio. Prepared a build environment to support building OpenThread without Zephyr's L2 and IEEE802.15.4 shim layers. To use the new radio implementation, the CONFIG_NET_L2_OPENTHREAD Kconfig must be set to `n`. Signed-off-by: Adrian Gielniewski <adrian.gielniewski@nordicsemi.no> Signed-off-by: Arkadiusz Balys <arkadiusz.balys@nordicsemi.no>
1 parent b1167db commit a5447de

File tree

6 files changed

+1920
-1
lines changed

6 files changed

+1920
-1
lines changed

modules/openthread/Kconfig

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,8 @@ menu "OpenThread stack nrf features"
1111
rsource "Kconfig.features.nrf"
1212
endmenu
1313

14+
menu "NRF5 radio configuration"
15+
rsource "Kconfig.nrf5"
16+
endmenu
17+
1418
endif # OPENTHREAD

modules/openthread/Kconfig.features.nrf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# SDK-nrf-specific OpenThread stack features for selection
22

33
# Copyright (c) 2025 Nordic Semiconductor ASA
4-
# SPDX-License-Identifier: Apache-2.0
4+
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
55

66
choice OPENTHREAD_PSA_NVM_BACKEND
77
prompt "Backend to store persistent crypto materials"

modules/openthread/Kconfig.nrf5

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# Copyright (c) 2025 Nordic Semiconductor ASA
2+
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
3+
4+
if !NET_L2_OPENTHREAD
5+
6+
config NRF5_SELECTIVE_TXCHANNEL
7+
bool "Support for selective TX channel setting"
8+
help
9+
Enable support for selectively setting TX channel for every timed transmission request.
10+
11+
config NRF5_CARRIER_FUNCTIONS
12+
bool "Support for carrier functions"
13+
default y if OPENTHREAD_DIAG
14+
help
15+
Enable support for functions such as modulated carrier and continuous carrier.
16+
17+
config NRF5_VENDOR_OUI_ENABLE
18+
bool "Support setting Vendor Organizationally Unique Identifier"
19+
help
20+
This option enables setting custom vendor
21+
OUI using NRF5_VENDOR_OUI . After enabling,
22+
user is obliged to set NRF5_VENDOR_OUI value,
23+
as this option has no default value.
24+
25+
if NRF5_VENDOR_OUI_ENABLE
26+
27+
config NRF5_VENDOR_OUI
28+
int "Vendor Organizationally Unique Identifier"
29+
help
30+
Custom vendor OUI, which makes 24 most-significant
31+
bits of MAC address
32+
33+
endif # NRF5_VENDOR_OUI_ENABLE
34+
35+
config NRF5_UICR_EUI64_ENABLE
36+
bool "Support usage of EUI64 value stored in UICR registers"
37+
depends on !NRF5_VENDOR_OUI_ENABLE
38+
depends on SOC_SERIES_NRF52X || SOC_SERIES_NRF53X || SOC_SERIES_NRF54LX
39+
help
40+
This option enables setting custom vendor EUI64 value
41+
stored in User information configuration registers (UICR).
42+
Notice that this disables the default setting of EUI64
43+
value from Factory information configuration registers
44+
(FICR).
45+
46+
if NRF5_UICR_EUI64_ENABLE
47+
48+
config NRF5_UICR_EUI64_REG
49+
int "UICR base register for the EUI64 value"
50+
range 0 30 if SOC_SERIES_NRF52X
51+
range 0 190 if SOC_SERIES_NRF53X
52+
range 0 318 if SOC_SERIES_NRF54LX
53+
default 0
54+
help
55+
Base of the two consecutive registers from the UICR customer
56+
section in which custom EUI64 is stored.
57+
58+
endif # NRF5_UICR_EUI64_ENABLE
59+
60+
config NRF5_LOG_RX_FAILURES
61+
bool "Frame reception failures logging"
62+
help
63+
There are few cases where the frame reception failure can happen because of
64+
internal cause. These cases are reported forward by general code error.
65+
66+
This options enables logging the reason of frame reception failure.
67+
It can be helpful for the network traffic analyze but it generates also
68+
a lot of log records in a stress environment.
69+
70+
endif # !NET_L2_OPENTHREAD

modules/openthread/platform/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ zephyr_library_sources(
1616
if(NOT CONFIG_HDLC_RCP_IF)
1717
# Radio platform implementation dedicated for L2 Platform adaptation layer
1818
zephyr_library_sources_ifdef(CONFIG_NET_L2_OPENTHREAD ${ZEPHYR_BASE}/modules/openthread/platform/radio.c)
19+
20+
# Radio platform implementation dedicated for nrf-sdk
21+
zephyr_library_sources_ifndef(CONFIG_NET_L2_OPENTHREAD radio_nrf5.c)
22+
1923
zephyr_library_sources(${ZEPHYR_BASE}/modules/openthread/platform/spi.c)
2024
endif()
2125

0 commit comments

Comments
 (0)