From 3923477f11be045959c86cd934a790cbdafe0ffa Mon Sep 17 00:00:00 2001 From: Tim Lunn Date: Thu, 28 Dec 2023 12:24:41 +1100 Subject: [PATCH 1/6] Bump toolchain to 12.2.rel1 --- Dockerfile | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9e7cce8a..c95309ad 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,7 +15,8 @@ RUN \ default-jre-headless \ patch \ python3 \ - unzip + unzip \ + xz-utils # Install Simplicity Commander (unfortunately no stable URL available, this # is known to be working with Commander_linux_x86_64_1v15p0b1306.tar.bz). @@ -36,15 +37,15 @@ RUN \ ENV PATH="$PATH:/opt/slc_cli" -ARG GCC_ARM_VERSION="10.3-2021.10" +ARG GCC_ARM_VERSION="12.2.rel1" # Install ARM GCC embedded toolchain RUN \ - curl -O https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/${GCC_ARM_VERSION}/gcc-arm-none-eabi-${GCC_ARM_VERSION}-x86_64-linux.tar.bz2 \ - && tar -C /opt -xjf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 \ - && rm gcc-arm-none-eabi-${GCC_ARM_VERSION}-x86_64-linux.tar.bz2 + curl -O https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu/${GCC_ARM_VERSION}/binrel/arm-gnu-toolchain-${GCC_ARM_VERSION}-x86_64-arm-none-eabi.tar.xz \ + && tar -C /opt -xJf arm-gnu-toolchain-${GCC_ARM_VERSION}-x86_64-arm-none-eabi.tar.xz \ + && rm arm-gnu-toolchain-${GCC_ARM_VERSION}-x86_64-arm-none-eabi.tar.xz -ENV PATH="$PATH:/opt/gcc-arm-none-eabi-${GCC_ARM_VERSION}/bin" +ENV PATH="$PATH:/opt/arm-gnu-toolchain-${GCC_ARM_VERSION}-x86_64-arm-none-eabi/bin" ARG GECKO_SDK_VERSION="v4.3.2" @@ -69,5 +70,5 @@ RUN \ --sdk="/gecko_sdk/" \ && slc signature trust --sdk "/gecko_sdk/" \ && slc configuration \ - --gcc-toolchain="/opt/gcc-arm-none-eabi-${GCC_ARM_VERSION}/" + --gcc-toolchain="/opt/arm-gnu-toolchain-${GCC_ARM_VERSION}-x86_64-arm-none-eabi/" From ab2c9c462c4521d1a44950524e856b8b11d057a4 Mon Sep 17 00:00:00 2001 From: Tim Lunn Date: Thu, 28 Dec 2023 12:44:22 +1100 Subject: [PATCH 2/6] Bump GeckoSDK 4.4.0 --- .github/workflows/build.yaml | 4 ++-- Dockerfile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 29b2869a..a1046701 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -17,7 +17,7 @@ on: - '*' env: - sdk_version: 4.3.2 + sdk_version: 4.4.0 jobs: build-container: @@ -143,7 +143,7 @@ jobs: sdk_version: ${{ needs.build-container.outputs.sdk_version }} metadata_fw_type: "ot-rcp" baudrate: 460800 - metadata_extra: "{ \"ot_rcp_version\": \"SL-OPENTHREAD/2.3.2.0_GitHub-e6df00dd6\" }" + metadata_extra: "{ \"ot_rcp_version\": \"SL-OPENTHREAD/2.4.0.0_GitHub-7074a43e4\" }" zwave-firmware-build: name: Z-Wave Serial API Controller diff --git a/Dockerfile b/Dockerfile index c95309ad..b053f6c2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -47,7 +47,7 @@ RUN \ ENV PATH="$PATH:/opt/arm-gnu-toolchain-${GCC_ARM_VERSION}-x86_64-arm-none-eabi/bin" -ARG GECKO_SDK_VERSION="v4.3.2" +ARG GECKO_SDK_VERSION="v4.4.0" RUN \ git clone --depth 1 -b ${GECKO_SDK_VERSION} \ From dec50708d026736570d1ffa21d990b527afa5b96 Mon Sep 17 00:00:00 2001 From: puddly <32534428+puddly@users.noreply.github.com> Date: Tue, 2 Jan 2024 12:14:28 -0500 Subject: [PATCH 3/6] Bump EZSP version --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index a1046701..0e37b28c 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -86,7 +86,7 @@ jobs: sdk_version: ${{ needs.build-container.outputs.sdk_version }} metadata_fw_type: "ncp-uart-hw" baudrate: 115200 - metadata_extra: "{ \"ezsp_version\": \"7.3.2.0\" }" + metadata_extra: "{ \"ezsp_version\": \"7.4.0.0\" }" rcp-multi-pan-firmware-build: name: RCP Multi-PAN From f914f6b50a9f7a67d2f71c8d877b7f424b5f736e Mon Sep 17 00:00:00 2001 From: Tim Lunn Date: Thu, 28 Dec 2023 19:06:07 +1100 Subject: [PATCH 4/6] Drop bootloader reset patches included in new release --- ...thread-Support-reset-into-bootloader.patch | 188 ------------------ ...-Implement-reset-into-bootloader-pla.patch | 58 ------ 2 files changed, 246 deletions(-) delete mode 100644 OpenThreadRCP/GeckoSDK/0001-third_party-openthread-Support-reset-into-bootloader.patch delete mode 100644 OpenThreadRCP/GeckoSDK/0002-openthread-efr32-Implement-reset-into-bootloader-pla.patch diff --git a/OpenThreadRCP/GeckoSDK/0001-third_party-openthread-Support-reset-into-bootloader.patch b/OpenThreadRCP/GeckoSDK/0001-third_party-openthread-Support-reset-into-bootloader.patch deleted file mode 100644 index 31e07596..00000000 --- a/OpenThreadRCP/GeckoSDK/0001-third_party-openthread-Support-reset-into-bootloader.patch +++ /dev/null @@ -1,188 +0,0 @@ -From 59e7a11a59cd10e2c292bf5dd1439a672b1bc898 Mon Sep 17 00:00:00 2001 -Message-ID: <59e7a11a59cd10e2c292bf5dd1439a672b1bc898.1686305449.git.stefan@agner.ch> -From: Stefan Agner -Date: Fri, 9 Jun 2023 12:10:44 +0200 -Subject: [PATCH] third_party: openthread: Support reset into bootloader - ---- - .../openthread/include/openthread/instance.h | 8 ++++++++ - .../include/openthread/platform/misc.h | 8 ++++++++ - .../openthread/src/core/api/instance_api.cpp | 1 + - .../openthread/src/core/common/instance.cpp | 11 ++++++++++- - .../openthread/src/core/common/instance.hpp | 6 ++++++ - .../openthread/src/lib/spinel/radio_spinel.hpp | 2 +- - .../openthread/src/lib/spinel/spinel.h | 5 +++-- - .../third_party/openthread/src/ncp/ncp_base.cpp | 17 ++++++++++++++--- - .../third_party/openthread/src/ncp/ncp_config.h | 7 +++++++ - 9 files changed, 58 insertions(+), 7 deletions(-) - -diff --git a/util/third_party/openthread/include/openthread/instance.h b/util/third_party/openthread/include/openthread/instance.h -index 580f334c5..7d9408cef 100644 ---- a/util/third_party/openthread/include/openthread/instance.h -+++ b/util/third_party/openthread/include/openthread/instance.h -@@ -250,6 +250,14 @@ void otRemoveStateChangeCallback(otInstance *aInstance, otStateChangedCallback a - */ - void otInstanceReset(otInstance *aInstance); - -+/** -+ * This method reboots the platform into its bootloader. -+ * -+ * @param[in] aInstance A pointer to an OpenThread instance. -+ * -+ */ -+void otInstanceRebootBootloader(otInstance *aInstance); -+ - /** - * Deletes all the settings stored on non-volatile memory, and then triggers a platform reset. - * -diff --git a/util/third_party/openthread/include/openthread/platform/misc.h b/util/third_party/openthread/include/openthread/platform/misc.h -index 99c3ed3f5..9b8419294 100644 ---- a/util/third_party/openthread/include/openthread/platform/misc.h -+++ b/util/third_party/openthread/include/openthread/platform/misc.h -@@ -61,6 +61,14 @@ extern "C" { - */ - void otPlatReset(otInstance *aInstance); - -+/** -+ * This function reboots the platform into its bootloader, if supported. -+ * -+ * @param[in] aInstance The OpenThread instance structure. -+ * -+ */ -+void otPlatRebootBootloader(otInstance *aInstance); -+ - /** - * Enumeration of possible reset reason codes. - * -diff --git a/util/third_party/openthread/src/core/api/instance_api.cpp b/util/third_party/openthread/src/core/api/instance_api.cpp -index 06db73ce3..04c473af6 100644 ---- a/util/third_party/openthread/src/core/api/instance_api.cpp -+++ b/util/third_party/openthread/src/core/api/instance_api.cpp -@@ -112,6 +112,7 @@ otError otInstanceErasePersistentInfo(otInstance *aInstance) { return AsCoreType - #endif // OPENTHREAD_MTD || OPENTHREAD_FTD - - #if OPENTHREAD_RADIO -+void otInstanceRebootBootloader(otInstance *aInstance) { AsCoreType(aInstance).RebootBootloader(); } - void otInstanceResetRadioStack(otInstance *aInstance) { AsCoreType(aInstance).ResetRadioStack(); } - #endif - -diff --git a/util/third_party/openthread/src/core/common/instance.cpp b/util/third_party/openthread/src/core/common/instance.cpp -index d0aebecd3..55fda63b3 100644 ---- a/util/third_party/openthread/src/core/common/instance.cpp -+++ b/util/third_party/openthread/src/core/common/instance.cpp -@@ -309,12 +309,21 @@ exit: - void Instance::Reset(void) { otPlatReset(this); } - - #if OPENTHREAD_RADIO -+void Instance::RebootBootloader(void) -+{ -+#if OPENTHREAD_CONFIG_NCP_REBOOT_BOOTLOADER_ENABLE -+ otPlatRebootBootloader(this); -+#else -+ Reset(); -+#endif -+} -+ - void Instance::ResetRadioStack(void) - { - mRadio.Init(); - mLinkRaw.Init(); - } --#endif -+#endif // OPENTHREAD_RADIO - - void Instance::AfterInit(void) - { -diff --git a/util/third_party/openthread/src/core/common/instance.hpp b/util/third_party/openthread/src/core/common/instance.hpp -index 8ce6eba09..6ccf5ea25 100644 ---- a/util/third_party/openthread/src/core/common/instance.hpp -+++ b/util/third_party/openthread/src/core/common/instance.hpp -@@ -225,6 +225,12 @@ public: - void Reset(void); - - #if OPENTHREAD_RADIO -+ /** -+ * This method reboots the radio into its bootloader. -+ * -+ */ -+ void RebootBootloader(void); -+ - /** - * This method resets the internal states of the radio. - * -diff --git a/util/third_party/openthread/src/lib/spinel/radio_spinel.hpp b/util/third_party/openthread/src/lib/spinel/radio_spinel.hpp -index 5aa474415..b4e0c349a 100644 ---- a/util/third_party/openthread/src/lib/spinel/radio_spinel.hpp -+++ b/util/third_party/openthread/src/lib/spinel/radio_spinel.hpp -@@ -875,7 +875,7 @@ public: - /** - * This method tries to reset the co-processor. - * -- * @prarm[in] aResetType The reset type, SPINEL_RESET_PLATFORM or SPINEL_RESET_STACK. -+ * @prarm[in] aResetType The reset type, SPINEL_RESET_PLATFORM, SPINEL_RESET_STACK, or SPINEL_RESET_BOOTLOADER. - * - * @retval OT_ERROR_NONE Successfully removed item from the property. - * @retval OT_ERROR_BUSY Failed due to another operation is on going. -diff --git a/util/third_party/openthread/src/lib/spinel/spinel.h b/util/third_party/openthread/src/lib/spinel/spinel.h -index d2a3644e9..31aedadfb 100644 ---- a/util/third_party/openthread/src/lib/spinel/spinel.h -+++ b/util/third_party/openthread/src/lib/spinel/spinel.h -@@ -901,8 +901,9 @@ enum - - enum - { -- SPINEL_RESET_PLATFORM = 1, -- SPINEL_RESET_STACK = 2, -+ SPINEL_RESET_PLATFORM = 1, -+ SPINEL_RESET_STACK = 2, -+ SPINEL_RESET_BOOTLOADER = 3, - }; - - enum -diff --git a/util/third_party/openthread/src/ncp/ncp_base.cpp b/util/third_party/openthread/src/ncp/ncp_base.cpp -index fa79b0aef..a1e87ba7b 100644 ---- a/util/third_party/openthread/src/ncp/ncp_base.cpp -+++ b/util/third_party/openthread/src/ncp/ncp_base.cpp -@@ -1370,9 +1370,20 @@ otError NcpBase::CommandHandler_RESET(uint8_t aHeader) - else - #endif - { -- // Signal a platform reset. If implemented, this function -- // shouldn't return. -- otInstanceReset(mInstance); -+#if OPENTHREAD_RADIO -+ if (reset_type == SPINEL_RESET_BOOTLOADER) -+ { -+ // Reboot into the bootloader. If implemented, this function -+ // shouldn't return. -+ otInstanceRebootBootloader(mInstance); -+ } -+ else -+#endif -+ { -+ // Signal a platform reset. If implemented, this function -+ // shouldn't return. -+ otInstanceReset(mInstance); -+ } - - #if OPENTHREAD_MTD || OPENTHREAD_FTD - // We only get to this point if the -diff --git a/util/third_party/openthread/src/ncp/ncp_config.h b/util/third_party/openthread/src/ncp/ncp_config.h -index bc54fb52a..bb11d5b33 100644 ---- a/util/third_party/openthread/src/ncp/ncp_config.h -+++ b/util/third_party/openthread/src/ncp/ncp_config.h -@@ -189,4 +189,11 @@ - #define OPENTHREAD_ENABLE_NCP_VENDOR_HOOK 0 - #endif - -+/** -+ * @def OPENTHREAD_CONFIG_NCP_REBOOT_BOOTLOADER_ENABLE -+ */ -+#ifndef OPENTHREAD_CONFIG_NCP_REBOOT_BOOTLOADER_ENABLE -+#define OPENTHREAD_CONFIG_NCP_REBOOT_BOOTLOADER_ENABLE 0 -+#endif -+ - #endif // CONFIG_NCP_H_ --- -2.41.0 - diff --git a/OpenThreadRCP/GeckoSDK/0002-openthread-efr32-Implement-reset-into-bootloader-pla.patch b/OpenThreadRCP/GeckoSDK/0002-openthread-efr32-Implement-reset-into-bootloader-pla.patch deleted file mode 100644 index 413d98f4..00000000 --- a/OpenThreadRCP/GeckoSDK/0002-openthread-efr32-Implement-reset-into-bootloader-pla.patch +++ /dev/null @@ -1,58 +0,0 @@ -From cf28b5b8c1e5e8c23ab374d93f7726e73cd35119 Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: <774ce9b07d1f4a9b077da187ba413269900cd5db.1678797513.git.stefan@agner.ch> -References: <774ce9b07d1f4a9b077da187ba413269900cd5db.1678797513.git.stefan@agner.ch> -From: Stefan Agner -Date: Tue, 14 Mar 2023 13:13:19 +0100 -Subject: [PATCH] openthread: efr32: Implement reset into bootloader platform - support - ---- - .../platform-abstraction/efr32/misc.c | 24 +++++++++++++++++++ - 1 file changed, 24 insertions(+) - -diff --git a/protocol/openthread/platform-abstraction/efr32/misc.c b/protocol/openthread/platform-abstraction/efr32/misc.c -index 2ed8355..66fc003 100644 ---- a/protocol/openthread/platform-abstraction/efr32/misc.c -+++ b/protocol/openthread/platform-abstraction/efr32/misc.c -@@ -36,6 +36,10 @@ - #include "em_rmu.h" - #include "platform-efr32.h" - -+#ifdef SL_CATALOG_GECKO_BOOTLOADER_INTERFACE_PRESENT -+#include "btl_interface.h" -+#endif // SL_CATALOG_GECKO_BOOTLOADER_INTERFACE_PRESENT -+ - static uint32_t sResetCause; - - void efr32MiscInit(void) -@@ -53,6 +57,26 @@ void otPlatReset(otInstance *aInstance) - NVIC_SystemReset(); - } - -+void otPlatRebootBootloader(otInstance *aInstance) -+{ -+ OT_UNUSED_VARIABLE(aInstance); -+ -+#if defined(SL_CATALOG_GECKO_BOOTLOADER_INTERFACE_PRESENT) -+ BootloaderResetCause_t* resetCause = (BootloaderResetCause_t*) (RAM_MEM_BASE); -+ resetCause->reason = BOOTLOADER_RESET_REASON_BOOTLOAD; -+ resetCause->signature = BOOTLOADER_RESET_SIGNATURE_VALID; -+#endif -+ -+#if defined(RMU_PRESENT) -+ // Clear resetcause -+ RMU->CMD = RMU_CMD_RCCLR; -+ // Trigger a software system reset -+ RMU->CTRL = (RMU->CTRL & ~_RMU_CTRL_SYSRMODE_MASK) | RMU_CTRL_SYSRMODE_EXTENDED; -+#endif -+ -+ NVIC_SystemReset(); -+} -+ - otPlatResetReason otPlatGetResetReason(otInstance *aInstance) - { - OT_UNUSED_VARIABLE(aInstance); --- -2.39.2 - From 0e3b1882e54855d7b4cf5f815ec7e2289ac892b6 Mon Sep 17 00:00:00 2001 From: puddly <32534428+puddly@users.noreply.github.com> Date: Tue, 2 Jan 2024 12:21:22 -0500 Subject: [PATCH 5/6] Use correct C def for OT bootloader config now that it's upstream --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 0e37b28c..40418326 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -139,7 +139,7 @@ jobs: components: ${{ matrix.components }} patchpath: ${{ matrix.patchpath }} sdkpatchpath: "OpenThreadRCP/GeckoSDK" - extra_c_defs: "'-DOPENTHREAD_CONFIG_NCP_REBOOT_BOOTLOADER_ENABLE=1'" + extra_c_defs: "'-DOPENTHREAD_CONFIG_PLATFORM_BOOTLOADER_MODE_ENABLE=1'" sdk_version: ${{ needs.build-container.outputs.sdk_version }} metadata_fw_type: "ot-rcp" baudrate: 460800 From b6f44a9d0aa5d7b8cbb7aa871c8afff7e19d1314 Mon Sep 17 00:00:00 2001 From: puddly <32534428+puddly@users.noreply.github.com> Date: Tue, 2 Jan 2024 12:30:42 -0500 Subject: [PATCH 6/6] Remove fast channel switching patchset --- .../0003-disable-fast-channel-switching.patch | 39 ------------------- .../0003-disable-fast-channel-switching.patch | 39 ------------------- 2 files changed, 78 deletions(-) delete mode 100644 RCPMultiPAN/SkyConnect/0003-disable-fast-channel-switching.patch delete mode 100644 RCPMultiPAN/Yellow/0003-disable-fast-channel-switching.patch diff --git a/RCPMultiPAN/SkyConnect/0003-disable-fast-channel-switching.patch b/RCPMultiPAN/SkyConnect/0003-disable-fast-channel-switching.patch deleted file mode 100644 index 2e9b01cf..00000000 --- a/RCPMultiPAN/SkyConnect/0003-disable-fast-channel-switching.patch +++ /dev/null @@ -1,39 +0,0 @@ -From e80278afbd3b594ad4dea0037c30b2bbdc3b9ff9 Mon Sep 17 00:00:00 2001 -From: puddly <32534428+puddly@users.noreply.github.com> -Date: Fri, 8 Dec 2023 19:14:32 -0500 -Subject: [PATCH] Disable fast channel switching - ---- - .../sl_rail_util_ieee802154_fast_channel_switching_config.h | 2 +- - protocol/openthread/platform-abstraction/efr32/radio.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/platform/radio/rail_lib/plugin/rail_util_ieee802154/config/sl_rail_util_ieee802154_fast_channel_switching_config.h b/platform/radio/rail_lib/plugin/rail_util_ieee802154/config/sl_rail_util_ieee802154_fast_channel_switching_config.h -index a44700695..36373d7fc 100644 ---- a/platform/radio/rail_lib/plugin/rail_util_ieee802154/config/sl_rail_util_ieee802154_fast_channel_switching_config.h -+++ b/platform/radio/rail_lib/plugin/rail_util_ieee802154/config/sl_rail_util_ieee802154_fast_channel_switching_config.h -@@ -43,7 +43,7 @@ - // IEEE802.15.4 Fast Channel Switching Configuration - // Enable fast channel switching - // Default: 1 --#define SL_RAIL_UTIL_IEEE802154_FAST_CHANNEL_SWITCHING_ENABLED 1 -+#define SL_RAIL_UTIL_IEEE802154_FAST_CHANNEL_SWITCHING_ENABLED 0 - // - // <<< end of configuration section >>> - #endif //SL_RAIL_UITL_IEEE802154_FAST_CHANNEL_SWITCHING_CONFIG_H -diff --git a/protocol/openthread/platform-abstraction/efr32/radio.c b/protocol/openthread/platform-abstraction/efr32/radio.c -index 04ecef2ae..a2b899d91 100644 ---- a/protocol/openthread/platform-abstraction/efr32/radio.c -+++ b/protocol/openthread/platform-abstraction/efr32/radio.c -@@ -321,7 +321,7 @@ static bool isMultiChannel(void) - { - firstChannel = sChannelSwitchingCfg.channels[i]; - } -- else -+ else if (firstChannel != sChannelSwitchingCfg.channels[i]) - { - return true; - } --- -2.43.0 - diff --git a/RCPMultiPAN/Yellow/0003-disable-fast-channel-switching.patch b/RCPMultiPAN/Yellow/0003-disable-fast-channel-switching.patch deleted file mode 100644 index 2e9b01cf..00000000 --- a/RCPMultiPAN/Yellow/0003-disable-fast-channel-switching.patch +++ /dev/null @@ -1,39 +0,0 @@ -From e80278afbd3b594ad4dea0037c30b2bbdc3b9ff9 Mon Sep 17 00:00:00 2001 -From: puddly <32534428+puddly@users.noreply.github.com> -Date: Fri, 8 Dec 2023 19:14:32 -0500 -Subject: [PATCH] Disable fast channel switching - ---- - .../sl_rail_util_ieee802154_fast_channel_switching_config.h | 2 +- - protocol/openthread/platform-abstraction/efr32/radio.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/platform/radio/rail_lib/plugin/rail_util_ieee802154/config/sl_rail_util_ieee802154_fast_channel_switching_config.h b/platform/radio/rail_lib/plugin/rail_util_ieee802154/config/sl_rail_util_ieee802154_fast_channel_switching_config.h -index a44700695..36373d7fc 100644 ---- a/platform/radio/rail_lib/plugin/rail_util_ieee802154/config/sl_rail_util_ieee802154_fast_channel_switching_config.h -+++ b/platform/radio/rail_lib/plugin/rail_util_ieee802154/config/sl_rail_util_ieee802154_fast_channel_switching_config.h -@@ -43,7 +43,7 @@ - // IEEE802.15.4 Fast Channel Switching Configuration - // Enable fast channel switching - // Default: 1 --#define SL_RAIL_UTIL_IEEE802154_FAST_CHANNEL_SWITCHING_ENABLED 1 -+#define SL_RAIL_UTIL_IEEE802154_FAST_CHANNEL_SWITCHING_ENABLED 0 - // - // <<< end of configuration section >>> - #endif //SL_RAIL_UITL_IEEE802154_FAST_CHANNEL_SWITCHING_CONFIG_H -diff --git a/protocol/openthread/platform-abstraction/efr32/radio.c b/protocol/openthread/platform-abstraction/efr32/radio.c -index 04ecef2ae..a2b899d91 100644 ---- a/protocol/openthread/platform-abstraction/efr32/radio.c -+++ b/protocol/openthread/platform-abstraction/efr32/radio.c -@@ -321,7 +321,7 @@ static bool isMultiChannel(void) - { - firstChannel = sChannelSwitchingCfg.channels[i]; - } -- else -+ else if (firstChannel != sChannelSwitchingCfg.channels[i]) - { - return true; - } --- -2.43.0 -