diff --git a/extras/STM32_WPAN/0001-chore-adapt-STM32_WPAN-sources.patch b/extras/STM32_WPAN/0001-chore-adapt-STM32_WPAN-sources.patch index 90daace9..a3f62011 100644 --- a/extras/STM32_WPAN/0001-chore-adapt-STM32_WPAN-sources.patch +++ b/extras/STM32_WPAN/0001-chore-adapt-STM32_WPAN-sources.patch @@ -1,4 +1,4 @@ -From 5587ff466e0276de186103d21e6a4e498820e49f Mon Sep 17 00:00:00 2001 +From 7f99c89e8a6f834daf4a76bf98307e9ebcd01c91 Mon Sep 17 00:00:00 2001 From: Frederic Pillon Date: Wed, 10 Jan 2024 18:16:01 +0100 Subject: [PATCH 1/4] chore: adapt STM32_WPAN sources @@ -15,7 +15,7 @@ Signed-off-by: Frederic Pillon 7 files changed, 85 insertions(+), 12 deletions(-) diff --git a/src/utility/STM32_WPAN/app_conf_default.h b/src/utility/STM32_WPAN/app_conf_default.h -index 846be3c..6c9beb3 100644 +index 71fc107..bf2274a 100644 --- a/src/utility/STM32_WPAN/app_conf_default.h +++ b/src/utility/STM32_WPAN/app_conf_default.h @@ -1,9 +1,9 @@ @@ -124,7 +124,7 @@ index 846be3c..6c9beb3 100644 /****************************************************************************** * Transport Layer ******************************************************************************/ -@@ -659,4 +691,5 @@ typedef enum +@@ -660,4 +692,5 @@ typedef enum #define CFG_OTP_END_ADRESS OTP_AREA_END_ADDR @@ -162,7 +162,7 @@ index 651e1f1..1472a5e 100644 void HW_IPCC_BLE_Init( void ); void HW_IPCC_BLE_SendCmd( void ); diff --git a/src/utility/STM32_WPAN/hw_ipcc.c b/src/utility/STM32_WPAN/hw_ipcc.c -index fd620b8..3461cbe 100644 +index 6a311b1..ad3c9d4 100644 --- a/src/utility/STM32_WPAN/hw_ipcc.c +++ b/src/utility/STM32_WPAN/hw_ipcc.c @@ -18,8 +18,9 @@ @@ -174,9 +174,9 @@ index fd620b8..3461cbe 100644 -#include "app_common.h" +#include "hw.h" #include "mbox_def.h" + #include "utilities_conf.h" - /* Global variables ---------------------------------------------------------*/ -@@ -667,3 +668,4 @@ static void HW_IPCC_TRACES_EvtHandler( void ) +@@ -745,3 +746,4 @@ static void HW_IPCC_TRACES_EvtHandler( void ) } __weak void HW_IPCC_TRACES_EvtNot( void ){}; @@ -267,7 +267,7 @@ index 4c92864..df6c215 100644 } +#endif /* STM32WBxx */ diff --git a/src/utility/STM32_WPAN/tl_mbox.c b/src/utility/STM32_WPAN/tl_mbox.c -index 27a998a..40c9679 100644 +index df07a19..9a2a297 100644 --- a/src/utility/STM32_WPAN/tl_mbox.c +++ b/src/utility/STM32_WPAN/tl_mbox.c @@ -16,6 +16,7 @@ @@ -300,7 +300,7 @@ index 27a998a..40c9679 100644 HW_IPCC_Init(); return; -@@ -846,3 +851,4 @@ static void OutputDbgTrace(TL_MB_PacketType_t packet_type, uint8_t* buffer) +@@ -847,3 +852,4 @@ static void OutputDbgTrace(TL_MB_PacketType_t packet_type, uint8_t* buffer) return; } diff --git a/extras/STM32_WPAN/0002-fix-include-a-timeout-when-waiting-for-the-cmd_resp.patch b/extras/STM32_WPAN/0002-fix-include-a-timeout-when-waiting-for-the-cmd_resp.patch index e234d198..bd6f66a2 100644 --- a/extras/STM32_WPAN/0002-fix-include-a-timeout-when-waiting-for-the-cmd_resp.patch +++ b/extras/STM32_WPAN/0002-fix-include-a-timeout-when-waiting-for-the-cmd_resp.patch @@ -1,4 +1,4 @@ -From 2867f96057d7bd5b34cfc3395d78653856f9cc7c Mon Sep 17 00:00:00 2001 +From a33328182e334e1ddedd368a047d75cf1662e330 Mon Sep 17 00:00:00 2001 From: Frederic Pillon Date: Thu, 13 Jul 2023 17:16:40 +0200 Subject: [PATCH 2/4] fix: include a timeout when waiting for the cmd_resp diff --git a/extras/STM32_WPAN/0003-chore-add-support-for-customize-app_conf_default.h.patch b/extras/STM32_WPAN/0003-chore-add-support-for-customize-app_conf_default.h.patch index bd66679d..3c5e66ae 100644 --- a/extras/STM32_WPAN/0003-chore-add-support-for-customize-app_conf_default.h.patch +++ b/extras/STM32_WPAN/0003-chore-add-support-for-customize-app_conf_default.h.patch @@ -1,4 +1,4 @@ -From ba3df1bd28eb49eab28a99fa88481f45fe565cbf Mon Sep 17 00:00:00 2001 +From a973b405bf34a93b0c300c8bbc4aa5d59fa182e5 Mon Sep 17 00:00:00 2001 From: Frederic Pillon Date: Wed, 10 Jan 2024 18:45:17 +0100 Subject: [PATCH 3/4] chore: add support for customize app_conf_default.h @@ -9,7 +9,7 @@ Signed-off-by: Frederic Pillon 1 file changed, 45 insertions(+), 13 deletions(-) diff --git a/src/utility/STM32_WPAN/app_conf_default.h b/src/utility/STM32_WPAN/app_conf_default.h -index 6c9beb3..9509a0f 100644 +index bf2274a..ff2dc01 100644 --- a/src/utility/STM32_WPAN/app_conf_default.h +++ b/src/utility/STM32_WPAN/app_conf_default.h @@ -50,7 +50,9 @@ diff --git a/extras/STM32_WPAN/0004-fix-TL_Evt_t-payload-size-for-reset.patch b/extras/STM32_WPAN/0004-fix-TL_Evt_t-payload-size-for-reset.patch index 035d4b99..110a8410 100644 --- a/extras/STM32_WPAN/0004-fix-TL_Evt_t-payload-size-for-reset.patch +++ b/extras/STM32_WPAN/0004-fix-TL_Evt_t-payload-size-for-reset.patch @@ -1,4 +1,4 @@ -From a6ae9acf134d326f74ff04818b4e2c643c826b35 Mon Sep 17 00:00:00 2001 +From 324eef795bfd0a754aae4d5f9b528d4c8ad706c8 Mon Sep 17 00:00:00 2001 From: Frederic Pillon Date: Mon, 24 Jul 2023 10:55:20 +0200 Subject: [PATCH 4/4] fix: TL_Evt_t payload size for reset diff --git a/library.properties b/library.properties index 6f0833c7..630fdc92 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=STM32duinoBLE -version=1.2.8 +version=1.2.9 author=Arduino, SRA maintainer=stm32duino sentence=Fork of ArduinoBLE library to add the support of STM32WB, SPBTLE-RF, SPBTLE-1S, BLUENRG-M2SP and BLUENRG-M0 BLE modules. diff --git a/src/utility/STM32_WPAN/LICENSE.md b/src/utility/STM32_WPAN/LICENSE.md index 1af52330..4e70ee7c 100644 --- a/src/utility/STM32_WPAN/LICENSE.md +++ b/src/utility/STM32_WPAN/LICENSE.md @@ -1,3 +1,31 @@ +## Overview + + +This Software Bill Of Material (SBOM) lists the software components of this +software package, including the copyright owner and license terms for each +component. + +__SOFTWARE BILL OF MATERIALS__ + +Component | Copyright | License +--------- | ----------------------------------------------------------------- | ------- +Bluetooth Low Energy | STMicroelectronics | SLA +Bluetooth Low Energy LLD | STMicroelectronics | SLA +Interface | STMicroelectronics | SLA +MAC 802.15.4 | STMicroelectronics | SLA +PHY | STMicroelectronics | SLA +OpenThread | The OpenThread Authors | BSD-3-Clause +Utilities | STMicroelectronics, Amazon.com Inc. | SLA, MIT +Zigbee | Exegin Technologies Limited, STMicroelectronics, Dr Brian Gladman | SLA + + +__Notes:__ If the license is an open source license, then you can access the +terms at [www.opensource.org](https://opensource.org/). Otherwise, the full +license terms are below. If a component is not listed in the SBOM, then the SLA +shall apply unless other terms are clearly stated in the package. + + + SLA0044 Rev5/February 2018 ## Software license agreement diff --git a/src/utility/STM32_WPAN/README.md b/src/utility/STM32_WPAN/README.md index b8b7d7ed..90f96452 100644 --- a/src/utility/STM32_WPAN/README.md +++ b/src/utility/STM32_WPAN/README.md @@ -1,6 +1,6 @@ ## Source -[STMicroelectronics/STM32CubeWB Release v1.19.0](https://github.com/STMicroelectronics/STM32CubeWB/releases/tag/v1.19.0) -- Application: [BLE_TransparentMode](https://github.com/STMicroelectronics/STM32CubeWB/tree/v1.19.0/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode) +[STMicroelectronics/STM32CubeWB Release v1.22.0](https://github.com/STMicroelectronics/STM32CubeWB/releases/tag/v1.22.0) +- Application: [BLE_TransparentMode](https://github.com/STMicroelectronics/STM32CubeWB/tree/v1.22.0/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode) diff --git a/src/utility/STM32_WPAN/app_conf_default.h b/src/utility/STM32_WPAN/app_conf_default.h index 9509a0f5..ff2dc017 100644 --- a/src/utility/STM32_WPAN/app_conf_default.h +++ b/src/utility/STM32_WPAN/app_conf_default.h @@ -687,6 +687,7 @@ typedef enum /* USER CODE BEGIN CFG_SCH_Prio_Id_t */ /* USER CODE END CFG_SCH_Prio_Id_t */ + CFG_SCH_PRIO_NBR } CFG_SCH_Prio_Id_t; /** diff --git a/src/utility/STM32_WPAN/ble_bufsize.h b/src/utility/STM32_WPAN/ble_bufsize.h index 66cc2a5a..26551c09 100644 --- a/src/utility/STM32_WPAN/ble_bufsize.h +++ b/src/utility/STM32_WPAN/ble_bufsize.h @@ -1,11 +1,11 @@ /***************************************************************************** * @file ble_bufsize.h - * @author MDG + * * @brief Definition of BLE stack buffers size ***************************************************************************** * @attention * - * Copyright (c) 2018-2024 STMicroelectronics. + * Copyright (c) 2018-2025 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file @@ -49,7 +49,7 @@ */ #define BLE_MEM_BLOCK_SIZE 32 -#if (SLAVE_ONLY != 0) ||(BASIC_FEATURES != 0) +#if (SLAVE_ONLY != 0) || (BASIC_FEATURES != 0) #define BLE_MEM_BLOCK_X_PTX(n_link) 0 #else #define BLE_MEM_BLOCK_X_PTX(n_link) (n_link) @@ -97,7 +97,7 @@ * mentioned parameters. */ #if (BEACON_ONLY != 0) -#define BLE_FIXED_BUFFER_SIZE_BYTES 4100 /* Beacon only */ +#define BLE_FIXED_BUFFER_SIZE_BYTES 4200 /* Beacon only */ #elif (LL_ONLY_BASIC != 0) #define BLE_FIXED_BUFFER_SIZE_BYTES 6040 /* LL only Basic*/ #elif (LL_ONLY != 0) @@ -114,7 +114,7 @@ * BLE_PER_LINK_SIZE_BYTES: additional memory size used per link */ #if (BEACON_ONLY != 0) -#define BLE_PER_LINK_SIZE_BYTES 108 /* Beacon only */ +#define BLE_PER_LINK_SIZE_BYTES 76 /* Beacon only */ #elif (LL_ONLY_BASIC != 0) #define BLE_PER_LINK_SIZE_BYTES 244 /* LL only Basic */ #elif (LL_ONLY != 0) diff --git a/src/utility/STM32_WPAN/hw_ipcc.c b/src/utility/STM32_WPAN/hw_ipcc.c index 3461cbed..ad3c9d4c 100644 --- a/src/utility/STM32_WPAN/hw_ipcc.c +++ b/src/utility/STM32_WPAN/hw_ipcc.c @@ -22,6 +22,7 @@ /* Includes ------------------------------------------------------------------*/ #include "hw.h" #include "mbox_def.h" +#include "utilities_conf.h" /* Global variables ---------------------------------------------------------*/ /* Private defines -----------------------------------------------------------*/ @@ -227,7 +228,9 @@ void HW_IPCC_Init( void ) ******************************************************************************/ void HW_IPCC_BLE_Init( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_BLE_EVENT_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } @@ -251,14 +254,18 @@ static void HW_IPCC_BLE_EvtHandler( void ) void HW_IPCC_BLE_SendAclData( void ) { LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL ); + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } static void HW_IPCC_BLE_AclDataEvtHandler( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); HW_IPCC_BLE_AclDataAckNot(); @@ -273,7 +280,9 @@ __weak void HW_IPCC_BLE_RxEvtNot( void ){}; ******************************************************************************/ void HW_IPCC_SYS_Init( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_SYSTEM_EVENT_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } @@ -281,14 +290,18 @@ void HW_IPCC_SYS_Init( void ) void HW_IPCC_SYS_SendCmd( void ) { LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL ); + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } static void HW_IPCC_SYS_CmdEvtHandler( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); HW_IPCC_SYS_CmdEvtNot(); @@ -313,7 +326,9 @@ __weak void HW_IPCC_SYS_EvtNot( void ){}; #ifdef MAC_802_15_4_WB void HW_IPCC_MAC_802_15_4_Init( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } @@ -321,7 +336,9 @@ void HW_IPCC_MAC_802_15_4_Init( void ) void HW_IPCC_MAC_802_15_4_SendCmd( void ) { LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL ); + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } @@ -329,14 +346,18 @@ void HW_IPCC_MAC_802_15_4_SendCmd( void ) void HW_IPCC_MAC_802_15_4_SendAck( void ) { LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL ); + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } static void HW_IPCC_MAC_802_15_4_CmdEvtHandler( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); HW_IPCC_MAC_802_15_4_CmdEvtNot(); @@ -345,7 +366,9 @@ static void HW_IPCC_MAC_802_15_4_CmdEvtHandler( void ) static void HW_IPCC_MAC_802_15_4_NotEvtHandler( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); HW_IPCC_MAC_802_15_4_EvtNot(); @@ -361,8 +384,10 @@ __weak void HW_IPCC_MAC_802_15_4_EvtNot( void ){}; #ifdef THREAD_WB void HW_IPCC_THREAD_Init( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL ); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } @@ -370,7 +395,9 @@ void HW_IPCC_THREAD_Init( void ) void HW_IPCC_OT_SendCmd( void ) { LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL ); + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } @@ -385,7 +412,9 @@ void HW_IPCC_CLI_SendCmd( void ) void HW_IPCC_THREAD_SendAck( void ) { LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL ); + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } @@ -393,14 +422,18 @@ void HW_IPCC_THREAD_SendAck( void ) void HW_IPCC_THREAD_CliSendAck( void ) { LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL ); + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } static void HW_IPCC_OT_CmdEvtHandler( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); HW_IPCC_OT_CmdEvtNot(); @@ -409,7 +442,9 @@ static void HW_IPCC_OT_CmdEvtHandler( void ) static void HW_IPCC_THREAD_NotEvtHandler( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); HW_IPCC_THREAD_EvtNot(); @@ -418,7 +453,9 @@ static void HW_IPCC_THREAD_NotEvtHandler( void ) static void HW_IPCC_THREAD_CliNotEvtHandler( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); HW_IPCC_THREAD_CliEvtNot(); @@ -437,8 +474,10 @@ __weak void HW_IPCC_THREAD_EvtNot( void ){}; #ifdef LLD_TESTS_WB void HW_IPCC_LLDTESTS_Init( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_LLDTESTS_CLI_RSP_CHANNEL ); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_LLDTESTS_M0_CMD_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } @@ -450,7 +489,10 @@ void HW_IPCC_LLDTESTS_SendCliCmd( void ) static void HW_IPCC_LLDTESTS_ReceiveCliRspHandler( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_LLDTESTS_CLI_RSP_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); + HW_IPCC_LLDTESTS_ReceiveCliRsp(); return; } @@ -458,13 +500,17 @@ static void HW_IPCC_LLDTESTS_ReceiveCliRspHandler( void ) void HW_IPCC_LLDTESTS_SendCliRspAck( void ) { LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_LLDTESTS_CLI_RSP_CHANNEL ); + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_LLDTESTS_CLI_RSP_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } static void HW_IPCC_LLDTESTS_ReceiveM0CmdHandler( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_LLDTESTS_M0_CMD_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); HW_IPCC_LLDTESTS_ReceiveM0Cmd(); return; } @@ -472,7 +518,9 @@ static void HW_IPCC_LLDTESTS_ReceiveM0CmdHandler( void ) void HW_IPCC_LLDTESTS_SendM0CmdAck( void ) { LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_LLDTESTS_M0_CMD_CHANNEL ); + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_LLDTESTS_M0_CMD_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } __weak void HW_IPCC_LLDTESTS_ReceiveCliRsp( void ){}; @@ -485,8 +533,10 @@ __weak void HW_IPCC_LLDTESTS_ReceiveM0Cmd( void ){}; #ifdef LLD_BLE_WB void HW_IPCC_LLD_BLE_Init( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_LLD_BLE_RSP_CHANNEL ); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_LLD_BLE_M0_CMD_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } @@ -498,7 +548,9 @@ void HW_IPCC_LLD_BLE_SendCliCmd( void ) /*static void HW_IPCC_LLD_BLE_ReceiveCliRspHandler( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_LLD_BLE_CLI_RSP_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); HW_IPCC_LLD_BLE_ReceiveCliRsp(); return; }*/ @@ -506,7 +558,9 @@ void HW_IPCC_LLD_BLE_SendCliCmd( void ) void HW_IPCC_LLD_BLE_SendCliRspAck( void ) { LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_LLD_BLE_CLI_RSP_CHANNEL ); + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_LLD_BLE_CLI_RSP_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } @@ -535,7 +589,9 @@ void HW_IPCC_LLD_BLE_SendCmd( void ) static void HW_IPCC_LLD_BLE_ReceiveRspHandler( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_LLD_BLE_RSP_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); HW_IPCC_LLD_BLE_ReceiveRsp(); return; } @@ -543,7 +599,9 @@ static void HW_IPCC_LLD_BLE_ReceiveRspHandler( void ) void HW_IPCC_LLD_BLE_SendRspAck( void ) { LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_LLD_BLE_RSP_CHANNEL ); + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_LLD_BLE_RSP_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } @@ -555,8 +613,10 @@ void HW_IPCC_LLD_BLE_SendRspAck( void ) #ifdef ZIGBEE_WB void HW_IPCC_ZIGBEE_Init( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_ZIGBEE_APPLI_NOTIF_ACK_CHANNEL ); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_ZIGBEE_M0_REQUEST_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } @@ -564,7 +624,9 @@ void HW_IPCC_ZIGBEE_Init( void ) void HW_IPCC_ZIGBEE_SendM4RequestToM0( void ) { LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_ZIGBEE_CMD_APPLI_CHANNEL ); + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_ZIGBEE_CMD_APPLI_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } @@ -572,14 +634,18 @@ void HW_IPCC_ZIGBEE_SendM4RequestToM0( void ) void HW_IPCC_ZIGBEE_SendM4AckToM0Notify( void ) { LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_ZIGBEE_APPLI_NOTIF_ACK_CHANNEL ); + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_ZIGBEE_APPLI_NOTIF_ACK_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } static void HW_IPCC_ZIGBEE_CmdEvtHandler( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_ZIGBEE_CMD_APPLI_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); HW_IPCC_ZIGBEE_RecvAppliAckFromM0(); @@ -588,7 +654,9 @@ static void HW_IPCC_ZIGBEE_CmdEvtHandler( void ) static void HW_IPCC_ZIGBEE_StackNotifEvtHandler( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_ZIGBEE_APPLI_NOTIF_ACK_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); HW_IPCC_ZIGBEE_RecvM0NotifyToM4(); @@ -597,7 +665,9 @@ static void HW_IPCC_ZIGBEE_StackNotifEvtHandler( void ) static void HW_IPCC_ZIGBEE_StackM0RequestHandler( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_ZIGBEE_M0_REQUEST_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); HW_IPCC_ZIGBEE_RecvM0RequestToM4(); @@ -607,7 +677,9 @@ static void HW_IPCC_ZIGBEE_StackM0RequestHandler( void ) void HW_IPCC_ZIGBEE_SendM4AckToM0Request( void ) { LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_ZIGBEE_M0_REQUEST_CHANNEL ); + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_ZIGBEE_M0_REQUEST_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } @@ -625,7 +697,9 @@ void HW_IPCC_MM_SendFreeBuf( void (*cb)( void ) ) if ( LL_C1_IPCC_IsActiveFlag_CHx( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL ) ) { FreeBufCb = cb; + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); } else { @@ -639,7 +713,9 @@ void HW_IPCC_MM_SendFreeBuf( void (*cb)( void ) ) static void HW_IPCC_MM_FreeBufHandler( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); FreeBufCb(); @@ -653,7 +729,9 @@ static void HW_IPCC_MM_FreeBufHandler( void ) ******************************************************************************/ void HW_IPCC_TRACES_Init( void ) { + UTILS_ENTER_CRITICAL_SECTION(); LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_TRACES_CHANNEL ); + UTILS_EXIT_CRITICAL_SECTION(); return; } diff --git a/src/utility/STM32_WPAN/shci.h b/src/utility/STM32_WPAN/shci.h index 30ae10cb..59c6fd46 100644 --- a/src/utility/STM32_WPAN/shci.h +++ b/src/utility/STM32_WPAN/shci.h @@ -882,6 +882,7 @@ extern "C" { #define SHCI_C2_CONFIG_CONFIG1_BIT0_BLE_NVM_DATA_TO_SRAM (1<<0) #define SHCI_C2_CONFIG_CONFIG1_BIT1_THREAD_NVM_DATA_TO_INTERNAL_FLASH (0<<1) #define SHCI_C2_CONFIG_CONFIG1_BIT1_THREAD_NVM_DATA_TO_SRAM (1<<1) +#define SHCI_C2_CONFIG_CONFIG1_BIT2_SET_EUI64_FORMAT (1<<2) /** * EvtMask1 @@ -1340,7 +1341,9 @@ typedef struct { * 1 - BLE NVM Data are written in SRAM cache pointed by BleNvmRamAddress * - bit1 : 0 - THREAD NVM Data data are flushed in internal secure flash * 1 - THREAD NVM Data are written in SRAM cache pointed by ThreadNvmRamAddress - * - bit2 to bit7 : Unused, shall be set to 0 + * - bit2 : 0 - Thread EUI64 is set to new (and current) format + * 1 - Thread EUI64 is set to old format + * - bit3 to bit7 : Unused, shall be set to 0 * uint8_t EvtMask1 : * When a bit is set to 0, the event is not reported * bit0 : Asynchronous Event with Sub Evt Code 0x9201 (= SHCI_SUB_EVT_ERROR_NOTIF) diff --git a/src/utility/STM32_WPAN/tl_mbox.c b/src/utility/STM32_WPAN/tl_mbox.c index 40c96793..9a2a2973 100644 --- a/src/utility/STM32_WPAN/tl_mbox.c +++ b/src/utility/STM32_WPAN/tl_mbox.c @@ -676,6 +676,7 @@ static void OutputDbgTrace(TL_MB_PacketType_t packet_type, uint8_t* buffer) { TL_EvtPacket_t *p_evt_packet; TL_CmdPacket_t *p_cmd_packet; + TL_EvtSerial_t *p_cmd_rsp_packet; switch(packet_type) { @@ -799,28 +800,28 @@ static void OutputDbgTrace(TL_MB_PacketType_t packet_type, uint8_t* buffer) break; case TL_MB_SYS_CMD_RSP: - p_evt_packet = (TL_EvtPacket_t*)buffer; - switch(p_evt_packet->evtserial.evt.evtcode) + p_cmd_rsp_packet = (TL_EvtSerial_t*)buffer; + switch(p_cmd_rsp_packet->evt.evtcode) { case TL_BLEEVT_CC_OPCODE: - TL_SHCI_CMD_DBG_MSG("sys rsp: 0x%02X", p_evt_packet->evtserial.evt.evtcode); - TL_SHCI_CMD_DBG_MSG(" cmd opcode: 0x%02X", ((TL_CcEvt_t*)(p_evt_packet->evtserial.evt.payload))->cmdcode); - TL_SHCI_CMD_DBG_MSG(" status: 0x%02X", ((TL_CcEvt_t*)(p_evt_packet->evtserial.evt.payload))->payload[0]); - if((p_evt_packet->evtserial.evt.plen-4) != 0) + TL_SHCI_CMD_DBG_MSG("sys rsp: 0x%02X", p_cmd_rsp_packet->evt.evtcode); + TL_SHCI_CMD_DBG_MSG(" cmd opcode: 0x%02X", ((TL_CcEvt_t*)(p_cmd_rsp_packet->evt.payload))->cmdcode); + TL_SHCI_CMD_DBG_MSG(" status: 0x%02X", ((TL_CcEvt_t*)(p_cmd_rsp_packet->evt.payload))->payload[0]); + if((p_cmd_rsp_packet->evt.plen-4) != 0) { TL_SHCI_CMD_DBG_MSG(" payload:"); - TL_SHCI_CMD_DBG_BUF(&((TL_CcEvt_t*)(p_evt_packet->evtserial.evt.payload))->payload[1], p_evt_packet->evtserial.evt.plen-4, ""); + TL_SHCI_CMD_DBG_BUF(&((TL_CcEvt_t*)(p_cmd_rsp_packet->evt.payload))->payload[1], p_cmd_rsp_packet->evt.plen-4, ""); } break; default: - TL_SHCI_CMD_DBG_MSG("unknown sys rsp received: %02X", p_evt_packet->evtserial.evt.evtcode); + TL_SHCI_CMD_DBG_MSG("unknown sys rsp received: %02X", p_cmd_rsp_packet->evt.evtcode); break; } TL_SHCI_CMD_DBG_MSG("\r\n"); - TL_SHCI_CMD_DBG_RAW(&p_evt_packet->evtserial, p_evt_packet->evtserial.evt.plen+TL_EVT_HDR_SIZE); + TL_SHCI_CMD_DBG_RAW(&p_cmd_rsp_packet->evt, p_cmd_rsp_packet->evt.plen+TL_EVT_HDR_SIZE); break; case TL_MB_SYS_ASYNCH_EVT: diff --git a/src/utility/STM32_WPAN/utilities_conf.h b/src/utility/STM32_WPAN/utilities_conf.h new file mode 100644 index 00000000..d6221a73 --- /dev/null +++ b/src/utility/STM32_WPAN/utilities_conf.h @@ -0,0 +1,66 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file utilities_conf.h + * @author MCD Application Team + * @brief Configuration file for STM32 Utilities. + ****************************************************************************** + * @attention + * + * Copyright (c) 2019-2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef UTILITIES_CONF_H +#define UTILITIES_CONF_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "cmsis_compiler.h" +#include "string.h" +#include "app_conf.h" + +/****************************************************************************** + * common + ******************************************************************************/ +#define UTILS_ENTER_CRITICAL_SECTION( ) uint32_t primask_bit = __get_PRIMASK( );\ + __disable_irq( ) + +#define UTILS_EXIT_CRITICAL_SECTION( ) __set_PRIMASK( primask_bit ) + +#define UTILS_MEMSET8( dest, value, size ) memset( dest, value, size); + +/****************************************************************************** + * tiny low power manager + * (any macro that does not need to be modified can be removed) + ******************************************************************************/ +#define UTIL_LPM_INIT_CRITICAL_SECTION( ) +#define UTIL_LPM_ENTER_CRITICAL_SECTION( ) UTILS_ENTER_CRITICAL_SECTION( ) +#define UTIL_LPM_EXIT_CRITICAL_SECTION( ) UTILS_EXIT_CRITICAL_SECTION( ) + +/****************************************************************************** + * sequencer + * (any macro that does not need to be modified can be removed) + ******************************************************************************/ +#define UTIL_SEQ_INIT_CRITICAL_SECTION( ) +#define UTIL_SEQ_ENTER_CRITICAL_SECTION( ) UTILS_ENTER_CRITICAL_SECTION( ) +#define UTIL_SEQ_EXIT_CRITICAL_SECTION( ) UTILS_EXIT_CRITICAL_SECTION( ) +#define UTIL_SEQ_CONF_TASK_NBR (32) +#define UTIL_SEQ_CONF_PRIO_NBR CFG_SCH_PRIO_NBR +#define UTIL_SEQ_MEMSET8( dest, value, size ) UTILS_MEMSET8( dest, value, size ) + +#ifdef __cplusplus +} +#endif + +#endif /*UTILITIES_CONF_H */ pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy